{"version":3,"file":"static/js/main.1bc28416.js","mappings":"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ACAD,KAAA,MACAl4C,KAAA,SAEA,eACAo5C,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,MACAl4C,KAAA,SAEA,eACAo5C,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,MACAl4C,KAAA,SAEAq5C,OAAA,CACAD,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,MACAl4C,KAAA,SAEAs5C,OAAA,CACAF,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,MACAl4C,KAAA,SAEAu5C,OAAA,CACAH,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,MACAl4C,KAAA,SAEA,eACAo5C,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,MACAl4C,KAAA,UAEA,eACAo5C,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,MACAl4C,KAAA,UAEA,eACAo5C,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,MACAl4C,KAAA,UAEA,gBACAo5C,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,OACAl4C,KAAA,UAEA,gBACAo5C,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,OACAl4C,KAAA,UAEA,gBACAo5C,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,OACAl4C,KAAA,UAEA,gBACAo5C,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,OACAl4C,KAAA,UAEA,gBACAo5C,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,OACAl4C,KAAA,UAEA,gBACAo5C,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,OACAl4C,KAAA,UAEA,eACAo5C,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,MACAl4C,KAAA,UAEA,eACAo5C,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,MACAl4C,KAAA,UAEA,eACAo5C,OAAA,MACArmE,IAAA,IACAolE,GAAA,GACAD,KAAA,MACAl4C,KA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EF,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,sEAINe,IAAK,CACHX,IAAK,EACLJ,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,C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U,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,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,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAA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AAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,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,MA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U,0BAChC,CAAElS,UAAW,OAAQkS,SAAU,qCAE/B+uK,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cACA,iBAEAC,GAAoC,WACpC,SAASA,IACT,CA0EA,OAzEAA,EAAmBC,eAAiB,WAChC,MAAO,CACH3gK,UAAW,CACPnc,KAAM42I,GACNnlN,WAAYkrP,IAGxB,EACAE,EAAmBE,SAAW,SAAUt3R,GACpC,IAAIwnH,EAAOjoH,KAAK83R,iBAEhB,OADa93R,KAAKg4R,eAAe/vK,EAAMxnH,EAE3C,EACAo3R,EAAmBG,eAAiB,SAAU/vK,EAAMxnH,GAChDT,KAAK23R,YAAc1vK,EAAKkP,UAAU1qF,WAClCzsC,KAAK4xP,WAAa3pI,EAAKkP,UAAUnc,KACjCh7G,KAAKi4R,YAAcpnN,SAASC,cAAc,OAC1C9wE,KAAKi4R,YAAYlnK,UAAYtwH,EAC7BT,KAAKk4R,gBACLl4R,KAAKm4R,iBACLn4R,KAAKo4R,iBACL,IAAIC,EAAer4R,KAAKi4R,YAAYlnK,UAEpC,OADA/wH,KAAKs4R,gBACED,EAAav3R,QAAQ,QAAS,IACzC,EACA+2R,EAAmBS,cAAgB,WAG/B,IADA,IAAIn3J,EAAQnhI,KAAKi4R,YAAY7jO,SACpBvX,EAAI,EAAGA,EAAIskF,EAAM5/H,OAAQs7C,IAE9B,IADA,IAAI85D,EAAYwqB,EAAMt3H,SAASgzC,EAAE55C,WAAY,KAAKwpC,WA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AU,IACV,SAAU,IACV,SAAU,IACV,SAAU,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,SA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piB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,OAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,OAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,OAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,OAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,OAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAE7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAM,MAC7CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,MAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,MAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,MAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,MAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,MAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,MAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,MAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,KAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAyB90a,SAAS,MAAO,OAC9CpiB,KAAKk3b,yBAAy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E,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,GAMxC1D,EAA8B8D,kBAAoB,CAC9C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACj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BAAiB,GACpCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,qBAAiB,GACpCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,oBAAgB,GACnCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,uBAAmB,GACtCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,sBAAkB,GACrCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,uBAAmB,GACtCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,sBAAkB,GACrCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,yBAAqB,GACxCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,wBAAoB,GACvCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,uBAAmB,GACtCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,kBAAc,GACjCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,kBAAc,GACjCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,qBAAiB,GACpCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,mBAAe,GAClCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,wBAAoB,GACvCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,8BAA0B,GAC7Ck5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,iCAA6B,GAChDk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,mCAA+B,GAClDk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,6BAAyB,GAC5Ck5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,0BAAsB,GACzCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,gCAA4B,GAC/Ck5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,yBAAqB,GACxCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,2BAAuB,GAC1Ck5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,uBAAmB,GACtCk5Q,GAAW,CACP90I,MACD27W,EAAK//e,UAAW,yBAA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,YAAe,CACXzja,QAAS,aACTyja,WAAY,eAEhB,aAAgB,CACZzja,QAAS,aACTyja,WAAY,gBAEhB,KAAQ,CACJzja,QAAS,UACTyja,WAAY,QAEhB,KAAQ,CACJzja,QAAS,UACTyja,WAAY,QAEhB,WAAc,CACVzja,QAAS,QACTyja,WAAY,cAEhB,SAAY,CACRzja,QAAS,QACTyja,WAAY,cAEhB,YAAe,CACXzja,QAAS,SACTyja,WAAY,UAEhB,YAAe,CACXzja,QAAS,UACTtlN,MAAO,KAEX,QAAW,CACPslN,QAAS,UACTtlN,MAAO,MAEX,OAAU,CACNslN,QAAS,UACTyja,WAAY,UAEhB,QAAW,CACPzja,QAAS,UACTyja,WAAY,WAEhB,WAAc,CACVzja,QAAS,aACTyja,WAAY,aACZ/onB,MAAO,IAEX,WAAc,CACVslN,QAAS,aACTyja,WAAY,aACZ/onB,MAAO,IAEX,qBAAwB,CACpBslN,QAAS,aACTyja,WAAY,aACZ/onB,MAAO,SAEX,YAAe,CACXslN,QAAS,SACTyja,WAAY,SAEhB,YAAe,CACXzja,QAAS,SACTyja,WAAY,SAEhB,YAAe,CACXzja,QAAS,SACTyja,WAAY,SAEhB,UAAa,CACTzja,QAAS,SACTyja,WAAY,SAEhB,YAAe,CACXzja,QAAS,QACTyja,WAAY,eAEhB,iBAAoB,CAChBzja,QAAS,aACTyja,WAAY,aACZ/onB,MAAO,SAEX,kBAAqB,CACjBslN,QAAS,QACTtlN,MAAO,MAEX,oBAAuB,CACnBslN,QAAS,QACTtlN,MAAO,MAEX,gBAAmB,CACfslN,QAAS,UACTtlN,MAAO,KAEX,aAAgB,CACZslN,QAAS,QACTyja,WAAY,eAEhB,kBAAqB,CACjBzja,QAAS,gBACTtlN,MAAO,eAEX,mBAAsB,CAClBslN,QAAS,gBACTtlN,MAAO,gBAEX,oBAAuB,CACnBslN,QAAS,gBACTtlN,MAAO,WCnLXgwhB,GAAgC,WAChC,SAASA,IACLzwhB,KAAKo1U,SAAW,CAAC,CACrB,CAgCA,OApBAq7M,EAAe3whB,UAAU4whB,SAAW,SAAUrygB,EAAM+R,GAC5CqlD,GAAkBz1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Ae,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,IAAe,KACf,MAAe,MAInBC,GAAiB,CACpB,KACA,QACA,aACA,WACA,YACA,iBACA,eACA,WACA,SACA,WACA,cACA,kBACA,gBACA,YACA,UACA,YACA,eACA,UACA,YAGD,SAASC,GAAO5/tB,GAA6D,OAAOA,EAAI/F,KAAI,SAAS3B,GAAK,MAAO,CAAEA,GAAG,GAAI,IAAKA,GAAG,EAAG,IAAM,IAAFA,EAAQ,GAAI,CAIrJ,IA4FIunuB,GAAsBzyqB,GA5FEwyqB,GAAO,CAElC,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAGA,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAEA,QACA,MACA,IACA,QACA,QACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,QACA,SACA,MACA,SAEA,IACA,SACA,SACA,MACA,QACA,QACA,MACA,IACA,MACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,MACA,QACA,MACA,QACA,SACA,SACA,QACA,QAGA,EACA,SACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KAKGpD,GAAO,CACH,EAAa,SACb,EAAa,UACb,GAAa,UACb,GAAa,QACb,GAAa,SACb,GAAa,QACb,GAAa,OACb,GAAa,gBACb,IAAa,SAGjBsD,GAAQ,CACX,SAAiB,EACjB,UAAiB,EACjB,UAAiB,GACjB,QAAiB,GACjB,SAAiB,GACjB,QAAiB,GACjB,OAAiB,GACjB,gBAAiB,GACjB,QAAiB,KAGdC,GAAgB,CACnB,yBACA,kBACA,mBACA,gBACA,iBACA,iBACA,mBACA,qBACA,iBACA,kBACA,sBACA,wBACA,oBACA,yBAOGC,GAAgC,CAEnC,6EAA8E,YAC9E,uDAAwD,YACxD,0DAA2D,YAC3D,uDAAwD,YACxD,gFAAiF,YAGjF,4EAA6E,SAC7E,qCAAsC,SACtC,sCAAuC,OAGvC,6EAA8E,SAC9E,sCAAuC,SAGvC,0CAA2C,SAC3C,sCAAuC,SACvC,0CAA2C,OAC3C,sCAAuC,OAGvC,8EAA+E,UAC/E,uCAAwC,UAGxC,gFAAiF,OACjF,yCAA0C,OAG1C,yEAA0E,SAC1E,kCAAmC,SAGnC,6DAA8D,YAC9D,sEAAuE,YACvE,wEAAyE,WAGzE,wEAAyE,OACzE,6EAA8E,OAG9E,2EAA4E,WAC5E,oCAAqC,WACrC,gDAAiD,mBACjD,sCAAuC,SAGvC,gFAAiF,WACjF,yCAA0C,WAG1C,sCAAuC,OACvC,6EAA8E,OAG9E,oEAAqE,OAGrE,gDAAiD,OAGjD,2CAA4C,OAG5C,wCAAyC,OAGzC,qCAAsC,aACtC,4EAA6E,aAG7E,8EAA+E,OAG/E,oCAAqC,OACrC,wCAAyC,OAGzC,4CAA6C,OAG7C,uCAAwC,OACxC,8EAA+E,OAG/E,wCAAyC,QACzC,+EAAgF,QAGhF,gDAAiD,OACjD,6CAA8C,OAC9C,uFAAwF,OACxF,oFAAqF,OAGrF,sCAAuC,OACvC,6EAA8E,OAG9E,qCAAsC,OACtC,2CAA4C,OAC5C,uCAAwC,OACxC,kFAAmF,OACnF,8EAA+E,OAC/E,4EAA6E,OAG7E,4CAA6C,OAC7C,mFAAoF,OAGpF,kCAAmC,OACnC,uCAAwC,OACxC,sCAAuC,OACvC,2CAA4C,OAG5C,qCAAsC,OAGtC,iCAAkC,OAClC,wEAAyE,OAGzE,0DAA2D,SAG3D,kEAAmE,OAGnE,wCAAyC,OACzC,6CAA8C,OAG9C,uCAAwC,MACxC,gDAAiD,OAGjD,iDAAkD,OAClD,uFAAwF,OAGxF,iDAAkD,OAGlD,2DAA4D,OAG5D,sCAAuC,OAGvC,4DAA6D,WAC7D,0EAA2E,OAC3E,4EAA6E,OAC7E,0EAA2E,OAC3E,4EAA6E,OAC7E,2EAA4E,OAG5E,2DAA4D,OAE5D,2DAA4D,OAC5D,0DAA2D,OAG3D,YAAa,OAEb,MAAS,MA6JV,IAAIrI,GAAQ,CACXsI,GAAI,qFACJC,MAAO,qFACPC,MAAO,gFACPC,IAAK,iFACLC,MAAO,uFACPC,MAAO,0FACPC,MAAO,mFACPC,KAAM,gFACNC,MAAO,qFACPC,KAAM,+EACNnJ,WAAY,wFACZE,UAAW,0FACXD,WAAY,wFACZmJ,IAAK,oFACLC,IAAK,6EACLC,MAAO,4EACPC,MAAO,4EACPC,QAAS,iEACT3lT,GAAI,iFACJE,GAAI,CACH,gFACA,qEAED0lT,GAAI,kFACJC,GAAI,sEACJC,IAAK,4EACLC,KAAM,8EACNC,OAAQ,oFACRxJ,MAAO,4EACPyJ,OAAQ,mEACRC,KAAM,kFACNC,IAAK,qEAIN,SAASC,GAAch0sB,GACtB,IAAI9sB,EAAI8sB,EAAKnC,YAAY,KACzB,OAAOmC,EAAKhjC,MAAM,EAAEkW,EAAE,GAAK,SAAW8sB,EAAKhjC,MAAMkW,EAAE,GAAK,OACzD,CAEA,SAAS+guB,GAAWrvsB,EAAkBsvsB,GACrC,IAAI/ssB,EAAO,CAAC,MAAM,CAAC,GACnB,IAAKvC,EAAM,OAAOuC,EACgB,MAA9B+ssB,EAAgBh3sB,OAAO,KAC1Bg3sB,EAAkB,IAAIA,GAEvB,IAAI96sB,EAAO,CAAC,EAaZ,OAXCwL,EAAKzoC,MAAMoruB,KAAW,IAAIj4tB,SAAQ,SAASxE,GAC3C,IAAIjE,EAAI6guB,GAAY58tB,GAEpB,GAAa,kBAATjE,EAAE,GAAwB,CAC7B,IAAImzG,EAAM,CAAC,EAAGA,EAAIpnE,KAAO/rC,EAAE+rC,KAAMonE,EAAIx2E,OAASuksB,GAAYlhuB,EAAE28B,QAASw2E,EAAI12E,GAAKz8B,EAAEy8B,GAAOz8B,EAAEgsC,aAAYmnE,EAAInnE,WAAahsC,EAAEgsC,YACxH,IAAIshsB,EAAiC,aAAjBttuB,EAAEgsC,WAA4BhsC,EAAE28B,OAAS2jsB,GAAatguB,EAAE28B,OAAQ0wsB,GACpF/ssB,EAAKgtsB,GAAiBn6nB,EACtB5gF,EAAKvyB,EAAEy8B,IAAM02E,CACd,CACD,IACA7yE,EAAK,OAAS/N,EACP+N,CACR,CAgCA,IAAIitsB,GAAS,iDA+Db,IAAIrK,GAAuC,CAC1C,CAAC,cAAe,YAChB,CAAC,mBAAoB,iBACrB,CAAC,cAAe,YAChB,CAAC,oBAAqB,cACtB,CAAC,iBAAkB,eACnB,CAAC,cAAe,aAChB,CAAC,aAAc,WACf,CAAC,aAAc,UACf,CAAC,iBAAkB,YACnB,CAAC,gBAAiB,cAClB,CAAC,cAAe,YAChB,CAAC,aAAc,WACf,CAAC,WAAY,SACb,CAAC,kBAAmB,cAAe,QACnC,CAAC,mBAAoB,eAAgB,SAGlCsK,GAAmD,WAEtD,IADA,IAAIp0tB,EAAI,IAAIzpB,MAAMuzuB,GAAWzzuB,QACrBmB,EAAI,EAAGA,EAAIsyuB,GAAWzzuB,SAAUmB,EAAG,CAC1C,IAAIgc,EAAIs2tB,GAAWtyuB,GACf2vB,EAAI,MAAO3T,EAAE,GAAGzW,MAAM,EAAEyW,EAAE,GAAG1Q,QAAQ,MAAO,KAAM0Q,EAAE,GAAGzW,MAAMyW,EAAE,GAAG1Q,QAAQ,KAAK,GACnFkd,EAAExoB,GAAK,IAAIiZ,OAAO,IAAM0W,EAAI,uBAA0BA,EAAI,IAC3D,CACA,OAAOnH,CACR,CARuD,GAUvD,SAASq0tB,GAAiB1vsB,GACzB,IAAItlC,EAAI,CAAC,EACTslC,EAAOkksB,GAASlksB,GAEhB,IAAI,IAAIntC,EAAI,EAAGA,EAAIsyuB,GAAWzzuB,SAAUmB,EAAG,CAC1C,IAAIgc,EAAIs2tB,GAAWtyuB,GAAIw1H,EAAMroF,EAAKzoC,MAAMk4uB,GAAiB58uB,IAC/C,MAAPw1H,GAAeA,EAAI32H,OAAS,IAAGgJ,EAAEmU,EAAE,IAAMs0tB,GAAY96mB,EAAI,KAChD,SAATx5G,EAAE,IAAiBnU,EAAEmU,EAAE,MAAKnU,EAAEmU,EAAE,IAAM9B,GAAUrS,EAAEmU,EAAE,KACxD,CAEA,OAAOnU,CACR,CAuCA,IAAI2quB,GAAsC,CACzC,CAAC,cAAe,cAAe,UAC/B,CAAC,aAAc,aAAc,UAC7B,CAAC,UAAW,UAAW,UACvB,CAAC,cAAe,cAAe,UAC/B,CAAC,UAAW,UAAW,UACvB,CAAC,oBAAqB,oBAAqB,QAC3C,CAAC,YAAa,YAAa,QAC3B,CAAC,gBAAiB,gBAAiB,QACnC,CAAC,YAAa,YAAa,QAC3B,CAAC,eAAgB,eAAgB,OACjC,CAAC,gBAAiB,gBAAiB,QAQpC,SAASsK,GAAiBC,EAAiCC,EAAKp+tB,EAAOiwH,GACtE,IAAI1oH,EAAI,GACR,GAAgB,iBAAN42tB,EAAgB52tB,EAAI2rtB,GAAYiL,EAAIlumB,QACzC,IAAI,IAAI10F,EAAI,EAAGA,EAAI4isB,EAAGl+uB,SAAUs7C,EAAGh0B,EAAIA,EAAEza,OAAOqxuB,EAAG5isB,GAAGnlC,KAAI,SAASiouB,GAAM,MAAO,CAAC92tB,EAAE82tB,EAAK,KAC7F,IAAI/vmB,EAAuB,iBAAP8vmB,EAAmBlL,GAAYkL,EAAKnumB,GAAM75H,KAAI,SAAU3B,GAAK,OAAOA,EAAE8S,CAAG,IAAK62tB,EAC9F9snB,EAAM,EAAGl1G,EAAM,EACnB,GAAGkyH,EAAMruI,OAAS,EAAG,IAAI,IAAImB,EAAI,EAAGA,IAAMmmB,EAAEtnB,OAAQmB,GAAK,EAAG,CAE3D,OADAgb,GAAQmL,EAAEnmB,EAAE,GAAGmmB,EACRA,EAAEnmB,GAAGmmB,GACX,IAAK,aACL,IAAK,qBACL,IAAK,iCACL,IAAK,gEACL,IAAK,uCACL,IAAK,4EACL,IAAK,oBACL,IAAK,sCACL,IAAK,qBACL,IAAK,kBACL,IAAK,uBACL,IAAK,YACL,IAAK,WACL,IAAK,sBACL,IAAK,aACJvH,EAAMs+tB,WAAaliuB,EACnB4D,EAAM64tB,WAAavqmB,EAAM3nI,MAAM2qH,EAAKA,EAAMl1G,GAC1C,MAED,IAAK,eACL,IAAK,oBACL,IAAK,uCACL,IAAK,oBACL,IAAK,uBACJ4D,EAAMu+tB,YAAcniuB,EACpB4D,EAAMw+tB,aAAelwmB,EAAM3nI,MAAM2qH,EAAKA,EAAMl1G,GAC5C,MAED,IAAK,SACL,IAAK,YACJ4D,EAAMy+tB,YAAcriuB,EACpB4D,EAAM0+tB,WAAapwmB,EAAM3nI,MAAM2qH,EAAKA,EAAMl1G,GAG5Ck1G,GAAOl1G,CACR,CACD,CAkDA,IAAIuiuB,GAAY,gBA+DhB,IAgCIC,GAhCAC,GAAkB,CACrBjkI,MAAO,QACPkkI,QAAS,UACTC,OAAQ,SACRC,SAAU,WACV30sB,SAAU,cACV40sB,WAAY,aACZC,UAAW,WACXC,YAAa,UAEbC,YAAa,cACbC,YAAa,UACbC,aAAc,YAId3nR,SAAU,WAEVlob,QAAS,UACTD,QAAS,UAOT+vsB,WAAY,UAEZC,cAAe,gBACfC,WAAY,aACZC,SAAU,YAIX,SAASC,GAAcC,EAAOpzsB,EAAgB0K,GACzC0nsB,KAAeA,GAAgBrQ,GAAMsQ,KAEzCe,EADApzsB,EAAMoysB,GAAcpysB,IAAQA,GACf0K,CACd,CAwDA,SAAS2osB,GAAe3opB,GACvB,IAAI4opB,EAAgB5opB,EAAKkqoB,WAAW,GAAI2e,EAAiB7opB,EAAKkqoB,WAAW,GACzE,OAAO,IAAI53tB,KAA6E,KAAtEu2uB,EAAe,IAAI/gvB,KAAK4P,IAAI,EAAE,IAAMkxuB,EAAc,IAAO,cAAmBpvtB,cAAclxB,QAAQ,QAAQ,GAC7H,CAYA,SAASwgvB,GAAY9opB,EAAMpoE,EAAMmxtB,GAChC,IAAItnuB,EAAQu+E,EAAKltE,EACb41H,EAAM1oD,EAAKkqoB,WAAW,EAAG,YAC7B,GAAG6e,EAAK,KAAO/opB,EAAKltE,EAAIrR,EAAS,KAAKu+E,EAAKltE,EAC3C,OAAO41H,CACR,CAGA,SAASsgmB,GAAahppB,EAAMpoE,EAAMmxtB,GACjC,IAAIrgmB,EAAM1oD,EAAKkqoB,WAAW,EAAG,UAE7B,OADG6e,IAAK/opB,EAAKltE,GAAM,GAAM41H,EAAI3/I,OAAO,EAAK,GAAM,GACxC2/I,CACR,CAKA,SAASugmB,GAAmBjppB,EAAMkppB,EAAYH,GAC7C,OAAkB,KAAfG,EAA0CF,GAAahppB,GACnD8opB,GAAY9opB,EAAMkppB,EAAYH,EACtC,CAEA,SAASI,GAAenppB,EAAMtiF,EAAcqruB,GAAoB,OAAOE,GAAmBjppB,EAAMtiF,GAAW,IAARqruB,EAAgB,EAAG,EAAI,CAyB1H,SAASK,GAAoBpppB,GAC5B,IAAIv+E,EAAQu+E,EAAKltE,EACbu2tB,EAAgBC,GAAyBtppB,EAAMukpB,IAGnD,OAFmB,GAAhBvkpB,EAAKA,EAAKltE,IAAgC,GAAlBktE,EAAKA,EAAKltE,EAAE,IAAgBktE,EAAKltE,EAAIrR,EAAS,IAAOu+E,EAAKltE,GAAK,GAEnF,CAACu2tB,EADUC,GAAyBtppB,EAAMokpB,IAElD,CAWA,SAASmF,GAAiBvppB,EAAKwppB,GAG9B,IAFA,IAAIptd,EAAMp8L,EAAKkqoB,WAAW,GACtB/zf,EAA8B,CAAC,EAC3B9xL,EAAI,EAAGA,GAAK+3O,IAAO/3O,EAAG,CAC7B,IAAI8kE,EAAMnpB,EAAKkqoB,WAAW,GACtBhltB,EAAM86E,EAAKkqoB,WAAW,GAC1B/zf,EAAKhtH,GAAOnpB,EAAKkqoB,WAAWhltB,EAAmB,OAAbskuB,EAAoB,UAAU,QAASlhvB,QAAQ85tB,GAAK,IAAI95tB,QAAQo+a,GAAK,KACvF,OAAb8iU,GAAuBtkuB,EAAM,IAAI86E,EAAKltE,GAAK,EAC/C,CAEA,OADY,EAATktE,EAAKltE,IAAOktE,EAAKltE,EAAKktE,EAAKltE,GAAG,GAAM,GAChCqjN,CACR,CAGA,SAASszgB,GAAWzppB,GACnB,IAAIzyD,EAAOyyD,EAAKkqoB,WAAW,GACvBh9U,EAAQltT,EAAKvwF,MAAMuwF,EAAKltE,EAAEktE,EAAKltE,EAAEya,GAGrC,OAFAyyD,EAAKltE,GAAKya,GACC,EAAPA,GAAY,IAAGyyD,EAAKltE,GAAM,GAAY,EAAPya,GAAa,GACzC2/W,CACR,CAaA,SAASo8V,GAAyBtppB,EAAMpoE,EAAiB+2sB,GACxD,IAA4B/9mB,EAAxBlzG,EAAIsiF,EAAKkqoB,WAAW,GAASnxlB,EAAO41lB,GAAO,CAAC,EAEhD,GADA3uoB,EAAKltE,GAAK,EACP8E,IAASystB,IACT3muB,IAAMka,IAAmC,IAA3B4stB,GAAUhvuB,QAAQoiB,KAAmC,OAAX,MAAPA,IAA4C,OAAX,MAAJla,IAAwB,MAAM,IAAI8U,MAAM,iBAAmBoF,EAAO,QAAUla,GAC7J,OAAOka,IAASystB,GAAa3muB,EAAIka,GAChC,KAAK,EAA0E,OAA1Dg5F,EAAM5wB,EAAKkqoB,WAAW,EAAG,KAAUnxlB,EAAK39E,MAAK4kC,EAAKltE,GAAK,GAAU89F,EACtF,KAAK,EAA+C,OAA/BA,EAAM5wB,EAAKkqoB,WAAW,EAAG,KAC9C,KAAK,GAAkB,OAA8B,IAAvBlqoB,EAAKkqoB,WAAW,GAC9C,KAAK,GAA2C,OAA1Bt5mB,EAAM5wB,EAAKkqoB,WAAW,GAC5C,KAAK,GAAmB,OAAO4e,GAAY9opB,EAAMtiF,EAAG,GAAGpV,QAAQ85tB,GAAK,IACpE,KAAK,GAAoB,OAAO4mB,GAAahppB,GAC7C,KAAK,GAAsB,OAAO2opB,GAAe3opB,GACjD,KAAK,GAAkB,OAAOyppB,GAAWzppB,GACzC,KAAK,GAAgB,OAxBvB,SAA6BA,GAE5B,IAAI36E,EAAI,CAAC,EAIT,OAHAA,EAAE06V,KAAO//Q,EAAKkqoB,WAAW,GAEzBlqoB,EAAKltE,GAAKzN,EAAE06V,KAAO,GAAK16V,EAAE06V,KAAO,GAAK,EAC/B16V,CACR,CAiB8BqkuB,CAAoB1ppB,GAChD,KAAK,GAAoB,OAAOmppB,GAAenppB,EAAMtiF,GAAIq7H,EAAK39E,KAAK9yD,QAAQ85tB,GAAK,IAChF,KAAK,GAAkB,OA1FzB,SAAiCpioB,EAAMtiF,GAAgB,IAAIA,EAAG,MAAM,IAAI8U,MAAM,+CAAgD,OAAOy2tB,GAAmBjppB,EAAMtiF,EAAG,EAAI,CA0FrIisuB,CAAwB3ppB,EAAMtiF,GAAUpV,QAAQ85tB,GAAK,IACnF,KAAK,KAAiC,OA1DxC,SAAqCpioB,GAGpC,IAFA,IAAI4ppB,EAAY5ppB,EAAKkqoB,WAAW,GAC5B18jB,EAAM,GACFtjK,EAAI,EAAGA,EAAI0/uB,EAAY,IAAK1/uB,EAAGsjK,EAAInjK,KAAK++uB,GAAoBpppB,IACpE,OAAOwtE,CACR,CAqD+Cq8kB,CAA4B7ppB,GACzE,KAAK,KACL,KAAK,KACJ,OAAY,MAALtiF,EA3FV,SAAgCsiF,GAG/B,IAFA,IAAIj3F,EAASi3F,EAAKkqoB,WAAW,GACzBt5mB,EAAwB,GACpB1mH,EAAI,EAAGA,GAAKnB,IAAUmB,EAAG,CAChC,IAAIuX,EAAQu+E,EAAKltE,EACjB89F,EAAI1mH,GAAK81F,EAAKkqoB,WAAW,EAAG,UAAU5huB,QAAQ85tB,GAAK,IAC/CpioB,EAAKltE,EAAIrR,EAAS,IAAMu+E,EAAKltE,GAAK,EACvC,CACA,OAAO89F,CACR,CAkFwBk5nB,CAAuB9ppB,GA/E/C,SAAwCA,GAGvC,IAFA,IAAIj3F,EAASi3F,EAAKkqoB,WAAW,GACzBt5mB,EAAwB,GACpB1mH,EAAI,EAAGA,GAAKnB,IAAUmB,EAAG0mH,EAAI1mH,GAAK81F,EAAKkqoB,WAAW,EAAG,YAAY5huB,QAAQ85tB,GAAK,IACtF,OAAOxxmB,CACR,CA0EuDm5nB,CAA+B/ppB,GACpF,QAAS,MAAM,IAAIxtE,MAAM,wCAA0CoF,EAAO,IAAMla,GAElF,CAuBA,SAASssuB,GAAkBhqpB,EAAMiqpB,GAChC,IAAIC,EAAalqpB,EAAKltE,EAClBya,EAAOyyD,EAAKkqoB,WAAW,GACvBigB,EAAWnqpB,EAAKkqoB,WAAW,GAC3Bwe,EAAQ,GAAIx+uB,EAAI,EAChBs/uB,EAAW,EACX3/V,GAAc,EAAGugW,EAAiC,CAAC,EACvD,IAAIlgvB,EAAI,EAAGA,GAAKigvB,IAAYjgvB,EAAG,CAC9B,IAAImgvB,EAASrqpB,EAAKkqoB,WAAW,GACzBpyX,EAAS93Q,EAAKkqoB,WAAW,GAC7Bwe,EAAMx+uB,GAAK,CAACmgvB,EAAQvyY,EAASoyY,EAC9B,CACAxB,EAAMl4tB,MAAK,SAASjT,EAAEjE,GAAK,OAAOiE,EAAE,GAAKjE,EAAE,EAAI,IAC/C,IAAIgxuB,EAAQ,CAAC,EACb,IAAIpgvB,EAAI,EAAGA,GAAKigvB,IAAYjgvB,EAAG,CAC9B,GAAG81F,EAAKltE,IAAM41tB,EAAMx+uB,GAAG,GAAI,CAC1B,IAAIkyE,GAAO,EACX,GAAGlyE,EAAE,GAAK+/uB,EAAO,OAAOA,EAAMvB,EAAMx+uB,EAAE,GAAG,IAAIwT,GAC5C,KAAK,EAAmBsiF,EAAKltE,EAAE,IAAM41tB,EAAMx+uB,GAAG,KAAM81F,EAAKltE,GAAG,EAAGspD,GAAO,GAAS,MAC/E,KAAK,GACL,KAAK,KAAoC4jB,EAAKltE,GAAK41tB,EAAMx+uB,GAAG,KAAM81F,EAAKltE,EAAE41tB,EAAMx+uB,GAAG,GAAIkyE,GAAO,GAG9F,KADK6tqB,GAAU,GAAH//uB,IAAS81F,EAAKltE,GAAK41tB,EAAMx+uB,GAAG,KAAMkyE,GAAK,EAAO4jB,EAAKltE,EAAI41tB,EAAMx+uB,GAAG,IACzEkyE,EAAM,MAAM,IAAI5pD,MAAM,gCAAkCk2tB,EAAMx+uB,GAAG,GAAK,OAAS81F,EAAKltE,EAAI,KAAO5oB,EACnG,CACA,GAAG+/uB,EAAO,CACT,GAAkB,GAAfvB,EAAMx+uB,GAAG,IAAWw+uB,EAAM3/uB,OAASmB,EAAE,GAAKw+uB,EAAMx+uB,GAAG,IAAMw+uB,EAAMx+uB,EAAE,GAAG,GAAI,SAC3E,IAAIqgvB,EAASN,EAAMvB,EAAMx+uB,GAAG,IAG5B,GAFAogvB,EAAMC,EAAO5kuB,GAAK2juB,GAAyBtppB,EAAMuqpB,EAAO7suB,EAAG,CAAC09C,KAAI,IAChD,YAAbmvrB,EAAOx4uB,IAAiBu4uB,EAAMC,EAAO5kuB,GAAKtc,OAAOihvB,EAAMC,EAAO5kuB,IAAM,IAAM,KAAO,OAAStc,OAAyB,MAAlBihvB,EAAMC,EAAO5kuB,KAAclW,OAAO,IACvH,YAAZ86uB,EAAO5kuB,EAAiB,OAAO2kuB,EAAMC,EAAO5kuB,IAC9C,KAAK,EAAG2kuB,EAAMC,EAAO5kuB,GAAK,KAE1B,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,IACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KAAO,KAAM,IAClB,KAAK,MAAO,KAAM,IACjB66sB,GAAOgpB,EAAYc,EAAMC,EAAO5kuB,KAAK,EAAK,OAAS,MACpD,QAAS,MAAM,IAAI6M,MAAM,yBAA2B83tB,EAAMC,EAAO5kuB,IAEnE,MACC,GAAmB,IAAhB+iuB,EAAMx+uB,GAAG,IAGX,GAFAs/uB,EAAWc,EAAMd,SAAYF,GAAyBtppB,EAAMmkpB,IAC5D3jB,GAAOgpB,IACY,IAAhB3/V,EAAmB,CACrB,IAAI2gW,EAASxqpB,EAAKltE,EAClBktE,EAAKltE,EAAI41tB,EAAM7+V,GAAY,GAC3BugW,EAAUb,GAAiBvppB,EAAKwppB,GAChCxppB,EAAKltE,EAAI03tB,CACV,OACM,GAAmB,IAAhB9B,EAAMx+uB,GAAG,GAAU,CAC5B,GAAgB,IAAbs/uB,EAAgB,CAAE3/V,EAAa3/Y,EAAG81F,EAAKltE,EAAI41tB,EAAMx+uB,EAAE,GAAG,GAAI,QAAU,CACvEkgvB,EAAUb,GAAiBvppB,EAAKwppB,EACjC,KAAO,CACN,IACIxpsB,EADAn6B,EAAOukuB,EAAQ1B,EAAMx+uB,GAAG,IAG5B,OAAO81F,EAAKA,EAAKltE,IAChB,KAAK,GAAkBktE,EAAKltE,GAAK,EAAGktB,EAAMypsB,GAAWzppB,GAAO,MAC5D,KAAK,GACL,KAAK,GAAoBA,EAAKltE,GAAK,EAAGktB,EAAMmpsB,GAAenppB,EAAMA,EAAKA,EAAKltE,EAAE,IAAIxqB,QAAQ,WAAW,IAAK,MACzG,KAAK,EAAgB03F,EAAKltE,GAAK,EAAGktB,EAAMggD,EAAKkqoB,WAAW,EAAG,KAAM,MACjE,KAAK,GAAiBlqoB,EAAKltE,GAAK,EAAGktB,EAAMggD,EAAKkqoB,WAAW,GAAI,MAC7D,KAAK,EAAgBlqoB,EAAKltE,GAAK,EAAGktB,EAAMggD,EAAKkqoB,WAAW,EAAG,KAAM,MACjE,KAAK,GAAkBlqoB,EAAKltE,GAAK,EAAGktB,EAAMyqsB,GAAUzqpB,EAAM,GAAI,MAC9D,KAAK,GAAsBA,EAAKltE,GAAK,EAAGktB,EAAM57B,GAAUukuB,GAAe3opB,IAAQ,MAC/E,QAAS,MAAM,IAAIxtE,MAAM,mBAAqBwtE,EAAKA,EAAKltE,IAEzDw3tB,EAAMzkuB,GAAQm6B,CACf,CAEF,CAEA,OADAggD,EAAKltE,EAAIo3tB,EAAa38sB,EACf+8sB,CACR,CAgFA,SAASI,GAAwBj4sB,EAAMw3sB,EAAO5c,GAC7C,IAAIrtoB,EAAOvtD,EAAK4tF,QAChB,IAAIrgC,EAAM,MAAQ,CAAC,EACnBiqoB,GAAUjqoB,EAAM,GAEhB,IAAI2qpB,EAASC,EAAQC,EAAQC,EAASC,EAAU,EAChD/qpB,EAAK8roB,IAAI,OAAQ,gBAEF9roB,EAAKkqoB,WAAW,GAC/B,IAAI8gB,EAAmBhrpB,EAAKkqoB,WAAW,GACnCgE,EAAQluoB,EAAKkqoB,WAAW,IAC5B,GAAGgE,IAAUx9pB,GAAIwU,MAAMs6N,OAAOgvb,cAAgBN,IAAUb,EAAO,MAAM,IAAI76sB,MAAM,yBAA2B07sB,GAE1G,GAAe,KADfyc,EAAU3qpB,EAAKkqoB,WAAW,KACM,IAAZygB,EAAe,MAAM,IAAIn4tB,MAAM,uBAAyBm4tB,GAG5E,GAFAC,EAAS5qpB,EAAKkqoB,WAAW,IAAK4gB,EAAU9qpB,EAAKkqoB,WAAW,GAEzC,IAAZygB,GAAiBG,IAAY9qpB,EAAKltE,EAAG,MAAM,IAAIN,MAAM,oBAAsBs4tB,EAAU,QAAU9qpB,EAAKltE,GACnF,IAAZ63tB,IAAiBE,EAAS7qpB,EAAKkqoB,WAAW,IAAK6gB,EAAU/qpB,EAAKkqoB,WAAW,IACjF,IAUI+gB,EAVAC,EAAQlB,GAAkBhqpB,EAAMiqpB,GAEhCttoB,EAAQ,CAAEquoB,iBAAkBA,GAChC,IAAI,IAAI1xuB,KAAK4xuB,EAAOvuoB,EAAKrjG,GAAK4xuB,EAAM5xuB,GAIpC,GAFAqjG,EAAKwuoB,MAAQP,EAEE,IAAZD,EAAe,OAAOhuoB,EAEzB,GADGouoB,EAAU/qpB,EAAKltE,GAAK,IAAGktE,EAAKltE,GAAK,GACjCktE,EAAKltE,IAAMi4tB,EAAS,MAAM,IAAIv4tB,MAAM,sBAAwBwtE,EAAKltE,EAAI,QAAUi4tB,GAElF,IAAME,EAAQjB,GAAkBhqpB,EAAM,KAAO,CAAE,MAAMvjF,GAAe,CACpE,IAAInD,KAAK2xuB,EAAOtuoB,EAAKrjG,GAAK2xuB,EAAM3xuB,GAEhC,OADAqjG,EAAKwuoB,MAAQ,CAACP,EAAQC,GACfluoB,CACR,CAuBA,SAASyuoB,GAAWprpB,EAAMj3F,GAAmC,OAAzBi3F,EAAKkqoB,WAAWnhuB,GAAgB,IAAM,CAU1E,SAAS0hvB,GAAUzqpB,EAAMj3F,GAAqB,OAAmC,IAA5Bi3F,EAAKkqoB,WAAWnhuB,EAAiB,CAGtF,SAASsivB,GAAYrrpB,GAAyC,OAAOA,EAAKkqoB,WAAW,EAAG,IAAM,CAE9F,SAASohB,GAAatrpB,EAAMj3F,GAAoC,OAZhE,SAAkBi3F,EAAMj3F,EAAQ2tL,GAE/B,IADA,IAAIzxK,EAAM,GAAIyB,EAASs5E,EAAKltE,EAAI/pB,EAC1Bi3F,EAAKltE,EAAIpM,GAAQzB,EAAI5a,KAAKqsL,EAAG12F,EAAMt5E,EAASs5E,EAAKltE,IACvD,GAAGpM,IAAWs5E,EAAKltE,EAAG,MAAM,IAAIN,MAAM,eACtC,OAAOvN,CACR,CAOuEsmuB,CAASvrpB,EAAKj3F,EAAOsivB,GAAa,CAiBzG,SAASG,GAA2BxrpB,EAAMj3F,EAAQgwI,GACjD,IAAI0ymB,EAAMzrpB,EAAKkqoB,WAAWnxlB,GAAQA,EAAKqnmB,MAAQ,GAAK,EAAI,GACpD5qtB,EAAW,YACX+qsB,EAAKL,IACNnnlB,GAAQA,EAAKqnmB,MAAQ,IAAGlgB,GAAmB,MAC1CnnlB,GAAqB,GAAbA,EAAKqnmB,MAGM,IAAbrnmB,EAAKqnmB,OACd5qtB,EAAW,QAHKwqE,EAAKkqoB,WAAW,KAChB10sB,EAAW,aAIzBujH,EAAKqnmB,MAAQ,GAAKrnmB,EAAKqnmB,MAAQ,IAAG5qtB,EAAW,SAChD,IAAInQ,EAAIomuB,EAAMzrpB,EAAKkqoB,WAAWuhB,EAAKj2tB,GAAY,GAE/C,OADA0qsB,GAAmBK,EACZl7sB,CACR,CAGA,SAASqmuB,GAAkC1rpB,GAC1C,IAAIugoB,EAAKL,GACTA,GAAmB,KACnB,IAGcyrB,EAHVF,EAAMzrpB,EAAKkqoB,WAAW,GAAIlgtB,EAAQg2E,EAAKkqoB,WAAW,GACrB0hB,EAAiB,EAAR5huB,EAAa6huB,EAAkB,EAAR7huB,EAC7Dpd,EAAQ,GAAa,EAARod,GACb8huB,EAAO,EACPruuB,EAAI,CAAC,EACNouuB,IAASC,EAAO9rpB,EAAKkqoB,WAAW,IAChC0hB,IAAQD,EAAW3rpB,EAAKkqoB,WAAW,IACtC,IAAI10sB,EAAoB,GAAT5oB,EAAa,YAAc,YACtC46F,EAAc,IAARikpB,EAAY,GAAKzrpB,EAAKkqoB,WAAWuhB,EAAKj2tB,GAMhD,OALGq2tB,IAAS7rpB,EAAKltE,GAAK,EAAIg5tB,GACvBF,IAAQ5rpB,EAAKltE,GAAK64tB,GACrBluuB,EAAEC,EAAI8pF,EACFqkpB,IAAWpuuB,EAAE29C,IAAM,MAAQ39C,EAAEC,EAAI,OAAQD,EAAEiV,EAAIjV,EAAEC,GACrDwitB,GAAmBK,EACZ9itB,CACR,CAkBA,SAASsuuB,GAA2B/rpB,EAAMyrpB,EAAK1ymB,GAE9C,GAAGA,EAAM,CACR,GAAGA,EAAKqnmB,MAAQ,GAAKrnmB,EAAKqnmB,MAAQ,EAAG,OAAOpgpB,EAAKkqoB,WAAWuhB,EAAK,SACjE,GAAG1ymB,EAAKqnmB,MAAQ,GAAI,OAAOpgpB,EAAKkqoB,WAAWuhB,EAAK,YACjD,CAIA,OAFe,IADCzrpB,EAAKkqoB,WAAW,GACHlqoB,EAAKkqoB,WAAWuhB,EAAK,aAClCzrpB,EAAKkqoB,WAAWuhB,EAAK,YAEtC,CAGA,SAASO,GAAsBhspB,EAAMj3F,EAAQgwI,GAC5C,IAAI0ymB,EAAMzrpB,EAAKkqoB,WAAWnxlB,GAAqB,GAAbA,EAAKqnmB,KAAY,EAAI,GACvD,OAAW,IAARqL,GAAazrpB,EAAKltE,IAAY,IAC1Bi5tB,GAA2B/rpB,EAAMyrpB,EAAK1ymB,EAC9C,CAEA,SAASkzmB,GAAuBjspB,EAAMj3F,EAAQgwI,GAC7C,GAAGA,EAAKqnmB,KAAO,EAAG,OAAO4L,GAAsBhspB,EAAMj3F,EAAQgwI,GAC7D,IAAI0ymB,EAAMzrpB,EAAKkqoB,WAAW,GAC1B,OAAW,IAARuhB,GAAazrpB,EAAKltE,IAAY,IAC1BktE,EAAKkqoB,WAAWuhB,EAAM1ymB,EAAKqnmB,MAAQ,IAAMpgpB,EAAKsR,KAAS,QAAU,YACzE,CAkDA,SAAS46oB,GAAuBlspB,EAAMj3F,GACrC,IAAIskuB,EAAQrtoB,EAAKkqoB,WAAW,IAC5B,OAD2C,GACpCmD,GACN,IAAK,mCAAoC,OAjC3C,SAA0BrtoB,GACzB,IAAI96E,EAAM86E,EAAKkqoB,WAAW,GAAIzotB,EAAQu+E,EAAKltE,EACvC68E,GAAQ,EACTzqF,EAAM,KAER86E,EAAKltE,GAAK5N,EAAM,GACW,qCAAxB86E,EAAKkqoB,WAAW,MAA4Cv6nB,GAAQ,GACvE3P,EAAKltE,EAAIrR,GAEV,IAAIqwE,EAAMkO,EAAKkqoB,YAAYv6nB,EAAMzqF,EAAI,GAAGA,IAAM,EAAG,WAAW5c,QAAQ85tB,GAAK,IAEzE,OADGzynB,IAAO3P,EAAKltE,GAAK,IACbg/D,CACR,CAqBkDq6pB,CAAiBnspB,GACjE,IAAK,mCAAoC,OAnB3C,SAA2BA,GAEP,IADnB,IAAIospB,EAAQpspB,EAAKkqoB,WAAW,GACxBmiB,EAAW,GAAUD,KAAU,GAAGC,GAAY,MAClD,IAAIC,EAAWtspB,EAAKkqoB,WAAW,EAAG,cAElC,GADAlqoB,EAAKltE,GAAK,EACe,OAAtBktE,EAAKkqoB,WAAW,GAAc,MAAM,IAAI13sB,MAAM,mBAEjD,GAAU,IADDwtE,EAAKkqoB,WAAW,GACZ,OAAOmiB,EAAWC,EAAShkvB,QAAQ,MAAM,KACtD,IAAI4kZ,EAAQltT,EAAKkqoB,WAAW,GAC5B,GAAyB,GAAtBlqoB,EAAKkqoB,WAAW,GAAS,MAAM,IAAI13sB,MAAM,mBAE5C,OAAO65tB,EADWrspB,EAAKkqoB,WAAWh9U,GAAO,EAAG,WAAW5kZ,QAAQ85tB,GAAK,GAErE,CAOkDmqB,CAAkBvspB,GAClE,QAAS,MAAM,IAAIxtE,MAAM,uBAAyB66sB,GAEpD,CAGA,SAASmf,GAAsBxspB,GAC9B,IAAI96E,EAAM86E,EAAKkqoB,WAAW,GAE1B,OADQhltB,EAAM,EAAI86E,EAAKkqoB,WAAWhltB,EAAK,WAAW5c,QAAQ85tB,GAAM,IAAM,EAEvE,CAwEA,SAASqqB,GAAezspB,GAA0H,MAAO,CAAnGA,EAAKkqoB,WAAW,GAAQlqoB,EAAKkqoB,WAAW,GAAQlqoB,EAAKkqoB,WAAW,GAAQlqoB,EAAKkqoB,WAAW,GAAsB,CAGpK,SAASwiB,GAAc1spB,EAAMj3F,GAAU,IAAIwU,EAAIkvuB,GAAezspB,GAAyB,OAAVziF,EAAE,GAAK,EAAUA,CAAG,CAIjG,SAASovuB,GAAc3spB,GAItB,MAAQ,CAACttE,EAHAstE,EAAKkqoB,WAAW,GAGVvttB,EAFLqjF,EAAKkqoB,WAAW,GAEJ0iB,KADX5spB,EAAKkqoB,WAAW,GAE5B,CAsBA,SAAS2iB,GAAU7spB,EAAMj3F,EAAQgwI,GAChC,IAAIj9H,EAAIi9H,EAAKqnmB,KAAO,EAAI,EAAI,EAE5B,MAAO,CADQpgpB,EAAKkqoB,WAAWputB,GAAgBkkF,EAAKkqoB,WAAWputB,EAAE,KAAiBkkF,EAAKkqoB,WAAWputB,EAAE,KAErG,CAGA,SAASgxuB,GAAY9spB,GAGpB,MAAO,CAFIA,EAAKkqoB,WAAW,GAClByZ,GAAe3jpB,GAEzB,CAeA,SAAS+spB,GAAY/spB,GACpB,IAAIgtpB,EAAUhtpB,EAAKkqoB,WAAW,GAC1B+iB,EAASjtpB,EAAKkqoB,WAAW,GAG7B,MAAO,CAAC/vtB,EAAE,CAACwC,EAFIqjF,EAAKkqoB,WAAW,GAERx3sB,EAAEs6tB,GAAUvwuB,EAAE,CAACE,EADxBqjF,EAAKkqoB,WAAW,GACkBx3sB,EAAEu6tB,GACnD,CAWA,SAASC,GAAWltpB,GACnB,IAAIgtpB,EAAUhtpB,EAAKkqoB,WAAW,GAC1B+iB,EAASjtpB,EAAKkqoB,WAAW,GAG7B,MAAO,CAAC/vtB,EAAE,CAACwC,EAFIqjF,EAAKkqoB,WAAW,GAERx3sB,EAAEs6tB,GAAUvwuB,EAAE,CAACE,EADxBqjF,EAAKkqoB,WAAW,GACkBx3sB,EAAEu6tB,GACnD,CAGA,IAAIE,GAAYD,GAGhB,SAASE,GAAYptpB,GACpBA,EAAKltE,GAAK,EACV,IAAIkxC,EAAKg8B,EAAKkqoB,WAAW,GACrBnpsB,EAAKi/D,EAAKkqoB,WAAW,GACrBlgtB,EAAQg2E,EAAKkqoB,WAAW,GAE5B,OADAlqoB,EAAKltE,GAAG,GACD,CAACiO,EAAIijC,EAAIh6C,EACjB,CAqBA,SAASqjuB,GAAartpB,GAAQA,EAAKltE,GAAK,EAAGktE,EAAKltE,GAAKktE,EAAKkqoB,WAAW,EAAI,CACzE,IAAIojB,GAAQ,CACJ,EAAaD,GACb,EAAaA,GACb,EAAaA,GACb,EAAaA,GACb,EAdR,SAAoBrtpB,GAInB,OAFAA,EAAKltE,GAAK,EACVktE,EAAKunG,GAAKvnG,EAAKkqoB,WAAW,GAFhB,CAAC,CAIZ,EAUQ,EAAamjB,GACb,EAAaA,GACb,GAAaA,GACb,GAAaA,GACb,GAAaA,GACb,GA9BR,SAAqBrtpB,GACpB,IAAIwtE,EAAM,CAAC,EAKX,OAJAxtE,EAAKltE,GAAK,EACVktE,EAAKltE,GAAK,GACV06I,EAAI+/kB,YAAcvtpB,EAAKkqoB,WAAW,GAClClqoB,EAAKltE,GAAK,EACH06I,CACR,EAwBQ,GAAa6/kB,GACb,GAAaA,GACb,GAAaA,GACb,GAAaA,GACb,GAAaA,GACb,GAAaA,GACb,GAAaA,GACb,GAAaD,IAmBrB,SAASI,GAAUxtpB,EAAMj3F,GACxB,IAAIsc,EAAI,CAACoouB,QAAQ,EAAGlprB,GAAG,GAGvB,OAFAl/C,EAAEoouB,QAAUztpB,EAAKkqoB,WAAW,IAAInhuB,GAAU,IAC7B,IAAKsc,EAAEk/C,GAAKy7B,EAAKkqoB,WAAW,GAAIlqoB,EAAKltE,GAAK,GAChDzN,EAAEoouB,SACR,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,IACL,KAAK,IACL,KAAK,EAAQ,KAAK,EACjB,MACD,QAAS,GAAG1kvB,EAAS,EAAG,MAAM,IAAIypB,MAAM,uBAAyBnN,EAAEoouB,SAIpE,OADAztpB,EAAKkqoB,WAAWnhuB,GACTsc,CACR,CA8JA,SAASqouB,GAAuB1tpB,EAAMj3F,EAAQgwI,GAC7C,IAAI7yH,EAAI,EACH6yH,GAAqB,GAAbA,EAAKqnmB,OACjBl6tB,EAAI85E,EAAKkqoB,WAAW,IAErB,IAAIyjB,EAAQ3tpB,EAAKkqoB,WAAW,GAK5B,OAJInxlB,GAAqB,GAAbA,EAAKqnmB,OAChBl6tB,EAAI,GAAKynuB,GAAS,IAAKA,GAAS,OAG1B,CADE,CAACC,SAAW,EAAF1nuB,EAAI2nuB,QAAU,EAAF3nuB,IAAM,EAAE4nuB,OAAS,EAAF5nuB,IAAM,EAAE6nuB,OAAS,EAAF7nuB,IAAM,GACvDynuB,EACb,CA4HA,IAAIK,GAAoB/B,GAGxB,SAASgC,GAAiBjupB,EAAMj3F,EAAQgwI,GACvC,IAAIp3H,EAAMq+E,EAAKltE,EAAI/pB,EACf+S,EAAiB,GAAbi9H,EAAKqnmB,MAAcrnmB,EAAKqnmB,KAAW,EAAJ,EACnC1ttB,EAAIstE,EAAKkqoB,WAAWputB,GAAIL,EAAIukF,EAAKkqoB,WAAWputB,GAC5Ca,EAAIqjF,EAAKkqoB,WAAW,GAAI5lrB,EAAI07C,EAAKkqoB,WAAW,GAEhD,OADAlqoB,EAAKltE,EAAInR,EACF,CAACxH,EAAG,CAACuY,EAAEA,EAAG/V,EAAEA,GAAIF,EAAG,CAACiW,EAAEjX,EAAGkB,EAAE2nC,GACnC,CAqIA,SAAS4psB,GAAclupB,EAAMj3F,EAAQgwI,GACpC,IAAIj/G,EAAO6ytB,GAAc3spB,GACT,GAAb+4C,EAAKqnmB,MAAuB,GAAVr3uB,KAAei3F,EAAKltE,EACzC,IAAIktB,EAt0BL,SAAmBggD,GAClB,IAAI3vE,EAAI2vE,EAAKkqoB,WAAW,GACxB,OAAa,IADmBlqoB,EAAKkqoB,WAAW,GAC5B75sB,EAAU,IAANA,CACzB,CAm0BW89tB,CAAUnupB,GAGpB,OAFAlmE,EAAKkmB,IAAMA,EACXlmB,EAAKpc,GAAa,IAARsiC,IAAwB,IAARA,EAAiB,IAAM,IAC1ClmB,CACR,CAuBA,IAAIs0tB,GAhmBJ,SAAkCpupB,EAAMj3F,EAAQgwI,GAAQ,OAAkB,IAAXhwI,EAAe,GAAKkjvB,GAAuBjspB,EAAMj3F,EAAQgwI,EAAO,EAknB/H,SAASs1mB,GAAiBrupB,EAAMj3F,EAAQgwI,GACvC,IACI3+E,EADApwC,EAAQg2E,EAAKkqoB,WAAW,GAExB7ktB,EAAK,CACRipuB,SAAkB,EAARtkuB,EACVukuB,YAAcvkuB,IAAU,EAAK,EAC7BwkuB,UAAYxkuB,IAAU,EAAK,EAC3BykuB,KAAOzkuB,IAAU,EAAK,EACtB0kuB,SAAW1kuB,IAAU,EAAK,EAC1Bu9K,GAAKv9K,IAAU,EAAK,KACpB2kuB,MAAO3kuB,IAAU,GAAK,GAMvB,OAJkB,QAAf+uH,EAAK61mB,QAAkBx0rB,EA7mB3B,SAAwB4lC,EAAMj3F,EAAQgwI,GACrC/4C,EAAKltE,GAAK,EAAG/pB,GAAU,EACvB,IAAI+pB,EAAIktE,EAAKltE,EAAI/pB,EACb8lvB,EAAUrD,GAA2BxrpB,EAAMj3F,EAAQgwI,GACnD29C,EAAK12F,EAAKkqoB,WAAW,GAEzB,GAAGxziB,KADH5jK,GAAKktE,EAAKltE,GACG,MAAM,IAAIN,MAAM,iCAAmCM,EAAI,OAAS4jK,GAE7E,OADA12F,EAAKltE,GAAK4jK,EACHm4jB,CACR,CAomBkCC,CAAe9upB,EAAMj3F,EAAO,EAAGgwI,IAEhE1zH,EAAE+0C,KAAOA,GAAQ4lC,EAAKkqoB,WAAWnhuB,EAAO,GACrB,kBAATqxD,IAAmB/0C,EAAEuZ,KAAOw7B,GAC/B/0C,CACR,CAGA,SAAS0puB,GAAU/upB,EAAMj3F,EAAQgwI,GAChC,IAAIryH,EAASs5E,EAAKltE,EAAI/pB,EAClBihB,EAAQg2E,EAAKkqoB,WAAW,GACxB8kB,EAAQhvpB,EAAKkqoB,WAAW,GACxBuhB,EAAMzrpB,EAAKkqoB,WAAW,GACtB+kB,EAAMjvpB,EAAKkqoB,WAAWnxlB,GAAqB,GAAbA,EAAKqnmB,KAAY,EAAI,GACnD8O,EAAO,IACPn2mB,GAAQA,EAAKqnmB,MAAQ,KACR,GAAbrnmB,EAAKqnmB,OAAWpgpB,EAAKltE,GAAK,GAC7Bo8tB,EAAOlvpB,EAAKkqoB,WAAW,GACP,GAAbnxlB,EAAKqnmB,OAAWpgpB,EAAKltE,GAAK,GAC7BktE,EAAKltE,GAAK,GAEX,IAAIjN,EAAOkmuB,GAA2B/rpB,EAAMyrpB,EAAK1ymB,GACtC,GAAR/uH,IAAcnE,EAAOm/tB,GAAcn/tB,EAAK6lB,WAAW,KACtD,IAAIyjtB,EAASzouB,EAASs5E,EAAKltE,EAAMimH,GAAqB,GAAbA,EAAKqnmB,QAAa+O,EAE3D,IAAIC,EAAQ1ouB,GAAUs5E,EAAKltE,GAAa,IAARm8tB,GAAeE,EAAS,EAgwMzD,SAAiCnvpB,EAAMj3F,EAAQgwI,EAAMk2mB,GACpD,IAEII,EAFA3ouB,EAASs5E,EAAKltE,EAAI/pB,EAClBqmvB,EAAOE,GAAWtvpB,EAAMivpB,EAAKl2mB,GAE9BryH,IAAWs5E,EAAKltE,IAAGu8tB,EAAOE,GAAevvpB,EAAMt5E,EAASs5E,EAAKltE,EAAGs8tB,EAAMr2mB,IACzE,MAAO,CAACq2mB,EAAMC,EACf,CAtwMoEG,CAAwBxvpB,EAAMmvpB,EAAQp2mB,EAAMk2mB,GAAjD,GAE9D,MAAO,CACND,MAAOA,EACPpwtB,KAAM/Y,EACNqpuB,KAAMA,EACNE,KAAMA,EAER,CAGA,SAASK,GAAkBzvpB,EAAMj3F,EAAQgwI,GACxC,GAAGA,EAAKqnmB,KAAO,EAAG,OAAOsP,GAAuB1vpB,EAAMj3F,EAAQgwI,GAE9D,KAAKA,EAAKqnmB,KAAO,IAAOr3uB,GAAUi3F,EAAKA,EAAKltE,IAAwB,GAAlBktE,EAAKA,EAAKltE,EAAE,GAAa,EAAI,GAAK,EAAI,OAAO48tB,GAAuB1vpB,EAAMj3F,EAAQgwI,GAEpI,IADA,IAAI1zH,EAAI,GAAIqB,EAASs5E,EAAKltE,EAAI/pB,EAAQmc,EAAM86E,EAAKkqoB,WAAWnxlB,EAAKqnmB,KAAO,EAAI,EAAI,GAChE,IAAVl7tB,KAAaG,EAAEhb,KAAKwivB,GAAU7spB,EAAM+4C,EAAKqnmB,KAAmBrnmB,IAElE,GAAG/4C,EAAKltE,GAAKpM,EAAQ,MAAM,IAAI8L,MAAM,oBAAsBwtE,EAAKltE,EAAI,OAASpM,GAC7E,OAAOrB,CACR,CACA,SAASqquB,GAAuB1vpB,EAAMj3F,EAAQgwI,GACtB,GAApB/4C,EAAKA,EAAKltE,EAAI,IAAYktE,EAAKA,EAAKltE,KACvC,IAAIzN,EAAImmuB,GAA2BxrpB,EAAMj3F,EAAQgwI,GACjD,OAA0B,GAAnB1zH,EAAEqmB,WAAW,GAAarmB,EAAE5V,MAAM,GAAK4V,CAC/C,CAsBA,SAASsquB,GAAY3vpB,EAAMj3F,EAAQgwI,GAClC,IAAI9+G,EAAMkztB,GAAUntpB,EAAM,GAE1B,OAAO+4C,EAAKqnmB,MACX,KAAK,EAAGpgpB,EAAKltE,IAAM/pB,GAAU,EAAG,MAChC,KAAK,EAAG,KAAK,EAAGi3F,EAAKltE,GAAK,EAAG/pB,GAAU,EAAG,MAC1C,QAASi3F,EAAKltE,GAAK,EAAG/pB,GAAU,GAEjC,MAAO,CAACkxB,EAAK21tB,GAAyB5vpB,EAAMj3F,EAAQgwI,GACrD,CAgDA,IAAI82mB,GAAgB,CACpB,EAAM,SAAS7vpB,EAAMj3F,GACpB,IAAIohuB,EAAMnqoB,EAAKltE,EAAI/pB,EACnBi3F,EAAKltE,GAAK,GACV,IAAIy0K,EAAKvnG,EAAKkqoB,WAAW,GACzBlqoB,EAAKltE,GAAK,EACVktE,EAAKltE,GAAK,EACVktE,EAAKltE,GAAK,EACVktE,EAAKltE,GAAK,EACVktE,EAAKltE,GAAK,EACV,IAAIg9tB,EAAU9vpB,EAAKkqoB,WAAW,GAG9B,OAFAlqoB,EAAKltE,GAAKg9tB,EACV9vpB,EAAKltE,EAAIq3sB,EACF,CAAE1F,IAAIl9hB,EACd,GA+IA,SAASwojB,GAAc/vpB,EAAMj3F,EAAQgwI,GACpC,IAAIA,EAAKhuF,WAAY,OAAOs0rB,GAAUr/oB,EAAMj3F,GAC5C,IAAI+S,EAAIi9H,GAAQA,EAAKqnmB,MAAQ,GAAK,EAAI,EAClC4P,EAAWhwpB,EAAKkqoB,WAAWputB,GAC3Bm0uB,EAAUjwpB,EAAKkqoB,WAAWputB,GAC1Bo0uB,EAAQlwpB,EAAKkqoB,WAAWputB,GACxB8wuB,EAAO5spB,EAAKkqoB,WAAWputB,GACvBkO,EAAQg2E,EAAKkqoB,WAAW,GACpB,GAALputB,IAAQkkF,EAAKltE,GAAK,GACrB,IAAIzN,EAAK,CAAClL,EAAE61uB,EAAUvzuB,EAAEwzuB,EAASn0uB,EAAEo0uB,EAAOtD,KAAKA,EAAM5iuB,MAAMA,GAE3D,OADG+uH,EAAKqnmB,MAAQ,IAAMrnmB,EAAKqnmB,QAAM/6tB,EAAE+0E,MAASpwE,GAAS,EAAK,GACnD3E,CACR,CA2CA,IAAI8quB,GAAcxD,GACdyD,GAAY9E,GACZ+E,GAAerE,GAgFnB,IAAIsE,GAAyB,CAAC,EAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,KACpEC,GAAoB,WACxB,IAAIC,EAAmB,CAEf,EAAe,IAAsB,EAAe,IACpD,EAAc,KAAuB,EAAa,IAClD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAc,KACnD,IAAc,KAAuB,IAAa,MAClD,IAAa,MAAwB,IAAa,MAClD,IAAc,KAAuB,IAAc,KACnD,IAAc,KAAuB,IAAc,KAGnD,EAAa,MAAwB,EAAe,IACpD,EAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAc,KAAuB,GAAc,KACnD,GAAc,KAAuB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAc,KAEnD,IAAa,OAEjBC,EAAkBpZ,GAAM,CACpB,EAAe,IAAsB,EAAe,IACpD,EAAc,KAAuB,EAAa,IAClD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAc,KACnD,IAAc,KAAuB,IAAa,MAClD,IAAa,MAAwB,IAAa,MAClD,IAAc,KAAuB,IAAc,KACnD,IAAc,KAAuB,IAAc,KACnD,EAAa,QAsKrB,SAASqZ,EAAahvB,EAAK3olB,GAC1B,IAAI1zH,EAAI0zH,GAAQ,CAAC,EACb1zH,EAAEoitB,SAAQpitB,EAAEoitB,OAAS,YACzB,IAAI7vkB,EAAK8qlB,GAtKV,SAAoBhhB,EAAK3olB,GACxB,IAAIy0B,EAAc,GACd9zJ,EAAekotB,GAAY,GAC/B,OAAO7olB,EAAKnhH,MACX,IAAK,SAAUle,EAAIootB,GAAIR,GAAcI,IAAO,MAC5C,IAAK,SAAUhotB,EAAIootB,GAAIJ,GAAM,MAC7B,IAAK,SACL,IAAK,QAAShotB,EAAIgotB,EAEnBuI,GAAUvwtB,EAAG,GAGb,IAAI2qD,EAAK3qD,EAAEwwtB,WAAW,GAClB5hgB,KAAe,IAALjkK,GACVssrB,GAAM,EAAOC,GAAK,EACtB,OAAOvsrB,GACN,KAAK,EACL,KAAK,EAKL,KAAK,IACL,KAAK,IAGL,KAAK,IAAM,MARX,KAAK,GACL,KAAK,GAAMssrB,GAAM,EAAMrohB,GAAO,EAAM,MAKpC,KAAK,IAAMsohB,GAAK,EAAM,MAItB,QAAS,MAAM,IAAIp+tB,MAAM,4BAA8B6xC,EAAG55D,SAAS,KAGpE,IAAIomvB,EAAO,EAAGC,EAAO,IACZ,GAANzsrB,IAAYwsrB,EAAOn3uB,EAAEwwtB,WAAW,IACnCxwtB,EAAEoZ,GAAK,EACE,GAANuxC,IAAYwsrB,EAAOn3uB,EAAEwwtB,WAAW,IAChC2mB,EAAO,UAASA,EAAO,KAEjB,GAANxsrB,IAAYysrB,EAAOp3uB,EAAEwwtB,WAAW,IACnC,IAAI6mB,EAAOr3uB,EAAEwwtB,WAAW,GAEL8mB,EAAaj4mB,EAAKk4mB,UAAY,KACxC,GAAN5srB,IACF3qD,EAAEoZ,GAAG,GACOpZ,EAAEwwtB,WAAW,GAIX,IAAXxwtB,EAAEA,EAAEoZ,KAAUk+tB,EAAaR,EAAiB92uB,EAAEA,EAAEoZ,KACnDpZ,EAAEoZ,GAAG,EAELpZ,EAAEoZ,GAAG,GAEH89tB,IAAIl3uB,EAAEoZ,GAAK,IAMd,IAHA,IAAImxR,EAA6B,GAAI32I,EAAsB,CAAC,EACxD4jlB,EAAOppvB,KAAKma,IAAIvI,EAAE3Q,OAAe,GAANs7D,EAAa,IAASysrB,EAAO,IAAMH,EAAM,IAAM,IAC1ExhmB,EAAKyhmB,EAAK,GAAK,GACbl3uB,EAAEoZ,EAAIo+tB,GAAkB,IAAVx3uB,EAAEA,EAAEoZ,IAWvB,QAVAw6I,EAAS,CAAC,GACJznJ,MAA4B,qBAAbm6sB,GAA2BA,GAAS96oB,MAAM3lD,OAAOyxtB,EAAYt3uB,EAAEjK,MAAMiK,EAAEoZ,EAAGpZ,EAAEoZ,EAAEq8H,IAAO4ykB,GAAIrotB,EAAEjK,MAAMiK,EAAEoZ,EAAGpZ,EAAEoZ,EAAIq8H,KAAM7mJ,QAAQ,mBAAmB,IAClKoR,EAAEoZ,GAAKq8H,EACPme,EAAM11I,KAAOvuB,OAAOg+C,aAAa3tC,EAAEwwtB,WAAW,IACrC,GAAN7lqB,GAAeusrB,IAAItjlB,EAAM3yJ,OAASjB,EAAEwwtB,WAAW,IAClD58jB,EAAMpoJ,IAAMxL,EAAEwwtB,WAAW,GAChB,GAAN7lqB,IAAYipG,EAAM3yJ,OAASjB,EAAEwwtB,WAAW,IAC3C58jB,EAAMs3F,IAAMlrP,EAAEwwtB,WAAW,GACtB58jB,EAAMznJ,KAAK9c,QAAQk7S,EAAO55S,KAAKijK,GACzB,GAANjpG,IAAY3qD,EAAEoZ,GAAK89tB,EAAK,GAAK,IACzBtjlB,EAAM11I,MACZ,IAAK,IACC+4tB,GAAoB,GAAbrjlB,EAAMpoJ,MAAa6zH,EAAKkjmB,KAAKxyuB,QAAQC,IAAI,YAAc4jK,EAAMznJ,KAAO,IAAMynJ,EAAM11I,MAC5F,MACD,IAAK,IACL,IAAK,IACDmhH,EAAKkjmB,KAAKxyuB,QAAQC,IAAI,YAAc4jK,EAAMznJ,KAAO,IAAMynJ,EAAM11I,MAChE,MACD,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACJ,MACD,QAAS,MAAM,IAAIpF,MAAM,uBAAyB86I,EAAM11I,MAK1D,GADc,KAAXle,EAAEA,EAAEoZ,KAAapZ,EAAEoZ,EAAIg+tB,EAAK,GACR,KAApBp3uB,EAAEwwtB,WAAW,GAAa,MAAM,IAAI13sB,MAAM,4BAA8B9Y,EAAEoZ,EAAI,IAAMpZ,EAAEA,EAAEoZ,IAC3FpZ,EAAEoZ,EAAIg+tB,EAGN,IAAIr1uB,EAAI,EAAG6oC,EAAI,EAEf,IADAkpH,EAAI,GAAK,GACLlpH,EAAI,EAAGA,GAAK2/P,EAAOl7S,SAAUu7C,EAAGkpH,EAAI,GAAGlpH,GAAK2/P,EAAO3/P,GAAGz+B,KAC1D,KAAMgruB,KAAS,GACd,GAAc,KAAXn3uB,EAAEA,EAAEoZ,GAOP,MAFEpZ,EAAEoZ,EACJ06I,IAAM/xJ,GAAK,GAAI6oC,EAAI,EACfA,EAAI,EAAGA,GAAK2/P,EAAOl7S,SAAUu7C,EAAG,CACnC,IAAIq/B,EAAKjqE,EAAEjK,MAAMiK,EAAEoZ,EAAGpZ,EAAEoZ,EAAEmxR,EAAO3/P,GAAGp/B,KAAMxL,EAAEoZ,GAAGmxR,EAAO3/P,GAAGp/B,IACzD+ktB,GAAUtmpB,EAAI,GACd,IAAIxpE,EAAwB,qBAAb6ltB,GAA2BA,GAAS96oB,MAAM3lD,OAAOyxtB,EAAYrtqB,GAAMo+oB,GAAIp+oB,GACtF,OAAOsgO,EAAO3/P,GAAG1sB,MAChB,IAAK,IAEDzd,EAAEtQ,OAAOd,SAAQykK,EAAI/xJ,GAAG6oC,GAAKnqC,EAAE7R,QAAQ,OAAO,KACjD,MACD,IAAK,IACY,IAAb6R,EAAEpR,OAAcykK,EAAI/xJ,GAAG6oC,GAAK,IAAIhyC,MAAM6H,EAAE1K,MAAM,EAAE,IAAK0K,EAAE1K,MAAM,EAAE,GAAG,GAAI0K,EAAE1K,MAAM,EAAE,IAC9E+9J,EAAI/xJ,GAAG6oC,GAAKnqC,EACjB,MACD,IAAK,IAAKqzJ,EAAI/xJ,GAAG6oC,GAAKv/B,WAAW5K,EAAEtQ,QAAS,MAC5C,IAAK,IAAK,IAAK,IAAK2jK,EAAI/xJ,GAAG6oC,GAAKsssB,EAA8B,WAAzBjtqB,EAAGumpB,YAAY,EAAG,KAAoBvmpB,EAAGumpB,WAAW,EAAG,KAAM,MAClG,IAAK,IAAK,OAAO/vtB,EAAEtQ,OAAOiQ,eACzB,IAAK,IAAK,IAAK,IAAK0zJ,EAAI/xJ,GAAG6oC,IAAK,EAAM,MACtC,IAAK,IAAK,IAAK,IAAKkpH,EAAI/xJ,GAAG6oC,IAAK,EAAO,MACvC,IAAK,GAAI,IAAK,IAAK,MACnB,QAAS,MAAM,IAAI9xB,MAAM,uBAAyBrY,EAAI,KACpD,MACH,IAAK,IACJ,IAAImuN,EAAM,MAAM,IAAI91M,MAAM,gCAAkC6xC,EAAG55D,SAAS,KACxE+iK,EAAI/xJ,GAAG6oC,GAAK,YAAcsssB,EAAKv/uB,SAAS8I,EAAEtQ,OAAQ,IAAK85E,EAAGumpB,WAAW,IACrE,MACD,IAAK,KACJ/vtB,EAAIA,EAAE7R,QAAQ,UAAU,IAAIuB,SAEf,KAALsQ,IAAUqzJ,EAAI/xJ,GAAG6oC,IAAMnqC,GAAK,GAAG,MACxC,IAAK,IAEJqzJ,EAAI/xJ,GAAG6oC,GAAK,IAAIhyC,KAAKqxE,EAAGumpB,YAAY,EAAG,KAAO,aAC9C,MACD,IAAK,IAAK18jB,EAAI/xJ,GAAG6oC,GAAK,IAAIhyC,KAAqC,OAA/BqxE,EAAGumpB,WAAW,GAAK,SAAwBvmpB,EAAGumpB,WAAW,IAAK,MAC9F,IAAK,IAAK18jB,EAAI/xJ,GAAG6oC,GAAKq/B,EAAGumpB,WAAW,EAAE,KAAK,IAAOvmpB,EAAGumpB,WAAW,EAAG,KAAK,IAAKpiuB,KAAK4P,IAAI,EAAE,IAAK,MAC7F,IAAK,IAAK81J,EAAI/xJ,GAAG6oC,IAAMq/B,EAAGumpB,YAAY,EAAG,KAAM,MAC/C,IAAK,IAAK,GAAGymB,GAAwB,GAAjB1sc,EAAO3/P,GAAGp/B,IAAU,CAAEsoJ,EAAI/xJ,GAAG6oC,GAAKq/B,EAAGumpB,WAAW,EAAE,KAAM,KAAO,CAEnF,IAAK,IAAK,IAAK,IAAKvmpB,EAAG7wD,GAAKmxR,EAAO3/P,GAAGp/B,IAAK,MAC3C,IAAK,IACJ,GAAsB,eAAnB++R,EAAO3/P,GAAGz+B,KAAuB,MAErC,QAAS,MAAM,IAAI2M,MAAM,6BAA+ByxR,EAAO3/P,GAAG1sB,MAEpE,MAjDCle,EAAEoZ,GAAGi+tB,EAmDP,GAAS,GAAN1srB,GAAe3qD,EAAEoZ,EAAIpZ,EAAE3Q,QAAsB,IAAZ2Q,EAAEA,EAAEoZ,KAAc,MAAM,IAAIN,MAAM,2BAA6B9Y,EAAEoZ,EAAE,GAAK,OAASpZ,EAAE3Q,OAAS,IAAM2Q,EAAEA,EAAEoZ,EAAE,GAAGroB,SAAS,KAGxJ,OAFGsuI,GAAQA,EAAKo4mB,YAAW3jlB,EAAMA,EAAI/9J,MAAM,EAAGspI,EAAKo4mB,YACnDp4mB,EAAKw3mB,IAAMtsc,EACJz2I,CACR,CAKuB4jlB,CAAW1vB,EAAKr8sB,GAAIA,GAM1C,OALAuyI,EAAG,SAAWvyI,EAAEkruB,IAAIrxuB,KAAI,SAASouJ,GAAS,MAAO,CAChD+jlB,IAAK/jlB,EAAMpoJ,IACXqruB,IAAKjjlB,EACJ,WACKjoJ,EAAEkruB,IACF34lB,CACR,CAWA,IAAI05lB,EAAQ,CAAE,EAAK,EAAG,EAAK,IAAK,EAAK,EAAG,EAAK,EAAG,IAAK,EAAG,GAAI,GAkI3D,MAAO,CACNC,YA5IF,SAAyB7vB,EAAK3olB,GAC7B,IACC,IAAI1zH,EAAIq8tB,GAAkBgP,EAAahvB,EAAK3olB,GAAOA,GAEnD,OADA1zH,EAAEmsuB,SAAW,MACNnsuB,CACR,CAAE,MAAM5I,GAAK,GAAGs8H,GAAQA,EAAKkjmB,IAAK,MAAMx/tB,CAAG,CAC3C,MAAQ,CAACkluB,WAAW,GAAGC,OAAO,CAAC,EAChC,EAsIE6P,SAAUf,EACVgB,WApIF,SAAsB95lB,EAAkB7e,GACvC,IAAI1zH,EAAI0zH,GAAQ,CAAC,EACb44mB,EAASzxB,GAEb,IADI76sB,EAAE4ruB,UAAY,GAAGzwB,IAAQn7sB,EAAE4ruB,UAClB,UAAV5ruB,EAAEuS,KAAkB,MAAM,IAAIpF,MAAM,iCACvC,IAAIs2K,EAAK62iB,KACLiS,EAAcC,GAAcj6lB,EAAI,CAAC97H,OAAO,EAAGs/B,KAAI,EAAMonrB,WAAU,IAC/D9mtB,EAAUk2tB,EAAI,GAAIv6sB,EAAOu6sB,EAAInivB,MAAM,GAAIw6B,EAAO2tH,EAAG,UAAY,GAC7D1tJ,EAAI,EAAGm6C,EAAI,EAAGytsB,EAAO,EAAGf,EAAO,EACnC,IAAI7mvB,EAAI,EAAGA,EAAIwxB,EAAQ3yB,SAAUmB,EAChC,KAAK+/B,EAAK//B,IAAI,CAAC,GAAGqmvB,KAAK,CAAC,GAAG1quB,KAAQ6V,EAAQxxB,GAAK+/B,EAAK//B,GAAGqmvB,IAAI1quB,OAAQisuB,OACpE,GAAiB,MAAdp2tB,EAAQxxB,GAAX,CAGA,KAFE4nvB,EACuB,kBAAfp2tB,EAAQxxB,KAAiBwxB,EAAQxxB,GAAKwxB,EAAQxxB,GAAGO,SAAS,KAC3C,kBAAfixB,EAAQxxB,GAAiB,MAAM,IAAIsoB,MAAM,2BAA6BkJ,EAAQxxB,GAAK,YAAewxB,EAAQxxB,GAAM,KAC1H,GAAGwxB,EAAQlmB,QAAQkmB,EAAQxxB,MAAQA,EAAG,IAAIm6C,EAAE,EAAGA,EAAE,OAAOA,EACvD,IAA6C,GAA1C3oB,EAAQlmB,QAAQkmB,EAAQxxB,GAAK,IAAMm6C,GAAU,CAAE3oB,EAAQxxB,IAAM,IAAMm6C,EAAG,KAAO,CALlD,CAOhC,IAAInlB,EAAQmitB,GAAkBzplB,EAAG,SAC7Bm6lB,EAA6B,GAC7BC,EAA8B,GAC9BC,EAAgC,GACpC,IAAI/nvB,EAAI,EAAGA,GAAKg1B,EAAMziB,EAAEE,EAAIuiB,EAAM/kB,EAAEwC,IAAKzS,EAAG,CAC3C,IAAIgovB,EAAQ,GAAIC,EAAS,GAAIhwB,EAAS,EAClCtssB,EAAqB,GACzB,IAAIwuB,EAAE,EAAGA,EAAIhN,EAAKtuC,SAAUs7C,EACV,MAAdhN,EAAKgN,GAAGn6C,IAAY2rB,EAAIxrB,KAAKgtC,EAAKgN,GAAGn6C,IAEzC,GAAiB,GAAd2rB,EAAI9sB,QAA6B,MAAd2yB,EAAQxxB,GAA9B,CACA,IAAIm6C,EAAI,EAAGA,EAAIxuB,EAAI9sB,SAAUs7C,EAAG,CAC/B,cAAcxuB,EAAIwuB,IAEjB,IAAK,SAAU8tsB,EAAS,IAAK,MAC7B,IAAK,SAGL,QAASA,EAAS,UAFlB,IAAK,UAAWA,EAAS,IAAK,MAC9B,IAAK,SAAUA,EAASt8tB,EAAIwuB,aAAc/xC,KAAO,IAAM,IAIxD6vtB,EAASr6tB,KAAK8Z,IAAIugtB,GAA6B,qBAAbnC,IAA6C,iBAAVnqsB,EAAIwuB,GAAiB27qB,GAAS96oB,MAAM7iD,OAAO89rB,GAActqsB,EAAIwuB,IAAKh7C,OAAOwsB,EAAIwuB,KAAKt7C,QACvJmpvB,EAAQA,GAASA,GAASC,EAAS,IAAMA,CAE1C,CACGhwB,EAAS,MAAKA,EAAS,KAGb,MAFbgwB,IAAWlotB,EAAK//B,IAAI,CAAC,GAAGqmvB,KAAK,CAAC,GAAG34tB,OAG7BqS,EAAK//B,GAAGqmvB,IAAIrruB,IAAMi9sB,IAAQA,EAASl4rB,EAAK//B,GAAGqmvB,IAAIrruB,KAEvC,KAATgtuB,GAA0B,KAAVC,IAClBD,EAAQ,IACRD,EAAY/nvB,GAAK+/B,EAAK//B,GAAGqmvB,IAAI3rf,IAC7Bu9d,EAASl4rB,EAAK//B,GAAGqmvB,IAAIrruB,KAEtB8suB,EAAU9nvB,GAAc,KAATgovB,GAA0B,KAAVC,EAAgBhwB,EAAUmvB,EAAMY,IAAU,EACzEnB,GAAQiB,EAAU9nvB,GAClB6nvB,EAAS7nvB,GAAKgovB,CA5B2D,MAA7BH,EAAS7nvB,GAAK,GA6B3D,CAEA,IAAI6P,EAAI+uL,EAAGviL,KAAK,IAKhB,IAJAxM,EAAE+vtB,YAAY,EAAG,WACjB/vtB,EAAE+vtB,YAAY,EAAGzyrB,EAAKtuC,QACtBgR,EAAE+vtB,YAAY,EAAG,IAAM,GAAKgoB,GAC5B/3uB,EAAE+vtB,YAAY,EAAGinB,GACb7mvB,EAAE,EAAGA,EAAI,IAAKA,EAAG6P,EAAE+vtB,YAAY,EAAG,GACtC,IAAIvJ,GAAMkwB,EAA6BvwB,KAA4B,EAOnE,IANAnmtB,EAAE+vtB,YAAY,EAAG,EAAcvJ,GAAI,GAChCiwB,EAAiBjwB,KAAQl7sB,EAAE4ruB,WAC1B5ruB,EAAE4ruB,UAAUxnvB,QAAQ2pB,MAAM,4BAA8B8ssB,GAAmB,gBAC9EA,GAAmB,MAGhBh2tB,EAAI,EAAGm6C,EAAI,EAAGn6C,EAAIwxB,EAAQ3yB,SAAUmB,EACvC,GAAiB,MAAdwxB,EAAQxxB,GAAX,CACA,IAAI09L,EAAKkB,EAAGviL,KAAK,IAEb4/F,GAAMzqF,EAAQxxB,GAAGuF,OAAO,IAAM,0BAAgDA,MAAM,EAAG,IAC3Fm4L,EAAGkiiB,YAAY,EAAG3jnB,EAAI,QACtByhF,EAAGkiiB,YAAY,EAAkB,KAAfioB,EAAS7nvB,GAAY,IAAM6nvB,EAAS7nvB,GAAI,QAC1D09L,EAAGkiiB,YAAY,EAAGzlrB,GAClBujJ,EAAGkiiB,YAAY,EAAGkoB,EAAU9nvB,IAAMonvB,EAAMS,EAAS7nvB,KAAO,GACxD09L,EAAGkiiB,YAAY,EAAGmoB,EAAY/nvB,IAAM,GACpC09L,EAAGkiiB,YAAY,EAAG,GAClBliiB,EAAGkiiB,YAAY,EAAG,GAClBliiB,EAAGkiiB,YAAY,EAAG,GAClBliiB,EAAGkiiB,YAAY,EAAG,GAClBliiB,EAAGkiiB,YAAY,EAAG,GAClBzlrB,GAAM2tsB,EAAU9nvB,IAAMonvB,EAAMS,EAAS7nvB,KAAO,CAdb,CAiBhC,IAAI8sL,EAAK8R,EAAGviL,KAAK,KAEjB,IADAywK,EAAG8yiB,YAAY,EAAG,IACd5/tB,EAAE,EAAGA,EAAI,KAAKA,EAAG8sL,EAAG8yiB,YAAY,EAAG,GACvC,IAAI5/tB,EAAE,EAAGA,EAAImtC,EAAKtuC,SAAUmB,EAAG,CAC9B,IAAIkovB,EAAOtpjB,EAAGviL,KAAKwquB,GAEnB,IADAqB,EAAKtoB,YAAY,EAAG,GAChBzlrB,EAAE,EAAGA,EAAE3oB,EAAQ3yB,SAAUs7C,EAC5B,GAAiB,MAAd3oB,EAAQ2oB,GACX,OAAO0tsB,EAAS1tsB,IACf,IAAK,IAAK+tsB,EAAKtoB,YAAY,EAAiB,MAAdzyrB,EAAKntC,GAAGm6C,GAAa,GAAOhN,EAAKntC,GAAGm6C,GAAK,GAAO,IAAO,MACrF,IAAK,IAAK+tsB,EAAKtoB,YAAY,EAAGzyrB,EAAKntC,GAAGm6C,IAAI,EAAG,KAAM,MACnD,IAAK,IACJ,IAAIukK,EAAK,IAGT,IAFwB,iBAAdvxK,EAAKntC,GAAGm6C,KAAgBukK,EAAKvxK,EAAKntC,GAAGm6C,GAAG58C,QAAQwqvB,EAAY5tsB,IAAI,IACvEukK,EAAG7/M,OAASipvB,EAAU3tsB,KAAIukK,EAAKA,EAAGn5M,MAAM,EAAGuivB,EAAU3tsB,KACpDytsB,EAAK,EAAGA,EAAOE,EAAU3tsB,GAAGukK,EAAG7/M,SAAU+ovB,EAAMM,EAAKtoB,YAAY,EAAG,IACvEsoB,EAAKtoB,YAAY,EAAGlhhB,EAAI,QACxB,MACD,IAAK,IACAvxK,EAAKntC,GAAGm6C,IAEX+tsB,EAAKtoB,YAAY,GAAI,OAAOzyrB,EAAKntC,GAAGm6C,GAAG7xC,eAAe/C,OAAO,GAAI,QACjE2ivB,EAAKtoB,YAAY,GAAI,MAAMzyrB,EAAKntC,GAAGm6C,GAAG5xC,WAAW,IAAIhD,OAAO,GAAI,QAChE2ivB,EAAKtoB,YAAY,GAAI,KAAKzyrB,EAAKntC,GAAGm6C,GAAG3xC,WAAWjD,OAAO,GAAI,SAJ5C2ivB,EAAKtoB,YAAY,EAAG,WAAY,QAK9C,MACH,IAAK,IACJ,IAAI9+kB,EAAKonmB,EAAKt/tB,EACV41L,EAAKr/M,OAAqB,MAAdguC,EAAKntC,GAAGm6C,GAAahN,EAAKntC,GAAGm6C,GAAK,IAAI50C,MAAM,EAAGuivB,EAAU3tsB,IAGzE,IAFA+tsB,EAAKtoB,YAAY,EAAGphhB,EAAI,SACxB19D,GAAMgnmB,EAAU3tsB,GAAK+tsB,EAAKt/tB,EACtBg/tB,EAAK,EAAGA,EAAO9mmB,IAAM8mmB,EAAMM,EAAKtoB,YAAY,EAAG,IAIvD,CAGA,OAFA5J,GAAmByxB,EACnB7ojB,EAAGviL,KAAK,GAAGujtB,YAAY,EAAG,IACnBhhiB,EAAGnnL,KACX,EAMA,CA1XwB,GA4XpB0wuB,GAAqB,WAExB,IAAIC,EAAgB,CACnBC,GAAG,OAAKC,GAAG,OAAK58V,GAAG,OAAK68V,GAAG,IAAKC,GAAG,OAAKC,GAAG,IAC3CC,GAAG,OAAKC,GAAG,OAAKC,GAAG,OAAaC,GAAG,OACnCC,GAAG,OAAKC,GAAG,OAAKC,GAAG,OAAaC,GAAG,OACnCC,GAAG,OAAKC,GAAG,OAAKC,GAAG,OAAKC,GAAG,IAAKC,GAAG,OACnCC,GAAG,OAAKC,GAAG,OAAKC,GAAG,OAAaC,GAAG,OACnCz/jB,GAAG,OAAKC,GAAG,OAAKC,GAAG,OAAKC,GAAG,IAAKI,GAAG,OAAKE,GAAG,IAC3C7d,GAAG,OAAKI,GAAG,OAAKjB,GAAG,OAAamB,GAAG,OACnC6+B,GAAG,OAAKC,GAAG,OAAKC,GAAG,OAAaK,GAAG,OACnCo9iB,GAAG,OAAKC,GAAG,OAAKC,GAAG,OAAKpvqB,GAAG,IAAKqvqB,GAAG,OACnCC,GAAG,OAAKC,GAAG,OAAKC,GAAG,OAAaC,GAAG,OACnCC,GAAG,OAAKx1jB,GAAG,OAAKjjL,EAAE,OAAM6B,EAAE,SAAM9D,EAAE,OAAM0qC,EAAE,SAC1CiwsB,GAAG,IAAKC,GAAG,IAAKC,GAAG,IACnBn6uB,EAAE,IAAMsC,EAAE,IAAMlB,EAAE,IAAM,KAAK,IACtB,EAAS,IAAe,EAAS,IAAa,EAAS,IACvD,EAAS,IAAe,EAAS,IAAa,EAAS,IACvD,EAAS,IAAQE,EAAE,IAAMsB,EAAE,IAAMH,EAAE,IAAM5S,EAAE,IAAM4oB,EAAE,IAAM3Y,EAAE,IAAMb,EAAE,IAC1E,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,KAAK,IAC3D,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,KAEvDm7uB,EAAkB,IAAItxuB,OAAO,SAAawc,GAAK2ytB,GAAcznvB,KAAK,KAAKvC,QAAQ,SAAU,SAASA,QAAQ,YAAY,QAAU,QAAS,MACzIosvB,EAAe,SAAS55tB,EAAGitH,GAAK,IAAI1iI,EAAIituB,EAAavqmB,GAAK,MAAmB,iBAAL1iI,EAAgB07sB,GAAS17sB,GAAKA,CAAG,EACzGsvuB,EAAmB,SAAS3vB,EAAIj9kB,EAAIk9kB,GAAM,IAAI2vB,EAAU7smB,EAAGr8G,WAAW,GAAK,IAAO,EAAMu5rB,EAAGv5rB,WAAW,GAAK,GAAO,OAAgB,IAATkptB,EAAc5vB,EAAKjE,GAAS6zB,EAAQ,EAYjK,SAASC,EAAgBnsmB,EAAgB3P,GACxC,IAIc10F,EAJVo9P,EAAU/4J,EAAIjmI,MAAM,WAAYhH,GAAK,EAAG6oC,GAAK,EAAGmxJ,EAAK,EAAGsF,EAAK,EAAG91L,EAAc,GAC9EnY,EAA4B,GAC5BgovB,EAAmC,KACnCC,EAAM,CAAC,EAAGC,EAA6B,GAAIC,EAA6B,GAAIC,EAAuB,GACnGC,EAAO,EACP57jB,EAAK,CAAEjvJ,SAAU,CAAE8qtB,QAAS,CAAC,EAAGC,MAAO,KAE3C,KADIt8mB,EAAKk4mB,UAAY,GAAGzwB,IAAQznlB,EAAKk4mB,UAC9Bx7iB,IAAOgsG,EAAQ14S,SAAU0sM,EAAI,CACnC0/iB,EAAO,EACP,IAEkBn1sB,EAFds1sB,EAAK7zc,EAAQhsG,GAAI5rM,OAAOvB,QAAQ,kCAAmCqsvB,GAAkBrsvB,QAAQmsvB,EAAiBC,GAC9G1jc,EAAOskc,EAAKhtvB,QAAQ,MAAO,MAAUma,MAAM,KAAKvD,KAAI,SAAS3B,GAAK,OAAOA,EAAEjV,QAAQ,UAAW,IAAM,IACpGm3uB,EAAGzub,EAAO,GACd,GAAGskc,EAAKvsvB,OAAS,EAAG,OAAO02uB,GAC3B,IAAK,KACL,IAAK,IACL,IAAK,IASL,IAAK,IAAK,MARV,IAAK,IACL,IAAI1kiB,EAAG,EAAGA,EAAGi2G,EAAOjoT,SAAUgyM,EAAI,GAC5B,MADmCi2G,EAAOj2G,GAAIprK,OAAO,GAC1D,CACC,IAAI4ltB,EAAQlkvB,SAAS2/S,EAAOj2G,GAAItrM,MAAM,GAAI,IAEvC8lvB,GAAS,GAAKA,GAAS,IAAGh8jB,EAAGjvJ,SAAS8qtB,QAAQ5gtB,UAAW,EACtD,CACN,MAEF,IAAK,IACJ,GACM,MADCw8Q,EAAO,GAAGrhR,OAAO,GACb7iC,EAAQzC,KAAKirvB,EAAK7lvB,MAAM,GAAGnH,QAAQ,MAAO,MACnD,MACH,IAAK,KACJ,IAAIktvB,EAAK,CAACC,MAAO,GACjB,IAAI16iB,EAAG,EAAGA,EAAGi2G,EAAOjoT,SAAUgyM,EAAI,OAAOi2G,EAAOj2G,GAAIprK,OAAO,IAC1D,IAAK,IAAK6ltB,EAAG52tB,KAAOoyR,EAAOj2G,GAAItrM,MAAM,GAAI,MACzC,IAAK,IAAK+lvB,EAAG72tB,KAAOo6G,GAAQA,EAAK7vG,OAAS,UAAY,IAAMwstB,GAAS1kc,EAAOj2G,GAAItrM,MAAM,IAEvF8pL,EAAGjvJ,SAAS+qtB,MAAMhrvB,KAAKmrvB,GACtB,MAGF,IAAK,IACL,IAAIG,GAAW,EAAOC,GAAW,EAAOC,GAAW,EAAOC,GAAW,EAAO5lqB,GAAM,EAAG8xpB,GAAM,EAAGhttB,EAAU,GAAI+guB,EAAS,IACrH,IAAIh7iB,EAAG,EAAGA,EAAGi2G,EAAOjoT,SAAUgyM,EAAI,OAAOi2G,EAAOj2G,GAAIprK,OAAO,IAC1D,IAAK,IA2BL,IAAK,IAAK,MA1BV,IAAK,IAAK2U,EAAIjzC,SAAS2/S,EAAOj2G,GAAItrM,MAAM,GAAI,IAAI,EAAGmmvB,GAAW,EAAM,MACpE,IAAK,IAEJ,IADAn6uB,EAAIpK,SAAS2/S,EAAOj2G,GAAItrM,MAAM,GAAI,IAAI,EAAOmmvB,IAAUtxsB,EAAI,GACvDD,EAAIp/B,EAAIlc,OAAQs7C,GAAK5oC,IAAK4oC,EAAGp/B,EAAIo/B,GAAK,GAC1C,MACD,IAAK,IAEiB,OADrBrE,EAAMgxQ,EAAOj2G,GAAItrM,MAAM,IAChBkgC,OAAO,IAAcqQ,EAAMA,EAAIvwC,MAAM,EAAEuwC,EAAIj3C,OAAS,GAAIgtvB,EAAS,KACxD,SAAR/1sB,GAA0B,UAARA,GAAmBA,EAAc,SAARA,EAAgB+1sB,EAAS,KACnE3/uB,MAAMiiuB,GAASr4rB,IAGb5pC,MAAMoiuB,GAAUx4rB,GAAKttC,aAC/BstC,EAAM57B,GAAU47B,GAAM+1sB,EAAS,IAC3Bh9mB,EAAKypmB,YAAauT,EAAS,IAAK/1sB,EAAMu3rB,GAAQv3rB,EAAKu5I,EAAGjvJ,SAAS8qtB,QAAQ5gtB,aAJ3EwL,EAAMq4rB,GAASr4rB,GAAM+1sB,EAAS,IACN,OAArBjB,GAA6B/tB,GAAY+tB,IAAqB/7mB,EAAKypmB,YAAaxisB,EAAM23rB,GAAQp+iB,EAAGjvJ,SAAS8qtB,QAAQ5gtB,SAAWwL,EAAM,KAAOA,GAAM+1sB,EAAS,MAKtI,qBAAb/1B,IAA0C,iBAAPhgrB,GAAuC,WAAlB+4F,GAAM,CAAC,GAAGnhH,OAAsBmhH,GAAM,CAAC,GAAGk4mB,WAAUjxsB,EAAMggrB,GAAS96oB,MAAM3lD,OAAOw5G,EAAKk4mB,SAAUjxsB,IACjK21sB,GAAW,EACX,MACD,IAAK,IACJG,GAAW,EACX9guB,EAAU0guB,GAAS1kc,EAAOj2G,GAAItrM,MAAM,GAAI,CAACijB,EAAEjX,EAAEkB,EAAE2nC,IAC/C,MACD,IAAK,IACJuxsB,GAAW,EACX,MAED,IAAK,IAAK3lqB,EAAK7+E,SAAS2/S,EAAOj2G,GAAItrM,MAAM,GAAI,IAAI,EAAG,MACpD,IAAK,IAAKuyuB,EAAK3wuB,SAAS2/S,EAAOj2G,GAAItrM,MAAM,GAAI,IAAI,EAAG,MAGpD,QAAS,GAAGspI,GAAQA,EAAKkjmB,IAAK,MAAM,IAAIzptB,MAAM,mBAAqB8iuB,GASpE,GAPGK,IACE1wuB,EAAIxJ,GAAG6oC,IACJr/B,EAAIxJ,GAAG6oC,GAAG5mC,EAAIq4uB,EAAQ9wuB,EAAIxJ,GAAG6oC,GAAGj0B,EAAI2vB,GAD5B/6B,EAAIxJ,GAAG6oC,GAAK,CAAE5mC,EAAGq4uB,EAAQ1luB,EAAG2vB,GAExC80sB,IAAkB7vuB,EAAIxJ,GAAG6oC,GAAG7mC,EAAIq3uB,IACd,IAAlB/7mB,EAAK8vkB,UAAsBisC,IAAkB7vuB,EAAIxJ,GAAG6oC,GAAGxoC,EAAIyotB,GAAWt/sB,EAAIxJ,GAAG6oC,GAAG7mC,EAAGwH,EAAIxJ,GAAG6oC,GAAGj0B,EAAG,CAAEmkB,SAAU+kJ,EAAGjvJ,SAAS8qtB,QAAQ5gtB,YACnIsgtB,EAAmB,MAEjBe,EAAU,CACZ,GAAGC,EAAU,MAAM,IAAItjuB,MAAM,+CAC7B,IAAIwjuB,EAAU9lqB,GAAM,GAAKjrE,EAAIirE,GAAI8xpB,GACjC,IAAIgU,IAAYA,EAAQ,GAAI,MAAM,IAAIxjuB,MAAM,wCAC5CwC,EAAUihuB,GAAkBD,EAAQ,GAAI,CAACtjuB,EAAGjX,EAAIy0E,EAAIvzE,EAAG2nC,EAAI09rB,GAC5D,CACGhttB,IACE/P,EAAIxJ,GAAG6oC,GACNr/B,EAAIxJ,GAAG6oC,GAAGp+B,EAAI8O,EADJ/P,EAAIxJ,GAAG6oC,GAAK,CAAE5mC,EAAG,IAAKwI,EAAG8O,IAGzC,MACA,IAAK,IACL,IAAIkhuB,EAAS,EACb,IAAIn7iB,EAAG,EAAGA,EAAGi2G,EAAOjoT,SAAUgyM,EAAI,OAAOi2G,EAAOj2G,GAAIprK,OAAO,IAC1D,IAAK,IAAK2U,EAAIjzC,SAAS2/S,EAAOj2G,GAAItrM,MAAM,GAAI,IAAI,IAAKymvB,EAAQ,MAC7D,IAAK,IAEJ,IADAz6uB,EAAIpK,SAAS2/S,EAAOj2G,GAAItrM,MAAM,GAAI,IAAI,EAClC40C,EAAIp/B,EAAIlc,OAAQs7C,GAAK5oC,IAAK4oC,EAAGp/B,EAAIo/B,GAAK,GAC1C,MACD,IAAK,IAAK8wsB,EAAO9jvB,SAAS2/S,EAAOj2G,GAAItrM,MAAM,GAAI,IAAM,GAAI,MACzD,IAAK,IACL,IAAK,IAIL,IAAK,IACL,IAAK,IACL,IAAK,IAAK,MALV,IAAK,IACJqlvB,EAAmBhovB,EAAQuE,SAAS2/S,EAAOj2G,GAAItrM,MAAM,GAAI,KACzD,MAID,IAAK,IAEJ,IADAylvB,EAAKlkc,EAAOj2G,GAAItrM,MAAM,GAAGgT,MAAM,KAC3B4hC,EAAIhzC,SAAS6jvB,EAAG,GAAI,IAAK7wsB,GAAKhzC,SAAS6jvB,EAAG,GAAI,MAAO7wsB,EACxD8wsB,EAAO9jvB,SAAS6jvB,EAAG,GAAI,IACvBD,EAAQ5wsB,EAAE,GAAc,IAAT8wsB,EAAa,CAAC55tB,QAAO,GAAO,CAAC81tB,IAAI8D,GAC/C,MACH,IAAK,IAEAF,EADJ3wsB,EAAIjzC,SAAS2/S,EAAOj2G,GAAItrM,MAAM,GAAI,IAAI,KACtBwlvB,EAAQ3wsB,GAAK,CAAC,GAC9B,MACD,IAAK,IAEA0wsB,EADJv5uB,EAAIpK,SAAS2/S,EAAOj2G,GAAItrM,MAAM,GAAI,IAAI,KACtBulvB,EAAQv5uB,GAAK,CAAC,GAC3B05uB,EAAO,GAAKH,EAAQv5uB,GAAG06uB,IAAMhB,EAAMH,EAAQv5uB,GAAG26uB,IAAMC,GAAMlB,IAC5C,IAATA,IAAYH,EAAQv5uB,GAAG8f,QAAS,GACxC,MAGD,QAAS,GAAGw9G,GAAQA,EAAKkjmB,IAAK,MAAM,IAAIzptB,MAAM,mBAAqB8iuB,GAEjEY,EAAS,IAAGpB,EAAmB,MAAM,MACxC,QAAS,GAAG/7mB,GAAQA,EAAKkjmB,IAAK,MAAM,IAAIzptB,MAAM,mBAAqB8iuB,GAEpE,CAKA,OAJGN,EAAQjsvB,OAAS,IAAGgsvB,EAAI,SAAWC,GACnCC,EAAQlsvB,OAAS,IAAGgsvB,EAAI,SAAWE,GACtCA,EAAQlzuB,SAAQ,SAAS8T,GAAOyguB,GAAYzguB,EAAM,IAC/CkjH,GAAQA,EAAKo4mB,YAAWlsuB,EAAMA,EAAIxV,MAAM,EAAGspI,EAAKo4mB,YAC5C,CAAClsuB,EAAK8vuB,EAAKx7jB,EACnB,CAcA,SAASg9jB,EAAmBz8tB,EAAe89H,EAAkBn8I,EAAc6oC,GAC1E,IAAIj/B,EAAI,OAAS5J,EAAE,GAAK,MAAQ6oC,EAAE,GAAK,KACvC,OAAOxqB,EAAKpc,GACX,IAAK,IACJ2H,GAAMyU,EAAKzJ,GAAG,EACXyJ,EAAK5T,IAAM4T,EAAK/T,IAAGV,GAAK,KAAOmxuB,GAAS18tB,EAAK5T,EAAG,CAACwM,EAAEjX,EAAGkB,EAAE2nC,KAAK,MACjE,IAAK,IAAKj/B,GAAKyU,EAAKzJ,EAAI,OAAS,QAAS,MAC1C,IAAK,IAAKhL,GAAKyU,EAAKhe,GAAKge,EAAKzJ,EAAG,MACjC,IAAK,IAAKhL,GAAK,KAAOyU,EAAKhe,GAAKge,EAAKzJ,GAAK,IAAK,MAC/C,IAAK,IAAKhL,GAAK,KAAiB,MAAVyU,EAAKzJ,EAAY,GAAKhnB,OAAOywB,EAAKzJ,IAAI/nB,QAAQ,KAAK,IAAIA,QAAQ,KAAM,MAAQ,IAEpG,OAAO+c,CACR,CAqDA,OAvOAituB,EAAa,KAAO,IAuOb,CACNf,YA9ED,SAA0B73uB,EAAeq/H,GACxC,IAAI09mB,EAzJL,SAAqB/8uB,EAAeq/H,GACnC,OAAOA,EAAKnhH,MACX,IAAK,SAAU,OAAOi9tB,EAAgBvzB,GAAc5ntB,GAAIq/H,GACxD,IAAK,SAAU,OAAO87mB,EAAgBn7uB,EAAGq/H,GACzC,IAAK,SAAU,OAAO87mB,EAAgBtzB,IAAW72rB,OAAOgwB,SAAShhD,GAAKA,EAAEjP,SAAS,UAAYs3tB,GAAIrotB,GAAIq/H,GACrG,IAAK,QAAS,OAAO87mB,EAAgB3c,GAAOx+tB,GAAIq/H,GAEjD,MAAM,IAAIvmH,MAAM,qBAAuBumH,EAAKnhH,KAC7C,CAiJc8+tB,CAAYh9uB,EAAGq/H,GACxB64mB,EAAM6E,EAAO,GAAI7+lB,EAAK6+lB,EAAO,GAAIl9jB,EAAKk9jB,EAAO,GAC7C9nB,EAAQt8pB,GAAI0mE,GAAO41lB,EAAMn6rB,YAAc+kJ,GAAI,CAAC,GAAGjvJ,UAAY,CAAC,GAAG8qtB,SAAW,CAAC,GAAG5gtB,SAClF,IAAInvB,EAAIq9tB,GAAakP,EAAKjjB,GAC1BhvsB,GAAKi4H,GAAI71I,SAAQ,SAAS9E,GAAKoI,EAAEpI,GAAK26I,EAAG36I,EAAI,IAC7C,IAAI05uB,EAAQjV,GAAkBr8tB,EAAG0zH,GAGjC,OAFAp5G,GAAK45J,GAAIx3K,SAAQ,SAAS9E,GAAK05uB,EAAM15uB,GAAKs8K,EAAGt8K,EAAI,IACjD05uB,EAAMnF,SAAW,OACVmF,CACR,EAqECjF,WA9BD,SAAuB95lB,EAAkB7e,EAAewgD,GAEvD,IACuCz/J,EA1BZ0zI,EAyBvB6+kB,EAA6B,CAAC,mBAAoBhnuB,EAAsB,GACxEqN,EAAI2utB,GAAkBzplB,EAAG,SACzBmqlB,EAAuB,MAAfnqlB,EAAG,SACXg/lB,EAAK,OACLrB,KAAWh8jB,GAAI,CAAC,GAAGjvJ,UAAU,CAAC,GAAG8qtB,SAAS,CAAC,GAAG5gtB,SAElD63sB,EAAShivB,KAAK,cACdgivB,EAAShivB,KAAK,mBACXutJ,EAAG,WAjCqB4V,EAiCQ6+kB,EAAUz0lB,EAAG,SAhC3C71I,SAAQ,SAAS8T,EAAK3rB,GAC1B,IAAI2svB,EAAM,OAAS3svB,EAAE,GAAK,KAAOA,EAAE,GAAK,IACrC2rB,EAAI0F,OAAQs7tB,GAAO,KAEE,iBAAbhhuB,EAAIjpB,OAAsBipB,EAAIihuB,MAAKjhuB,EAAIihuB,IAAMC,GAASlhuB,EAAIjpB,QAC/C,iBAAXipB,EAAIihuB,KAAoBjhuB,EAAIw7tB,MAAKx7tB,EAAIw7tB,IAAM2F,GAAQnhuB,EAAIihuB,MAC5C,iBAAXjhuB,EAAIw7tB,MAAiBwF,GAAO/uvB,KAAKoM,MAAM2hB,EAAIw7tB,OAErB,KAA9BwF,EAAIlntB,OAAOkntB,EAAI9tvB,OAAS,IAAWykK,EAAInjK,KAAKwsvB,EAChD,KAwBGj/lB,EAAG,UArBP,SAA4B4V,EAAuBvrI,GAClDA,EAAKlgB,SAAQ,SAASiU,EAAK9rB,GAC1B,IAAI2svB,EAAM,KACP7guB,EAAIuF,OAAQs7tB,GAAO,MACd7guB,EAAImguB,IAAKU,GAAO,IAAM,GAAK7guB,EAAImguB,IAAM,IACrCnguB,EAAIoguB,MAAKS,GAAO,IAAM,GAAKI,GAAMjhuB,EAAIoguB,KAAO,KACjDS,EAAI9tvB,OAAS,GAAGykK,EAAInjK,KAAKwsvB,EAAM,KAAO3svB,EAAE,GAC5C,GACD,CAaiBgtvB,CAAmB7K,EAAUz0lB,EAAG,UAEhDy0lB,EAAShivB,KAAK,OAASqoB,EAAEjW,EAAEiW,EAAIA,EAAEvY,EAAEuY,EAAI,GAAK,MAAQA,EAAEjW,EAAEE,EAAI+V,EAAEvY,EAAEwC,EAAI,GAAK,KAAO,CAAC+V,EAAEvY,EAAEwC,EAAE+V,EAAEvY,EAAEuY,EAAEA,EAAEjW,EAAEE,EAAE+V,EAAEjW,EAAEiW,GAAG7nB,KAAK,MAC/GwhvB,EAAShivB,KAAK,WAAakrvB,EAAQ,MAAQ,IAAM,mBACjD,IAAI,IAAI95uB,EAAIiX,EAAEvY,EAAEuY,EAAGjX,GAAKiX,EAAEjW,EAAEiW,IAAKjX,EAChC,IAAGsmuB,GAAUnqlB,EAAG,SAASn8I,GAAzB,CAEA,IADA,IAAI1J,EAAI,GACAuyC,EAAI5xB,EAAEvY,EAAEwC,EAAG2nC,GAAK5xB,EAAEjW,EAAEE,IAAK2nC,GAChCxqB,EAAOiotB,EAAQnqlB,EAAG,SAASn8I,GAAG6oC,GAAKszG,EAAG+olB,GAAWr8rB,GAAKo8rB,GAAWjluB,OAC1C,MAAVqe,EAAKzJ,GAAeyJ,EAAK5T,IAAK4T,EAAK/T,IAChDhU,EAAE1H,KAAKksvB,EAAmBz8tB,EAAM89H,EAAIn8I,EAAG6oC,IAExCj/B,EAAEhb,KAAK0H,EAAElH,KAAK+rvB,GAPuB,CAStC,OAAOvK,EAASxhvB,KAAK+rvB,GAAMA,EAAKvxuB,EAAExa,KAAK+rvB,GAAMA,EAAK,IAAMA,CACzD,EAMD,CApQyB,GAsQrBO,GAAoB,WAUvB,SAASC,EAAe1umB,EAAgB3P,GAEvC,IADA,IAAI0oK,EAAU/4J,EAAIjmI,MAAM,MAAOhH,GAAK,EAAG6oC,GAAK,EAAGmxJ,EAAK,EAAGxwL,EAAc,GAC9DwwL,IAAOgsG,EAAQ14S,SAAU0sM,EAC/B,GAA2B,QAAvBgsG,EAAQhsG,GAAI5rM,QAChB,KAAI4R,EAAI,GAAR,CAKA,IAJA,IAAIy9O,EAAWuoD,EAAQhsG,GAAI5rM,OAAO4Y,MAAM,KACpCmV,EAAOshO,EAAS,GAAIjxP,EAAQixP,EAAS,GAErC7hN,EAAOoqQ,IADThsG,IACwB,GACe,GAAjCp+J,EAAKzoC,MAAM,SAAS,IAAI7F,QAAe0sM,EAAKgsG,EAAQ14S,OAAS,GAAGsuC,GAAQ,KAAOoqQ,IAAUhsG,GAEjG,OADAp+J,EAAOA,EAAKxtC,QACH+tB,GACR,KAAM,EACL,GAAa,QAATyf,EAAgB,CAAEpyB,IAAMxJ,GAAK,GAAI6oC,EAAI,EAAG,QAAU,CACjD,GAAa,QAATjN,EAAgB,MAAM,IAAI7kB,MAAM,oCAAsC6kB,GAC/E,MACD,KAAK,EACQ,SAATA,EAAiBpyB,EAAIxJ,GAAG6oC,IAAK,EACf,UAATjN,EAAkBpyB,EAAIxJ,GAAG6oC,IAAK,EAC7BluC,MAAMiiuB,GAASpwuB,IACfmO,MAAMoiuB,GAAUvwuB,GAAOyK,WAC3BuS,EAAIxJ,GAAG6oC,GAAKr8C,EAD2Bgd,EAAIxJ,GAAG6oC,GAAKlgC,GAAUnc,GADjCgd,EAAIxJ,GAAG6oC,GAAK+zrB,GAASpwuB,KAGpDq8C,EAAG,MACN,KAAK,GAEJjN,GADAA,EAAOA,EAAK5nC,MAAM,EAAE4nC,EAAKtuC,OAAO,IACpBT,QAAQ,MAAO,OACN+uC,EAAKzoC,MAAM,aAAYyoC,EAAOA,EAAK5nC,MAAM,GAAI,IAClEwV,EAAIxJ,GAAG6oC,KAAgB,KAATjN,EAAcA,EAAO,KAGrC,GAAa,QAATA,EAAgB,KA1BD,OADiBpyB,IAAMxJ,GAAK,GAAI6oC,EAAI,EA8BxD,OADGy0F,GAAQA,EAAKo4mB,YAAWlsuB,EAAMA,EAAIxV,MAAM,EAAGspI,EAAKo4mB,YAC5ClsuB,CACR,CAEA,SAASoyuB,EAAa3umB,EAAgB3P,GAAsB,OAAO2pmB,GA7CnE,SAAoBhpuB,EAAeq/H,GAClC,OAAOA,EAAKnhH,MACX,IAAK,SAAU,OAAOw/tB,EAAe91B,GAAc5ntB,GAAIq/H,GACvD,IAAK,SAAU,OAAOq+mB,EAAe19uB,EAAGq/H,GACxC,IAAK,SAAU,OAAOq+mB,EAAe71B,IAAW72rB,OAAOgwB,SAAShhD,GAAKA,EAAEjP,SAAS,UAAYs3tB,GAAIrotB,GAAIq/H,GACpG,IAAK,QAAS,OAAOq+mB,EAAelf,GAAOx+tB,GAAIq/H,GAEhD,MAAM,IAAIvmH,MAAM,qBAAuBumH,EAAKnhH,KAC7C,CAqCgF0/tB,CAAW5umB,EAAK3P,GAAOA,EAAO,CAO9G,SAASw+mB,EAAWlnuB,EAAclW,GAA2B,MAAO,KAAO9Q,OAAOgnB,GAAK,OAASlW,CAAG,CACnG,SAASq9uB,EAAer9uB,GAA2B,MAAO,WAAcA,EAAE7R,QAAQ,KAAK,MAAQ,GAAK,CAgDpG,MAAO,CACNipvB,YAxDD,SAAyB7omB,EAAgB3P,GACxC,IAAI1zH,EAAIq8tB,GAAkB2V,EAAa3umB,EAAK3P,GAAOA,GAEnD,OADA1zH,EAAEmsuB,SAAW,MACNnsuB,CACR,EAqDCosuB,SAAU4F,EACV3F,WAlDD,SAAsB95lB,GAUrB,IATA,IACIllI,EAAI2utB,GAAkBzplB,EAAG,SACzBmqlB,EAAuB,MAAfnqlB,EAAG,SACXvyI,EAAsB,CACzB,gCACA,iBAAmBqN,EAAEjW,EAAEiW,EAAIA,EAAEvY,EAAEuY,EAAI,GAAK,aACxC,gBAAkBA,EAAEjW,EAAEE,EAAI+V,EAAEvY,EAAEwC,EAAI,GAAK,aACvC,yBAEOlB,EAAIiX,EAAEvY,EAAEuY,EAAGjX,GAAKiX,EAAEjW,EAAEiW,IAAKjX,EAAG,CAGnC,IAFA,IAAIua,EAAM+rtB,EAAQnqlB,EAAG,SAASn8I,GAAK,GAC/B1J,EAAI,kBACAuyC,EAAI5xB,EAAEvY,EAAEwC,EAAG2nC,GAAK5xB,EAAEjW,EAAEE,IAAK2nC,EAAG,CACnC,IAAIxqB,EAAgBiotB,EAAS/rtB,GAAOA,EAAIsuB,GAAMszG,EAAG2olB,GAAY,CAAC7ttB,EAAEjX,EAAEkB,EAAE2nC,KACpE,GAAW,MAARxqB,EAAH,CACA,OAAOA,EAAKpc,GACX,IAAK,IAEU,MAAVoc,EAAKhe,EAAW/J,GAAK,KAAO+nB,EAAKhe,EAAI,QACtB,MAAVge,EAAKzJ,EAAWte,GAAKwlvB,EAAWz9tB,EAAKzJ,EAAG,KAC9B,MAAVyJ,EAAK5T,GAAc4T,EAAK/T,EAC3BhU,GAAK,YADyBA,GAAKylvB,EAAe,IAAM19tB,EAAK5T,GAMnE,MACD,IAAK,IACJnU,GAAK+nB,EAAKzJ,EAAIknuB,EAAW,EAAG,QAAUA,EAAW,EAAG,SACpD,MACD,IAAK,IACJxlvB,GAAKylvB,EAA4BphvB,OAAO0jB,EAAKzJ,GAAMyJ,EAAKzJ,EAAI,KAAOyJ,EAAKzJ,EAAI,KAC5E,MACD,IAAK,IACAyJ,EAAKhe,IAAGge,EAAKhe,EAAIyotB,GAAWzqsB,EAAKrc,GAAKqltB,GAAU,IAAKyU,GAAQnztB,GAAU0V,EAAKzJ,MACpEte,GAAKwlvB,EAAWz9tB,EAAKhe,EAAG,KAEpC,MACD,QAAS/J,GAAK,YAEfA,GAAK,MA1BgD,MAAlCA,GAAK,eA2BzB,CACAsT,EAAEhb,KAAK0H,EACR,CACA,OAAOsT,EAAExa,KAAK,IAAM,aACrB,EAMD,CA3GwB,GA6GpB4svB,GAAoB,WAEvB,SAASp1tB,EAAOloB,GAA2B,OAAOA,EAAE7R,QAAQ,MAAO,OAAOA,QAAQ,KAAM,OAAOA,QAAQ,MAAM,MAAQ,CA2BrH,SAASovvB,EAAah+uB,EAAcq/H,GAAsB,OAAO2pmB,GAzBjE,SAAoBh6lB,EAAgB3P,GAEnC,IADA,IAAI0oK,EAAU/4J,EAAIjmI,MAAM,MAAOhH,GAAK,EAAG6oC,GAAK,EAAGmxJ,EAAK,EAAGxwL,EAAc,GAC9DwwL,IAAOgsG,EAAQ14S,SAAU0sM,EAAI,CACnC,IAAIu7G,EAASvP,EAAQhsG,GAAI5rM,OAAO4Y,MAAM,KACtC,GAAiB,SAAduuS,EAAO,GAAV,CACA,IAAI07a,EAAOsU,GAAYhwb,EAAO,IAC9B,GAAG/rS,EAAIlc,QAAU2juB,EAAKh6sB,EAAG,IAAIjX,EAAIwJ,EAAIlc,OAAQ0S,GAAKixtB,EAAKh6sB,IAAKjX,EAAOwJ,EAAIxJ,KAAIwJ,EAAIxJ,GAAK,IAEpF,OADAA,EAAIixtB,EAAKh6sB,EAAG4xB,EAAIoorB,EAAK/vtB,EACdq0S,EAAO,IACb,IAAK,IAAK/rS,EAAIxJ,GAAG6oC,GAAY0sQ,EAAO,GAZa1oT,QAAQ,OAAO,MAAMA,QAAQ,OAAO,KAAKA,QAAQ,OAAO,MAYhE,MACzC,IAAK,IAAK2c,EAAIxJ,GAAG6oC,IAAM0sQ,EAAO,GAAI,MAClC,IAAK,MAAO,IAAI7qM,EAAK6qM,EAAOA,EAAOjoT,OAAS,GAE5C,IAAK,MAEE,OADCioT,EAAO,GACF/rS,EAAIxJ,GAAG6oC,MAAM0sQ,EAAO,GACtB/rS,EAAIxJ,GAAG6oC,IAAM0sQ,EAAO,GAEd,OAAbA,EAAO,KAAa/rS,EAAIxJ,GAAG6oC,GAAK,CAACr/B,EAAIxJ,GAAG6oC,GAAI6hE,IAdhB,CAgBlC,CAEA,OADG4yB,GAAQA,EAAKo4mB,YAAWlsuB,EAAMA,EAAIxV,MAAM,EAAGspI,EAAKo4mB,YAC5ClsuB,CACR,CAE8E0yuB,CAAWj+uB,EAAGq/H,GAAOA,EAAO,CAG1G,IAAIj9G,EAAS,CACZ,yBACA,oBACA,4EACCjxB,KAAK,MAEHk/P,EAAM,CACT,qCACA,2CACCl/P,KAAK,MAAQ,KAGXkvF,EAAO,CACV,wCACA,cACClvF,KAAK,MAEH8W,EAAM,uCAEV,SAASi2uB,EAAkBhgmB,GAC1B,IAAIA,IAAOA,EAAG,QAAS,MAAO,GAI9B,IAHA,IAAyD99H,EAArDzU,EAAsB,GAAIq5tB,EAAuB,GAAUvpd,EAAQ,GACnEziQ,EAAIuutB,GAAarplB,EAAG,SACpBmqlB,EAAuB,MAAfnqlB,EAAG,SACPn8I,EAAIiX,EAAEvY,EAAEuY,EAAGjX,GAAKiX,EAAEjW,EAAEiW,IAAKjX,EAChC,IAAI,IAAI6oC,EAAI5xB,EAAEvY,EAAEwC,EAAG2nC,GAAK5xB,EAAEjW,EAAEE,IAAK2nC,EAGhC,GAFA6wO,EAAQord,GAAY,CAAC7ttB,EAAEjX,EAAEkB,EAAE2nC,KAC3BxqB,EAAOiotB,GAASnqlB,EAAG,SAASn8I,IAAI,IAAI6oC,GAAKszG,EAAGu9H,KACtB,MAAVr7P,EAAKzJ,GAAwB,MAAXyJ,EAAKpc,EAAnC,CAEA,OADAghuB,EAAK,CAAC,OAAQvpd,EAAO,KACdr7P,EAAKpc,GACX,IAAK,IAAK,IAAK,MAAOghuB,EAAGr0uB,KAAKg4B,EAAOvI,EAAKzJ,IAAK,MAC/C,IAAK,IACAyJ,EAAK5T,GACFw4tB,EAAG,GAAG,MAAOA,EAAG,GAAG,IAAKA,EAAG,GAAG5ktB,EAAKzJ,EAAGqutB,EAAG,GAAGr8sB,EAAOvI,EAAK5T,KADjDw4tB,EAAG,GAAG,IAAKA,EAAG,GAAG5ktB,EAAKzJ,GAEpC,MACD,IAAK,IACJqutB,EAAG,GAAK,MAAM5ktB,EAAK5T,EAAE,IAAI,KAAMw4tB,EAAG,GAAG,KAAMA,EAAG,GAAG5ktB,EAAKzJ,EAAE,IAAI,IAC5DqutB,EAAG,GAAKr8sB,EAAOvI,EAAK5T,IAAI4T,EAAKzJ,EAAE,OAAO,UACtC,MACD,IAAK,IACJ,IAAI3S,EAAI65tB,GAAQnztB,GAAU0V,EAAKzJ,IAC/BqutB,EAAG,GAAK,MAAOA,EAAG,GAAK,KAAMA,EAAG,GAAK,GAAGhhuB,EACxCghuB,EAAG,GAAK5ktB,EAAKhe,GAAKyotB,GAAWzqsB,EAAKrc,GAAKqltB,GAAU,IAAKpltB,GACtD,MACD,IAAK,IAAK,SAEX2H,EAAEhb,KAAKq0uB,EAAG7zuB,KAAK,KAnBuC,CAyBxD,OAHAwa,EAAEhb,KAAK,YAAcqoB,EAAEjW,EAAEE,EAAE+V,EAAEvY,EAAEwC,EAAE,GAAK,OAAS+V,EAAEjW,EAAEiW,EAAEA,EAAEvY,EAAEuY,EAAE,GAAK,UAChErN,EAAEhb,KAAK,2BAEAgb,EAAExa,KAAK,KACf,CAOA,MAAO,CACN0mvB,YAhED,SAAyB73uB,EAAcq/H,GAAqB,OAAO2omB,GAAkBgW,EAAah+uB,EAAGq/H,GAAOA,EAAO,EAiElH04mB,SAAUiG,EACVhG,WARD,SAAsB95lB,GACrB,MAAO,CAAC97H,EAAQiuO,EAAKhwK,EAAMgwK,EAAK6tf,EAAkBhgmB,GAAKj2I,GAAK9W,KAAK,KAElE,EAOD,CAlGwB,GAoGpBgtvB,GAAoB,WACvB,SAASC,EAAazgtB,EAAiBpyB,EAAaxJ,EAAc6oC,EAAcj/B,GAC5EA,EAAE+1C,IAAKn2C,EAAIxJ,GAAG6oC,GAAKjN,EACL,KAATA,IACS,SAATA,EAAiBpyB,EAAIxJ,GAAG6oC,IAAK,EACpB,UAATjN,EAAkBpyB,EAAIxJ,GAAG6oC,IAAK,EAC7BluC,MAAMiiuB,GAAShhsB,IACfjhC,MAAMoiuB,GAAUnhsB,GAAM3kC,WAC1BuS,EAAIxJ,GAAG6oC,GAAKjN,EAD0BpyB,EAAIxJ,GAAG6oC,GAAKlgC,GAAUizB,GADjCpyB,EAAIxJ,GAAG6oC,GAAK+zrB,GAAShhsB,GAGtD,CA6BA,IAAI0gtB,EAAa,CACT,GAAa,IACb,EAAa,KACb,GAAa,IACb,IAAa,KAIjBC,EAAoB,CAChB,GAAa,EACb,EAAa,EACb,GAAa,EACb,IAAa,GAGrB,SAASC,EAAUvvmB,GAElB,IADA,IAAI0zI,EAAM,CAAC,EAAG87d,GAAQ,EAAOv2uB,EAAM,EAAGs6K,EAAK,EACtCt6K,EAAM+mI,EAAI3/I,SAAS4Y,EACQ,KAA3Bs6K,EAAGvzC,EAAIh9G,WAAW/pB,IAAeu2uB,GAASA,GACrCA,GAASj8jB,KAAM87jB,IAAY37d,EAAIngG,IAAOmgG,EAAIngG,IAAK,GAAG,GAI5D,IAAIt6K,KADJs6K,EAAK,GACMmgG,EAAU1xR,OAAOpD,UAAUyC,eAAea,KAAKwxR,EAAKz6Q,IAC9Ds6K,EAAG5xL,KAAK,CAAE+xR,EAAIz6Q,GAAMA,IAGrB,IAAMs6K,EAAGlzL,OAER,IAAI4Y,KADJy6Q,EAAM47d,EACettvB,OAAOpD,UAAUyC,eAAea,KAAKwxR,EAAKz6Q,IAC9Ds6K,EAAG5xL,KAAK,CAAE+xR,EAAIz6Q,GAAMA,IAMtB,OAFAs6K,EAAGzrK,MAAK,SAAS7W,EAAGmD,GAAK,OAAOnD,EAAE,GAAKmD,EAAE,IAAMk7uB,EAAkBr+uB,EAAE,IAAMq+uB,EAAkBl7uB,EAAE,GAAK,IAE3Fi7uB,EAAW97jB,EAAGt+J,MAAM,KAAO,EACnC,CAEA,SAASw6tB,EAAiBzvmB,EAAgB3P,GACzC,IAAI1zH,EAAI0zH,GAAQ,CAAC,EACbgxH,EAAM,GACE,MAATi3d,IAA4B,MAAX37sB,EAAE08tB,QAAe18tB,EAAE08tB,MAAQ/gB,IAC/C,IAAIppkB,EAAoB,CAAC,EACtBvyI,EAAE08tB,QAAOnqlB,EAAG,SAAW,IAC1B,IAAI14H,EAAmB,CAAC/kB,EAAG,CAACwC,EAAE,EAAG+V,EAAE,GAAIjW,EAAG,CAACE,EAAE,EAAG+V,EAAE,IAE7B,QAAlBg2H,EAAIj5I,MAAM,EAAE,GAEU,IAArBi5I,EAAIh9G,WAAW,IAAiC,IAArBg9G,EAAIh9G,WAAW,IAC5Cq+N,EAAMrhH,EAAI/4G,OAAO,GAAI+4G,EAAMA,EAAIj5I,MAAM,IAGT,IAArBi5I,EAAIh9G,WAAW,IAAiC,IAArBg9G,EAAIh9G,WAAW,IACjDq+N,EAAMrhH,EAAI/4G,OAAO,GAAI+4G,EAAMA,EAAIj5I,MAAM,IAEjCs6P,EAAMkuf,EAAUvvmB,EAAIj5I,MAAM,EAAE,OAEfs6P,EAAX1kP,GAAKA,EAAE+yuB,GAAU/yuB,EAAE+yuB,GAChBH,EAAUvvmB,EAAIj5I,MAAM,EAAE,OACjC,IAAIgM,EAAI,EAAG6oC,EAAI,EAAGj0B,EAAI,EAClB5O,EAAQ,EAAGE,EAAM,EAAG02uB,EAAQtuf,EAAIr+N,WAAW,GAAIwstB,GAAQ,EAAOj8jB,EAAG,EAAGq8jB,EAAQ5vmB,EAAIh9G,WAAW,GAC3F6stB,EAA8B,MAAZlzuB,EAAEoitB,OAvmO1B,SAAsBA,GACrB,IAAIhD,EAAuB,iBAAVgD,EAAqB3E,GAAU2E,GAAUA,EAE1D,OADAhD,EAAMA,EAAIn8tB,QAAQkguB,GAAa,UACxB,IAAIrltB,OAAO,IAAMshtB,EAAM,IAC/B,CAmmO2C+zB,CAAanzuB,EAAEoitB,QAAU,KAClE,SAASgxB,IACR,IAAIt+uB,EAAIuuI,EAAIj5I,MAAMgS,EAAOE,GAAwB,MAAfxH,EAAE1K,OAAO,KAAY0K,EAAIA,EAAE1K,MAAM,GAAI,IACvE,IAAIqqB,EAAQ,CAAC,EAEb,GADkB,KAAf3f,EAAEw1B,OAAO,IAAuC,KAA1Bx1B,EAAEw1B,OAAOx1B,EAAEpR,OAAS,KAAWoR,EAAIA,EAAE1K,MAAM,GAAG,GAAGnH,QAAQ,MAAM,MACxE,IAAb6R,EAAEpR,OAAc+wB,EAAKpc,EAAI,SACvB,GAAG2H,EAAE+1C,IAAOthC,EAAKpc,EAAI,IAAKoc,EAAKzJ,EAAIlW,OACnC,GAAuB,IAApBA,EAAEtQ,OAAOd,OAAgB+wB,EAAKpc,EAAI,IAAKoc,EAAKzJ,EAAIlW,OACnD,GAAsB,IAAnBA,EAAEuxB,WAAW,GACE,IAAnBvxB,EAAEuxB,WAAW,IAA4C,IAA9BvxB,EAAEuxB,WAAWvxB,EAAEpR,OAAS,IAAc+wB,EAAKpc,EAAI,IAAKoc,EAAKzJ,EAAIlW,EAAE1K,MAAM,GAAG,GAAGnH,QAAQ,MAAM,MA43H3G,GA33HM6R,EA23HhBpR,QA33HsB+wB,EAAKpc,EAAI,IAAKoc,EAAK5T,EAAI/L,EAAE1K,MAAM,KAChDqqB,EAAKpc,EAAI,IAAKoc,EAAKzJ,EAAIlW,QAC1B,GAAQ,QAALA,EAAe2f,EAAKpc,EAAI,IAAKoc,EAAKzJ,GAAI,OACzC,GAAQ,SAALlW,EAAgB2f,EAAKpc,EAAI,IAAKoc,EAAKzJ,GAAI,OAC1C,GAAIja,MAAMia,EAAIgotB,GAASl+tB,IACvB,IAAI/D,OAAOia,EAAImotB,GAAUr+tB,IAAIzH,YAAc6lvB,GAAOp+uB,EAAEvL,MAAM2pvB,GAAM,CACpEz+tB,EAAKrc,EAAI4H,EAAEoitB,QAAU3E,GAAU,IAE5By1B,GAAOp+uB,EAAEvL,MAAM2pvB,KAAOp+uB,EApnO7B,SAAoBuuI,EAAgB++kB,EAAmB74tB,GACtD,IAAI0M,GAAK,EAAGrB,GAAK,EAAGP,GAAK,EAAGM,GAAK,EAAGR,GAAK,EAAGa,GAAK,GAChDottB,EAAO74tB,MAAM45tB,KAAc,IAAIzmtB,SAAQ,SAAS4D,EAAGzb,GACnD,IAAImmB,EAAIhf,SAASzC,EAAM1E,EAAE,GAAI,IAC7B,OAAOyb,EAAE9I,cAAc8yB,OAAO,IAC7B,IAAK,IAAKr0B,EAAI+U,EAAG,MAAO,IAAK,IAAK3W,EAAI2W,EAAG,MACzC,IAAK,IAAKrW,EAAIqW,EAAG,MAAO,IAAK,IAAKhW,EAAIgW,EAAG,MACzC,IAAK,IAAQrW,GAAK,EAAGR,EAAI6W,EAAQpW,EAAIoW,EAEvC,IACGhW,GAAK,IAAW,GAANb,GAAWS,GAAK,IAAKT,EAAIS,EAAGA,GAAK,GAC9C,IAAIy+uB,GAAY,IAAMp9uB,GAAG,EAAEA,GAAG,IAAIhJ,MAAOE,gBAAgB/C,OAAO,GAAK,KAAO,MAAQwK,GAAG,EAAEA,EAAE,IAAIxK,OAAO,GAAK,KAAO,MAAQiK,GAAG,EAAEA,EAAE,IAAIjK,OAAO,GACvH,GAAlBipvB,EAAQ3vvB,SAAa2vvB,EAAU,IAAMA,GACnB,GAAlBA,EAAQ3vvB,SAAa2vvB,EAAU,KAAOA,GACzC,IAAIC,GAAY,MAAQ3+uB,GAAG,EAAEA,EAAE,IAAIvK,OAAO,GAAK,KAAO,MAAQ+J,GAAG,EAAEA,EAAE,IAAI/J,OAAO,GAAK,KAAO,MAAQ4K,GAAG,EAAEA,EAAE,IAAI5K,OAAO,GACtH,OAAS,GAANuK,IAAiB,GAANR,IAAiB,GAANa,EAAgBq+uB,GAChC,GAANp9uB,IAAiB,GAANrB,IAAiB,GAANP,EAAgBi/uB,EAClCD,EAAU,IAAMC,CACxB,CAkmO+BC,CAAWz+uB,EAAGkL,EAAEoitB,OAAStttB,EAAEvL,MAAM2pvB,IAAM,IAAWlouB,EAAIjM,GAAUjK,EAAjB,IACvEkL,EAAEm9tB,WAAa1otB,EAAKpc,EAAI,IAAKoc,EAAKzJ,EAAIA,IAClCyJ,EAAKpc,EAAI,IAAKoc,EAAKzJ,EAAIkntB,GAAQlntB,KACpB,IAAfhL,EAAEwjsB,WAAoB/urB,EAAKhe,EAAIyotB,GAAWzqsB,EAAKrc,EAAGqc,EAAKzJ,aAAa/d,KAAOiluB,GAAQz9sB,EAAKzJ,GAAGyJ,EAAKzJ,IAC/FhL,EAAEwzuB,eAAe/+tB,EAAKrc,CAC3B,MACCqc,EAAKpc,EAAI,IACToc,EAAKzJ,EAAIlW,OAXyB2f,EAAKpc,EAAI,KAAuB,IAAf2H,EAAEwjsB,WAAoB/urB,EAAKhe,EAAI3B,GAAG2f,EAAKzJ,EAAIA,EAmB/F,GANa,KAAVyJ,EAAKpc,IACA2H,EAAE08tB,OAAanqlB,EAAG,SAASn8I,KAAIm8I,EAAG,SAASn8I,GAAK,IAAIm8I,EAAG,SAASn8I,GAAG6oC,GAAKxqB,GAC3E89H,EAAG2olB,GAAY,CAAC5juB,EAAE2nC,EAAE5xB,EAAEjX,KAAOqe,GAClCrY,EAAQE,EAAI,EAAG22uB,EAAU5vmB,EAAIh9G,WAAWjqB,GACrCyd,EAAMziB,EAAEE,EAAI2nC,IAAGplB,EAAMziB,EAAEE,EAAI2nC,GAC3BplB,EAAMziB,EAAEiW,EAAIjX,IAAGyjB,EAAMziB,EAAEiW,EAAIjX,GAC3BwgL,GAAMo8jB,IAAS/zsB,OAAsB,GAAZA,EAAI,IAAK7oC,EAAM4J,EAAE8ruB,WAAa9ruB,EAAE8ruB,WAAa11uB,EAAG,OAAO,CACpF,CACAk6E,EAAO,KAAKh0E,EAAM+mI,EAAI3/I,SAAS4Y,EAAK,OAAQs6K,EAAGvzC,EAAIh9G,WAAW/pB,IAC7D,KAAK,GAAqB,KAAZ22uB,IAAkBJ,GAASA,GAAO,MAChD,KAAK,GACJ,GAAGA,EAAO,MACkB,IAAzBxvmB,EAAIh9G,WAAW/pB,EAAI,MAAcA,EAErC,KAAK02uB,EAAO,KAAK,GAAM,IAAIH,GAASO,IAAe,MAAM9iqB,EAM1D,OAHGh0E,EAAMF,EAAQ,GAAGg3uB,IAEpB7gmB,EAAG,QAAUsplB,GAAahitB,GACnB04H,CACR,CAEA,SAASkhmB,EAAiBpwmB,EAAgB3P,GACzC,OAAKA,GAAQA,EAAK8+mB,IACf9+mB,EAAKq/mB,IACa,QAAlB1vmB,EAAIj5I,MAAM,EAAE,IACZi5I,EAAIlzI,QAAQ,OAAS,GAAKkzI,EAAIlzI,QAAQ,MAAQ,GAAKkzI,EAAIlzI,QAAQ,MAAQ,EAFvD2ivB,EAAiBzvmB,EAAK3P,GAGlC2pmB,GAhJR,SAAwBx8tB,EAAc6yH,GACrC,IAAI1zH,EAAI0zH,GAAQ,CAAC,EACb9zH,EAAe,GACnB,IAAIiB,GAAkB,IAAbA,EAAEnd,OAAc,OAAOkc,EAGhC,IAFA,IAAI6uC,EAAQ5tC,EAAEzD,MAAM,UAChB5G,EAAIi4C,EAAM/qD,OAAS,EACjB8S,GAAK,GAAyB,IAApBi4C,EAAMj4C,GAAG9S,UAAgB8S,EAGzC,IAFA,IAAI4F,EAAQ,GAAI24G,EAAM,EAClB3+G,EAAI,EACFA,GAAKI,IAAKJ,GAEJ,IADX2+G,EAAMtmE,EAAMr4C,GAAGjG,QAAQ,MACT4kH,EAAMtmE,EAAMr4C,GAAG1S,OAAaqxH,IAC1C34G,EAAQ3Z,KAAK8Z,IAAIH,EAAO24G,GAEzB,IAAI3+G,EAAI,EAAGA,GAAKI,IAAKJ,EAAG,CACvBwJ,EAAIxJ,GAAK,GAET,IAAI6oC,EAAI,EAER,IADAwzsB,EAAahksB,EAAMr4C,GAAGhM,MAAM,EAAGgS,GAAO5X,OAAQob,EAAKxJ,EAAG6oC,EAAGj/B,GACrDi/B,EAAI,EAAGA,IAAMwP,EAAMr4C,GAAG1S,OAAS0Y,GAAO,GAAK,IAAK6iC,EACnDwzsB,EAAahksB,EAAMr4C,GAAGhM,MAAMgS,EAAY,IAAL6iC,EAAE,GAAM7iC,EAAQ,GAAF6iC,GAAMz6C,OAAOob,EAAIxJ,EAAE6oC,EAAEj/B,EACxE,CAEA,OADGA,EAAE8ruB,YAAWlsuB,EAAMA,EAAIxV,MAAM,EAAG4V,EAAE8ruB,YAC9BlsuB,CACR,CAwHqB8zuB,CAAerwmB,EAAK3P,GAAOA,GAJhBo/mB,EAAiBzvmB,EAAK3P,EAKtD,CAEA,SAASignB,EAAat/uB,EAAeq/H,GACpC,IAAI2P,EAAM,GAAIwkQ,EAAqB,UAAbn0Q,EAAKnhH,KAAmB,CAAC,EAAE,EAAE,EAAE,GAAKqhuB,GAAUv/uB,EAAGq/H,GACvE,OAAOA,EAAKnhH,MACX,IAAK,SAAU8wH,EAAM44kB,GAAc5ntB,GAAI,MACvC,IAAK,SAOL,IAAK,SAAUgvI,EAAMhvI,EAAG,MANxB,IAAK,SACuBgvI,EAAP,OAAjB3P,EAAKk4mB,SAAyBv3uB,EAAEjP,SAAS,QACpCsuI,EAAKk4mB,UAAgC,qBAAbjxB,GAAgCA,GAAS96oB,MAAM3lD,OAAOw5G,EAAKk4mB,SAAUv3uB,GAC1F6ntB,IAAW72rB,OAAOgwB,SAAShhD,GAAKA,EAAEjP,SAAS,UAAYs3tB,GAAIrotB,GACtE,MACD,IAAK,QAASgvI,EAAMwvlB,GAAOx+tB,GAAI,MAE/B,QAAS,MAAM,IAAI8Y,MAAM,qBAAuBumH,EAAKnhH,MAKtD,OAHe,KAAZs1X,EAAM,IAA0B,KAAZA,EAAM,IAA0B,KAAZA,EAAM,GAAYxkQ,EAAM6ylB,GAAS7ylB,EAAIj5I,MAAM,IACjE,UAAbspI,EAAKnhH,MAAiC,UAAbmhH,EAAKnhH,MAAqC,OAAjBmhH,EAAKk4mB,SAAmBvomB,EAAM6ylB,GAAS7ylB,GAC3E,UAAb3P,EAAKnhH,MAAyC,qBAAboosB,IAA4BjnlB,EAAKk4mB,WAAWvomB,EAAMs3kB,GAAS96oB,MAAM3lD,OAAOw5G,EAAKk4mB,SAAUjxB,GAAS96oB,MAAM7iD,OAAO,MAAMqmH,KACvI,uBAAnBA,EAAIj5I,MAAM,EAAE,IAAqCgovB,GAAIhG,SAAsB,UAAb14mB,EAAKnhH,KAAmB8wH,EAAM6ylB,GAAS7ylB,GAAM3P,GACvG+/mB,EAAiBpwmB,EAAK3P,EAC9B,CAuBA,MAAO,CACNw4mB,YAtBD,SAAyB73uB,EAAeq/H,GAAqB,OAAO2omB,GAAkBsX,EAAat/uB,EAAGq/H,GAAOA,EAAO,EAuBnH04mB,SAAUuH,EACVtH,WAtBD,SAAsB95lB,GAIrB,IAHA,IACuC99H,EADnCzU,EAAsB,GACtBqN,EAAI2utB,GAAkBzplB,EAAG,SACzBmqlB,EAAuB,MAAfnqlB,EAAG,SACPn8I,EAAIiX,EAAEvY,EAAEuY,EAAGjX,GAAKiX,EAAEjW,EAAEiW,IAAKjX,EAAG,CAEnC,IADA,IAAIijuB,EAAuB,GACnBp6rB,EAAI5xB,EAAEvY,EAAEwC,EAAG2nC,GAAK5xB,EAAEjW,EAAEE,IAAK2nC,EAAG,CACnC,IAAI6wO,EAAQord,GAAY,CAAC7ttB,EAAEjX,EAAEkB,EAAE2nC,IAE/B,IADAxqB,EAAOiotB,GAASnqlB,EAAG,SAASn8I,IAAI,IAAI6oC,GAAKszG,EAAGu9H,KACtB,MAAVr7P,EAAKzJ,EAAjB,CAEA,IADA,IAAIvU,GAAKge,EAAKhe,IAAM0luB,GAAY1ntB,GAAOA,EAAKhe,IAAM,IAAIrM,MAAM,EAAE,IACxDqM,EAAE/S,OAAS,IAAI+S,GAAK,IAC1B4iuB,EAAGr0uB,KAAKyR,GAAW,IAANwoC,EAAU,IAAM,IAHkC,MAAjCo6rB,EAAGr0uB,KAAK,aAIvC,CACAgb,EAAEhb,KAAKq0uB,EAAG7zuB,KAAK,IAChB,CACA,OAAOwa,EAAExa,KAAK,KACf,EAOD,CA7MwB,GA6NxB,IAAIquvB,GAAoB,WACvB,SAASC,EAAY9htB,EAAMq/I,EAAuB39C,GACjD,GAAI1hG,EAAJ,CACA4yrB,GAAU5yrB,EAAMA,EAAKvkB,GAAK,GAE1B,IADA,IAAIsmuB,EAAOrgnB,EAAKqgnB,MAAQC,EAClBhitB,EAAKvkB,EAAIukB,EAAKtuC,QAAQ,CAC3B,IAAI02uB,EAAKposB,EAAK6yrB,WAAW,GACrBzutB,EAAI29uB,EAAK3Z,IAAO2Z,EAAK,OACrBrwvB,EAASsuC,EAAK6yrB,WAAW,GACzBC,EAAM9yrB,EAAKvkB,EAAI/pB,EACf2Q,EAAI+B,EAAEyK,GAAKzK,EAAEyK,EAAEmxB,EAAMtuC,EAAQgwI,GAEjC,GADA1hG,EAAKvkB,EAAIq3sB,EACNzziB,EAAGh9K,EAAG+B,EAAGgkuB,GAAK,MAClB,CAXgB,CAYjB,CAYA,SAAS6Z,EAAsB5/uB,EAAGq/H,GACjC,IAAIr/H,EAAG,OAAOA,EACd,IAAI2L,EAAI0zH,GAAQ,CAAC,EACL,MAATiolB,IAA4B,MAAX37sB,EAAE08tB,QAAe18tB,EAAE08tB,MAAQ/gB,IAC/C,IAAI7mtB,EAAmB,CAAC,EAAYwL,EAAI,SAAU4zuB,EAAS,GAAIz9D,EAAO,EAClE92pB,EAAS,CAAC,EAAGw0tB,EAAS,GAAIC,EAAY,GAAIC,EAAQ,GACnDr0uB,EAAE08tB,QAAO2X,EAAQv/uB,EAAE,SAAW,IAEjC,IAAIw/uB,EAAW,CAACx/uB,EAAG,CAACuY,EAAE,EAAG/V,EAAE,GAAIF,EAAG,CAACiW,EAAE,EAAG/V,EAAE,IACtCw0uB,EAAY9ruB,EAAE8ruB,WAAa,EAE/B,GAAW,IAARz3uB,EAAE,IAAsB,IAARA,EAAE,IAAsB,IAARA,EAAE,GAAY,OAg3BlD,SAA6BA,EAAGq/H,GAC/BkxlB,GAAUvwtB,EAAG,GACb,IAAI2L,EAAI0zH,GAAQ,CAAC,EACL,MAATiolB,IAA4B,MAAX37sB,EAAE08tB,QAAe18tB,EAAE08tB,MAAQ/gB,IAC/C,IAAI7mtB,EAAmB,CAAC,EAAekL,EAAE08tB,QAAO5nuB,EAAE,SAAW,IAC7D,IAAIyruB,EAAM,GAAIxE,EAAQ,GAClBlitB,EAAQ,CAAC/kB,EAAE,CAACuY,GAAG,EAAE/V,GAAG,GAAIF,EAAE,CAACiW,GAAG,EAAE/V,GAAG,IACnCy/Q,EAAM,EAAGxkQ,EAAO,EAAG0sB,EAAI,EAAG7oC,EAAI,EAC9B89K,EAAK,CAAEoojB,WAAY,GAAIC,OAAQ,CAAC,GACpCjspB,EAAO,KAAMj8E,EAAEoZ,EAAIpZ,EAAE3Q,QAAQ,CAC5B,IAAI02uB,EAAK/luB,EAAEwwtB,WAAW,GAAInhuB,EAAS2Q,EAAEwwtB,WAAW,GAC5Cn4tB,EAAI2H,EAAEjK,MAAMiK,EAAEoZ,EAAGpZ,EAAEoZ,EAAI/pB,GAE3B,OADAkhuB,GAAUl4tB,EAAG,GACN0tuB,GACN,KAAK,EACJ,GAAsB,WAAnB1tuB,EAAEm4tB,WAAW,GAAkB,KAAM,gBACxC,MACD,KAAK,EAAgB,MAAMv0oB,EAG3B,KAAK,KACL,KAAK,KAUL,KAAK,KAmGL,QAAS,MA3GT,KAAK,KAEJ,IADA5jF,EAAE+gB,GAAK,GACD/gB,EAAE+gB,EAAI/gB,EAAEhJ,QACbqzR,EAAMrqR,EAAEm4tB,WAAW,GACnBtysB,EAAO7lB,EAAEm4tB,WAAW,GACpB0b,EAAIv7uB,KAAK0H,EAAEm4tB,WAAW9tc,EAAK,SAE3B,MASF,KAAK,KACJ,IAAI0/Z,EAAO/prB,EAAEm4tB,WAAW,GACxB/vtB,EAAK,CAAC,EAAekL,EAAE08tB,QAAO5nuB,EAAE,SAAW,IAC3C+kB,EAAM/kB,EAAEwC,EAAI5K,EAAEm4tB,WAAW,GACzBhrsB,EAAMziB,EAAEE,EAAI5K,EAAEm4tB,WAAW,GACzBhrsB,EAAM/kB,EAAEuY,EAAI3gB,EAAEm4tB,WAAW,GACzBhrsB,EAAMziB,EAAEiW,EAAI3gB,EAAEm4tB,WAAW,GACzBn4tB,EAAE+gB,GAAK,EACJ/gB,EAAE+gB,EAAI,EAAI/gB,EAAEhJ,SACdqzR,EAAMrqR,EAAEm4tB,WAAW,GACnBtysB,EAAO7lB,EAAEm4tB,WAAW,GACpBkX,EAAe,GAAPhld,EAAW,GAAKrqR,EAAEm4tB,WAAW9tc,EAAK,SAEvCgld,IAAOA,EAAQT,GAAW7kD,IAE7B,MACF,KAAK,KAEJ,GAAG58pB,EAAM/kB,EAAEwC,EAAI,KAAQuiB,EAAM/kB,EAAEuY,EAAI,OAAQ,MACxCwM,EAAMziB,EAAEE,EAAIuiB,EAAM/kB,EAAEwC,IAAGuiB,EAAMziB,EAAEE,EAAIuiB,EAAM/kB,EAAEwC,GAC3CuiB,EAAMziB,EAAEiW,EAAIwM,EAAM/kB,EAAEuY,IAAGwM,EAAMziB,EAAEiW,EAAIwM,EAAM/kB,EAAEuY,GAC9CvY,EAAE,QAAU+muB,GAAahitB,GACzB06tB,GAAkBrgkB,EAAIp/K,EAAGinuB,GACxB,MAEF,KAAK,KACJ98rB,EAAIvyC,EAAEm4tB,WAAW,GACdhrsB,EAAMziB,EAAEE,EAAI2nC,IAAGplB,EAAMziB,EAAEE,EAAI2nC,GAC3BplB,EAAM/kB,EAAEwC,EAAI2nC,IAAGplB,EAAM/kB,EAAEwC,EAAI2nC,GAC9B7oC,EAAI1J,EAAEm4tB,WAAW,GACdhrsB,EAAM/kB,EAAEuY,EAAIjX,IAAGyjB,EAAM/kB,EAAEuY,EAAIjX,GAC9BA,EAAI1J,EAAEm4tB,WAAW,GACdhrsB,EAAMziB,EAAEiW,EAAIjX,IAAGyjB,EAAMziB,EAAEiW,EAAIjX,GAC7B,MAEF,KAAK,KACJA,EAAI1J,EAAEm4tB,WAAW,GAAI9tc,EAAMrqR,EAAEm4tB,WAAW,GACrChrsB,EAAM/kB,EAAEuY,EAAIjX,IAAGyjB,EAAM/kB,EAAEuY,EAAIjX,GAC3ByjB,EAAMziB,EAAEiW,EAAIjX,EAAI2gR,EAAM,IAAGl9P,EAAMziB,EAAEiW,EAAIjX,EAAI2gR,EAAM,GAElD,IADA,IAAIy9d,EAAKlZ,GAAWr8rB,GACdvyC,EAAE+gB,EAAI/gB,EAAEhJ,QAAQ,CACrB,IAAI+wB,EAAO,CAAEpc,EAAG,KACZsM,EAAQjY,EAAEm4tB,WAAW,GACd,IAARlgtB,IAAcjY,EAAE+gB,GAAK,GACxB,IAAI6zC,EAAe,GAAR38C,EAAgBjY,EAAEm4tB,WAAW,GAAK,EAAG,EAChD,OAAe,GAARlgtB,GACN,KAAK,EAAG,MACR,KAAK,EAAG8P,EAAO,CAAEpc,EAAG,IAAK2S,EAAGte,EAAEm4tB,WAAW,IAAM,MAC/C,KAAK,EAAGpwsB,EAAO,CAAEpc,EAAG,IAAK2S,EAAGte,EAAEm4tB,WAAW,EAAG,MAAQ,MACpD,KAAK,EAAGpwsB,EAAO,CAAEpc,EAAG,IAAK2S,EAAGte,EAAEm4tB,WAAW,EAAG,MAAQ,MACpD,KAAK,EAAGpwsB,EAAO,CAAEpc,EAAG,IAAK2S,EAAGu1tB,EAAIhutB,EAAO7lB,EAAEm4tB,WAAW,GAAK,IAAM,MAC/D,KAAK,EAAGpwsB,EAAO,CAAEpc,EAAG,IAAK2S,EAAGte,EAAEm4tB,WAAW,EAAG,MAAQn4tB,EAAE+gB,GAAK,EAA6C/gB,EAAE+gB,GAAK,EAAG,MAClH,QAAS,KAAM,+BAAyC,GAAR9I,GAEjD,IAAI6qH,EAAQ,EACZ,GAAW,GAAR7qH,EAAc,OAAe,GAARA,GACvB,KAAK,EAEL,KAAK,EAAG6qH,EAAQ9iI,EAAEm4tB,WAAW,GAAI,MADjC,KAAK,EAAGr1lB,EAAQ9iI,EAAEm4tB,WAAW,EAAG,KAAM,MAEtC,QAAS,KAAM,wCAAkD,GAARlgtB,GAS1D,KAPM3E,EAAEk9tB,YAAwB,KAAVzotB,EAAKpc,KACT,MAAdvD,EAAE,UACAA,EAAE,SAASsB,KAAItB,EAAE,SAASsB,GAAK,IACnCtB,EAAE,SAASsB,GAAG6oC,GAAKxqB,GACb3f,EAAE0/uB,EAAKnZ,GAAWjluB,IAAMqe,KAE9Bre,IAAK2gR,EACDz1N,KAAQ,GAAKy1N,GAAO,GAAG,CAC5B,GAAW,GAARpyQ,EAAc,OAAe,GAARA,GACvB,KAAK,EAAG8P,EAAO,CAAEpc,EAAG,IAAK2S,EAAIyJ,EAAKzJ,EAAIwkH,EAAS,OAAU,MACzD,KAAK,GAAG/6G,EAAO,CAAEpc,EAAG,IAAK2S,EAAIyJ,EAAKzJ,EAAIwkH,EAAS,QAAkBxkH,EAAI,QAAQyJ,EAAKzJ,GAAK,OAAS,MAChG,KAAK,EAAGyJ,EAAO,CAAEpc,EAAG,IAAK2S,EAAGu1tB,EAAIhutB,EAAQA,EAAOi9G,IAAW,IAAM,MAChE,QAAS,KAAM,yCAAmD,GAAR7qH,QACpD,OAAe,GAARA,GACb,KAAK,EAAG8P,EAAO,CAAEpc,EAAG,KAAO,MAC3B,KAAK,EAAGoc,EAAO,CAAEpc,EAAG,IAAK2S,EAAGte,EAAEm4tB,WAAW,IAAM,MAC/C,KAAK,EAAGpwsB,EAAO,CAAEpc,EAAG,IAAK2S,EAAGu1tB,EAAIhutB,EAAO7lB,EAAEm4tB,WAAW,GAAK,IAAM,MAC/D,QAAS,KAAM,0CAAoD,GAARlgtB,IAEtD3E,EAAEk9tB,YAAwB,KAAVzotB,EAAKpc,KACT,MAAdvD,EAAE,UACAA,EAAE,SAASsB,KAAItB,EAAE,SAASsB,GAAK,IACnCtB,EAAE,SAASsB,GAAG6oC,GAAKxqB,GACb3f,EAAE0/uB,EAAKnZ,GAAWjluB,IAAMqe,KAE9Bre,IAAK2gR,CACR,CACD,EAKF1iR,EAAEoZ,GAAK/pB,CACR,CACA,OAAOwwL,CACR,CAv/ByDugkB,CAAoBpgvB,EAAGq/H,GAC/E,GAAW,GAARr/H,EAAE,KACO,GAARA,EAAE,IAAsB,GAARA,EAAE,KACjBA,EAAE3Q,QAAU,IAAe,GAAT2Q,EAAE,KAAyB,MAAVA,EAAE,IAAc,MAAM,IAAI8Y,MAAM,oCAIxE,GAAW,GAAR9Y,EAAE,GACJ2L,EAAE+zuB,KAAOC,EACTF,EAAYz/uB,GAAG,SAASsmC,EAAKvkC,EAAGgkuB,GAAM,OAAOA,GAC5C,KAAK,EACJp6tB,EAAE00uB,KAAO/5sB,EACNA,GAAO,OAAQ36B,EAAE20uB,MAAO,GAC3B,MACD,KAAK,IACJ30uB,EAAE00uB,KAAO/5sB,EACT36B,EAAE40uB,OAAQ,EACV,MACD,KAAK,EAAMN,EAAW35sB,EAAK,MAC3B,KAAK,IAASA,IAAKu5sB,EAASv5sB,GAAK,MACjC,KAAK,IAAMu5sB,EAASv5sB,EAAK,MACzB,KAAK,GACL,KAAK,KACC36B,EAAE20uB,OAAS30uB,EAAE40uB,OAAe,IAANxa,IAAez/rB,EAAI,GAAG3vB,EAAEqb,WAAW,GAAK,KAAMsU,EAAI,GAAG3vB,EAAI2vB,EAAI,GAAG3vB,EAAE5gB,MAAM,KAChG4V,EAAE40uB,OAAS50uB,EAAE60uB,UAAQl6sB,EAAI,GAAG3vB,EAAI2vB,EAAI,GAAG3vB,EAAE/nB,QAAQ,QAAS,OAE9D,KAAK,GACL,KAAK,GACL,KAAK,GAEK,IAANm3uB,GAAiC,MAAT,IAATz/rB,EAAI,MAAgC,GAATA,EAAI,IAAa,IAAe,GAATA,EAAI,IAAa,KACpFA,EAAI,GAAGviC,EAAI4H,EAAEoitB,QAAU3E,GAAU,IAC9Bz9sB,EAAEm9tB,YAAaxisB,EAAI,GAAGtiC,EAAI,IAAKsiC,EAAI,GAAG3vB,EAAIsntB,GAAQ33rB,EAAI,GAAG3vB,KAG1DhL,EAAE20uB,MACDh6sB,EAAI,GAAK87oB,IACX3hrB,EAAE,QAAU+muB,GAAayY,GACzB30tB,EAAOrf,GAAKxL,EACZq/uB,EAAOnvvB,KAAKsb,GACZxL,EAAK,CAAC,EAAekL,EAAE08tB,QAAO2X,EAAQv/uB,EAAE,SAAW,IACnDw/uB,EAAW,CAACx/uB,EAAG,CAACuY,EAAE,EAAG/V,EAAE,GAAIF,EAAG,CAACiW,EAAE,EAAG/V,EAAE,IACtCm/qB,EAAO97oB,EAAI,GAAIr6B,EAAI4zuB,GAAU,SAAWz9D,EAAO,GAAIy9D,EAAS,IAI9D,IAAIY,EAAU90uB,EAAE08tB,OAAS2X,EAAM15sB,EAAI,GAAGttB,IAAI,IAAIstB,EAAI,GAAGrjC,GAAKxC,EAAEomuB,GAAYvgsB,EAAI,KAC5E,GAAGm6sB,EAAS,CACXA,EAAQz8uB,EAAIsiC,EAAI,GAAGtiC,EAAGy8uB,EAAQ9puB,EAAI2vB,EAAI,GAAG3vB,EAC1B,MAAZ2vB,EAAI,GAAGviC,IAAW08uB,EAAQ18uB,EAAIuiC,EAAI,GAAGviC,GACzB,MAAZuiC,EAAI,GAAG95B,IAAWi0uB,EAAQj0uB,EAAI85B,EAAI,GAAG95B,GACxC,KACD,CACGb,EAAE08tB,OACA2X,EAAM15sB,EAAI,GAAGttB,KAAIgnuB,EAAM15sB,EAAI,GAAGttB,GAAK,IACvCgnuB,EAAM15sB,EAAI,GAAGttB,GAAGstB,EAAI,GAAGrjC,GAAKqjC,EAAI,IAC1B7lC,EAAEomuB,GAAYvgsB,EAAI,KAAOA,EAAI,GACpC,MACD,KAAK,MAAQ36B,EAAE60uB,QAAS,EAExB,GAAG70uB,OACE,IAAW,IAAR3L,EAAE,IAAsB,IAARA,EAAE,GAuCrB,MAAM,IAAI8Y,MAAM,0BAA4B9Y,EAAE,IAtCpD2L,EAAE+zuB,KAAOgB,EACE,IAAR1gvB,EAAE,KAAc2L,EAAE20uB,MAAO,EAAMtgvB,EAAEoZ,EAAI,GACxCqmuB,EAAYz/uB,GAAG,SAASsmC,EAAKvkC,EAAGgkuB,GAAM,OAAOA,GAC5C,KAAK,IAAM95tB,EAAIq6B,EAAK,MACpB,KAAK,GACDA,EAAI,GAAG3vB,EAAEqb,WAAW,GAAK,KAAMsU,EAAI,GAAG3vB,EAAI2vB,EAAI,GAAG3vB,EAAE5gB,MAAM,IAE5DuwC,EAAI,GAAG3vB,EAAI2vB,EAAI,GAAG3vB,EAAE/nB,QAAQ,UAAU,SAAS08tB,GAAM,OAAO37tB,OAAOg+C,aAAa29qB,EAAGt5rB,WAAW,GAAK,GAAO,IAAGpjC,QAAQ,QAAS,MAE/H,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GASJ,GARG03C,EAAI,GAAK87oB,IACX3hrB,EAAE,QAAU+muB,GAAayY,GACzB30tB,EAAOrf,GAAKxL,EACZq/uB,EAAOnvvB,KAAKsb,GACZxL,EAAK,CAAC,EAAekL,EAAE08tB,QAAO2X,EAAQv/uB,EAAE,SAAW,IACnDw/uB,EAAW,CAACx/uB,EAAG,CAACuY,EAAE,EAAG/V,EAAE,GAAIF,EAAG,CAACiW,EAAE,EAAG/V,EAAE,IACtCm/qB,EAAO97oB,EAAI,GAAIr6B,EAAI,SAAWm2qB,EAAO,IAEnCq1D,EAAY,GAAKnxsB,EAAI,GAAGttB,GAAKy+tB,EAAW,MACxC9ruB,EAAE08tB,OACA2X,EAAM15sB,EAAI,GAAGttB,KAAIgnuB,EAAM15sB,EAAI,GAAGttB,GAAK,IACvCgnuB,EAAM15sB,EAAI,GAAGttB,GAAGstB,EAAI,GAAGrjC,GAAKqjC,EAAI,IAC1B7lC,EAAEomuB,GAAYvgsB,EAAI,KAAOA,EAAI,GACjC25sB,EAASl9uB,EAAEE,EAAIqjC,EAAI,GAAGrjC,IAAGg9uB,EAASl9uB,EAAEE,EAAIqjC,EAAI,GAAGrjC,GAC/Cg9uB,EAASl9uB,EAAEiW,EAAIstB,EAAI,GAAGttB,IAAGinuB,EAASl9uB,EAAEiW,EAAIstB,EAAI,GAAGttB,GAClD,MACD,KAAK,GACDstB,EAAI,QAASy5sB,EAAUz5sB,EAAI,MAAQ,IAAMA,EAAI,MAAQ,IACxD,MACD,KAAK,KACJy5sB,EAAUz5sB,EAAI,IAAMA,EAAI,GAAOA,EAAI,IAAM87oB,IAAMn2qB,EAAIq6B,EAAI,IAExD,GAAG36B,EACmD,CAIxD,GAHAlL,EAAE,QAAU+muB,GAAayY,GACzB30tB,EAAOu0tB,GAAU5zuB,GAAKxL,EACtBq/uB,EAAOnvvB,KAAKkvvB,GAAU5zuB,IAClB8zuB,EAAU1wvB,OAAQ,MAAO,CAAE44uB,WAAY6X,EAAQ5X,OAAQ58sB,GAG3D,IAFA,IAAIq1tB,EAAU,CAAC,EAAGC,EAAS,GAEnBpwvB,EAAI,EAAGA,EAAIuvvB,EAAU1wvB,SAAUmB,EAAM86B,EAAOw0tB,EAAOtvvB,KAC1DowvB,EAAOjwvB,KAAKovvB,EAAUvvvB,IAAMsvvB,EAAOtvvB,IACnCmwvB,EAAQZ,EAAUvvvB,IAAM86B,EAAOy0tB,EAAUvvvB,KAAO86B,EAAOw0tB,EAAOtvvB,MAE9DowvB,EAAOjwvB,KAAKovvB,EAAUvvvB,IACtBmwvB,EAAQZ,EAAUvvvB,IAAO,CAAE,OAAQ,OAEpC,MAAO,CAAEy3uB,WAAY2Y,EAAQ1Y,OAAQyY,EACtC,CA6IA,SAASE,EAAWv6pB,EAAMj3F,EAAQgwI,GACjC,IAAI1zH,EAAI,CAAC,CAAC1I,EAAE,EAAE+V,EAAE,GAAI,CAAChV,EAAE,IAAI2S,EAAE,GAAI,EAAG,GAapC,OAZG0oH,EAAKihnB,MAAqB,OAAbjhnB,EAAKghnB,MACpB10uB,EAAE,GAAG1I,EAAIqjF,EAAKkqoB,WAAW,GACzB7ktB,EAAE,GAAK26E,EAAKkqoB,WAAW,GACvB7ktB,EAAE,GAAGqN,EAAIstE,EAAKkqoB,WAAW,GACzBlqoB,EAAKltE,GAAG,GACCimH,EAAKkhnB,OACd50uB,EAAE,GAAG1I,EAAIqjF,EAAKkqoB,WAAW,GAAI7ktB,EAAE,GAAGqN,EAAIstE,EAAKkqoB,WAAW,GACtD7ktB,EAAE,GAAK26E,EAAKkqoB,WAAW,KAEvB7ktB,EAAE,GAAK26E,EAAKkqoB,WAAW,GACvB7ktB,EAAE,GAAG1I,EAAIqjF,EAAKkqoB,WAAW,GAAI7ktB,EAAE,GAAGqN,EAAIstE,EAAKkqoB,WAAW,IAEhD7ktB,CACR,CAgBA,SAASm1uB,EAAY/+uB,EAAG6oC,EAAGnqC,GAE1B,IAAIkL,EAAI0otB,GAAQ,EAAI5ztB,EAAEpR,QACtBsc,EAAEyktB,YAAY,EAAG,KACjBzktB,EAAEyktB,YAAY,EAAGxlrB,GACjBj/B,EAAEyktB,YAAY,EAAGrutB,GACjB4J,EAAEyktB,YAAY,EAAG,IACjB,IAAI,IAAI5/tB,EAAI,EAAGA,EAAImb,EAAEtc,SAAUmB,EAAG,CACjC,IAAI+xL,EAAK9hL,EAAEuxB,WAAWxhC,GACtBmb,EAAEyktB,YAAY,EAAG7tiB,GAAM,IAAO,GAAOA,EACtC,CAEA,OADA52K,EAAEyktB,YAAY,EAAG,GACVzktB,CACR,CAmBA,SAASo1uB,EAAch/uB,EAAG6oC,EAAGj0B,GAC5B,IAAIhL,EAAI0otB,GAAQ,GAKhB,OAJA1otB,EAAEyktB,YAAY,EAAG,KACjBzktB,EAAEyktB,YAAY,EAAGxlrB,GACjBj/B,EAAEyktB,YAAY,EAAGrutB,GACjB4J,EAAEyktB,YAAY,EAAGz5sB,EAAG,KACbhL,CACR,CAOA,SAASq1uB,EAAaj/uB,EAAG6oC,EAAGj0B,GAC3B,IAAIhL,EAAI0otB,GAAQ,IAKhB,OAJA1otB,EAAEyktB,YAAY,EAAG,KACjBzktB,EAAEyktB,YAAY,EAAGxlrB,GACjBj/B,EAAEyktB,YAAY,EAAGrutB,GACjB4J,EAAEyktB,YAAY,EAAGz5sB,EAAG,KACbhL,CACR,CAgBA,SAASs1uB,EAAa59uB,EAAGuwC,EAAGz3B,GAC3B,IAAI42F,EAAU,MAAJn/D,EAGV,OADAA,GAAKm/D,EAAM1vG,EAAI,KADfuwC,IAAK,QACsB,KAAUA,EAAI,MAASA,IAC1Cm/D,EAAM,GAAK,MAAQ52F,EAAM8qtB,GAAWrzrB,GAAKozrB,GAAWpzrB,GAC7D,CAMA,IAAIstsB,EAAU,CACb,GAAM,CAAC,KAAM,GAEb,GAAM,CAAC,MAAO,GACd,GAAM,CAAC,QAAS,GAChB,GAAM,CAAC,OAAQ,GACf,GAAM,CAAC,MAAO,GACd,GAAM,CAAC,KAAM,GACb,GAAM,CAAC,KAAM,GACb,GAAM,CAAC,MAAO,GACd,GAAM,CAAC,MAAO,GACd,GAAM,CAAC,MAAO,GACd,GAAM,CAAC,QAAS,GAChB,GAAM,CAAC,OAAQ,GACf,GAAM,CAAC,OAAQ,GACf,GAAM,CAAC,OAAQ,GACf,GAAM,CAAC,MAAO,GACd,GAAM,CAAC,MAAO,GAEd,GAAM,CAAC,OAAQ,GACf,GAAM,CAAC,QAAS,GAChB,GAAM,CAAC,QAAS,GAChB,GAAM,CAAC,OAAQ,GACf,GAAM,CAAC,OAAQ,GAUf,GAAM,CAAC,QAAS,GAKhB,GAAM,CAAC,WAAY,GACnB,GAAM,CAAC,SAAU,GACjB,GAAM,CAAC,MAAO,GACd,GAAM,CAAC,QAAS,GAEhB,GAAM,CAAC,MAAO,GACd,GAAM,CAAC,OAAQ,GAMf,GAAM,CAAC,MAAO,IACd,GAAM,CAAC,WAAY,IACnB,GAAM,CAAC,SAAU,IACjB,GAAM,CAAC,OAAQ,IACf,GAAM,CAAC,OAAQ,IAkBf,IAAM,CAAC,QAAS,GAChB,IAAM,CAAC,QAAS,GAIhB,IAAM,CAAC,SAAU,GAEjB,IAAM,CAAC,OAAQ,GAEf,IAAM,CAAC,IAAK,IAGTC,EAAW,CACZ,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAC1C,GAAK,IAAM,IAAM,IAAM,IAAM,IAAM,IAAK,KAC1C,KAAM,KAAO,IAAM,IAAO,GAAM,GAAM,GAAM,GAC3C,IAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAmE7C,SAASC,EAAa96pB,GACrB,IAAI36E,EAAI,CAAC,CAAC1I,EAAE,EAAE+V,EAAE,GAAI,CAAChV,EAAE,IAAI2S,EAAE,GAAI,GAEjC,OADAhL,EAAE,GAAGqN,EAAIstE,EAAKkqoB,WAAW,GAAI7ktB,EAAE,GAAK26E,EAAKA,EAAKltE,KAAMzN,EAAE,GAAG1I,EAAIqjF,EAAKA,EAAKltE,KAChEzN,CACR,CAQA,SAAS01uB,EAAet/uB,EAAG6oC,EAAG02sB,EAAO7gvB,GAEpC,IAAIkL,EAAI0otB,GAAQ,EAAI5ztB,EAAEpR,QACtBsc,EAAEyktB,YAAY,EAAGrutB,GACjB4J,EAAEyktB,YAAY,EAAGkxB,GACjB31uB,EAAEyktB,YAAY,EAAGxlrB,GACjBj/B,EAAEyktB,YAAY,EAAG,IACjB,IAAI,IAAI5/tB,EAAI,EAAGA,EAAIiQ,EAAEpR,SAAUmB,EAAG,CACjC,IAAI+xL,EAAK9hL,EAAEuxB,WAAWxhC,GACtBmb,EAAEyktB,YAAY,EAAG7tiB,GAAM,IAAO,GAAOA,EACtC,CAEA,OADA52K,EAAEyktB,YAAY,EAAG,GACVzktB,CACR,CAsBA,SAAS41uB,EAAgBj7pB,EAAMj3F,GAC9B,IAAIsc,EAAIy1uB,EAAa96pB,GACjBk7pB,EAAKl7pB,EAAKkqoB,WAAW,GACrBixB,EAAKn7pB,EAAKkqoB,WAAW,GACrBzttB,EAAIujF,EAAKkqoB,WAAW,GACxB,GAAQ,OAALzttB,EAIF,OAHU,IAAPy+uB,GAAmB,aAAPC,GAAqB91uB,EAAE,GAAG3H,EAAI,IAAK2H,EAAE,GAAGgL,EAAI,IAC5C,IAAP6quB,GAAmB,aAAPC,GAAqB91uB,EAAE,GAAG3H,EAAI,IAAK2H,EAAE,GAAGgL,EAAI,IAC3DhL,EAAE,GAAGgL,EAAI,EACPhL,EAER,IAAIlL,EAAQ,MAAJsC,EAER,OAFoBA,GAAO,MAAFA,GAAY,MACrC4I,EAAE,GAAGgL,GAAK,EAAM,EAAFlW,IAAQghvB,EAAKrzvB,KAAK4P,IAAI,EAAG+E,EAAE,IAAMy+uB,EAAKpzvB,KAAK4P,IAAI,EAAG+E,IACzD4I,CACR,CACA,SAAS+1uB,EAAgB3/uB,EAAG6oC,EAAG02sB,EAAO3quB,GACrC,IAAIhL,EAAI0otB,GAAQ,IAIhB,GAHA1otB,EAAEyktB,YAAY,EAAGrutB,GACjB4J,EAAEyktB,YAAY,EAAGkxB,GACjB31uB,EAAEyktB,YAAY,EAAGxlrB,GACT,GAALj0B,EAIF,OAHAhL,EAAEyktB,YAAY,EAAG,GACjBzktB,EAAEyktB,YAAY,EAAG,GACjBzktB,EAAEyktB,YAAY,EAAG,OACVzktB,EAER,IAAkB61uB,EAAd/gvB,EAAI,EAAGsC,EAAI,EAAW0+uB,EAAK,EAe/B,OAdG9quB,EAAI,IAAKlW,EAAI,EAAGkW,GAAKA,GACxB5T,EAAmB,EAAf3U,KAAKuzvB,KAAKhruB,GAGQ,IAAf,YADP8quB,GADA9quB,GAAKvoB,KAAK4P,IAAI,EAAG+E,EAAE,OACR,QACwBA,EAAG0+uB,GAAX9quB,GAAG,KAAmB,GACjDA,GAAK8quB,EACLA,GAAM,WACNA,KAAQ,EAERD,GADA7quB,GAAKvoB,KAAK4P,IAAI,EAAG,OACR,EACT2N,EAAEyktB,YAAY,EAAGoxB,GACjB71uB,EAAEyktB,YAAY,EAAGqxB,GACjB1+uB,GAAK,OAAUtC,EAAI,MAAS,GAC5BkL,EAAEyktB,YAAY,EAAGrttB,GACV4I,CACR,CAeA,SAASi2uB,EAAgBt7pB,EAAMj3F,GAC9B,IAAIsc,EAAIy1uB,EAAa96pB,GACjBk7pB,EAAKl7pB,EAAKkqoB,WAAW,EAAE,KAE3B,OADA7ktB,EAAE,GAAGgL,EAAI6quB,EACF71uB,CACR,CAQA,SAASk2uB,EAAkBv7pB,EAAMj3F,GAChC,OAAoC,GAA7Bi3F,EAAKA,EAAKltE,EAAI/pB,EAAS,GAAUi3F,EAAKkqoB,WAAWnhuB,EAAQ,QAAU,EAC3E,CAgCA,SAASyyvB,EAAwB31uB,EAAMm1uB,GACtC,IAAIxtlB,EAAMugkB,GAAQ,EAAIlotB,EAAK9c,QAC3BykK,EAAIs8jB,YAAY,EAAG,MACnBt8jB,EAAIs8jB,YAAY,EAAGkxB,GACnB,IAAI,IAAI9wvB,EAAI,EAAGA,EAAI2b,EAAK9c,SAAUmB,EAAG,CACpC,IAAI+xL,EAAKp2K,EAAK6lB,WAAWxhC,GACzBsjK,EAAIA,EAAI16I,KAAOmpK,EAAK,IAAO,GAAOA,CACnC,CAEA,OADAzuB,EAAIA,EAAI16I,KAAO,EACR06I,CACR,CAEA,IAAI6rlB,EAAU,CACN,EAAe,CAAE1zuB,EAAE,MAAOO,EAAEmluB,IAC5B,EAAe,CAAE1luB,EAAE,OACnB,EAAe,CAAEA,EAAE,YACnB,EAAe,CAAEA,EAAE,aACnB,EAAe,CAAEA,EAAE,SACnB,EAAe,CAAEA,EAAE,QACnB,EAAe,CAAEA,EAAE,QAASO,EAjdpC,SAAqB85E,EAAMj3F,EAAQgwI,GAClC,IAAI1zH,EAAI,CAAClL,EAAE,CAACwC,EAAE,EAAE+V,EAAE,GAAGjW,EAAE,CAACE,EAAE,EAAE+V,EAAE,IAC9B,OAAa,GAAV3pB,GAAegwI,EAAKihnB,MACtB30uB,EAAElL,EAAEwC,EAAIqjF,EAAKkqoB,WAAW,GACxBlqoB,EAAKltE,IACLzN,EAAElL,EAAEuY,EAAIstE,EAAKkqoB,WAAW,GACxB7ktB,EAAE5I,EAAEE,EAAIqjF,EAAKkqoB,WAAW,GACxBlqoB,EAAKltE,IACLzN,EAAE5I,EAAEiW,EAAIstE,EAAKkqoB,WAAW,GACjB7ktB,IAERA,EAAElL,EAAEwC,EAAIqjF,EAAKkqoB,WAAW,GACxB7ktB,EAAElL,EAAEuY,EAAIstE,EAAKkqoB,WAAW,GACX,IAAVnhuB,GAAgBgwI,EAAKihnB,OAAMh6pB,EAAKltE,GAAK,GACxCzN,EAAE5I,EAAEE,EAAIqjF,EAAKkqoB,WAAW,GACxB7ktB,EAAE5I,EAAEiW,EAAIstE,EAAKkqoB,WAAW,GACX,IAAVnhuB,GAAgBgwI,EAAKihnB,OAAMh6pB,EAAKltE,GAAK,GAC5B,OAATzN,EAAElL,EAAEwC,IAAa0I,EAAElL,EAAEwC,EAAI0I,EAAE5I,EAAEE,EAAI0I,EAAElL,EAAEuY,EAAIrN,EAAE5I,EAAEiW,EAAI,GAC7CrN,EACR,GA+bQ,EAAe,CAAEM,EAAE,WACnB,EAAe,CAAEA,EAAE,SACnB,EAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,SACnB,GAAe,CAAEA,EAAE,QACnB,GAAe,CAAEA,EAAE,SACnB,GAAe,CAAEA,EAAE,UAAWO,EAjYtC,SAAuB85E,EAAMj3F,EAAQgwI,GACpC,IAAI1zH,EAAIk1uB,EAAWv6pB,EAAMj3F,EAAQgwI,GAEjC,OADA1zH,EAAE,GAAGgL,EAAI2vE,EAAKkqoB,WAAW,EAAG,KACrB7ktB,CACR,GA8XQ,GAAe,CAAEM,EAAE,SAAUO,EApXrC,SAAsB85E,EAAMj3F,EAAQgwI,GACnC,IAAI1zH,EAAIk1uB,EAAWv6pB,EAAMj3F,EAAQgwI,GAEjC,OADA1zH,EAAE,GAAGgL,EAAI2vE,EAAKkqoB,WAAW,EAAG,KACrB7ktB,CACR,GAiXQ,GAAe,CAAEM,EAAE,QAASO,EA5apC,SAAqB85E,EAAMj3F,EAAQgwI,GAClC,IAAIoxlB,EAAMnqoB,EAAKltE,EAAI/pB,EACfsc,EAAIk1uB,EAAWv6pB,EAAMj3F,EAAQgwI,GAEjC,GADA1zH,EAAE,GAAG3H,EAAI,IACO,OAAbq7H,EAAKghnB,KAAgB,CACvB/5pB,EAAKltE,IACL,IAAI5N,EAAM86E,EAAKkqoB,WAAW,GAE1B,OADA7ktB,EAAE,GAAGgL,EAAI2vE,EAAKkqoB,WAAWhltB,EAAK,QACvBG,CACR,CAGA,OAFG0zH,EAAKihnB,MAAMh6pB,EAAKltE,IACnBzN,EAAE,GAAGgL,EAAI2vE,EAAKkqoB,WAAWC,EAAMnqoB,EAAKltE,EAAG,QAChCzN,CACR,GAgaQ,GAAe,CAAEM,EAAE,UAAWO,EAxWtC,SAAuB85E,EAAMj3F,EAAQgwI,GACpC,IAAIoxlB,EAAMnqoB,EAAKltE,EAAI/pB,EACfsc,EAAIk1uB,EAAWv6pB,EAAMj3F,EAAQgwI,GAGjC,GADA1zH,EAAE,GAAGgL,EAAI2vE,EAAKkqoB,WAAW,EAAG,KACzBnxlB,EAAKihnB,KAAMh6pB,EAAKltE,EAAIq3sB,MAClB,CACJ,IAAIzC,EAAO1noB,EAAKkqoB,WAAW,IA6G7B,SAAyBlqoB,EAAM36E,GAC9B4ktB,GAAUjqoB,EAAM,GAChB,IAAIwtE,EAAM,GAAIiulB,EAAO,EAAGhgvB,EAAI,GAAI6oC,EAAI,GAAIo3sB,EAAO,GAAIC,EAAO,GAC1D,KAAM37pB,EAAKltE,EAAIktE,EAAKj3F,QAAQ,CAC3B,IAAIkzL,EAAKj8F,EAAKA,EAAKltE,KACnB,OAAOmpK,GACN,KAAK,EAAMzuB,EAAInjK,KAAK21F,EAAKkqoB,WAAW,EAAG,MAAO,MAC9C,KAAK,EACJ5lrB,EAAIq2sB,EAAat1uB,EAAE,GAAG1I,EAAGqjF,EAAKkqoB,WAAW,IAAI,GAC7CzutB,EAAIk/uB,EAAat1uB,EAAE,GAAGqN,EAAGstE,EAAKkqoB,WAAW,IAAI,GAC7C18jB,EAAInjK,KAAKi6C,EAAI7oC,GACZ,MACF,KAAK,EACJ,IAAIkB,EAAIg+uB,EAAat1uB,EAAE,GAAG1I,EAAGqjF,EAAKkqoB,WAAW,IAAI,GAC7Cx3sB,EAAIiouB,EAAat1uB,EAAE,GAAGqN,EAAGstE,EAAKkqoB,WAAW,IAAI,GACjD5lrB,EAAIq2sB,EAAat1uB,EAAE,GAAG1I,EAAGqjF,EAAKkqoB,WAAW,IAAI,GAC7CzutB,EAAIk/uB,EAAat1uB,EAAE,GAAGqN,EAAGstE,EAAKkqoB,WAAW,IAAI,GAC7C18jB,EAAInjK,KAAKsS,EAAI+V,EAAI,IAAM4xB,EAAI7oC,GAC1B,MACF,KAAK,EACJ,GAAGukF,EAAKltE,EAAIktE,EAAKj3F,OAAsD,YAA5CU,QAAQ2pB,MAAM,6BACzC,MACD,KAAK,EAAMo6I,EAAInjK,KAAK,IAAMmjK,EAAI7vI,MAAQ,KAAM,MAC5C,KAAK,EAAM6vI,EAAInjK,KAAK21F,EAAKkqoB,WAAW,IAAK,MACzC,KAAK,EAEQ,IAAZ,IAAI18qB,EAAI,GAAWyuI,EAAKj8F,EAAKA,EAAKltE,MAAO06B,GAAKnkD,OAAOg+C,aAAa40I,GAClEzuB,EAAInjK,KAAK,IAAMmjD,EAAEllD,QAAQ,KAAM,MAAQ,KACtC,MAEF,KAAK,EAAMklK,EAAInjK,KAAK,IAAMmjK,EAAI7vI,OAAQ,MACtC,KAAK,GAAM6vI,EAAInjK,KAAK,IAAMmjK,EAAI7vI,OAAQ,MACtC,KAAK,GAAM6vI,EAAInjK,KAAK,OAASmjK,EAAI7vI,MAAQ,KAAM,MAE/C,KAAK,GAAM,KAAK,GACfg+tB,EAAOnulB,EAAI7vI,MAAO+9tB,EAAOlulB,EAAI7vI,MAC7B6vI,EAAInjK,KAAK,CAAC,MAAO,MAAM4xL,EAAK,IAAQ,IAAMy/jB,EAAO,IAAMC,EAAO,KAC7D,MAEF,QACC,GAAG1/jB,EAAK,IAAQ4+jB,EAAS5+jB,GACxB0/jB,EAAOnulB,EAAI7vI,MAAO+9tB,EAAOlulB,EAAI7vI,MAC7B6vI,EAAInjK,KAAKqxvB,EAAOb,EAAS5+jB,GAAM0/jB,OACzB,KAAGf,EAAQ3+jB,GAQb,OAAGA,GAAM,EAAaxyL,QAAQ2pB,MAAM,sBAAwB6oK,EAAGxxL,SAAS,KACrEwxL,GAAM,GAAaxyL,QAAQ2pB,MAAM,sBAAwB6oK,EAAGxxL,SAAS,KACrEwxL,GAAM,GAAaxyL,QAAQ2pB,MAAM,sBAAwB6oK,EAAGxxL,SAAS,KACrEwxL,GAAM,IAAaxyL,QAAQ2pB,MAAM,mCAAqC6oK,EAAGxxL,SAAS,KAE9EhB,QAAQ2pB,MAAM,2BAA6B6oK,EAAGxxL,SAAS,KAVlE,GADW,KADXgxvB,EAAOb,EAAQ3+jB,GAAI,MACJw/jB,EAAOz7pB,EAAKA,EAAKltE,MAC7B2ouB,EAAOjulB,EAAIzkK,OAAoG,YAA1FU,QAAQ2pB,MAAM,2BAA6B6oK,EAAGxxL,SAAS,IAAM,KAAO+iK,EAAI3iK,KAAK,KAAO,KAC5G,IAAI8B,EAAO6gK,EAAI/9J,OAAOgsvB,GACtBjulB,EAAIzkK,QAAU0yvB,EACdjulB,EAAInjK,KAAKuwvB,EAAQ3+jB,GAAI,GAAK,IAAMtvL,EAAK9B,KAAK,KAAO,IAOqB,EAE1E,CACiB,GAAd2iK,EAAIzkK,OAAasc,EAAE,GAAGa,EAAI,GAAKsnJ,EAAI,GACjC/jK,QAAQ2pB,MAAM,0BAA4Bo6I,EAAI3iK,KAAK,KAAO,IAChE,CAzKE+wvB,CAAgB57pB,EAAKvwF,MAAMuwF,EAAKltE,EAAGktE,EAAKltE,EAAI40sB,GAAOritB,GACnD26E,EAAKltE,GAAK40sB,CACX,CACA,OAAOritB,CACR,GA6VQ,GAAe,CAAEM,EAAE,SACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,WACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,WACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,SACnB,GAAe,CAAEA,EAAE,WACnB,GAAe,CAAEA,EAAE,YACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,WACnB,GAAe,CAAEA,EAAE,SACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,aACnB,GAAe,CAAEA,EAAE,eACnB,GAAe,CAAEA,EAAE,aACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,SAAUO,EAxarC,SAAsB85E,EAAMj3F,EAAQgwI,GACnC,IAAIoxlB,EAAMnqoB,EAAKltE,EAAI/pB,EACfsc,EAAIk1uB,EAAWv6pB,EAAMj3F,EAAQgwI,GAEjC,GADA1zH,EAAE,GAAG3H,EAAI,IACO,OAAbq7H,EAAKghnB,KAAgB,CACvB,IAAI70uB,EAAM86E,EAAKkqoB,WAAW,GAE1B,OADA7ktB,EAAE,GAAGgL,EAAI2vE,EAAKkqoB,WAAWhltB,EAAK,QACvBG,CACR,CAEA,OADAA,EAAE,GAAGgL,EAAI2vE,EAAKkqoB,WAAWC,EAAMnqoB,EAAKltE,EAAG,QAChCzN,CACR,GA8ZQ,GAAe,CAAEM,EAAE,YACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,SACnB,GAAe,CAAEA,EAAE,aACnB,GAAe,CAAEA,EAAE,SACnB,GAAe,CAAEA,EAAE,aACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,aACnB,GAAe,CAAEA,EAAE,QACnB,GAAe,CAAEA,EAAE,YACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,SACnB,GAAe,CAAEA,EAAE,SACnB,GAAe,CAAEA,EAAE,SACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,SACnB,IAAe,CAAEA,EAAE,aACnB,IAAe,CAAEA,EAAE,aACnB,IAAe,CAAEA,EAAE,WACnB,IAAe,CAAEA,EAAE,aACnB,IAAe,CAAEA,EAAE,cAAeO,EAAEq1uB,GACpC,IAAe,CAAE51uB,EAAE,cAAeO,EAzG1C,SAA2B85E,EAAMj3F,GAChC,IAAImc,EAAM86E,EAAKA,EAAKltE,KACjB5N,EAAMnc,EAAS,IAAGmc,EAAMnc,EAAS,GACxB,IAAZ,IAAIsc,EAAI,GAAUA,EAAEtc,OAASmc,GAAKG,GAAKhc,OAAOg+C,aAAa24C,EAAKA,EAAKltE,MACrE,OAAOzN,CACR,GAqGQ,IAAe,CAAEM,EAAE,MAAOO,EAAEmluB,IAC5B,MAAe,CAAE1luB,EAAE,KAGvBy0uB,EAAU,CACN,EAAe,CAAEz0uB,EAAE,OACnB,EAAe,CAAEA,EAAE,OACnB,EAAe,CAAEA,EAAE,YACnB,EAAe,CAAEA,EAAE,WACnB,EAAe,CAAEA,EAAE,aACnB,EAAe,CAAEA,EAAE,gBACnB,EAAe,CAAEA,EAAE,eACnB,EAAe,CAAEA,EAAE,eACnB,EAAe,CAAEA,EAAE,gBACnB,EAAe,CAAEA,EAAE,aACnB,GAAe,CAAEA,EAAE,eACnB,GAAe,CAAEA,EAAE,aACnB,GAAe,CAAEA,EAAE,cACnB,GAAe,CAAEA,EAAE,YACnB,GAAe,CAAEA,EAAE,gBACnB,GAAe,CAAEA,EAAE,aACnB,GAAe,CAAEA,EAAE,eACnB,GAAe,CAAEA,EAAE,aACnB,GAAe,CAAEA,EAAE,eACnB,GAAe,CAAEA,EAAE,MACnB,GAAe,CAAEA,EAAE,WACnB,GAAe,CAAEA,EAAE,UACnB,GAAe,CAAEA,EAAE,UAAWO,EAxPtC,SAAwB85E,EAAMj3F,GAC7B,IAAIsc,EAAIy1uB,EAAa96pB,GAGrB,OAFA36E,EAAE,GAAG3H,EAAI,IACT2H,EAAE,GAAGgL,EAAI2vE,EAAKkqoB,WAAWnhuB,EAAS,EAAG,QAC9Bsc,CACR,GAoPQ,GAAe,CAAEM,EAAE,WAAYO,EAAE+0uB,GACjC,GAAe,CAAEt1uB,EAAE,WAAYO,EArOvC,SAAyB85E,EAAMj3F,GAC9B,IAAIsc,EAAIy1uB,EAAa96pB,GACrB36E,EAAE,GAAGgL,EAAI2vE,EAAKkqoB,WAAW,GACzB,IAAI75sB,EAAIhL,EAAE,GAAGgL,GAAK,EAClB,GAAY,EAAThL,EAAE,GAAGgL,EACP,OAAW,EAAJA,GACN,KAAK,EAAGA,EAAe,KAAVA,GAAK,GAAW,MAC7B,KAAK,EAAGA,EAAe,KAAVA,GAAK,GAAU,MAC5B,KAAK,EAAGA,GAAKA,GAAK,GAAK,GAAI,MAC3B,KAAK,EAAGA,GAAKA,GAAK,GAAK,IAAK,MAC5B,KAAK,EAAGA,GAAKA,GAAK,GAAK,IAAM,MAC7B,KAAK,EAAGA,GAAKA,GAAK,GAAK,IAAO,MAC9B,KAAK,EAAGA,GAAKA,GAAK,GAAK,GAAI,MAC3B,KAAK,EAAGA,GAAKA,GAAK,GAAK,GAIzB,OADAhL,EAAE,GAAGgL,EAAIA,EACFhL,CACR,GAoNQ,GAAe,CAAEM,EAAE,YAAaO,EAtKxC,SAA0B85E,EAAMj3F,GAC/B,IAAIsc,EAAI41uB,EAAgBj7pB,GAExB,OADAA,EAAKltE,GAAK/pB,EAAS,GACZsc,CACR,GAmKQ,GAAe,CAAEM,EAAE,aACnB,GAAe,CAAEA,EAAE,UAAWO,EAzHtC,SAAuB85E,EAAMj3F,GAE5B,IADA,IAAIsc,EAAI,CAAC,EAAG8ktB,EAAMnqoB,EAAKltE,EAAI/pB,EACrBi3F,EAAKltE,EAAIq3sB,GAAK,CACnB,IAAI5lqB,EAAKy7B,EAAKkqoB,WAAW,GACzB,GAAS,MAAN3lqB,EAAc,CAGhB,IAFAl/C,EAAEk/C,GAAM,CAAC,EAAG,IACZl/C,EAAEk/C,GAAI,GAAKy7B,EAAKkqoB,WAAW,GACrBlqoB,EAAKA,EAAKltE,IAAMzN,EAAEk/C,GAAI,IAAMl7D,OAAOg+C,aAAa24C,EAAKA,EAAKltE,IAAKktE,EAAKltE,IAAOktE,EAAKltE,GACvF,CAED,CACA,OAAOzN,CACR,GA8GQ,GAAe,CAAEM,EAAE,eACnB,GAAe,CAAEA,EAAE,eACnB,GAAe,CAAEA,EAAE,eACnB,GAAe,CAAEA,EAAE,OACnB,GAAe,CAAEA,EAAE,WACnB,GAAe,CAAEA,EAAE,SACnB,GAAe,CAAEA,EAAE,eACnB,GAAe,CAAEA,EAAE,MACnB,GAAe,CAAEA,EAAE,WAAYO,EA3KvC,SAAyB85E,EAAMj3F,GAC9B,IAAIsc,EAAIy1uB,EAAa96pB,GACjBk7pB,EAAKl7pB,EAAKkqoB,WAAW,GAEzB,OADA7ktB,EAAE,GAAGgL,EAAI6quB,GAAM,EACR71uB,CACR,GAuKQ,GAAe,CAAEM,EAAE,MACnB,GAAe,CAAEA,EAAE,WAAYO,EAAEo1uB,GACjC,GAAe,CAAE31uB,EAAE,YAAaO,EAhKxC,SAA0B85E,EAAMj3F,GAC/B,IAAIsc,EAAIi2uB,EAAgBt7pB,GAExB,OADAA,EAAKltE,GAAK/pB,EAAS,GACZsc,CACR,GA6JQ,IAAe,CAAEM,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,cAAeO,EAAEq1uB,GACpC,IAAe,CAAE51uB,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,IAAe,CAAEA,EAAE,MACnB,KAAe,CAAEA,EAAE,cAAeO,EAlN1C,SAA2B85E,EAAMj3F,EAAQgwI,GACxC,GAAIA,EAAKihnB,QAAQjxvB,EAAS,IAA1B,CACA,IAAIg4B,EAAKi/D,EAAKkqoB,WAAW,GAKzB,OAJAlqoB,EAAKltE,GAAK,GACVktE,EAAKltE,GAAK,EACVktE,EAAKltE,GAAK,EAEH,CAACiO,EADCi/D,EAAKkqoB,WAAWnhuB,EAAS,GAAI,QALF,CAOrC,GA2MQ,KAAe,CAAE4c,EAAE,MACnB,KAAe,CAAEA,EAAE,MACnB,KAAe,CAAEA,EAAE,MACnB,KAAe,CAAEA,EAAE,MACnB,KAAe,CAAEA,EAAE,MACnB,KAAe,CAAEA,EAAE,MACnB,KAAe,CAAEA,EAAE,MACnB,KAAe,CAAEA,EAAE,MACnB,KAAe,CAAEA,EAAE,MACnB,KAAe,CAAEA,EAAE,MACnB,KAAe,CAAEA,EAAE,MACnB,MAAe,CAAEA,EAAE,MACnB,MAAe,CAAEA,EAAE,MACnB,MAAe,CAAEA,EAAE,MACnB,MAAe,CAAEA,EAAE,MACnB,MAAe,CAAEA,EAAE,KA6I3B,MAAO,CACNk2uB,aAr4BD,SAAsBjkmB,EAAkB7e,GACvC,IAAI1zH,EAAI0zH,GAAQ,CAAC,EAEjB,IADI1zH,EAAE4ruB,UAAY,GAAGzwB,IAAQn7sB,EAAE4ruB,UAClB,UAAV5ruB,EAAEuS,KAAkB,MAAM,IAAIpF,MAAM,iCACvC,IAAIs2K,EAAK62iB,KACLzgtB,EAAQmitB,GAAkBzplB,EAAG,SAC7BmqlB,EAAuB,MAAfnqlB,EAAG,SACX3tH,EAAO,GAEX6xtB,GAAehzjB,EAAI,EAmEpB,SAAuBz4K,GACtB,IAAIm9I,EAAMugkB,GAAQ,GAElB,OADAvgkB,EAAIs8jB,YAAY,EAAGz5sB,GACZm9I,CACR,CAvE0BuulB,CAAc,OACvCD,GAAehzjB,EAAI,EAwHpB,SAAqB5pK,GACpB,IAAIsuI,EAAMugkB,GAAQ,GAKlB,OAJAvgkB,EAAIs8jB,YAAY,EAAG5qsB,EAAM/kB,EAAEwC,GAC3B6wJ,EAAIs8jB,YAAY,EAAG5qsB,EAAM/kB,EAAEuY,GAC3B86I,EAAIs8jB,YAAY,EAAG5qsB,EAAMziB,EAAEE,GAC3B6wJ,EAAIs8jB,YAAY,EAAG5qsB,EAAMziB,EAAEiW,GACpB86I,CACR,CA/H0BwulB,CAAY98tB,IAErC,IADA,IAAI+8tB,EAAQn0vB,KAAKma,IAAIid,EAAMziB,EAAEiW,EAAG,MACxB4xB,EAAIplB,EAAM/kB,EAAEwC,EAAG2nC,GAAKplB,EAAMziB,EAAEE,IAAK2nC,EAAGra,EAAKqa,GAAKq8rB,GAAWr8rB,GACjE,IAAI,IAAI7oC,EAAIyjB,EAAM/kB,EAAEuY,EAAGjX,GAAKwgvB,IAASxgvB,EAAG,CACvC,IAAI48J,EAAKqokB,GAAWjluB,GACpB,IAAI6oC,EAAIplB,EAAM/kB,EAAEwC,EAAG2nC,GAAKplB,EAAMziB,EAAEE,IAAK2nC,EAAG,CACvC,IAAIxqB,EAAOiotB,GAASnqlB,EAAG,SAASn8I,IAAI,IAAI6oC,GAAKszG,EAAG3tH,EAAKqa,GAAK+zH,GAC1D,GAAIv+I,GAAkB,KAAVA,EAAKpc,EAEjB,GAAa,KAAVoc,EAAKpc,GACI,EAAPoc,EAAKzJ,IAAMyJ,EAAKzJ,GAAKyJ,EAAKzJ,IAAM,OAASyJ,EAAKzJ,GAAK,MAAOyruB,GAAehzjB,EAAI,GAAM2xjB,EAAch/uB,EAAG6oC,EAAGxqB,EAAKzJ,IAC3GyruB,GAAehzjB,EAAI,GAAM4xjB,EAAaj/uB,EAAG6oC,EAAGxqB,EAAKzJ,SAGtDyruB,GAAehzjB,EAAI,GAAM0xjB,EAAY/+uB,EAAG6oC,EAD9Bk9rB,GAAY1ntB,GACyBrqB,MAAM,EAAG,MAE1D,CACD,CAGA,OADAqsvB,GAAehzjB,EAAI,GACZA,EAAGnnL,KACX,EAu2BCu6uB,YAr2BD,SAAqB3ikB,EAAiBxgD,GACrC,IAAI1zH,EAAI0zH,GAAQ,CAAC,EAEjB,IADI1zH,EAAE4ruB,UAAY,GAAGzwB,IAAQn7sB,EAAE4ruB,UAClB,UAAV5ruB,EAAEuS,KAAkB,MAAM,IAAIpF,MAAM,iCACvC,IAAIs2K,EAAK62iB,KAETmc,GAAehzjB,EAAI,EA2CpB,SAAuBvP,GACtB,IAAI/rB,EAAMugkB,GAAQ,IAClBvgkB,EAAIs8jB,YAAY,EAAG,MACnBt8jB,EAAIs8jB,YAAY,EAAG,GACnBt8jB,EAAIs8jB,YAAY,EAAG,GAEnB,IADA,IAAI7nsB,EAAO,EAAGgI,EAAO,EAAGkytB,EAAQ,EACxBjyvB,EAAI,EAAGA,EAAIqvL,EAAGoojB,WAAW54uB,SAAUmB,EAAG,CAC7C,IAAI2b,EAAO0zK,EAAGoojB,WAAWz3uB,GACrB0tJ,EAAK2hC,EAAGqojB,OAAO/7tB,GACnB,GAAI+xI,GAAOA,EAAG,QAAd,GACEukmB,EACF,IAAIj9tB,EAAQ+htB,GAAarplB,EAAG,SACzB31H,EAAO/C,EAAMziB,EAAEiW,IAAGuP,EAAO/C,EAAMziB,EAAEiW,GACjCuX,EAAO/K,EAAMziB,EAAEE,IAAGstB,EAAO/K,EAAMziB,EAAEE,EAJL,CAKhC,CACGslB,EAAO,OAAMA,EAAO,MAUvB,OATAurI,EAAIs8jB,YAAY,EAAG7nsB,GACnBurI,EAAIs8jB,YAAY,EAAGqyB,GACnB3ulB,EAAIs8jB,YAAY,EAAG7/rB,GACnBujI,EAAIs8jB,YAAY,EAAG,GACnBt8jB,EAAIs8jB,YAAY,EAAG,GACnBt8jB,EAAIs8jB,YAAY,EAAG,GACnBt8jB,EAAIs8jB,YAAY,EAAG,GACnBt8jB,EAAIs8jB,YAAY,EAAG,GACnBt8jB,EAAIs8jB,YAAY,EAAG,GACZt8jB,CACR,CArE0B4ulB,CAAc7ikB,IAEvC,IAAI,IAAIrvL,EAAI,EAAGkyR,EAAM,EAAGlyR,EAAIqvL,EAAGoojB,WAAW54uB,SAAUmB,GAAOqvL,EAAGqojB,OAAOrojB,EAAGoojB,WAAWz3uB,KAAO,CAAC,GAAG,SAAS4xvB,GAAehzjB,EAAI,GAAM0yjB,EAAwBjikB,EAAGoojB,WAAWz3uB,GAAIkyR,MAE1K,IAAI4+d,EAAQ,EACZ,IAAI9wvB,EAAI,EAAGA,EAAIqvL,EAAGoojB,WAAW54uB,SAAUmB,EAAG,CACzC,IAAI0tJ,EAAK2hC,EAAGqojB,OAAOrojB,EAAGoojB,WAAWz3uB,IACjC,GAAI0tJ,GAAOA,EAAG,QAAd,CAKA,IAJA,IAAI14H,EAAQmitB,GAAkBzplB,EAAG,SAC7BmqlB,EAAuB,MAAfnqlB,EAAG,SACX3tH,EAAO,GACPgytB,EAAQn0vB,KAAKma,IAAIid,EAAMziB,EAAEiW,EAAG,MACxBjX,EAAIyjB,EAAM/kB,EAAEuY,EAAGjX,GAAKwgvB,IAASxgvB,EAEpC,IADA,IAAI48J,EAAKqokB,GAAWjluB,GACZ6oC,EAAIplB,EAAM/kB,EAAEwC,EAAG2nC,GAAKplB,EAAMziB,EAAEE,IAAK2nC,EAAG,CACxC7oC,IAAMyjB,EAAM/kB,EAAEuY,IAAGuX,EAAKqa,GAAKq8rB,GAAWr8rB,IACzC,IAAIrqB,EAAMgQ,EAAKqa,GAAK+zH,EAChBv+I,EAAOiotB,GAASnqlB,EAAG,SAASn8I,IAAI,IAAI6oC,GAAKszG,EAAG39H,GAChD,GAAIH,GAAkB,KAAVA,EAAKpc,EAEjB,GAAa,KAAVoc,EAAKpc,EACPo+uB,GAAehzjB,EAAI,GAAMsyjB,EAAgB3/uB,EAAG6oC,EAAG02sB,EAAOlhuB,EAAKzJ,SAI3DyruB,GAAehzjB,EAAI,GAAMiyjB,EAAet/uB,EAAG6oC,EAAG02sB,EAFpCxZ,GAAY1ntB,GAEmCrqB,MAAM,EAAG,MAEpE,GAECurvB,CAtB6B,CAuBhC,CAGA,OADAc,GAAehzjB,EAAI,GACZA,EAAGnnL,KACX,EA8zBC4vuB,YAjhCD,SAA2B73uB,EAAeq/H,GACzC,OAAOA,EAAKnhH,MACX,IAAK,SAAU,OAAO0huB,EAAsBx3B,GAAIR,GAAc5ntB,IAAKq/H,GACnE,IAAK,SAAU,OAAOugnB,EAAsBx3B,GAAIpotB,GAAIq/H,GACpD,IAAK,SACL,IAAK,QAAS,OAAOugnB,EAAsB5/uB,EAAGq/H,GAE/C,KAAM,oBAAsBA,EAAKnhH,IAClC,EA2gCD,CAniCwB,GAgpCxB,IAAIykuB,GAAyB,WAC5B,IAAIC,EAAS9gB,GAAS,KAAM+gB,EAAU/gB,GAAS,OAE/C,SAASghB,EAAQ9puB,GAEhB,IAAIhV,EAAIgV,EAAE9jB,MAAM0tvB,GAChB,IAAI5+uB,EAAG,MAAO,CAACA,EAAE,IAAK2S,EAAE,IAExB,IAAIhL,EAAc,CAAC3H,EAAE,IAAK2S,EAAEmqtB,GAAY98tB,EAAE,KACtC++uB,EAAM/puB,EAAE9jB,MAAM2tvB,GAElB,OADGE,IAAKp3uB,EAAElL,EArHZ,SAAmBsivB,GAClB,IAAIrluB,EAAO,CAAC,EAAGnd,EAAIwivB,EAAI7tvB,MAAMoruB,IAAW9vuB,EAAI,EACxCwyvB,GAAO,EACX,GAAGzivB,EAAG,KAAK/P,GAAG+P,EAAElR,SAAUmB,EAAG,CAC5B,IAAIoP,EAAI6guB,GAAYlguB,EAAE/P,IACtB,OAAOoP,EAAE,GAAGhR,QAAQ,QAAQ,KAG3B,IAAK,YAGL,IAAK,UAAW,MAGhB,IAAK,UACJ,IAAIgR,EAAE0mC,IAAK,MAEZ,IAAK,WACL,IAAK,YAAa5oB,EAAKyyB,OAAS,EAAG,MACnC,IAAK,YAAa,MAGlB,IAAK,WACJ,GAAY,KAATvwC,EAAE0mC,IAAY,MACjB5oB,EAAKmpsB,GAAKF,GAAMhvtB,SAASiI,EAAE0mC,IAAK,KAChC,MAGD,IAAK,WACJ,IAAI1mC,EAAE0mC,IAAK,MAEZ,IAAK,YACL,IAAK,aAAc5oB,EAAKsyB,QAAU,EAAG,MACrC,IAAK,aAAc,MAGnB,IAAK,SAAUtyB,EAAKvR,KAAOvM,EAAE0mC,IAAK,MAGlC,IAAK,MAAO5oB,EAAK2yB,GAAKzwC,EAAE0mC,IAAK,MAG7B,IAAK,UACJ,IAAI1mC,EAAE0mC,IAAK,MAEZ,IAAK,WACL,IAAK,YAAa5oB,EAAK0yB,OAAS,EAAG,MACnC,IAAK,YAAa,MAGlB,IAAK,KACJ,IAAIxwC,EAAE0mC,IAAK,MACX,OAAO1mC,EAAE0mC,KACR,IAAK,SAAU5oB,EAAKuluB,KAAO,SAAU,MACrC,IAAK,mBAAoBvluB,EAAKuluB,KAAO,oBAAqB,MAC1D,IAAK,mBAAoBvluB,EAAKuluB,KAAO,oBAGvC,IAAK,MACL,IAAK,OAAQvluB,EAAK1b,EAAI,EAAG,MACzB,IAAK,OAAQ,MAGb,IAAK,KACJ,GAAY,KAATpC,EAAE0mC,IAAY,MAElB,IAAK,MACL,IAAK,OAAQ5oB,EAAKta,EAAI,EAAG,MACzB,IAAK,OAAQ,MAGb,IAAK,KACJ,GAAY,KAATxD,EAAE0mC,IAAY,MAElB,IAAK,MACL,IAAK,OAAQ5oB,EAAKltB,EAAI,EAAG,MACzB,IAAK,OAAQ,MAGb,IAAK,SACDoP,EAAEivC,MAAKnxB,EAAKygB,MAAQv+B,EAAEivC,IAAI94C,MAAM,EAAE,IACrC,MACD,IAAK,UAAW,IAAK,WAAY,IAAK,WAAY,MAGlD,IAAK,UAAW2nB,EAAKqyB,OAASnwC,EAAE0mC,IAAK,MACrC,IAAK,WAAY,IAAK,YAAa,IAAK,YAAa,MAGrD,IAAK,aAAc5oB,EAAKwluB,OAAStjvB,EAAE0mC,IAAK,MACxC,IAAK,cAAe,IAAK,eAAgB,IAAK,eAG9C,IAAK,UACL,IAAK,WAAY,IAAK,YAAa,IAAK,YAGxC,IAAK,UAAW,IAAK,WAAY,IAAK,YAAa,MACnD,IAAK,OAAQ08sB,GAAO,EAAM,MAC1B,IAAK,SAAUA,GAAO,EAAO,MAC7B,QACC,GAA0B,KAAvBpjvB,EAAE,GAAGoyB,WAAW,KAAcgxtB,EAAM,MAAM,IAAIlquB,MAAM,4BAA8BlZ,EAAE,IAE1F,CACA,OAAO8d,CACR,CAYgByluB,CAAUJ,EAAI,KACrBp3uB,CACR,CACA,IAAIy3uB,EAAS,gBAAiBC,EAAO,iBACrC,OAAO,SAAkBC,GACxB,OAAOA,EAAG10vB,QAAQw0vB,EAAO,IAAIr6uB,MAAMs6uB,GAAM79uB,IAAIs9uB,GAAS/ruB,QAAO,SAASiC,GAAK,OAAOA,EAAErC,CAAG,GACxF,CACD,CAjB6B,GAqBzB4suB,GAA2B,WAC9B,IAAIC,EAAU,aAyBd,SAASC,EAAUzquB,GAClB,IAAI0quB,EAAmD,CAAC,GAAG1quB,EAAErC,EAAE,IAC/D,OAAIqC,EAAErC,GAEHqC,EAAEvY,GA5BN,SAAoBid,EAAMimuB,EAAOC,GAChC,IAAItmuB,EAA0B,GAE3BI,EAAK1b,GAAGsb,EAAM3sB,KAAK,+BACnB+sB,EAAKuluB,MAAM3luB,EAAM3sB,KAAK,wBAA0B+sB,EAAKuluB,KAAO,KAC5DvluB,EAAK2yB,IAAI/yB,EAAM3sB,KAAK,aAAe+sB,EAAK2yB,GAAK,OAC7C3yB,EAAKsyB,SAAS1yB,EAAM3sB,KAAK,yBACzB+sB,EAAKyyB,QAAQ7yB,EAAM3sB,KAAK,sBAC3BgzvB,EAAMhzvB,KAAK,gBAAkB2sB,EAAMnsB,KAAK,IAAM,MAE3CusB,EAAKta,IAAKugvB,EAAMhzvB,KAAK,OAAQizvB,EAAMjzvB,KAAK,SACxC+sB,EAAKltB,IAAKmzvB,EAAMhzvB,KAAK,OAAQizvB,EAAMjzvB,KAAK,SACxC+sB,EAAK0yB,SAAUuzsB,EAAMhzvB,KAAK,OAAQizvB,EAAMjzvB,KAAK,SAEhD,IAAImrb,EAAQp+Z,EAAKwluB,QAAU,GACf,eAATpnU,GAAmC,SAATA,EAAkBA,EAAQ,MACtC,aAATA,IAAsBA,EAAQ,OAC1B,IAATA,IAAe6nU,EAAMhzvB,KAAK,IAAMmrb,EAAQ,KAAM8nU,EAAMjzvB,KAAK,KAAOmrb,EAAQ,MAE3E8nU,EAAMjzvB,KAAK,UAEZ,CAOSkzvB,CAAW7quB,EAAEvY,EAAGijvB,EAAM,GAAIA,EAAM,IAEjCA,EAAM,GAAGvyvB,KAAK,IAAMuyvB,EAAM,GAAG90vB,QAAQ40vB,EAAQ,SAAWE,EAAM,GAAGvyvB,KAAK,KAJ7D,EAKjB,CAEA,OAAO,SAAkBmyvB,GACxB,OAAOA,EAAG99uB,IAAIi+uB,GAAWtyvB,KAAK,GAC/B,CACD,CAtC+B,GAyC3B2yvB,GAAW,0CAA2CC,GAAW,sBACjEC,GAAa,+CACjB,SAASC,GAASpgvB,EAAGw7H,GACpB,IAAIpJ,GAAOoJ,GAAOA,EAAK6knB,SACnBngvB,EAAI,CAAC,EACT,OAAIF,GAIDA,EAAE3O,MAAM,0BACV6O,EAAEC,EAAI88tB,GAAYe,GAASh+tB,EAAE9N,MAAM8N,EAAE/H,QAAQ,KAAK,GAAGiN,MAAM,kBAAkB,IAAI,KAAK,GACtFhF,EAAEiV,EAAI6otB,GAASh+tB,GACZoyH,IAAMlyH,EAAE1D,EAAI+guB,GAAWr9tB,EAAEC,KAGZH,EAAE3O,MAAM6uvB,MACxBhgvB,EAAEiV,EAAI6otB,GAASh+tB,GACfE,EAAEC,EAAI88tB,GAAYe,IAAUh+tB,EAAEjV,QAAQo1vB,GAAY,IAAI9uvB,MAAM4uvB,KAAW,IAAI3yvB,KAAK,IAAIvC,QAAQ0xuB,GAAS,MAAM,GACxGrqmB,IAAMlyH,EAAE1D,EAAIkjvB,GAAWZ,GAAS5+uB,EAAEiV,MAI/BjV,GAjBO,CAAEC,EAAG,GAkBpB,CAGA,IAAImgvB,GAAQ,iDACRC,GAAQ,6BACRC,GAAQ,8BA2FZ,SAASC,GAASt1mB,GACjB,GAAuB,qBAAbs3kB,GAA0B,OAAOA,GAAS96oB,MAAM7iD,OAAO89rB,GAAcz3kB,GAE/E,IADA,IAAIrjI,EAAsB,GAAIq5tB,EAAKh2lB,EAAIjmI,MAAM,IACrCvY,EAAI,EAAGA,EAAIw0uB,EAAG31uB,SAAUmB,EAAGmb,EAAEnb,GAAKw0uB,EAAGx0uB,GAAGwhC,WAAW,GAC3D,OAAOrmB,CACR,CAGA,SAAS44uB,GAAoBj+pB,EAAMj3F,GAClC,IAAIsc,EAAY,CAAC,EAKjB,OAJAA,EAAE64uB,MAAQl+pB,EAAKkqoB,WAAW,GAC1B7ktB,EAAE84uB,MAAQn+pB,EAAKkqoB,WAAW,GAEvBnhuB,GAAU,IAAGi3F,EAAKltE,GAAK/pB,EAAS,GAC5Bsc,CACR,CAaA,SAAS+4uB,GAAwBp+pB,GAOhC,IANA,IAAI96E,EAAM86E,EAAKkqoB,WAAW,GACtBvotB,EAAMq+E,EAAKltE,EAAI5N,EAAM,EACrBG,EAAI,CAAC,EACL+2Q,EAAMp8L,EAAKkqoB,WAAW,GACtBm0B,EAAwC,GAEtCjie,KAAQ,GAAGiie,EAAMh0vB,KAAK,CAAEqT,EAAGsiF,EAAKkqoB,WAAW,GAAI75sB,EAAG2vE,EAAKkqoB,WAAW,EAAG,UAG3E,GAFA7ktB,EAAEQ,KAAOm6E,EAAKkqoB,WAAW,EAAG,QAC5B7ktB,EAAEg5uB,MAAQA,EACPr+pB,EAAKltE,GAAKnR,EAAK,MAAM,IAAI6Q,MAAM,0BAA4BwtE,EAAKltE,EAAI,OAASnR,GAChF,OAAO0D,CACR,CAiCA,SAASi5uB,GAAct+pB,GAEtB,IAAIu+pB,EAdL,SAAmCv+pB,GAClC,IAAI36E,EAAI,CAAC,EAQT,OAPc26E,EAAKkqoB,WAAW,GAC9BlqoB,EAAKltE,GAAK,EACVzN,EAAE0b,GAAKi/D,EAAKkqoB,WAAW,EAAG,QAC1B7ktB,EAAEQ,KAAOm6E,EAAKkqoB,WAAW,EAAG,QAC5B7ktB,EAAE5J,EAAIwivB,GAAoBj+pB,EAAM,GAChC36E,EAAEgoC,EAAI4wsB,GAAoBj+pB,EAAM,GAChC36E,EAAEkoC,EAAI0wsB,GAAoBj+pB,EAAM,GACzB36E,CACR,CAIWm5uB,CAA0Bx+pB,GAKpC,GAHAu+pB,EAAIE,MAAQz+pB,EAAKkqoB,WAAW,EAAG,SAC/Bq0B,EAAI3e,MAAQ5/oB,EAAKkqoB,WAAW,GAC5Bq0B,EAAIG,MAAQ1+pB,EAAKkqoB,WAAW,GACH,GAAtBlqoB,EAAKkqoB,WAAW,GAAY,MAAM,IAAI13sB,MAAM,uBAC/C,OAAO+ruB,CACR,CAGA,SAASI,GAAuB3+pB,EAAMj3F,GACrC,IAAIohuB,EAAMnqoB,EAAKltE,EAAI/pB,EACfsc,EAAI,CAAC,EACTA,EAAEu5uB,MAA8B,GAArB5+pB,EAAKkqoB,WAAW,GAC3BlqoB,EAAKltE,GAAK,EACVzN,EAAEw5uB,MAAQ7+pB,EAAKkqoB,WAAW,GAC1B,IAAIhmH,GAAQ,EACZ,OAAO7+lB,EAAEw5uB,OACR,KAAK,MAAQ,KAAK,MAAQ,KAAK,MAAQ36I,EAAoB,IAAX7+lB,EAAEu5uB,MAAgB,MAClE,KAAK,MAAQ16I,EAAoB,GAAX7+lB,EAAEu5uB,MAAgB,MACxC,KAAK,EAAG16I,EAAoB,IAAX7+lB,EAAEu5uB,OAA4B,GAAXv5uB,EAAEu5uB,OAA4B,IAAXv5uB,EAAEu5uB,MAAgB,MACzE,QAAS,KAAM,sCAAwCv5uB,EAAEw5uB,MAE1D,IAAI36I,EAAO,MAAM,IAAI1xlB,MAAM,mCAO3B,OANAnN,EAAEy5uB,UAAY9+pB,EAAKkqoB,WAAW,GAC9B7ktB,EAAE05uB,QAAU/+pB,EAAKkqoB,WAAW,GAC5B7ktB,EAAE25uB,aAAeh/pB,EAAKkqoB,WAAW,GACjClqoB,EAAKltE,GAAK,EACVzN,EAAE45uB,QAAUj/pB,EAAKkqoB,WAAYC,EAAInqoB,EAAKltE,GAAI,EAAG,WAC7CktE,EAAKltE,EAAIq3sB,EACF9ktB,CACR,CAGA,SAAS65uB,GAAyBl/pB,EAAMj3F,GACvC,IAAIsc,EAAI,CAAC,EAAG8ktB,EAAMnqoB,EAAKltE,EAAI/pB,EAM3B,OALAi3F,EAAKltE,GAAK,EACVzN,EAAE85uB,KAAOn/pB,EAAKvwF,MAAMuwF,EAAKltE,EAAGktE,EAAKltE,EAAE,IAAKktE,EAAKltE,GAAK,GAClDzN,EAAE+5uB,SAAWp/pB,EAAKvwF,MAAMuwF,EAAKltE,EAAGktE,EAAKltE,EAAE,IAAKktE,EAAKltE,GAAK,GACzCktE,EAAKkqoB,WAAW,GAC7B7ktB,EAAEg6uB,aAAer/pB,EAAKvwF,MAAMuwF,EAAKltE,EAAGq3sB,GAAMnqoB,EAAKltE,EAAIq3sB,EAC5C9ktB,CACR,CAcA,SAASi6uB,GAAiBt/pB,GAEzB,GAAqB,KAAT,GADAA,EAAKkqoB,WAAW,IACD,MAAM,IAAI13sB,MAAM,2BAC3C,IAAIu3B,EAAKi2C,EAAKkqoB,WAAW,GAIzB,MAAO,CAAExstB,EAAE,MAAO3D,EAFR4kvB,GAAuB3+pB,EAAMj2C,GAEd15B,EADV6uuB,GAAyBl/pB,EAAMA,EAAKj3F,OAASi3F,EAAKltE,GAElE,CAEA,SAASysuB,KAAqC,MAAM,IAAI/suB,MAAM,kDAAoD,CAElH,SAASgtuB,GAAiBx/pB,GACzB,IAAIy/pB,EAAU,CAAC,WAAW,YAAY,UAAU,WAAW,kBAAkB,iBAAiB,gBAAgB,aAC9Gz/pB,EAAKltE,GAAG,EACR,IAAIif,EAAMiuD,EAAKkqoB,WAAWlqoB,EAAKj3F,OAASi3F,EAAKltE,EAAG,QAC5CzN,EAAI,CAAC,EAiBT,OAhBA0sB,EAAIzpC,QAAQ0xuB,IAAU,SAAmBz8tB,GACxC,IAAIjE,EAAY6guB,GAAY58tB,GAC5B,OAAO+8tB,GAAShhuB,EAAE,KACjB,IAAK,QACL,IAAK,cAAe,IAAK,gBAIzB,IAAK,mBAGL,IAAK,kBAAmB,MANxB,IAAK,WAAYmmvB,EAAQ19uB,SAAQ,SAAS9E,GAAKoI,EAAEpI,GAAK3D,EAAE2D,EAAI,IAAI,MAChE,IAAK,iBAAkBoI,EAAEq6uB,iBAAmBpmvB,EAAEomvB,iBAAkBr6uB,EAAEs6uB,mBAAqBrmvB,EAAEqmvB,mBAAoB,MAC7G,IAAK,kBAAmB,IAAK,iBAAkBt6uB,EAAEu6uB,KAAO,GAAI,MAG5D,IAAK,gBAAiBv6uB,EAAE80B,IAAM7gC,EAAE6gC,IAAK,MAErC,IAAK,gBAAiB90B,EAAEu6uB,KAAKv1vB,KAAKiP,GAAI,MACtC,QAAS,MAAMA,EAAE,GAEnB,IACO+L,CACR,CA0BA,SAASw6uB,GAAsCC,GAC9C,IAAuBC,EAEe71vB,EAFlCk1vB,EAAW,EACXY,EAAkBhC,GAAS8B,GAC3B56uB,EAAM86uB,EAAgBj3vB,OAAS,EAInC,KAFAg3vB,EAAgBn+B,GAAY18sB,IACd,GAAK86uB,EAAgBj3vB,OAC/BmB,EAAI,EAAGA,GAAKgb,IAAOhb,EAAG61vB,EAAc71vB,GAAK81vB,EAAgB91vB,EAAE,GAC/D,IAAIA,EAAIgb,EAAI,EAAGhb,GAAK,IAAKA,EAKxBk1vB,IAHyC,KAAZ,MAAXA,GAAiC,EAAI,GACtCA,GAAY,EAAK,OAFnBW,EAAc71vB,GAM9B,OAAkB,MAAXk1vB,CACR,CAGA,IAAIa,GAA8C,WACjD,IAAIC,EAAW,CAAC,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAChGC,EAAc,CAAC,MAAQ,KAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAC/HC,EAAY,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,IAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,IAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,KAAQ,KAAQ,OAE70BC,EAAS,SAASzpU,EAAOC,GAAS,OADsB,MAAzCypU,EAC8B1pU,EAAQC,GADhB,EAAW,IAALypU,GAArC,IAASA,CAC8C,EAajE,OAAO,SAAS5koB,GAKf,IAJA,IAKI6koB,EAAMC,EAAkBC,EALxBX,EAAW9B,GAAStioB,GACpBgloB,EAdsB,SAASZ,GAGnC,IAFA,IAAIY,EAASP,EAAYL,EAAS/2vB,OAAS,GACvC43vB,EAAiB,IACbz2vB,EAAI41vB,EAAS/2vB,OAAO,EAAGmB,GAAK,IAAKA,EAExC,IADA,IAAI02vB,EAAOd,EAAS51vB,GACZm6C,EAAI,EAAQ,GAALA,IAAUA,EACd,GAAPu8sB,IAAaF,GAAUN,EAAUO,IACpCC,GAAQ,IAAKD,EAGf,OAAOD,CACR,CAGcG,CAAqBf,GAC9BgB,EAAQhB,EAAS/2vB,OACjBg4vB,EAAmBn/B,GAAY,IAC3B13tB,EAAI,EAAQ,IAALA,IAAWA,EAAG62vB,EAAiB72vB,GAAK,EAUnD,IARmB,KAAP,EAAR42vB,KACHP,EAAOG,GAAU,EACjBK,EAAiBD,GAAST,EAAOH,EAAS,GAAIK,KAC5CO,EACFP,EAAgB,IAATG,EACPF,EAAmBV,EAASA,EAAS/2vB,OAAS,GAC9Cg4vB,EAAiBD,GAAST,EAAOG,EAAkBD,IAE9CO,EAAQ,GAEbP,EAAOG,GAAU,EACjBK,IAFED,GAEwBT,EAAOP,EAASgB,GAAQP,GAElDA,EAAgB,IAATG,EACPK,IAFED,GAEwBT,EAAOP,EAASgB,GAAQP,GAInD,IAFAO,EAAQ,GACRL,EAAW,GAAKX,EAAS/2vB,OACnB03vB,EAAW,GAChBF,EAAOG,GAAU,EACjBK,EAAiBD,GAAST,EAAOH,EAASO,GAAWF,KAEnDE,EACFF,EAAgB,IAATG,EACPK,IAHED,GAGwBT,EAAOP,EAASgB,GAAQP,KAChDO,IACAL,EAEH,OAAOM,CACR,CACD,CAvDkD,GAyE9CC,GAA0B,SAAStloB,GACtC,IAAIuloB,EAAgB,EAAGC,EAAWjB,GAA8BvkoB,GAChE,OAAO,SAAS6I,GACf,IAAI/mH,EAlB2B,SAASk+G,EAAqB6I,EAAM08nB,EAAeC,EAAU1jvB,GAI7F,IAAIsjvB,EAAOhiuB,EACX,IAHIthB,IAAGA,EAAI+mH,GACP28nB,IAAUA,EAAWjB,GAA8BvkoB,IAEnDoloB,EAAQ,EAAGA,GAASv8nB,EAAKx7H,SAAU+3vB,EACtChiuB,EAAQylG,EAAKu8nB,GAEbhiuB,EAAoC,MADpCA,GAASoiuB,EAASD,KACD,EAAMniuB,GAAO,GAC9BthB,EAAEsjvB,GAAShiuB,IACTmiuB,EAEH,MAAO,CAACzjvB,EAAGyjvB,EAAeC,EAC3B,CAKUC,CAA2B,GAAI58nB,EAAM08nB,EAAeC,GAE5D,OADAD,EAAgBzjvB,EAAE,GACXA,EAAE,EACV,CACD,EAYA,SAAS4jvB,GAAqBphqB,EAAMj3F,EAAmB21uB,GACtD,IAAIr5tB,EAAIq5tB,GAAM,CAAC,EAGf,OAHkBr5tB,EAAEg8uB,KAAOrhqB,EAAKkqoB,WAAW,GAAIlqoB,EAAKltE,GAAK,EAC3C,IAAXzN,EAAEg8uB,KAAYh8uB,EAAEk/G,KA5HpB,SAAyBvkC,GACxB,IAAI36E,EAAI,CAAC,EACL00uB,EAAO10uB,EAAEi8uB,sBAAwBrD,GAAoBj+pB,EAAM,GAC/D,GAAiB,GAAd+5pB,EAAKmE,OAA4B,GAAdnE,EAAKoE,MAAY,KAAM,6BAA+BpE,EAAKmE,MAAQ,MAAQnE,EAAKoE,MAItG,OAHA94uB,EAAE85uB,KAAOn/pB,EAAKkqoB,WAAW,IACzB7ktB,EAAEk8uB,kBAAoBvhqB,EAAKkqoB,WAAW,IACtC7ktB,EAAEm8uB,sBAAwBxhqB,EAAKkqoB,WAAW,IACnC7ktB,CACR,CAoH2Bo8uB,CAAgBzhqB,GACrC36E,EAAEk/G,KAzIR,SAA+BvkC,EAAMj3F,GACpC,IAAIsc,EAAI,CAAC,EACL00uB,EAAO10uB,EAAEi8uB,sBAAwBrD,GAAoBj+pB,EAAM,GAC/D,GADmEj3F,GAAU,EAC5D,GAAdgxvB,EAAKoE,MAAY,MAAM,IAAI3ruB,MAAM,oCAAsCunuB,EAAKoE,OAC/E,GAAGpE,EAAKmE,MAAQ,GAAKnE,EAAKmE,MAAQ,EAAG,MAAM,IAAI1ruB,MAAM,oCAAsCunuB,EAAKmE,OAChG74uB,EAAEu5uB,MAAQ5+pB,EAAKkqoB,WAAW,GAAInhuB,GAAU,EACxC,IAAIghD,EAAKi2C,EAAKkqoB,WAAW,GAGzB,OAH6BnhuB,GAAU,EACvCsc,EAAEq8uB,iBAAmB/C,GAAuB3+pB,EAAMj2C,GAAKhhD,GAAUghD,EACjE1kC,EAAEs8uB,mBAAqBzC,GAAyBl/pB,EAAMj3F,GAC/Csc,CACR,CA+Heu8uB,CAAsB5hqB,EAAMj3F,GACnCsc,CACR,CAsBA,SAASw8uB,GAAiBn5mB,EAAK3P,GAC7B,IAAI1zH,EAAI0zH,GAAQ,CAAC,EACb6e,EAAK,CAAC,EACNmqlB,EAAQ18tB,EAAE08tB,MACVA,IACFnqlB,EAAG,SAAW,IAChB,IAAI31H,EAAOymH,EAAI95I,MAAM,2BACrB,IAAKqzB,EACH,MAAM,IAAIzP,MAAM,qBAClB,IAAI0M,EAAQ,CAAE/kB,EAAG,CAAEwC,EAAG,EAAG+V,EAAG,GAAKjW,EAAG,CAAEE,EAAG,EAAG+V,EAAGuP,EAAKl5B,OAAS,IACzDitB,EAAM,GA8CV,OA7CAiM,EAAKlgB,SAAQ,SAAS+/uB,EAAOrmvB,GACvBsmuB,IACF/rtB,EAAM4hI,EAAG,SAASn8I,GAAK,IAMzB,IALA,IAEImN,EAFAm5uB,EAAQ,eACRC,EAAa,EAEb19sB,GAAK,EACLsrJ,EAAU,GACsB,OAA5BhnL,EAAMm5uB,EAAMh/uB,KAAK++uB,KAAiB,CACxC,IAAIzqtB,EAAOyqtB,EAAMryvB,MAAMuyvB,EAAYD,EAAM9zmB,UAAYrlI,EAAI,GAAG7f,QAK5D,OAJ0B,IAAtBsuC,EAAK3L,WAAW,KAClB2L,EAAOA,EAAK5nC,MAAM,IAChB4nC,EAAKtuC,QACP6mM,EAAQvlM,KAAKgtC,GACPzuB,EAAI,IACV,IAAK,SAEH,KADE07B,EACEsrJ,EAAQ7mM,OAAQ,CAClB,IAAI+wB,EAAO,CAAEzJ,EAAGu/K,EAAQ/kM,KAAK,IAAK6S,EAAG,KACvB,QAAVoc,EAAKzJ,GAAyB,SAAVyJ,EAAKzJ,GAC3ByJ,EAAKzJ,EAAc,QAAVyJ,EAAKzJ,EACdyJ,EAAKpc,EAAI,KACCtH,MAAMiiuB,GAASv+sB,EAAKzJ,MAC9ByJ,EAAKpc,EAAI,KACU,IAAf2H,EAAEwjsB,WACJ/urB,EAAKhe,EAAIge,EAAKzJ,GAChByJ,EAAKzJ,EAAIgotB,GAASv+sB,EAAKzJ,IAErB0xtB,EACF/rtB,EAAIsuB,GAAKxqB,EAET89H,EAAG2olB,GAAY,CAAE7ttB,EAAGjX,EAAGkB,EAAG2nC,KAAQxqB,CACtC,CACA81K,EAAU,GACV,MACF,IAAK,QACHA,EAAQvlM,KAAK,MAGjB23vB,EAAaD,EAAM9zmB,SACrB,CACI3pG,EAAIplB,EAAMziB,EAAEE,IACduiB,EAAMziB,EAAEE,EAAI2nC,EAChB,IACAszG,EAAG,QAAUsplB,GAAahitB,GACnB04H,CACT,CACA,SAASqqmB,GAAgBvovB,EAAGq/H,GAC1B,IAAIwgD,EAAKmojB,GAxEX,SAAsBhouB,EAAGq/H,GACvB,OAAQA,EAAKnhH,MACX,IAAK,SACH,OAAOiquB,GAAiBvgC,GAAc5ntB,GAAIq/H,GAC5C,IAAK,SACH,OAAO8onB,GAAiBnovB,EAAGq/H,GAC7B,IAAK,SACH,OAAO8onB,GAAiBtgC,IAAW72rB,OAAOgwB,SAAShhD,GAAKA,EAAEjP,SAAS,UAAYs3tB,GAAIrotB,GAAIq/H,GACzF,IAAK,QACH,OAAO8onB,GAAiB3pB,GAAOx+tB,GAAIq/H,GAEvC,MAAM,IAAIvmH,MAAM,qBAAuBumH,EAAKnhH,KAC9C,CA4D6BsquB,CAAaxovB,EAAGq/H,GAAOA,GAElD,OADAwgD,EAAGi4jB,SAAW,MACPj4jB,CACT,CAgCA,SAAS4okB,GAAQ55sB,GAChB,IAAI,IAAIr+C,EAAE,EAAEmb,EAAE,EAAM,GAAHnb,IAAQA,EAAGmb,EAAM,IAAFA,GAASkjC,EAAIr+C,GAAG,IAAI,IAAIq+C,EAAIr+C,GAAG,EAAE,EAAEq+C,EAAIr+C,IACvE,OAAOmb,EAAE5a,SAAS,IAAIqP,cAAcrK,MAAM,EAC3C,CAoCA,SAAS2yvB,GAAS17qB,EAAKp+B,GACtB,GAAY,IAATA,EAAY,OAAOo+B,EACtB,IAAI27qB,EApCL,SAAiB95sB,GAChB,IAAI9sC,EAAI8sC,EAAI,GAAG,IAAKptC,EAAIotC,EAAI,GAAG,IAAKxrC,EAAEwrC,EAAI,GAAG,IACzC/uC,EAAI1R,KAAK8Z,IAAInG,EAAGN,EAAG4B,GAAI9C,EAAInS,KAAKma,IAAIxG,EAAGN,EAAG4B,GAAIunC,EAAI9qC,EAAIS,EAC1D,GAAS,IAANqqC,EAAS,MAAO,CAAC,EAAG,EAAG7oC,GAE1B,IAAYpB,EAARiovB,EAAK,EAAUC,EAAM/ovB,EAAIS,EAE7B,OADAI,EAAIiqC,GAAKi+sB,EAAK,EAAI,EAAIA,EAAKA,GACpB/ovB,GACN,KAAKiC,EAAG6mvB,IAAOnnvB,EAAI4B,GAAKunC,EAAI,GAAG,EAAG,MAClC,KAAKnpC,EAAGmnvB,GAAOvlvB,EAAItB,GAAK6oC,EAAI,EAAI,MAChC,KAAKvnC,EAAGulvB,GAAO7mvB,EAAIN,GAAKmpC,EAAI,EAE7B,MAAO,CAACg+sB,EAAK,EAAGjovB,EAAGkovB,EAAK,EACzB,CAuBWC,CA7CX,SAAiBzovB,GAChB,IAAIsL,EAAItL,EAAEtK,MAAa,MAAPsK,EAAE,GAAS,EAAE,GAAGtK,MAAM,EAAE,GACxC,MAAO,CAAC4B,SAASgU,EAAE5V,MAAM,EAAE,GAAG,IAAI4B,SAASgU,EAAE5V,MAAM,EAAE,GAAG,IAAI4B,SAASgU,EAAE5V,MAAM,EAAE,GAAG,IACnF,CA0CmBgzvB,CAAQ/7qB,IAG1B,OAFc27qB,EAAI,GAAd/5sB,EAAO,EAAY+5sB,EAAI,IAAM,EAAI/5sB,GACvB,GAAK,EAAI+5sB,EAAI,KAAO,EAAI/5sB,GAC/B65sB,GAxBR,SAAiBE,GAChB,IAIInlvB,EAJAlD,EAAIqovB,EAAI,GAAIhovB,EAAIgovB,EAAI,GAAIxmvB,EAAIwmvB,EAAI,GAChC/9sB,EAAQ,EAAJjqC,GAASwB,EAAI,GAAMA,EAAI,EAAIA,GAAI5B,EAAI4B,EAAIyoC,EAAE,EAC7CiE,EAAM,CAACtuC,EAAEA,EAAEA,GAAIyovB,EAAK,EAAE1ovB,EAG1B,GAAS,IAANK,EAAS,OAAU,EAAHqovB,GAClB,KAAK,EAAG,KAAK,EAAGxlvB,EAAIonC,EAAIo+sB,EAAIn6sB,EAAI,IAAMjE,EAAGiE,EAAI,IAAMrrC,EAAG,MACtD,KAAK,EAAGA,EAAIonC,GAAK,EAAIo+sB,GAAOn6sB,EAAI,IAAMrrC,EAAGqrC,EAAI,IAAMjE,EAAG,MACtD,KAAK,EAAGpnC,EAAIonC,GAAKo+sB,EAAK,GAAMn6sB,EAAI,IAAMjE,EAAGiE,EAAI,IAAMrrC,EAAG,MACtD,KAAK,EAAGA,EAAIonC,GAAK,EAAIo+sB,GAAOn6sB,EAAI,IAAMrrC,EAAGqrC,EAAI,IAAMjE,EAAG,MACtD,KAAK,EAAGpnC,EAAIonC,GAAKo+sB,EAAK,GAAMn6sB,EAAI,IAAMjE,EAAGiE,EAAI,IAAMrrC,EAAG,MACtD,KAAK,EAAGA,EAAIonC,GAAK,EAAIo+sB,GAAOn6sB,EAAI,IAAMrrC,EAAGqrC,EAAI,IAAMjE,EAEpD,IAAI,IAAIp6C,EAAI,EAAQ,GAALA,IAAUA,EAAGq+C,EAAIr+C,GAAKpC,KAAKoM,MAAa,IAAPq0C,EAAIr+C,IACpD,OAAOq+C,CACR,CAQgBo6sB,CAAQN,GACxB,CAIA,IAAIO,GAAU,EAAGC,GAAU,GAAIC,GAAU,EAAGC,GAAMH,GAClD,SAAS7L,GAASnqvB,GAAS,OAAO9E,KAAKC,OAAQ6E,EAAS9E,KAAKoM,MAAM,IAAI6uvB,IAAM,KAAOA,GAAO,CAC3F,SAAS/L,GAAQp2C,GAAM,OAAQ94sB,KAAKC,OAAO64sB,EAAK,GAAGmiD,GAAM,IAAM,IAAM,GAAK,CAC1E,SAASC,GAAWC,GAAO,OAAQn7vB,KAAKoM,OAAO+uvB,EAAMF,GAAM,GAAGA,GAAI,KAAM,GAAK,CAG7E,SAASG,GAAYC,GAAS,OAAOH,GAAWhM,GAAQD,GAASoM,IAAU,CAE3E,SAASC,GAAcD,GACtB,IAAItunB,EAAQ/sI,KAAKuR,IAAI8pvB,EAAQD,GAAYC,IAASE,EAAON,GACzD,GAAGlunB,EAAQ,KAAO,IAAIkunB,GAAID,GAASC,GAAIF,KAAWE,GAAQj7vB,KAAKuR,IAAI8pvB,EAAQD,GAAYC,KAAWtunB,IAASA,EAAQ/sI,KAAKuR,IAAI8pvB,EAAQD,GAAYC,IAASE,EAAON,IAChKA,GAAMM,CACP,CAaA,SAAS/M,GAAYj8P,GACjBA,EAAKztf,OACPytf,EAAKy8P,IAAMC,GAAS18P,EAAKztf,OACzBytf,EAAKg3P,IAAM2F,GAAQ38P,EAAKy8P,KACxBz8P,EAAK0oQ,IAAMA,IACF1oQ,EAAKy8P,KACdz8P,EAAKg3P,IAAM2F,GAAQ38P,EAAKy8P,KACxBz8P,EAAKztf,MAAQo2vB,GAAW3oQ,EAAKg3P,KAC7Bh3P,EAAK0oQ,IAAMA,IACiB,iBAAZ1oQ,EAAKg3P,MACrBh3P,EAAKztf,MAAQo2vB,GAAW3oQ,EAAKg3P,KAC7Bh3P,EAAKy8P,IAAMC,GAAS18P,EAAKztf,OACzBytf,EAAK0oQ,IAAMA,IAET1oQ,EAAKipQ,oBAAoBjpQ,EAAKipQ,WAClC,CAEA,IAAkBC,GAAJ,GACd,SAAStM,GAAMr2C,GAAM,OAAY,GAALA,EAAU2iD,EAAK,CAC3C,SAASlN,GAAM7xrB,GAAM,OAAOA,EAAK++rB,GAAM,EAAI,CAG3C,IAAIC,GAAqB,CACxB,KAAQ,OACR,MAAS,QACT,OAAU,aACV,OAAU,WACV,OAAU,YACV,WAAc,iBACd,WAAc,eACd,kBAAqB,WACrB,WAAc,SACd,UAAa,WACb,eAAkB,cAClB,eAAkB,kBAClB,eAAkB,gBAClB,sBAAyB,YACzB,cAAiB,aAgTlB,IAAIC,GAAc,CAAE,WAAY,SAAU,SAAU,WAAY,QAC5DC,GAAc,CAAE,iBAAkB,cAAe,YAAa,YAAa,oBAAqB,kBAAmB,cAAe,eAqEtI,IAAIC,GAA6B,WACjC,IAAIC,EAAc,wDACdC,EAAc,wDACdC,EAAa,oDACbC,EAAa,oDACbC,EAAe,wDAEnB,OAAO,SAAuB3stB,EAAMjS,EAAQ2zG,GAC3C,IAIIr7H,EAJAu9B,EAAS,CAAC,EACd,OAAI5D,IAMA35B,GALJ25B,EAAOA,EAAK/uC,QAAQ,sBAAsB,IAAIA,QAAQ,+BAA+B,KAK1EsG,MAAMg1vB,KA5HlB,SAAuBlmvB,EAAGu9B,EAAQ89F,GACjC99F,EAAOgptB,UAAY,GAEnB,IADA,IAAIhnvB,EAAsB0iB,GAAKmjsB,IACvB54tB,EAAE,EAAGA,EAAI+S,EAAElU,SAAUmB,EAAG+wC,EAAOgptB,UAAUhnvB,EAAE/S,IAAM44tB,GAAU7ltB,EAAE/S,IACrE,IAAI+P,EAAIyD,EAAE,GAAG9O,MAAMoruB,IACnB,GAAI//tB,EACJ,IAAI/P,EAAE,EAAGA,EAAI+P,EAAElR,SAAUmB,EAAG,CAC3B,IAAIoP,EAAI6guB,GAAYlguB,EAAE/P,IACtB,OAAOowuB,GAAShhuB,EAAE,KACjB,IAAK,WAAY,IAAK,aAAc,IAAK,aAAc,IAAK,YAY5D,IAAK,YAAa,MAXlB,IAAK,UACJ,IAAI4M,EAAEs0tB,GAAYe,GAASjiuB,EAAE0wC,aAAc3F,EAAEhzC,SAASiI,EAAE2wC,SAAS,IAEjE,GADAhP,EAAOgptB,UAAU5/sB,GAAKn+B,EACnBm+B,EAAE,EAAG,CACP,GAAGA,EAAI,IAAO,CACb,IAAIA,EAAI,IAAOA,EAAI,IAAqC,MAAvBpJ,EAAOgptB,UAAU5/sB,KAAvBA,GAC3BpJ,EAAOgptB,UAAU5/sB,GAAKn+B,CACvB,CACAwitB,GAAUxitB,EAAEm+B,EACb,CACC,MAEF,QAAS,GAAG00F,EAAKkjmB,IAAK,MAAM,IAAIzptB,MAAM,gBAAkBlZ,EAAE,GAAK,eAEjE,CACD,CAmGiC4qvB,CAAcxmvB,EAAGu9B,EAAQ89F,IAGrDr7H,EAAE25B,EAAKzoC,MAAMm1vB,KAvPlB,SAAqBrmvB,EAAGu9B,EAAQ7V,EAAQ2zG,GACvC99F,EAAOkptB,MAAQ,GACf,IAAI/suB,EAAO,CAAC,EACRsluB,GAAO,GACVh/uB,EAAE,GAAG9O,MAAMoruB,KAAW,IAAIj4tB,SAAQ,SAASxE,GAC3C,IAAIjE,EAAI6guB,GAAY58tB,GACpB,OAAO+8tB,GAAShhuB,EAAE,KACjB,IAAK,SAAU,IAAK,UAAW,IAAK,WAGpC,IAAK,QAAS,IAAK,SAQnB,IAAK,UAAW,IAAK,UA2CrB,IAAK,QAAS,IAAK,QAInB,IAAK,eAAgB,IAAK,eAI1B,IAAK,YAAa,IAAK,YAIvB,IAAK,YAAa,IAAK,YA6BvB,IAAK,WAAY,IAAK,WAOtB,IAAK,UAAW,IAAK,WAAY,IAAK,YAAa,MAlGnD,IAAK,UAAW,IAAK,UACpB2hC,EAAOkptB,MAAM95vB,KAAK+sB,GAClBA,EAAO,CAAC,EACR,MAGD,IAAK,QAAY9d,EAAE0mC,MAAK5oB,EAAKvR,KAAO01tB,GAASjiuB,EAAE0mC,MAAM,MAIrD,IAAK,KAAM5oB,EAAKgyF,KAAO9vG,EAAE0mC,IAAMk7rB,GAAa5huB,EAAE0mC,KAAO,EAAG,MACxD,IAAK,OAAQ5oB,EAAKgyF,KAAO,EAAG,MAG5B,IAAK,KAAMhyF,EAAKiyF,OAAS/vG,EAAE0mC,IAAMk7rB,GAAa5huB,EAAE0mC,KAAO,EAAG,MAC1D,IAAK,OAAQ5oB,EAAKiyF,OAAS,EAAG,MAG9B,IAAK,KACJ,OAAO/vG,EAAE0mC,KACR,IAAK,OAAQ5oB,EAAKkyF,UAAY,EAAM,MACpC,IAAK,SAAUlyF,EAAKkyF,UAAY,EAAM,MACtC,IAAK,SAAUlyF,EAAKkyF,UAAY,EAAM,MACtC,IAAK,mBAAoBlyF,EAAKkyF,UAAY,GAAM,MAChD,IAAK,mBAAoBlyF,EAAKkyF,UAAY,GACzC,MACH,IAAK,OAAQlyF,EAAKkyF,UAAY,EAAG,MAGjC,IAAK,UAAWlyF,EAAK0yB,OAASxwC,EAAE0mC,IAAMk7rB,GAAa5huB,EAAE0mC,KAAO,EAAG,MAC/D,IAAK,YAAa5oB,EAAK0yB,OAAS,EAAG,MAGnC,IAAK,WAAY1yB,EAAKsyB,QAAUpwC,EAAE0mC,IAAMk7rB,GAAa5huB,EAAE0mC,KAAO,EAAG,MACjE,IAAK,aAAc5oB,EAAKsyB,QAAU,EAAG,MAGrC,IAAK,UAAWtyB,EAAKyyB,OAASvwC,EAAE0mC,IAAMk7rB,GAAa5huB,EAAE0mC,KAAO,EAAG,MAC/D,IAAK,YAAa5oB,EAAKyyB,OAAS,EAAG,MAGnC,IAAK,YAAazyB,EAAKoyB,SAAWlwC,EAAE0mC,IAAMk7rB,GAAa5huB,EAAE0mC,KAAO,EAAG,MACnE,IAAK,cAAe5oB,EAAKoyB,SAAW,EAAG,MAGvC,IAAK,UAAWpyB,EAAKrE,OAASzZ,EAAE0mC,IAAMk7rB,GAAa5huB,EAAE0mC,KAAO,EAAG,MAC/D,IAAK,YAAa5oB,EAAKrE,OAAS,EAAG,MAGnC,IAAK,MAAUzZ,EAAE0mC,MAAK5oB,EAAK2yB,IAAMzwC,EAAE0mC,KAAK,MAIxC,IAAK,aAAiB1mC,EAAE0mC,MAAK5oB,EAAKuyB,UAAYrwC,EAAE0mC,KAAK,MAIrD,IAAK,UAAc1mC,EAAE0mC,MAAK5oB,EAAKqyB,OAASp4C,SAASiI,EAAE0mC,IAAI,KAAK,MAI5D,IAAK,UAAc1mC,EAAE0mC,MAAK5oB,EAAKwyB,OAAStwC,EAAE0mC,KAAK,MAI/C,IAAK,WACJ,GAAY,KAAT1mC,EAAE0mC,IAAY,MACjB1mC,EAAE23uB,SAAW5wB,GAAMhvtB,SAASiI,EAAE0mC,IAAK,KACnC,MAGD,IAAK,SAIJ,GAHI5oB,EAAKygB,QAAOzgB,EAAKygB,MAAQ,CAAC,GAC3Bv+B,EAAEk9M,OAAMp/L,EAAKygB,MAAM2+K,KAAO0khB,GAAa5huB,EAAEk9M,OAEzCl9M,EAAEivC,IAAKnxB,EAAKygB,MAAM0Q,IAAMjvC,EAAEivC,IAAI94C,OAAO,QACnC,GAAG6J,EAAEgrB,QAAS,CAClBlN,EAAKygB,MAAMrmC,MAAQH,SAASiI,EAAEgrB,QAAS,IACvC,IAAI8/tB,EAAMtf,GAAO1ttB,EAAKygB,MAAMrmC,OACL,IAApB4lB,EAAKygB,MAAMrmC,QAAa4yvB,EAAMtf,GAAO,IACpCsf,IAAKA,EAAMtf,GAAO,IACtB1ttB,EAAKygB,MAAM0Q,IAAM67sB,EAAI,GAAG35vB,SAAS,IAAM25vB,EAAI,GAAG35vB,SAAS,IAAM25vB,EAAI,GAAG35vB,SAAS,GAC9E,MAAU6O,EAAE+qB,QACXjN,EAAKygB,MAAMxT,MAAQhzB,SAASiI,EAAE+qB,MAAO,IAClC/qB,EAAEgvC,OAAMlxB,EAAKygB,MAAMyQ,KAAOvjC,WAAWzL,EAAEgvC,OACvChvC,EAAE+qB,OAASe,EAAOi/tB,eAAiBj/tB,EAAOi/tB,cAAcC,YAC1DltuB,EAAKygB,MAAM0Q,IAAM65sB,GAASh9tB,EAAOi/tB,cAAcC,UAAUltuB,EAAKygB,MAAMxT,OAAOkkB,IAAKnxB,EAAKygB,MAAMyQ,MAAQ,KAIrG,MAID,IAAK,oBAKL,IAAK,OAAQo0sB,GAAO,EAAM,MAJ1B,IAAK,sBAKL,IAAK,SAAUA,GAAO,EAAO,MAC7B,QAAS,GAAG3jnB,GAAQA,EAAKkjmB,MACpBygB,EAAM,MAAM,IAAIlquB,MAAM,gBAAkBlZ,EAAE,GAAK,aAGtD,GACD,CAkIgCirvB,CAAY7mvB,EAAGu9B,EAAQ7V,EAAQ2zG,IAG1Dr7H,EAAE25B,EAAKzoC,MAAMk1vB,KA5TlB,SAAqBpmvB,EAAGu9B,EAAQ7V,EAAQ2zG,GACvC99F,EAAOuptB,MAAQ,GACf,IAAIjtuB,EAAO,CAAC,EACRmluB,GAAO,GACVh/uB,EAAE,GAAG9O,MAAMoruB,KAAW,IAAIj4tB,SAAQ,SAASxE,GAC3C,IAAIjE,EAAI6guB,GAAY58tB,GACpB,OAAO+8tB,GAAShhuB,EAAE,KACjB,IAAK,SAAU,IAAK,UAAW,IAAK,WAKpC,IAAK,UAGL,IAAK,iBAQL,IAAK,iBAAkB,IAAK,iBAW5B,IAAK,aAAc,IAAK,aAUxB,IAAK,aAAc,IAAK,aAGxB,IAAK,QAAS,IAAK,UACnB,IAAK,UAGL,IAAK,SAAU,IAAK,WACpB,IAAK,WAGL,IAAK,UAAW,IAAK,WAAY,IAAK,YAAa,MA7CnD,IAAK,SAAU,IAAK,QAAS,IAAK,UACjCie,EAAO,CAAC,EAAG0jB,EAAOuptB,MAAMn6vB,KAAKktB,GAAO,MAKrC,IAAK,gBACL,IAAK,kBAAmB0jB,EAAOuptB,MAAMn6vB,KAAKktB,GAAOA,EAAO,CAAC,EAAG,MAG5D,IAAK,eAAgB,IAAK,gBACtBje,EAAEqvC,cAAapxB,EAAKoxB,YAAcrvC,EAAEqvC,aACvC,MAID,IAAK,WACApxB,EAAKmxB,UAASnxB,EAAKmxB,QAAU,CAAC,GAC/BpvC,EAAEgrB,UAAS/M,EAAKmxB,QAAQpkB,QAAUjzB,SAASiI,EAAEgrB,QAAS,KACtDhrB,EAAE+qB,QAAO9M,EAAKmxB,QAAQrkB,MAAQhzB,SAASiI,EAAE+qB,MAAO,KAChD/qB,EAAEgvC,OAAM/wB,EAAKmxB,QAAQJ,KAAOvjC,WAAWzL,EAAEgvC,OAEzChvC,EAAEivC,MAAKhxB,EAAKmxB,QAAQH,IAAMjvC,EAAEivC,IAAI94C,OAAO,IAC1C,MAID,IAAK,WACA8nB,EAAKkxB,UAASlxB,EAAKkxB,QAAU,CAAC,GAC/BnvC,EAAE+qB,QAAO9M,EAAKkxB,QAAQpkB,MAAQhzB,SAASiI,EAAE+qB,MAAO,KAChD/qB,EAAEgvC,OAAM/wB,EAAKkxB,QAAQH,KAAOvjC,WAAWzL,EAAEgvC,OAEhC,MAAThvC,EAAEivC,MAAahxB,EAAKkxB,QAAQF,IAAMjvC,EAAEivC,IAAI94C,OAAO,IAClD,MAaD,IAAK,OAAQitvB,GAAO,EAAM,MAC1B,IAAK,SAAUA,GAAO,EAAO,MAC7B,QAAS,GAAG3jnB,GAAQA,EAAKkjmB,MACpBygB,EAAM,MAAM,IAAIlquB,MAAM,gBAAkBlZ,EAAE,GAAK,aAGtD,GACD,CA6PgCmrvB,CAAY/mvB,EAAGu9B,EAAQ7V,EAAQ2zG,IAG1Dr7H,EAAE25B,EAAKzoC,MAAMo1vB,KA1YlB,SAAuBtmvB,EAAGu9B,EAAQ7V,EAAQ2zG,GACzC99F,EAAOyptB,QAAU,GACjB,IAAIptuB,EAAS,CAAC,EACVoluB,GAAO,GACVh/uB,EAAE,GAAG9O,MAAMoruB,KAAW,IAAIj4tB,SAAQ,SAASxE,GAC3C,IAAIjE,EAAI6guB,GAAY58tB,GACpB,OAAO+8tB,GAAShhuB,EAAE,KACjB,IAAK,WAAY,IAAK,YAAa,IAAK,aASxC,IAAK,YAGL,IAAK,UACL,IAAK,QAAS,IAAK,SACnB,IAAK,UAGL,IAAK,WACL,IAAK,SAAU,IAAK,UACpB,IAAK,WAGL,IAAK,SACL,IAAK,OAAQ,IAAK,QAClB,IAAK,SAGL,IAAK,YACL,IAAK,UAAW,IAAK,WACrB,IAAK,YAGL,IAAK,YAAa,IAAK,aAAc,IAAK,cAC1C,IAAK,cAGL,IAAK,cAAe,IAAK,eAAgB,IAAK,gBAC9C,IAAK,gBAGL,IAAK,YAAa,IAAK,aAAc,IAAK,cAC1C,IAAK,cAGL,IAAK,SAAU,IAAK,UAAW,IAAK,WACpC,IAAK,WAGL,IAAK,OAAQ,IAAK,QAAS,IAAK,SAChC,IAAK,SAGL,IAAK,SAAU,IAAK,UAEpB,IAAK,WAAY,IAAK,WAGtB,IAAK,UAAW,IAAK,WAAY,IAAK,YAAa,MAtDnD,IAAK,UAAW,IAAK,WAAY,IAAK,YACrCge,EAAgB,CAAC,EACdhe,EAAE8uC,aAAY9wB,EAAO8wB,WAAa8yrB,GAAa5huB,EAAE8uC,aACjD9uC,EAAE+uC,eAAc/wB,EAAO+wB,aAAe6yrB,GAAa5huB,EAAE+uC,eACxDpN,EAAOyptB,QAAQr6vB,KAAKitB,GACpB,MAkDD,IAAK,OAAQoluB,GAAO,EAAM,MAC1B,IAAK,SAAUA,GAAO,EAAO,MAC7B,QAAS,GAAG3jnB,GAAQA,EAAKkjmB,MACpBygB,EAAM,MAAM,IAAIlquB,MAAM,gBAAkBlZ,EAAE,GAAK,eAGtD,GACD,CAkUkCqrvB,CAAcjnvB,EAAGu9B,EAAQ7V,EAAQ2zG,IAM9Dr7H,EAAE25B,EAAKzoC,MAAMi1vB,KAlGlB,SAAuBnmvB,EAAGu9B,EAAQ89F,GAEjC,IAAIiwD,EADJ/tJ,EAAO2ptB,OAAS,GAEhB,IAAIlI,GAAO,GACVh/uB,EAAE,GAAG9O,MAAMoruB,KAAW,IAAIj4tB,SAAQ,SAASxE,GAC3C,IAAIjE,EAAI6guB,GAAY58tB,GAAIrT,EAAI,EAC5B,OAAOowuB,GAAShhuB,EAAE,KACjB,IAAK,WAAY,IAAK,YAAa,IAAK,aAAc,IAAK,aAc3D,IAAK,QAYL,IAAK,eAGL,IAAK,cAEL,IAAK,gBAAiB,IAAK,gBAO3B,IAAK,UAAW,IAAK,WAAY,IAAK,YAAa,MAnCnD,IAAK,MAAO,IAAK,QAGhB,WAFA0vL,EAAK1vL,GACK,GACNpP,EAAI,EAAGA,EAAIu5vB,GAAY16vB,SAAUmB,EAAM8+L,EAAGy6jB,GAAYv5vB,MACzD8+L,EAAGy6jB,GAAYv5vB,IAAMmH,SAAS23L,EAAGy6jB,GAAYv5vB,IAAK,KACnD,IAAIA,EAAI,EAAGA,EAAIw5vB,GAAY36vB,SAAUmB,EAAM8+L,EAAG06jB,GAAYx5vB,MACzD8+L,EAAG06jB,GAAYx5vB,IAAMgxuB,GAAalyiB,EAAG06jB,GAAYx5vB,MAClD,GAAG+wC,EAAOgptB,WAAaj7jB,EAAG/+I,SAAW,IACpC,IAAI//C,EAAI,IAAOA,EAAI,KAAQA,EAAG,GAAG+wC,EAAOgptB,UAAUj7jB,EAAG/+I,WAAahP,EAAOgptB,UAAU/5vB,GAAI,CAAE8+L,EAAG/+I,SAAW//C,EAAG,KAAO,CAElH+wC,EAAO2ptB,OAAOv6vB,KAAK2+L,GAAK,MAIzB,IAAK,aAAc,IAAK,eACvB,IAAI3xK,EAAY,CAAC,EACd/d,EAAEmuC,WAAUpwB,EAAUowB,SAAWnuC,EAAEmuC,UACnCnuC,EAAEiuC,aAAYlwB,EAAUkwB,WAAajuC,EAAEiuC,YACrB,MAAlBjuC,EAAEsuC,eAAsBvwB,EAAUuwB,aAAetuC,EAAEsuC,cACnDtuC,EAAEuuC,SAAQxwB,EAAUwwB,OAASvuC,EAAEuuC,QAC/BvuC,EAAEouC,WAAUrwB,EAAUqwB,SAAWwzrB,GAAa5huB,EAAEouC,WACnDshJ,EAAG3xK,UAAYA,EACf,MASD,IAAK,oBAKL,IAAK,OAAQqluB,GAAO,EAAM,MAJ1B,IAAK,sBAKL,IAAK,SAAUA,GAAO,EAAO,MAC7B,QAAS,GAAG3jnB,GAAQA,EAAKkjmB,MACpBygB,EAAM,MAAM,IAAIlquB,MAAM,gBAAkBlZ,EAAE,GAAK,eAGtD,GACD,CA6CiCurvB,CAAcnnvB,EAAGu9B,EAAQ89F,GAOlD99F,GA5BUA,CA6BlB,CACA,CAvCiC,GA8IjC,IAuBI6ptB,GAAgBzlB,GAkEpB,IAAI0lB,GAAkB1lB,GA8NtB,IAAI2lB,GAAqB,CACxB,WAAY,WAAY,WAAY,WACpC,eAAgB,eAAgB,eAChC,eAAgB,eAAgB,eAChC,aAAc,iBAGf,SAASC,GAAgBvnvB,EAAG0nB,EAAQ2zG,GACnC3zG,EAAOi/tB,cAAcC,UAAY,GACjC,IAAIzstB,EAAQ,CAAC,GACZn6B,EAAE,GAAG9O,MAAMoruB,KAAW,IAAIj4tB,SAAQ,SAASxE,GAC3C,IAAIjE,EAAI6guB,GAAY58tB,GACpB,OAAOjE,EAAE,IAER,IAAK,eAAgB,IAAK,iBAAkB,MAG5C,IAAK,aACJu+B,EAAM0Q,IAAMjvC,EAAE0mC,IAAK,MAGpB,IAAK,YACJnI,EAAM0Q,IAAMjvC,EAAE4rvB,QAAS,MAcxB,IAAK,UAAW,IAAK,WACrB,IAAK,UAAW,IAAK,WACrB,IAAK,UAAW,IAAK,WACrB,IAAK,UAAW,IAAK,WACrB,IAAK,cAAe,IAAK,eACzB,IAAK,cAAe,IAAK,eACzB,IAAK,cAAe,IAAK,eACzB,IAAK,cAAe,IAAK,eACzB,IAAK,cAAe,IAAK,eACzB,IAAK,cAAe,IAAK,eACzB,IAAK,YAAa,IAAK,aACvB,IAAK,eAAgB,IAAK,gBACF,MAAnB5rvB,EAAE,GAAGq2B,OAAO,IACfvK,EAAOi/tB,cAAcC,UAAUU,GAAmBxvvB,QAAQ8D,EAAE,KAAOu+B,EACnEA,EAAQ,CAAC,GAETA,EAAMhyB,KAAOvM,EAAE,GAAG7J,MAAM,EAAG6J,EAAE,GAAGvQ,OAAS,GAE1C,MAED,QAAS,GAAGgwI,GAAQA,EAAKkjmB,IAAK,MAAM,IAAIzptB,MAAM,gBAAkBlZ,EAAE,GAAK,iBAEzE,GACD,CAGA,SAAS6rvB,KAA0C,CAGnD,SAASC,KAAyC,CAElD,IAAIC,GAAY,6CACZC,GAAY,+CACZC,GAAY,6CAqBhB,IAAIC,GAAe,qDAGnB,SAASC,GAAgBputB,EAAiB0hG,GAIzC,IAAIr7H,EAFA25B,GAAwB,IAAhBA,EAAKtuC,SAAcsuC,EAAOqutB,MAGtC,IAAItguB,EAAS,CAAC,EAGd,KAAK1nB,EAAE25B,EAAKzoC,MAAM42vB,KAAgB,MAAM,IAAIhzuB,MAAM,oCAGlD,OAhCD,SAA6B6kB,EAAMjS,EAAQ2zG,GAG1C,IAAIr7H,EAFJ0nB,EAAOi/tB,cAAgB,CAAC,EAIxB,CAEC,CAAC,YAAagB,GAAWJ,IAEzB,CAAC,aAAcK,GAAWH,IAE1B,CAAC,YAAaI,GAAWH,KACxBrjvB,SAAQ,SAAS9H,GAClB,KAAKyD,EAAE25B,EAAKzoC,MAAMqL,EAAE,KAAM,MAAM,IAAIuY,MAAMvY,EAAE,GAAK,+BACjDA,EAAE,GAAGyD,EAAG0nB,EAAQ2zG,EACjB,GACD,CAcC4snB,CAAoBjovB,EAAE,GAAI0nB,EAAQ2zG,GAClC3zG,EAAOg2B,IAAM/jB,EACNjS,CACR,CAEA,SAASsguB,GAAYE,EAAQ7snB,GAC5B,GAAGA,GAAQA,EAAK8snB,UAAW,OAAO9snB,EAAK8snB,UACvC,GAAGD,GAA+B,iBAAdA,EAAOxqsB,IAAiB,OAAOwqsB,EAAOxqsB,IAC1D,IAAI/1C,EAAI,CAACw0tB,IAsKT,OArKAx0tB,EAAEA,EAAEtc,QAAU,gGACdsc,EAAEA,EAAEtc,QAAW,oBAEfsc,EAAEA,EAAEtc,QAAY,8BAChBsc,EAAEA,EAAEtc,QAAa,+DACjBsc,EAAEA,EAAEtc,QAAa,2DACjBsc,EAAEA,EAAEtc,QAAa,2CACjBsc,EAAEA,EAAEtc,QAAa,2CACjBsc,EAAEA,EAAEtc,QAAa,mDACjBsc,EAAEA,EAAEtc,QAAa,mDACjBsc,EAAEA,EAAEtc,QAAa,mDACjBsc,EAAEA,EAAEtc,QAAa,mDACjBsc,EAAEA,EAAEtc,QAAa,mDACjBsc,EAAEA,EAAEtc,QAAa,mDACjBsc,EAAEA,EAAEtc,QAAa,+CACjBsc,EAAEA,EAAEtc,QAAa,qDACjBsc,EAAEA,EAAEtc,QAAY,iBAEhBsc,EAAEA,EAAEtc,QAAY,+BAChBsc,EAAEA,EAAEtc,QAAa,gBACjBsc,EAAEA,EAAEtc,QAAc,gCAClBsc,EAAEA,EAAEtc,QAAc,sBAClBsc,EAAEA,EAAEtc,QAAc,sBAClBsc,EAAEA,EAAEtc,QAAc,iFAClBsc,EAAEA,EAAEtc,QAAc,+DAClBsc,EAAEA,EAAEtc,QAAc,kDAClBsc,EAAEA,EAAEtc,QAAc,8DAClBsc,EAAEA,EAAEtc,QAAc,qDAClBsc,EAAEA,EAAEtc,QAAc,qDAClBsc,EAAEA,EAAEtc,QAAc,4CAClBsc,EAAEA,EAAEtc,QAAc,2CAClBsc,EAAEA,EAAEtc,QAAc,4CAClBsc,EAAEA,EAAEtc,QAAc,4CAClBsc,EAAEA,EAAEtc,QAAc,+CAClBsc,EAAEA,EAAEtc,QAAc,2CAClBsc,EAAEA,EAAEtc,QAAc,2CAClBsc,EAAEA,EAAEtc,QAAc,8CAClBsc,EAAEA,EAAEtc,QAAc,0DAClBsc,EAAEA,EAAEtc,QAAc,wDAClBsc,EAAEA,EAAEtc,QAAc,wDAClBsc,EAAEA,EAAEtc,QAAc,6CAClBsc,EAAEA,EAAEtc,QAAc,4CAClBsc,EAAEA,EAAEtc,QAAc,6CAClBsc,EAAEA,EAAEtc,QAAc,2CAClBsc,EAAEA,EAAEtc,QAAc,uDAClBsc,EAAEA,EAAEtc,QAAc,6CAClBsc,EAAEA,EAAEtc,QAAc,6CAClBsc,EAAEA,EAAEtc,QAAc,+CAClBsc,EAAEA,EAAEtc,QAAc,kDAClBsc,EAAEA,EAAEtc,QAAc,qDAClBsc,EAAEA,EAAEtc,QAAc,qDAClBsc,EAAEA,EAAEtc,QAAc,sDAClBsc,EAAEA,EAAEtc,QAAc,6CAClBsc,EAAEA,EAAEtc,QAAa,iBACjBsc,EAAEA,EAAEtc,QAAa,gBACjBsc,EAAEA,EAAEtc,QAAc,gCAClBsc,EAAEA,EAAEtc,QAAc,sBAClBsc,EAAEA,EAAEtc,QAAc,sBAClBsc,EAAEA,EAAEtc,QAAc,iFAClBsc,EAAEA,EAAEtc,QAAc,+DAClBsc,EAAEA,EAAEtc,QAAc,kDAClBsc,EAAEA,EAAEtc,QAAc,8DAClBsc,EAAEA,EAAEtc,QAAc,2CAClBsc,EAAEA,EAAEtc,QAAc,2CAClBsc,EAAEA,EAAEtc,QAAc,4CAClBsc,EAAEA,EAAEtc,QAAc,2CAClBsc,EAAEA,EAAEtc,QAAc,4CAClBsc,EAAEA,EAAEtc,QAAc,4CAClBsc,EAAEA,EAAEtc,QAAc,8CAClBsc,EAAEA,EAAEtc,QAAc,2CAClBsc,EAAEA,EAAEtc,QAAc,2CAClBsc,EAAEA,EAAEtc,QAAc,8CAClBsc,EAAEA,EAAEtc,QAAc,0DAClBsc,EAAEA,EAAEtc,QAAc,wDAClBsc,EAAEA,EAAEtc,QAAc,wDAClBsc,EAAEA,EAAEtc,QAAc,6CAClBsc,EAAEA,EAAEtc,QAAc,4CAClBsc,EAAEA,EAAEtc,QAAc,6CAClBsc,EAAEA,EAAEtc,QAAc,2CAClBsc,EAAEA,EAAEtc,QAAc,uDAClBsc,EAAEA,EAAEtc,QAAc,6CAClBsc,EAAEA,EAAEtc,QAAc,6CAClBsc,EAAEA,EAAEtc,QAAc,+CAClBsc,EAAEA,EAAEtc,QAAc,kDAClBsc,EAAEA,EAAEtc,QAAc,qDAClBsc,EAAEA,EAAEtc,QAAc,2CAClBsc,EAAEA,EAAEtc,QAAc,sDAClBsc,EAAEA,EAAEtc,QAAc,6CAClBsc,EAAEA,EAAEtc,QAAa,iBACjBsc,EAAEA,EAAEtc,QAAY,kBAEhBsc,EAAEA,EAAEtc,QAAY,8BAChBsc,EAAEA,EAAEtc,QAAa,mBACjBsc,EAAEA,EAAEtc,QAAc,wDAClBsc,EAAEA,EAAEtc,QAAc,gCAClBsc,EAAEA,EAAEtc,QAAe,YACnBsc,EAAEA,EAAEtc,QAAgB,4GACpBsc,EAAEA,EAAEtc,QAAgB,gHACpBsc,EAAEA,EAAEtc,QAAgB,iHACpBsc,EAAEA,EAAEtc,QAAe,aACnBsc,EAAEA,EAAEtc,QAAe,qCACnBsc,EAAEA,EAAEtc,QAAc,gBAClBsc,EAAEA,EAAEtc,QAAc,gCAClBsc,EAAEA,EAAEtc,QAAe,YACnBsc,EAAEA,EAAEtc,QAAgB,oIACpBsc,EAAEA,EAAEtc,QAAgB,wIACpBsc,EAAEA,EAAEtc,QAAe,aACnBsc,EAAEA,EAAEtc,QAAe,qCACnBsc,EAAEA,EAAEtc,QAAc,gBAClBsc,EAAEA,EAAEtc,QAAa,oBACjBsc,EAAEA,EAAEtc,QAAa,iBACjBsc,EAAEA,EAAEtc,QAAc,mMAClBsc,EAAEA,EAAEtc,QAAc,yIAClBsc,EAAEA,EAAEtc,QAAc,yIAClBsc,EAAEA,EAAEtc,QAAa,kBACjBsc,EAAEA,EAAEtc,QAAa,qBACjBsc,EAAEA,EAAEtc,QAAc,kBAClBsc,EAAEA,EAAEtc,QAAe,gBACnBsc,EAAEA,EAAEtc,QAAgB,oJACpBsc,EAAEA,EAAEtc,QAAe,iBACnBsc,EAAEA,EAAEtc,QAAc,mBAClBsc,EAAEA,EAAEtc,QAAc,kBAClBsc,EAAEA,EAAEtc,QAAe,gBACnBsc,EAAEA,EAAEtc,QAAgB,oJACpBsc,EAAEA,EAAEtc,QAAe,iBACnBsc,EAAEA,EAAEtc,QAAc,mBAClBsc,EAAEA,EAAEtc,QAAc,kBAClBsc,EAAEA,EAAEtc,QAAe,gBACnBsc,EAAEA,EAAEtc,QAAgB,oJACpBsc,EAAEA,EAAEtc,QAAe,iBACnBsc,EAAEA,EAAEtc,QAAe,6LACnBsc,EAAEA,EAAEtc,QAAe,mDACnBsc,EAAEA,EAAEtc,QAAc,mBAClBsc,EAAEA,EAAEtc,QAAa,sBACjBsc,EAAEA,EAAEtc,QAAa,qBACjBsc,EAAEA,EAAEtc,QAAc,wDAClBsc,EAAEA,EAAEtc,QAAc,gCAClBsc,EAAEA,EAAEtc,QAAe,YACnBsc,EAAEA,EAAEtc,QAAgB,4GACpBsc,EAAEA,EAAEtc,QAAgB,sIACpBsc,EAAEA,EAAEtc,QAAgB,kHACpBsc,EAAEA,EAAEtc,QAAe,aACnBsc,EAAEA,EAAEtc,QAAe,2FACnBsc,EAAEA,EAAEtc,QAAc,gBAClBsc,EAAEA,EAAEtc,QAAc,gCAClBsc,EAAEA,EAAEtc,QAAe,YACnBsc,EAAEA,EAAEtc,QAAgB,4GACpBsc,EAAEA,EAAEtc,QAAgB,kHACpBsc,EAAEA,EAAEtc,QAAe,aACnBsc,EAAEA,EAAEtc,QAAe,yFACnBsc,EAAEA,EAAEtc,QAAc,gBAClBsc,EAAEA,EAAEtc,QAAa,sBACjBsc,EAAEA,EAAEtc,QAAY,iBAChBsc,EAAEA,EAAEtc,QAAW,qBAEfsc,EAAEA,EAAEtc,QAAW,qBACfsc,EAAEA,EAAEtc,QAAY,YAChBsc,EAAEA,EAAEtc,QAAa,mSACjBsc,EAAEA,EAAEtc,QAAY,aAChBsc,EAAEA,EAAEtc,QAAY,YAChBsc,EAAEA,EAAEtc,QAAa,mSACjBsc,EAAEA,EAAEtc,QAAY,aAChBsc,EAAEA,EAAEtc,QAAW,sBACfsc,EAAEA,EAAEtc,QAAW,yBACfsc,EAAEA,EAAEtc,QAAU,aACPsc,EAAExa,KAAK,GACf,CAmBA,SAASi7vB,GAAmB9lqB,GAC3B,IAAI36E,EAAI,CAAC,EAGT,OAFAA,EAAE0gvB,SAAW/lqB,EAAKkqoB,WAAW,GAC7B7ktB,EAAE2gvB,WAAahmqB,EAAKkqoB,WAAW,GACxB7ktB,EAAE0gvB,UACR,KAAK,EAIL,KAAK,EAAG/lqB,EAAKltE,GAAK,EAAG,MAHrB,KAAK,EAAGzN,EAAE4gvB,UAUZ,SAAqBjmqB,EAAMj3F,GAC1B,OAAOs2uB,GAAUr/oB,EAAMj3F,EACxB,CAZwBm9vB,CAAYlmqB,EAAM,GAAI,MAC5C,KAAK,EAAG36E,EAAE4gvB,UAAYxZ,GAAezspB,GAAU,MAC/C,KAAK,EAAG36E,EAAE4gvB,UAXZ,SAA0BjmqB,GAAsB,OAAOA,EAAKkqoB,WAAW,EAAI,CAWnDi8B,CAAiBnmqB,GAIxC,OADAA,EAAKltE,GAAK,EACHzN,CACR,CAaA,SAAS+gvB,GAAcpmqB,GACtB,IAAIqmqB,EAAUrmqB,EAAKkqoB,WAAW,GAC1BxziB,EAAK12F,EAAKkqoB,WAAW,GAAK,EAC1B7ktB,EAAI,CAACghvB,GACT,OAAOA,GACN,KAAK,EAAM,KAAK,EAAM,KAAK,EAAM,KAAK,EACtC,KAAK,EAAM,KAAK,GAAM,KAAK,GAAM,KAAK,GACrChhvB,EAAE,GAAKygvB,GAAmB9lqB,GAAW,MACtC,KAAK,EAAM36E,EAAE,GAbf,SAA6B26E,EAAMj3F,GAClC,OAAOs2uB,GAAUr/oB,EAAMj3F,EACxB,CAWoBu9vB,CAAoBtmqB,EAAM02F,GAAK,MACjD,KAAK,GAAM,KAAK,GAAMrxK,EAAE,GAAK26E,EAAKkqoB,WAAkB,IAAPxziB,EAAW,EAAI,GAAI,MAChE,QAAS,MAAM,IAAIlkK,MAAM,8BAAgC6zuB,EAAU,IAAM3vkB,GAE1E,OAAOrxK,CACR,CAyZA,SAASkhvB,GAAsBr9tB,EAAqB0N,EAAgC4vtB,EAAsBC,GACzG,IACI3suB,EADAiotB,EAA0B,MAAlB74sB,EAAM,SAElB0N,EAAS70B,SAAQ,SAASoX,GACzB,IAAIzG,EAAIsutB,GAAY7ntB,EAAQc,KAC5B,KAAGvH,EAAEA,EAAI,GAAKA,EAAE/V,EAAI,GAApB,CAKA,GAJGoluB,GACE74sB,EAAM,SAASxW,EAAEA,KAAIwW,EAAM,SAASxW,EAAEA,GAAK,IAC/CoH,EAAOoP,EAAM,SAASxW,EAAEA,GAAGA,EAAE/V,IACvBmd,EAAOoP,EAAM/P,EAAQc,MACvBH,EAAM,CACVA,EAAQ,CAACpc,EAAE,KACRqkuB,EAAO74sB,EAAM,SAASxW,EAAEA,GAAGA,EAAE/V,GAAKmd,EAChCoP,EAAM/P,EAAQc,KAAOH,EAC1B,IAAIoF,EAAQmitB,GAAkBn4sB,EAAM,SAAS,mBAC1ChK,EAAM/kB,EAAEuY,EAAIA,EAAEA,IAAGwM,EAAM/kB,EAAEuY,EAAIA,EAAEA,GAC/BwM,EAAMziB,EAAEiW,EAAIA,EAAEA,IAAGwM,EAAMziB,EAAEiW,EAAIA,EAAEA,GAC/BwM,EAAM/kB,EAAEwC,EAAI+V,EAAE/V,IAAGuiB,EAAM/kB,EAAEwC,EAAI+V,EAAE/V,GAC/BuiB,EAAMziB,EAAEE,EAAI+V,EAAE/V,IAAGuiB,EAAMziB,EAAEE,EAAI+V,EAAE/V,GAClC,IAAIk5tB,EAAUqL,GAAahitB,GAC3BgK,EAAM,QAAU2ssB,CACjB,CAEK/7sB,EAAKnd,IAAGmd,EAAKnd,EAAI,IACtB,IAAI0I,EAAiB,CAAC1L,EAAGwf,EAAQw4D,OAAQj0E,EAAGyb,EAAQzb,EAAGgV,EAAGyG,EAAQzG,EAAG9U,EAAG4ovB,GACrErtuB,EAAQpf,IAAGsL,EAAEtL,EAAIof,EAAQpf,GAG5B,IAAI,IAAI7P,EAAI4vB,EAAKnd,EAAE5T,OAAS,EAAGmB,GAAK,IAAKA,EAAG,CAC3C,IAAIs8vB,GAAY1suB,EAAKnd,EAAEzS,GAAG0T,EAAG,OAC1B4ovB,IAAa1suB,EAAKnd,EAAEzS,GAAG0T,GAAGkc,EAAKnd,EAAEgmB,OAAOz4B,EAAG,EAC/C,CACA,GAAGs8vB,GAAYC,EAAQ,IAAIv8vB,EAAI,EAAGA,EAAIu8vB,EAAO19vB,SAAUmB,EACtD,GAAGmb,EAAE1L,GAAK8svB,EAAOv8vB,GAAG62B,GAAI,CAAE1b,EAAE1L,EAAI8svB,EAAOv8vB,GAAG2b,MAAQR,EAAE1L,EAAG,KAAO,CAE/DmgB,EAAKnd,EAAEtS,KAAKgb,EA9BiB,CA+B9B,GACD,CAgNA,IAAIqhvB,GAAyB/jB,GA0E7B,IAAIgkB,GAAS,uCA2Bb,IAAIjR,GAAyB,WAC5B,IAAIkR,EAAU,gFACVC,EAAmB,CAACn0uB,EAAE,EAAE/V,EAAE,GAC9B,SAASmqvB,EAAO9hC,EAAGj9kB,EAAGk9kB,EAAGC,GACxB,IAAIgb,GAAO,EAAOC,GAAO,EAET,GAAblb,EAAGl8tB,OAAao3uB,GAAO,EACF,KAAhBlb,EAAGt1rB,OAAO,KAAawwsB,GAAO,EAAMlb,EAAKA,EAAGx1tB,MAAM,GAAI,IAE9C,GAAby1tB,EAAGn8tB,OAAam3uB,GAAO,EACF,KAAhBhb,EAAGv1rB,OAAO,KAAauwsB,GAAO,EAAMhb,EAAKA,EAAGz1tB,MAAM,GAAI,IAE9D,IAAIgM,EAAIwptB,EAAGl8tB,OAAO,EAAkB,EAAhBsI,SAAS4ztB,EAAG,IAAM,EAAG3grB,EAAI4grB,EAAGn8tB,OAAO,EAAkB,EAAhBsI,SAAS6ztB,EAAG,IAAM,EAI3E,OAFGgb,EAAM57rB,GAAKuitB,EAAOlqvB,IAAU2nC,EAC5B67rB,EAAM1kuB,GAAKorvB,EAAOn0uB,IAAUjX,EACxBssI,GAAMm4lB,EAAO,GAAK,KAAOS,GAAWr8rB,IAAM67rB,EAAO,GAAK,KAAOO,GAAWjluB,EAChF,CACA,OAAO,SAAkBsrvB,EAAiB9ssB,GAEzC,OADA4ssB,EAAS5ssB,EACF8ssB,EAAKz+vB,QAAQs+vB,EAASE,EAC9B,CACD,CAtB6B,GAwBzBE,GAAY,iLACZxQ,GAAyB,WAC5B,OAAO,SAAkBuQ,EAAiB9ssB,GACzC,OAAO8ssB,EAAKz+vB,QAAQ0+vB,IAAW,SAASC,EAAIl/mB,EAAIk9kB,EAAIC,EAAIgiC,EAAIC,GAC3D,IAAIxqvB,EAAImkuB,GAAW5b,IAAOD,EAAK,EAAIhrqB,EAAKt9C,GACpC+V,EAAIkutB,GAAWumB,IAAOD,EAAK,EAAIjtsB,EAAKvnC,GAGxC,OAAOq1H,EAAK,KAFE,KAANm/mB,EAAax0uB,EAAE,EAAW,GAALA,EAAS,GAAK,IAAMA,EAAI,KAE/B,KADR,KAANuysB,EAAatotB,EAAE,EAAW,GAALA,EAAS,GAAK,IAAMA,EAAI,IAEtD,GACD,CACD,CAV6B,GAa7B,SAASs5uB,GAAkB/vuB,EAAc2uH,GACxC,OAAO3uH,EAAE5d,QAAQ0+vB,IAAW,SAASC,EAAIl/mB,EAAIk9kB,EAAIC,EAAIgiC,EAAIC,GACxD,OAAOp/mB,GAAQ,KAAJk9kB,EAAUA,EAAGC,EAAKyb,GAAWG,GAAW5b,GAAIrwlB,EAAMl4H,KAAS,KAAJuqvB,EAAUA,EAAGC,EAAKzmB,GAAWE,GAAWumB,GAAMtynB,EAAMniH,GACvH,GACD,CAEA,SAAS00uB,GAAmBlhvB,EAAcgZ,EAAkBpF,GAC3D,IAA6B3f,EAArB8muB,GAAa/htB,GAAc/kB,EAAGwC,EAAIqkuB,GAAYlntB,GAEtD,OAAOm8tB,GAAkB/vuB,EADb,CAACwM,EAAE/V,EAAE+V,EAAIvY,EAAEuY,EAAG/V,EAAEA,EAAEA,EAAIxC,EAAEwC,GAErC,CAQA,SAAS0qvB,GAAMnhvB,GACd,OAAOA,EAAE5d,QAAQ,WAAW,GAC7B,CACA,SAASg/vB,GAAWtnqB,GAAQA,EAAKltE,GAAG,CAAW,CAG/C,SAASy0uB,GAAcvnqB,EAAMj3F,GAC5B,IAAI4T,EAAIqjF,EAAKkqoB,WAAqB,GAAVnhuB,EAAc,EAAI,GAC1C,MAAO,CAAK,MAAJ4T,EAAaA,GAAK,GAAM,EAAIA,GAAK,GAAM,EAChD,CAGA,SAAS6qvB,GAAexnqB,EAAMj3F,EAAQgwI,GACrC,IAAIj9H,EAAI,EACR,GAAGi9H,EAAM,CACR,GAAGA,EAAKqnmB,MAAQ,GAAKrnmB,EAAKqnmB,MAAQ,EAAG,OAAOqnB,GAAqBznqB,GAC5C,IAAb+4C,EAAKqnmB,OAAYtkuB,EAAI,EAC9B,CACA,IAAI4W,EAAEstE,EAAKkqoB,WAAWputB,GAAIL,EAAEukF,EAAKkqoB,WAAWputB,GACxCa,EAAE4qvB,GAAcvnqB,EAAM,GACtB17C,EAAEijtB,GAAcvnqB,EAAM,GAC1B,MAAO,CAAE7lF,EAAE,CAACuY,EAAEA,EAAG/V,EAAEA,EAAE,GAAIujuB,KAAKvjuB,EAAE,GAAIwjuB,KAAKxjuB,EAAE,IAAKF,EAAE,CAACiW,EAAEjX,EAAGkB,EAAE2nC,EAAE,GAAI47rB,KAAK57rB,EAAE,GAAI67rB,KAAK77rB,EAAE,IACnF,CAEA,SAASmjtB,GAAqBznqB,GAC7B,IAAIttE,EAAE60uB,GAAcvnqB,EAAM,GAAIvkF,EAAE8rvB,GAAcvnqB,EAAM,GAChDrjF,EAAEqjF,EAAKkqoB,WAAW,GAClB5lrB,EAAE07C,EAAKkqoB,WAAW,GACtB,MAAO,CAAE/vtB,EAAE,CAACuY,EAAEA,EAAE,GAAI/V,EAAEA,EAAGujuB,KAAKxttB,EAAE,GAAIyttB,KAAKzttB,EAAE,IAAKjW,EAAE,CAACiW,EAAEjX,EAAE,GAAIkB,EAAE2nC,EAAG47rB,KAAKzkuB,EAAE,GAAI0kuB,KAAK1kuB,EAAE,IACnF,CAYA,SAASisvB,GAAc1nqB,EAAMj3F,EAAQgwI,GACpC,GAAGA,GAAQA,EAAKqnmB,MAAQ,GAAKrnmB,EAAKqnmB,MAAQ,EAAG,OAK9C,SAA6BpgpB,GAC5B,IAAIttE,EAAI60uB,GAAcvnqB,EAAM,GACxBrjF,EAAIqjF,EAAKkqoB,WAAW,GACxB,MAAO,CAACx3sB,EAAEA,EAAE,GAAI/V,EAAEA,EAAGujuB,KAAKxttB,EAAE,GAAIyttB,KAAKzttB,EAAE,GACxC,CATqDi1uB,CAAoB3nqB,GACxE,IAAIttE,EAAIstE,EAAKkqoB,WAAWnxlB,GAAqB,IAAbA,EAAKqnmB,KAAa,EAAI,GAClDzjuB,EAAI4qvB,GAAcvnqB,EAAM,GAC5B,MAAO,CAACttE,EAAEA,EAAG/V,EAAEA,EAAE,GAAIujuB,KAAKvjuB,EAAE,GAAIwjuB,KAAKxjuB,EAAE,GACxC,CAQA,SAASirvB,GAAiB5nqB,GACzB,IAAIttE,EAAIstE,EAAKkqoB,WAAW,GACpBvttB,EAAIqjF,EAAKkqoB,WAAW,GACxB,MAAO,CAACx3sB,EAAEA,EAAG/V,EAAM,IAAJA,EAAUkrvB,WAAe,MAAJlrvB,GAAaujuB,KAAKvjuB,GAAG,GAAIwjuB,KAAKxjuB,GAAG,GACtE,CA8EA,SAASmrvB,GAAoB9nqB,GAC5B,IAAI+nqB,EAA2B,EAAjB/nqB,EAAKA,EAAKltE,EAAE,GAG1B,OADAktE,EAAKltE,GAAK,EACH,CAACi1uB,EAFQ,EAGjB,CAyCA,SAASC,GAAuBhoqB,GAE/B,MAAO,CADIA,EAAKkqoB,WAAW,GAAUlqoB,EAAKkqoB,WAAW,GAEtD,CA4FA,SAAS+9B,GAAYjoqB,EAAMogpB,GAC1B,IAAIpgsB,EAAM,CAACggD,EAAKkqoB,WAAW,IAC3B,GAAW,IAARkW,EAAY,OAAOpgsB,EAAI,IACzB,KAAK,EAAMA,EAAI,GAAK,EAAM,MAC1B,KAAK,EAAMA,EAAI,GAAK,GAAM,MAC1B,KAAK,EAAMA,EAAI,GAAK,EAAM,MAC1B,KAAK,EAAMA,EAAI,GAAK,EAErB,OAAOA,EAAI,IACV,KAAK,EACJA,EAAI,GAAKyqsB,GAAUzqpB,EAAM,GAAK,OAAS,QAC5B,IAARogpB,IAAYpgpB,EAAKltE,GAAK,GAAG,MAC7B,KAAK,GACL,KAAK,GACJktB,EAAI,GAAKyhsB,GAAKzhpB,EAAKA,EAAKltE,IACxBktE,EAAKltE,GAAe,IAARsttB,EAAc,EAAI,EAAI,MACnC,KAAK,EACJpgpB,EAAKltE,GAAK,EAAG,MACd,KAAK,EACJktB,EAAI,GAAKiksB,GAAWjkpB,GAAU,MAC/B,KAAK,EACJhgD,EAAI,GAAKissB,GAAuBjspB,EAAM,EAAG,CAACogpB,KAAKA,EAAO,GAAKA,EAAO,EAAI,EAAIA,IAAQ,MACnF,QAAS,MAAM,IAAI5ttB,MAAM,cAAgBwtB,EAAI,IAE9C,OAAOA,CACR,CAGA,SAASkotB,GAAkBloqB,EAAMivpB,EAAKl2mB,GAGrC,IAFA,IAAI1sI,EAAQ2zF,EAAKkqoB,WAAyB,IAAbnxlB,EAAKqnmB,KAAc,EAAI,GAChD5ykB,EAAuB,GACnBtjK,EAAI,EAAGA,GAAKmC,IAASnC,EAAGsjK,EAAInjK,MAAoB,IAAb0uI,EAAKqnmB,KAAc4D,GAAqB+I,IAAa/spB,EAAM,IACtG,OAAOwtE,CACR,CAGA,SAAS26lB,GAAoBnoqB,EAAMj3F,EAAQgwI,GAC1C,IAAI92G,EAAO,EAAGgI,EAAO,EACL,IAAb8uG,EAAKqnmB,MACPn+sB,EAAO+9D,EAAKkqoB,WAAW,GACvBjgsB,EAAO+1D,EAAKkqoB,WAAW,KAEvBjgsB,EAAO,EAAI+1D,EAAKkqoB,WAAW,GAC3BjosB,EAAO,EAAI+9D,EAAKkqoB,WAAW,IAEzBnxlB,EAAKqnmB,MAAQ,GAAKrnmB,EAAKqnmB,KAAO,MAAOn+sB,EAAmB,KAARgI,IAAWA,EAAO,MAErE,IAAI,IAAI//B,EAAI,EAAGmb,EAA0B,GAAInb,GAAK+3B,IAAS5c,EAAEnb,GAAK,MAAOA,EACxE,IAAI,IAAIm6C,EAAI,EAAGA,GAAKpa,IAAQoa,EAAGh/B,EAAEnb,GAAGm6C,GAAK4jtB,GAAYjoqB,EAAM+4C,EAAKqnmB,MACjE,OAAO/6tB,CACR,CA6EA,SAAS+ivB,GAAgBpoqB,EAAMj3F,EAAQgwI,GAEtC,OADA/4C,EAAKltE,GAAK,EACH,CAAC80uB,GAAiB5nqB,GAC1B,CACA,SAASqoqB,GAAiBroqB,GAEzB,OADAA,EAAKltE,GAAK,EACH,EACR,CAUA,SAASw1uB,GAAgBtoqB,GAExB,OADAA,EAAKltE,GAAK,EACH,CAACu4tB,GAAYrrpB,GAA4B,EAArBA,EAAKkqoB,WAAW,GAC5C,CAEA,IAWIq+B,GAAY,CACf,OACA,MACA,UACA,KACA,SACA,KACA,eACA,KACA,SACA,KACA,KACA,KACA,cACA,KACA,KACA,KACA,YA6CD,IAAIC,GAAW,CACP,EAAa,CAAE7ivB,EAAE,SAAUO,EAxPnC,SAAsB85E,EAAMj3F,EAAQgwI,GAEnC,OADA/4C,EAAKltE,IACFimH,GAAqB,IAAbA,EAAKqnmB,KAAmB,CAACpgpB,EAAKkqoB,WAAW,EAAG,KAAM,GAGtD,CAFGlqoB,EAAKkqoB,WAAW,GAChBlqoB,EAAKkqoB,WAAWnxlB,GAAqB,GAAbA,EAAKqnmB,KAAY,EAAI,GAExD,GAmPQ,EAAa,CAAEz6tB,EAAE,SAAUO,EAnGhBm5tB,IAoGX,EAAa,CAAE15tB,EAAE,SAAUO,EAAEohvB,IAC7B,EAAa,CAAE3hvB,EAAE,SAAUO,EAAEohvB,IAC7B,EAAa,CAAE3hvB,EAAE,SAAUO,EAAEohvB,IAC7B,EAAa,CAAE3hvB,EAAE,SAAUO,EAAEohvB,IAC7B,EAAa,CAAE3hvB,EAAE,WAAYO,EAAEohvB,IAC/B,EAAa,CAAE3hvB,EAAE,YAAaO,EAAEohvB,IAChC,EAAa,CAAE3hvB,EAAE,QAASO,EAAEohvB,IAC5B,GAAa,CAAE3hvB,EAAE,QAASO,EAAEohvB,IAC5B,GAAa,CAAE3hvB,EAAE,QAASO,EAAEohvB,IAC5B,GAAa,CAAE3hvB,EAAE,QAASO,EAAEohvB,IAC5B,GAAa,CAAE3hvB,EAAE,QAASO,EAAEohvB,IAC5B,GAAa,CAAE3hvB,EAAE,QAASO,EAAEohvB,IAC5B,GAAa,CAAE3hvB,EAAE,WAAYO,EAAEohvB,IAC/B,GAAa,CAAE3hvB,EAAE,WAAYO,EAAEohvB,IAC/B,GAAa,CAAE3hvB,EAAE,WAAYO,EAAEohvB,IAC/B,GAAa,CAAE3hvB,EAAE,WAAYO,EAAEohvB,IAC/B,GAAa,CAAE3hvB,EAAE,YAAaO,EAAEohvB,IAChC,GAAa,CAAE3hvB,EAAE,aAAcO,EAAEohvB,IACjC,GAAa,CAAE3hvB,EAAE,WAAYO,EAAEohvB,IAC/B,GAAa,CAAE3hvB,EAAE,aAAcO,EAAEohvB,IACjC,GAAa,CAAE3hvB,EAAE,SAAUO,EAzPnC,SAAsB85E,EAAMj3F,EAAQgwI,GAAkB,OAAV/4C,EAAKltE,IAAY04tB,GAA2BxrpB,EAAMj3F,EAAUgwI,EAAO,GA0PvG,GAAa,CAAEpzH,EAAE,WAAYO,EAlDrC,SAAwB85E,EAAMj3F,EAAQgwI,GAIrC,OAHA/4C,EAAKltE,GAAK,EACVktE,EAAKltE,GAAK,EACVktE,EAAKltE,GAAmB,GAAbimH,EAAKqnmB,KAAY,EAAI,EACzB,CAAC,WACT,GA8CQ,GAAa,CAAEz6tB,EAAE,cAAeO,EA7CxC,SAA2B85E,EAAMj3F,EAAQgwI,GAExC,OADA/4C,EAAKltE,GAAmB,GAAbimH,EAAKqnmB,KAAY,EAAI,EACzB,CAAC,cACT,GA2CQ,GAAa,CAAEz6tB,EAAE,SAAUO,EAxQnC,SAAsB85E,GAAkB,OAAVA,EAAKltE,IAAY2utB,GAAKzhpB,EAAKkqoB,WAAW,GAAK,GAyQjE,GAAa,CAAEvktB,EAAE,UAAWO,EAnQpC,SAAuB85E,GAAkB,OAAVA,EAAKltE,IAAiC,IAArBktE,EAAKkqoB,WAAW,EAAO,GAoQ/D,GAAa,CAAEvktB,EAAE,SAAUO,EAvQnC,SAAsB85E,GAAkB,OAAVA,EAAKltE,IAAYktE,EAAKkqoB,WAAW,EAAI,GAwQ3D,GAAa,CAAEvktB,EAAE,SAAUO,EAlQnC,SAAsB85E,GAAkB,OAAVA,EAAKltE,IAAYmxtB,GAAWjkpB,EAAU,GAmQ5D,GAAa,CAAEr6E,EAAE,WAAYO,EAhZrC,SAAwB85E,EAAMj3F,EAAQgwI,GACrC,IAAInhH,GAAyB,GAAjBooE,EAAKA,EAAKltE,OAAgB,EAEtC,OADAktE,EAAKltE,GAAkB,GAAbimH,EAAKqnmB,KAAY,EAAiB,IAAbrnmB,EAAKqnmB,KAAa,GAAK,EAC/C,CAACxotB,EACT,GA6YQ,GAAa,CAAEjS,EAAE,UAAWO,EA9SpC,SAAuB85E,EAAMj3F,EAAQgwI,GAEpC,IAAInhH,GAAuB,GAAfooE,EAAKA,EAAKltE,KAAY,EAClCktE,EAAKltE,GAAK,EACV,IAAI21uB,EAAQzoqB,EAAKkqoB,WAAWnxlB,GAAQA,EAAKqnmB,MAAQ,EAAI,EAAI,GACzD,MAAO,CAACsoB,GAASD,GAAQE,GAAKF,GAAQ7wuB,EACvC,GAySQ,GAAa,CAAEjS,EAAE,aAAcO,EAvSvC,SAA0B85E,EAAMj3F,EAAQgwI,GACvC,IAAInhH,EAAOooE,EAAKA,EAAKltE,KACjB81uB,EAAU5oqB,EAAKkqoB,WAAW,GAAIxna,EAAM3pL,GAAQA,EAAKqnmB,MAAQ,EAAI,CAAU,IAARxotB,GAAgB,EAAI,EAAIooE,EAAKkqoB,WAAW,IAI5G,SAAkBlqoB,GACjB,MAAO,CAACA,EAAKA,EAAKltE,EAAE,IAAI,EAAwB,MAArBktE,EAAKkqoB,WAAW,GAC5C,CANiH2+B,CAAS7oqB,GACzH,MAAO,CAAC4oqB,GAAqB,IAAXlmc,EAAI,GAAWimc,GAAOG,IAAOpmc,EAAI,IACpD,GAoSQ,GAAa,CAAE/8S,EAAE,UAAWO,EA1MpC,SAAuB85E,EAAMj3F,EAAQgwI,GACpC,IAAInhH,EAAQooE,EAAKkqoB,WAAW,KAAO,EAAK,EACpCputB,GAAMi9H,GAASA,EAAKqnmB,MAAQ,EAAM,EAAI,EACtC2oB,EAAY/oqB,EAAKkqoB,WAAWputB,GAChC,OAAOi9H,EAAKqnmB,MACX,KAAK,EAAGpgpB,EAAKltE,GAAK,EAAG,MACrB,KAAK,EAAG,KAAK,EAAGktE,EAAKltE,GAAK,EAAG,MAC7B,KAAK,EAAGktE,EAAKltE,GAAK,GAEnB,MAAO,CAAC8E,EAAM,EAAGmxuB,EAClB,GAiMQ,GAAa,CAAEpjvB,EAAE,SAAUO,EA7UnC,SAAsB85E,EAAMj3F,EAAQgwI,GAEnC,IAAInhH,GAAuB,GAAfooE,EAAKA,EAAKltE,KAAY,EAGlC,OAFAktE,EAAKltE,GAAK,EAEH,CAAC8E,EADE8vuB,GAAc1nqB,EAAM,EAAG+4C,GAElC,GAwUQ,GAAa,CAAEpzH,EAAE,UAAWO,EAncpC,SAAuB85E,EAAMj3F,EAAQgwI,GAGpC,MAAO,EAFsB,GAAjB/4C,EAAKA,EAAKltE,OAAgB,EAC3B00uB,GAAexnqB,EAAM+4C,EAAKqnmB,MAAQ,GAAKrnmB,EAAKqnmB,KAAmBrnmB,GAE3E,GAgcQ,GAAa,CAAEpzH,EAAE,aAAcO,EA/KvC,SAA0B85E,EAAMj3F,EAAQgwI,GACvC,IAAInhH,EAAQooE,EAAKkqoB,WAAW,KAAO,EAAK,EAGxC,OAFAlqoB,EAAKltE,GAAMimH,GAAqB,GAAbA,EAAKqnmB,KAAY,EAAI,EAEjC,CAACxotB,EADEooE,EAAKkqoB,WAAWnxlB,GAAqB,GAAbA,EAAKqnmB,KAAY,EAAI,GAExD,GA2KQ,GAAa,CAAEz6tB,EAAE,YAAaO,EA1IhBm5tB,IA2Id,GAAa,CAAE15tB,EAAE,cAAeO,EAzIhBm5tB,IA0IhB,GAAa,CAAE15tB,EAAE,aAAcO,EA1KvC,SAA0B85E,EAAMj3F,EAAQgwI,GAGvC,MAAO,CAFK/4C,EAAKkqoB,WAAW,KAAO,EAAK,EAC9BlqoB,EAAKkqoB,WAAWnxlB,GAAqB,GAAbA,EAAKqnmB,KAAY,EAAI,GAExD,GAuKQ,GAAa,CAAEz6tB,EAAE,YAAaO,EAnKtC,SAAyB85E,EAAMj3F,EAAQgwI,GACtC,IAAInhH,EAAQooE,EAAKkqoB,WAAW,KAAO,EAAK,EAIxC,OAHAlqoB,EAAKltE,GAAK,EACPimH,EAAKqnmB,KAAO,GAAGpgpB,EAAKltE,IACP,IAAbimH,EAAKqnmB,OAAYpgpB,EAAKltE,GAAK,GACvB,CAAC8E,EACT,GA8JQ,GAAa,CAAEjS,EAAE,aAAcO,EArbvC,SAA0B85E,EAAMj3F,EAAQgwI,GACvC,IAAInhH,GAAyB,GAAjBooE,EAAKA,EAAKltE,OAAgB,EAEtC,OADAktE,EAAKltE,GAAKimH,GAASA,EAAKqnmB,KAAO,EAAK,GAAMrnmB,EAAKqnmB,KAAO,EAAI,EAAI,EACvD,CAACxotB,EACT,GAkbQ,GAAa,CAAEjS,EAAE,UAAWO,EA5UpC,SAAuB85E,EAAMj3F,EAAQgwI,GACpC,IAAInhH,GAAuB,GAAfooE,EAAKA,EAAKltE,KAAY,EAClCktE,EAAKltE,GAAK,EACV,IAAI6/O,EAvJL,SAA0B3yK,EAAMj3F,EAAQgwI,GACvC,IAAIqnmB,EAAOrnmB,GAAQA,EAAKqnmB,KAAOrnmB,EAAKqnmB,KAAO,EAC3C,GAAGA,GAAQ,GAAKA,GAAQ,EAAG,OAS5B,SAAgCpgpB,GAC/B,IAAI0jH,EAAK1jH,EAAKkqoB,WAAW,GACrBvttB,EAAIqjF,EAAKkqoB,WAAW,GACpBiW,GAAa,MAALz8hB,IAAgB,GAAIw8hB,GAAa,MAALx8hB,IAAgB,GAIxD,OAHAA,GAAM,MACK,GAARy8hB,GAAaz8hB,GAAM,OAAQA,GAAU,OAC7B,GAARw8hB,GAAavjuB,GAAK,MAAMA,GAAQ,KAC5B,CAAC+V,EAAEgxL,EAAG/mM,EAAEA,EAAEujuB,KAAKA,EAAKC,KAAKA,EACjC,CAjBmC6oB,CAAuBhpqB,GACzD,IAAIttE,EAAIstE,EAAKkqoB,WAAWkW,GAAQ,GAAK,EAAI,GACrC59hB,EAAKxiH,EAAKkqoB,WAAW,GACrBgW,GAAa,MAAL19hB,IAAgB,GAAI29hB,GAAa,MAAL39hB,IAAgB,GAExD,GADAA,GAAM,MACK,GAAR29hB,EAAW,KAAMzttB,EAAI,QAASA,GAAK,QACtC,GAAW,GAARwttB,EAAW,KAAM19hB,EAAK,MAAQA,GAAU,MAC3C,MAAO,CAAC9vL,EAAEA,EAAE/V,EAAE6lM,EAAG09hB,KAAKA,EAAKC,KAAKA,EACjC,CA6IW8oB,CAAiBjpqB,EAAM,EAAG+4C,GACpC,MAAO,CAACnhH,EAAM+6O,EACf,GAwUQ,GAAa,CAAEhtP,EAAE,WAAYO,EAparC,SAAwB85E,EAAMj3F,EAAQgwI,GACrC,IAAInhH,GAAyB,GAAjBooE,EAAKA,EAAKltE,OAAgB,EAClCimK,EA5FL,SAA2B/4F,EAAMj3F,EAAQgwI,GACxC,GAAGA,EAAKqnmB,KAAO,EAAG,OAAOqnB,GAAqBznqB,GAC9C,IAAIttE,EAAEstE,EAAKkqoB,WAAwB,IAAbnxlB,EAAKqnmB,KAAa,EAAI,GAAI3kuB,EAAEukF,EAAKkqoB,WAAwB,IAAbnxlB,EAAKqnmB,KAAa,EAAI,GACpFzjuB,EAAE4qvB,GAAcvnqB,EAAM,GACtB17C,EAAEijtB,GAAcvnqB,EAAM,GAC1B,MAAO,CAAE7lF,EAAE,CAACuY,EAAEA,EAAG/V,EAAEA,EAAE,GAAIujuB,KAAKvjuB,EAAE,GAAIwjuB,KAAKxjuB,EAAE,IAAKF,EAAE,CAACiW,EAAEjX,EAAGkB,EAAE2nC,EAAE,GAAI47rB,KAAK57rB,EAAE,GAAI67rB,KAAK77rB,EAAE,IACnF,CAsFY4ktB,CAAkBlpqB,EAAMj3F,EAAYgwI,GAC/C,MAAO,CAACnhH,EAAMmhK,EACf,GAiaQ,GAAa,CAAEpzK,EAAE,cAAeO,EA5DxC,SAA2B85E,GAG1B,MAAO,CAFKA,EAAKkqoB,WAAW,KAAO,EAAK,EAC9BlqoB,EAAKkqoB,WAAW,GAE3B,GAyDQ,GAAa,CAAEvktB,EAAE,eAAgBO,EAxDzC,SAA4B85E,GAG3B,MAAO,CAFKA,EAAKkqoB,WAAW,KAAO,EAAK,EAC9BlqoB,EAAKkqoB,WAAW,GAE3B,GAqDQ,GAAa,CAAEvktB,EAAE,WAAYO,EA1MrC,SAAwB85E,EAAMj3F,EAAQgwI,GACrC,OAAgB,GAAbA,EAAKqnmB,KAMT,SAA8BpgpB,GAC7B,IAAIpoE,EAAQooE,EAAKkqoB,WAAW,KAAO,EAAK,EACpCi/B,EAAOnpqB,EAAKkqoB,WAAW,EAAG,KAC9BlqoB,EAAKltE,GAAK,EACV,IAAIi2uB,EAAY/oqB,EAAKkqoB,WAAW,GAEhC,OADAlqoB,EAAKltE,GAAK,GACH,CAAC8E,EAAMuxuB,EAAMJ,EACrB,CAb2BK,CAAqBppqB,GAIxC,CAHKA,EAAKkqoB,WAAW,KAAO,EAAK,EAC7BlqoB,EAAKkqoB,WAAW,GACXlqoB,EAAKkqoB,WAAW,GAEjC,GAqMQ,GAAa,CAAEvktB,EAAE,WAAYO,EAzUrC,SAAwB85E,EAAMj3F,EAAQgwI,GACrC,IAAInhH,GAAuB,GAAfooE,EAAKA,EAAKltE,KAAY,EAClCktE,EAAKltE,GAAK,EACV,IAAIq2uB,EAAOnpqB,EAAKkqoB,WAAW,GAG3B,OAFGnxlB,GAAqB,GAAbA,EAAKqnmB,OAAWpgpB,EAAKltE,GAAK,IAE9B,CAAC8E,EAAMuxuB,EADJzB,GAAc1nqB,EAAM,EAAG+4C,GAElC,GAmUQ,GAAa,CAAEpzH,EAAE,YAAaO,EAzctC,SAAyB85E,EAAMj3F,EAAQgwI,GACtC,IAAInhH,GAAyB,GAAjBooE,EAAKA,EAAKltE,OAAgB,EAClCq2uB,EAAOnpqB,EAAKkqoB,WAAW,EAAG,KAE9B,GAAGnxlB,EAAM,OAAOA,EAAKqnmB,MACpB,KAAK,EAAGpgpB,EAAKltE,GAAK,GAAQ,EAAG,MAC7B,KAAK,GAAQ,GAGd,MAAO,CAAC8E,EAAMuxuB,EADH3B,GAAexnqB,EAAMlkF,EAAGi9H,GAEpC,GAgcQ,GAAa,CAAEpzH,EAAE,cAAeO,EAnKxC,SAA2B85E,EAAMj3F,EAAQgwI,GACxC,IAAInhH,GAAyB,GAAjBooE,EAAKA,EAAKltE,OAAgB,EAClCq2uB,EAAOnpqB,EAAKkqoB,WAAW,GACvBputB,EAAI,EACR,GAAGi9H,EAAM,OAAOA,EAAKqnmB,MACpB,KAAK,EAAGtkuB,EAAI,GAAI,MAChB,KAAK,GAAIA,EAAI,EAGd,OADAkkF,EAAKltE,GAAKhX,EACH,CAAC8b,EAAMuxuB,EACf,GA0JQ,GAAa,CAAExjvB,EAAE,eAAgBO,EAxbzC,SAA4B85E,EAAMj3F,EAAQgwI,GACzC,IAAInhH,GAAyB,GAAjBooE,EAAKA,EAAKltE,OAAgB,EAClCq2uB,EAAOnpqB,EAAKkqoB,WAAW,GACvBputB,EAAI,EACR,GAAGi9H,EAAM,OAAOA,EAAKqnmB,MACpB,KAAK,EAAGpgpB,EAAKltE,GAAK,GAAIhX,EAAI,EAAG,MAC7B,KAAK,GAAIA,EAAI,GAGd,OADAkkF,EAAKltE,GAAKhX,EACH,CAAC8b,EAAMuxuB,EACf,GA+aQ,IAAa,CAAC,GAGlBE,GAAW,CACP,GAAa,GAAa,GAAa,GACvC,GAAa,GAAa,GAAa,GACvC,GAAa,GAAa,GAAa,GACvC,GAAa,GAAa,GAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,IAG3CC,GAAQ,CACJ,EAAa,CAAE3jvB,EAAE,YAAaO,EAAEoivB,IAChC,EAAa,CAAE3ivB,EAAE,WAAYO,EApJhBkivB,IAqJb,EAAa,CAAEzivB,EAAE,YAAaO,EAxKhBkivB,IAyKd,EAAa,CAAEzivB,EAAE,YAAaO,EApJhBkivB,IAqJd,EAAa,CAAEzivB,EAAE,aAAcO,EApKhBkivB,IAqKf,GAAa,CAAEzivB,EAAE,gBAAiBO,EA9JhBkivB,IA+JlB,GAAa,CAAEzivB,EAAE,iBAAkBO,EA3JhBmivB,IA4JnB,GAAa,CAAE1ivB,EAAE,aAAcO,EA3KhBmivB,IA4Kf,GAAa,CAAE1ivB,EAAE,cAAeO,EA1KhBmivB,IA2KhB,GAAa,CAAE1ivB,EAAE,mBAAoBO,EAhKhBoivB,IAiKrB,GAAa,CAAE3ivB,EAAE,UAAWO,EArIpC,SAAuB85E,GACtBA,EAAKltE,GAAK,EACV,IAAIq2uB,EAAOnpqB,EAAKkqoB,WAAW,GACvBlgtB,EAAQg2E,EAAKkqoB,WAAW,GACxB9vmB,EAAMp6B,EAAKkqoB,WAAW,GACtBvttB,EAAIqjF,EAAKkqoB,WAAW,GACpB5lrB,EAAI07C,EAAKkqoB,WAAW,GAExB,MAAO,CAACi/B,KAAMA,EAAMI,QAAe,EAANv/uB,EAAY85C,GADhCyksB,GAAWv+uB,GAAS,EAAK,IACcowG,IAAIA,EAAKz9G,EAAEA,EAAG2nC,EAAEA,EACjE,GA6HQ,GAAa,CAAE3+B,EAAE,YAAaO,EA3HtC,SAAyB85E,GAExB,OADAA,EAAKltE,GAAK,EACH,CAACktE,EAAKkqoB,WAAW,GACzB,GAyHQ,IAAa,CAAC,GAElBs/B,GAAQ,CACJ,EAAa,CAAE7jvB,EAAE,cAAeO,EArGxC,SAA2B85E,GAE1B,OADAA,EAAKltE,GAAK,EACH,CAAC,EAAG,EACZ,GAmGQ,EAAa,CAAEnN,EAAE,cAAeO,EApaxC,SAA2B85E,EAAMj3F,EAAQgwI,GACxC,IAAIgvnB,EAA4B,IAAjB/nqB,EAAKA,EAAKltE,EAAE,GAAa,EAAI,EAE5C,OADAktE,EAAKltE,GAAKimH,GAAqB,GAAbA,EAAKqnmB,KAAY,EAAI,EAChC,CAAC2nB,EACT,GAiaQ,EAAa,CAAEpivB,EAAE,YAAaO,EAnbtC,SAAyB85E,EAAMj3F,EAAQgwI,GACtC,IAAI0wnB,EAA0B,IAAjBzpqB,EAAKA,EAAKltE,EAAE,GAAa,EAAI,EAE1C,OADAktE,EAAKltE,GAAK,EACH,CAAC22uB,EAAOzpqB,EAAKkqoB,WAAWnxlB,GAAqB,GAAbA,EAAKqnmB,KAAY,EAAI,GAC7D,GAgbQ,EAAa,CAAEz6tB,EAAE,gBAAiBO,EArc1C,SAA6B85E,EAAMj3F,EAAQgwI,GAC1C/4C,EAAKltE,GAAI,EAIT,IAHA,IAAInY,EAASqlF,EAAKkqoB,WAAWnxlB,GAAqB,GAAbA,EAAKqnmB,KAAY,EAAI,GACtD/6tB,EAAsB,GAElBnb,EAAI,EAAGA,GAAKyQ,IAAUzQ,EAAGmb,EAAEhb,KAAK21F,EAAKkqoB,WAAWnxlB,GAAqB,GAAbA,EAAKqnmB,KAAY,EAAI,IACrF,OAAO/6tB,CACR,GA+bQ,EAAa,CAAEM,EAAE,cAAeO,EA5bxC,SAA2B85E,EAAMj3F,EAAQgwI,GACxC,IAAI2wnB,EAA4B,IAAjB1pqB,EAAKA,EAAKltE,EAAE,GAAa,EAAI,EAE5C,OADAktE,EAAKltE,GAAK,EACH,CAAC42uB,EAAS1pqB,EAAKkqoB,WAAWnxlB,GAAqB,GAAbA,EAAKqnmB,KAAY,EAAI,GAC/D,GAybQ,GAAa,CAAEz6tB,EAAE,aAAcO,EAhWvC,SAA0B85E,EAAMj3F,EAAQgwI,GACvC/4C,EAAKltE,GAAKimH,GAAqB,GAAbA,EAAKqnmB,KAAY,EAAI,CACxC,GA+VQ,GAAa,CAAEz6tB,EAAE,gBAAiBO,EAAE4hvB,IACpC,GAAa,CAAEnivB,EAAE,gBAAiBO,EAAE4hvB,IACpC,GAAa,CAAEnivB,EAAE,eAAgBO,EA9ZzC,SAA4B85E,GAE3B,OADAA,EAAKkqoB,WAAW,GACT89B,GAAuBhoqB,EAC/B,GA4ZQ,GAAa,CAAEr6E,EAAE,mBAAoBO,EAzZ7C,SAAgC85E,GAE/B,OADAA,EAAKkqoB,WAAW,GACT89B,GAAuBhoqB,EAC/B,GAuZQ,IAAa,CAAEr6E,EAAE,iBAAkBO,EApb3C,SAA8B85E,GAC7B,IAAIypqB,EAA0B,IAAjBzpqB,EAAKA,EAAKltE,EAAE,GAAa,EAAI,EAE1C,OADAktE,EAAKltE,GAAK,EACH,CAAC22uB,EAAOzpqB,EAAKkqoB,WAAW,GAChC,GAibQ,IAAa,CAAC,GAItB,SAASqlB,GAAevvpB,EAAMj3F,EAAQqmvB,EAAMr2mB,GAC3C,GAAGA,EAAKqnmB,KAAO,EAAG,OAAOf,GAAUr/oB,EAAMj3F,GAGzC,IAFA,IAAI2d,EAASs5E,EAAKltE,EAAI/pB,EAClBsc,EAAI,GACAnb,EAAI,EAAGA,IAAMklvB,EAAKrmvB,SAAUmB,EACnC,OAAOklvB,EAAKllvB,GAAG,IACd,IAAK,WACJklvB,EAAKllvB,GAAG,GAAKi+vB,GAAoBnoqB,EAAM,EAAG+4C,GAC1C1zH,EAAEhb,KAAK+kvB,EAAKllvB,GAAG,IACf,MACD,IAAK,aACJklvB,EAAKllvB,GAAG,GAAKg+vB,GAAkBloqB,EAAMovpB,EAAKllvB,GAAG,GAAI6uI,GACjD1zH,EAAEhb,KAAK+kvB,EAAKllvB,GAAG,IACf,MACD,IAAK,SACD6uI,GAAqB,IAAbA,EAAKqnmB,OACfgP,EAAKllvB,GAAG,GAAG,GAAK81F,EAAKkqoB,WAAW,GAChC7ktB,EAAEhb,KAAK+kvB,EAAKllvB,GAAG,KACd,MACH,IAAK,UACL,IAAK,iBACL,IAAK,aACL,IAAK,cACJ,KAAM,eAAiBklvB,EAAKllvB,GAAG,GAQlC,OADc,KAHdnB,EAAS2d,EAASs5E,EAAKltE,IAGNzN,EAAEhb,KAAKg1uB,GAAUr/oB,EAAMj3F,IACjCsc,CACR,CAGA,SAASiquB,GAAWtvpB,EAAMj3F,EAAQgwI,GAGjC,IAFA,IACIt9H,EAAGslB,EADHra,EAASs5E,EAAKltE,EAAI/pB,EACX4gwB,EAAO,GACZjjvB,GAAUs5E,EAAKltE,GACpB/pB,EAAS2d,EAASs5E,EAAKltE,EACvBiO,EAAKi/D,EAAKA,EAAKltE,GACfrX,EAAI+svB,GAASznuB,IAAOynuB,GAASa,GAAStouB,IAC5B,KAAPA,GAAsB,KAAPA,IAAatlB,GAAY,KAAPslB,EAAcuouB,GAAQE,IAAOxpqB,EAAKA,EAAKltE,EAAI,KAC3ErX,GAAMA,EAAEyK,EACLyjvB,EAAKt/vB,KAAK,CAACoR,EAAEkK,EAAGlK,EAAEyK,EAAE85E,EAAMj3F,EAAQgwI,KADVsmmB,GAAUr/oB,EAAMj3F,GAGhD,OAAO4gwB,CACR,CAEA,SAASC,GAAgB1jvB,GAExB,IADA,IAAIb,EAAsB,GAClBnb,EAAI,EAAGA,EAAIgc,EAAEnd,SAAUmB,EAAG,CAEjC,IADA,IAAIqT,EAAI2I,EAAEhc,GAAIwoB,EAAsB,GAC5B2xB,EAAI,EAAGA,EAAI9mC,EAAExU,SAAUs7C,EAAG,CACjC,IAAI/qC,EAAIiE,EAAE8mC,GACV,GAAG/qC,EAAG,GAEA,IAFOA,EAAE,GAIboZ,EAAEroB,KAAK,IAAMiP,EAAE,GAAGhR,QAAQ,KAAK,MAAQ,UAC/BoqB,EAAEroB,KAAKiP,EAAE,SACZoZ,EAAEroB,KAAK,GACf,CACAgb,EAAEhb,KAAKqoB,EAAE7nB,KAAK,KACf,CACA,OAAOwa,EAAExa,KAAK,IACf,CAGA,IAAIg/vB,GAAW,CACdC,OAAQ,IACRC,UAAW,IACXC,OAAQ,IACRC,MAAO,IACPC,MAAO,KACPC,MAAO,IACPC,MAAO,KACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,KACPC,SAAU,IACVC,OAAQ,KAIT,SAASC,GAAcjpvB,EAAOE,GAC7B,IAAIxH,EAAIsH,EAAM6uB,YAAY,KAAM7zB,EAAIkF,EAAI2uB,YAAY,KACpD,OAAS,GAANn2B,IAAiB,GAANsC,EAAgBgF,EAAQ,IAAME,EACzCxH,EAAI,GAAKsC,EAAI,GAAKgF,EAAMhS,MAAM,EAAG0K,GAAG0C,eAAiB8E,EAAIlS,MAAM,EAAGgN,GAAGI,cAAsB4E,EAAQ,IAAME,EAAIlS,MAAMgN,EAAE,IACxHhT,QAAQ2pB,MAAM,uBAAwB3R,EAAOE,GACtCF,EAAQ,IAAME,EACtB,CAEA,SAASgpvB,GAAaC,EAAUzB,EAAiBpwnB,GAChD,IAAI6xnB,EAAU,MAAO,cACrB,GAAG7xnB,EAAKqnmB,KAAO,KAAOwqB,EAASC,MAAQD,EAASC,IAAI1B,IAAQ,OAAOyB,EAASjpB,WAAWwnB,GACvF,IAAIyB,EAASC,IAAK,MAAO,cACzB,IAAIA,EAAMD,EAASC,IAAI1B,GACvB,GAAGpwnB,EAAKqnmB,KAAO,EAGd,OAFG+oB,EAAO,MAAOA,GAAO,OACrBA,EAAO,IAAGA,GAAQA,GACN,GAARA,EAAY,GAAKyB,EAASC,IAAI1B,EAAO,GAE7C,IAAI0B,EAAK,MAAO,cAChB,IAAIxlvB,EAAI,GACR,GAAG0zH,EAAKqnmB,KAAO,EAAG,OAAOwqB,EAASC,EAAI,IAAI,IACzC,KAAK,IAEJ,OADAxlvB,GAAe,GAAXwlvB,EAAI,GAAW,OAASD,EAASjpB,WAAWkpB,EAAI,IAC7CA,EAAI,IAAMA,EAAI,GAAKxlvB,EAAIA,EAAI,IAAMulvB,EAASjpB,WAAWkpB,EAAI,IACjE,KAAK,IACJ,OAAe,MAAZ9xnB,EAAK+xnB,IAAoBF,EAASjpB,WAAW5omB,EAAK+xnB,KAC9C,cAAgBF,EAASC,EAAI,IAAI,GAGzC,QAAS,MAAO,aAAeD,EAASC,EAAI,IAAI,GAEjD,OAAOD,EAASC,EAAI,IAAI,GAAG,IAC1B,KAAK,KAEJ,OADAxlvB,GAAe,GAAXwlvB,EAAI,GAAW,OAAUD,EAASjpB,WAAWkpB,EAAI,KAAO,cACrDA,EAAI,IAAMA,EAAI,GAAKxlvB,EAAIA,EAAI,IAAMulvB,EAASjpB,WAAWkpB,EAAI,IACjE,KAAK,MAAQ,OAAOD,EAASC,EAAI,IAAIp7vB,MAAM,GAAGyP,KAAI,SAAS2G,GAAQ,OAAOA,EAAK+Y,IAAM,IAAG/zB,KAAK,MAC7F,QACC,OAAI+/vB,EAASC,EAAI,IAAI,GAAG,IACxBxlvB,GAAe,GAAXwlvB,EAAI,GAAW,OAAUD,EAASC,EAAI,IAAI,GAAG,GAAGA,EAAI,KAAO,cACxDA,EAAI,IAAMA,EAAI,GAAKxlvB,EAAIA,EAAI,IAAMulvB,EAASC,EAAI,IAAI,GAAG,GAAGA,EAAI,KAFhC,cAItC,CACA,SAASE,GAASH,EAAUzB,EAAiBpwnB,GAC5C,IAAIiynB,EAAUL,GAAaC,EAAUzB,EAAMpwnB,GAC3C,MAAkB,QAAXiynB,EAAoBA,EAAU7pB,GAAyB6pB,EAASjynB,EACxE,CACA,SAASkynB,GAAkBj2uB,EAAuBkK,EAAOpF,EAAc8wuB,EAAU7xnB,GAChF,IAEkCs9T,EAAI8qR,EAAgBxktB,EAAsC+V,EAFxF0ttB,EAAQrnmB,GAAQA,EAAKqnmB,MAAS,EAC9B8B,EAAqC,CAAC/nuB,EAAE,CAACwC,EAAE,EAAG+V,EAAE,GAAGjW,EAAE,CAACE,EAAE,EAAG+V,EAAE,IAC7DD,EAA0B,GAA2C02uB,EAAK,EAAG+B,EAAQ,EAAM9pB,EAAM,GACrG,IAAIpstB,EAAQ,KAAOA,EAAQ,GAAG,GAAI,MAAO,GAEzC,IADA,IAAIm2uB,GAAW,EAAGC,EAAK,GACf1jkB,EAAK,EAAG2jkB,EAAQr2uB,EAAQ,GAAGjsB,OAAQ2+L,EAAK2jkB,IAAS3jkB,EAAI,CAC5D,IAAIxhL,EAAI8O,EAAQ,GAAG0yK,GACnB,OAAOxhL,EAAE,IACR,IAAK,YACJuM,EAAMpoB,KAAK,IAAMooB,EAAMkL,OAAQ,MAChC,IAAK,WACJlL,EAAMpoB,KAAK,IAAMooB,EAAMkL,OAAQ,MAChC,IAAK,aACJlL,EAAMpoB,KAAKooB,EAAMkL,MAAQ,KAAM,MAEhC,IAAK,SACL,IAAK,YACL,IAAK,SACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,WACL,IAAK,SAEJ,GADA04a,EAAK5jb,EAAMkL,MAAOwjsB,EAAK1usB,EAAMkL,MAC1BwtuB,GAAW,EAAG,CAChB,OAAOn2uB,EAAQ,GAAGm2uB,GAAS,GAAG,IAC7B,KAAK,EAEJC,EAAK7zuB,GAAK,IAAKvC,EAAQ,GAAGm2uB,GAAS,GAAG,IAAK,MAC5C,KAAK,EAEJC,EAAK7zuB,GAAK,KAAMvC,EAAQ,GAAGm2uB,GAAS,GAAG,IAAK,MAC7C,QAGC,GAFAC,EAAK,GAEFrynB,EAAKkjmB,IAAK,MAAM,IAAIzptB,MAAM,+BAAiCwC,EAAQ,GAAGm2uB,GAAS,GAAG,IAEvFhqC,GAAUiqC,EACVD,GAAW,CACZ,CACA14uB,EAAMpoB,KAAK82tB,EAAG0oC,GAAS3jvB,EAAE,IAAImwb,GAC7B,MAED,IAAK,WACJA,EAAK5jb,EAAMkL,MAAOwjsB,EAAK1usB,EAAMkL,MAC7BlL,EAAMpoB,KAAK82tB,EAAG,IAAI9qR,GAClB,MACD,IAAK,WACJA,EAAK5jb,EAAMkL,MAAOwjsB,EAAK1usB,EAAMkL,MAC7BlL,EAAMpoB,KAAK82tB,EAAG,IAAI9qR,GAClB,MACD,IAAK,WACJA,EAAK5jb,EAAMkL,MAAOwjsB,EAAK1usB,EAAMkL,MAC7BlL,EAAMpoB,KAAKqgwB,GAAcvpC,EAAG9qR,IAC5B,MAED,IAAK,gBAEL,IAAK,cAEL,IAAK,YAEL,IAAK,iBA2DL,IAAK,gBACL,IAAK,cA+FL,IAAK,aASL,IAAK,SAGL,IAAK,YAkBL,IAAK,cACL,IAAK,eACL,IAAK,cACL,IAAK,WACL,IAAK,cAGL,IAAK,aAEL,IAAK,cACJ,MA/LD,IAAK,SACkB15b,EAAIsjuB,GAAgB/5tB,EAAE,GAAG,GAAag8tB,EAAQnpmB,GACpEtmH,EAAMpoB,KAAKi2uB,GAAgB3juB,EAAGyjuB,IAC9B,MACD,IAAK,UACkBzjuB,EAAImd,EAAOmmtB,GAAgB/5tB,EAAE,GAAG,GAAa4T,EAAMi/G,GAAS7yH,EAAE,GAAG,GACvFuM,EAAMpoB,KAAKi2uB,GAAgB3juB,EAAGyjuB,IAC9B,MACD,IAAK,WACkB+oB,EAAoBjjvB,EAAE,GAAG,GAAWvJ,EAAIsjuB,GAAgB/5tB,EAAE,GAAG,GAAag8tB,EAAQnpmB,GACxGqomB,EAAQ2pB,GAASH,EAAUzB,EAAMpwnB,GAEjCtmH,EAAMpoB,KAAK+2uB,EAAQ,IAAMd,GAAgB3juB,EAAGyjuB,IAC5C,MAED,IAAK,UACL,IAAK,aAEJ,IAAIqb,EAAmBv1uB,EAAE,GAAG,GAAaynF,EAAmBznF,EAAE,GAAG,GAC7Du1uB,IAAMA,EAAO,GAEjB,IAAI9uvB,EAAe,IADnB8uvB,GAAQ,KACe,GAAKhpuB,EAAMhjB,OAAOgsvB,GACzChpuB,EAAM1pB,QAAU0yvB,EACJ,SAAT9tpB,IAAiBA,EAAOhhG,EAAK4oB,SAChC9C,EAAMpoB,KAAKsjG,EAAO,IAAMhhG,EAAK9B,KAAK,KAAO,KACzC,MAED,IAAK,UACJ4nB,EAAMpoB,KAAK6b,EAAE,GAAK,OAAS,SAAU,MACtC,IAAK,SAOL,IAAK,SACJuM,EAAMpoB,KAAkB6b,EAAE,IAAY,MANvC,IAAK,SACJuM,EAAMpoB,KAAKhB,OAAO6c,EAAE,KAAM,MAC3B,IAAK,SAEJuM,EAAMpoB,KAAK,IAAM6b,EAAE,GAAG5d,QAAQ,KAAM,MAAQ,KAAM,MAGnD,IAAK,WACkBoqB,EAAI2ttB,GAAgBn6tB,EAAE,GAAG,GAAI4T,EAAO,CAAC3f,EAAE2f,GAAQootB,EAAQnpmB,GAC7EtmH,EAAMpoB,KAAKo2uB,GAAkB/ttB,EAAYqmH,IACzC,MACD,IAAK,UACkBrmH,EAAI2ttB,GAAgBn6tB,EAAE,GAAG,GAAIg8tB,EAAQnpmB,GAC3DtmH,EAAMpoB,KAAKo2uB,GAAkB/ttB,EAAYqmH,IACzC,MACD,IAAK,YACkBownB,EAAoBjjvB,EAAE,GAAG,GAAWwM,EAAIxM,EAAE,GAAG,GACnEk7tB,EAAQ2pB,GAASH,EAAUzB,EAAMpwnB,GACjCtmH,EAAMpoB,KAAK+2uB,EAAQ,IAAMX,GAAkB/ttB,EAAYqmH,IACvD,MACD,IAAK,aACJtmH,EAAMpoB,KAAK,OAASooB,EAAMkL,MAAQ,KAClC,MAMD,IAAK,UAEJutuB,EAAWhlvB,EAAE,GAAG,GAChB,IAAIolvB,GAAOV,EAAS/xuB,OAAO,IAAIqyuB,EAAQ,KAAON,EAAS,IAAI,IAAIM,GAC3DrlvB,EAAOylvB,EAAMA,EAAI1suB,KAAO,cAAgBv1B,OAAO6hwB,GAEhDrlvB,GAA2B,UAAnBA,EAAKpW,MAAM,EAAE,KAAmBspI,EAAKwynB,OAAM1lvB,EAAOA,EAAKpW,MAAM,IACxEgjB,EAAMpoB,KAAKwb,GACX,MAED,IAAK,WAEJ,IAA6E2lvB,EAAzEC,EAAsBvlvB,EAAE,GAAG,GAE/B,GAF4CglvB,EAAWhlvB,EAAE,GAAG,KAEzD6yH,EAAKqnmB,MAAQ,GAGT,CACN,IAAI/6tB,EAAI,GAQR,GAP0C,SAArCulvB,EAASa,IAAU,IAAI,IAAI,IAAI,KACW,QAArCb,EAASa,IAAU,IAAI,IAAI,IAAI,GACrCb,EAASa,GAASP,IAAYN,EAASa,GAASP,GAAShc,KAAO,IAClE7puB,EAAIulvB,EAASjpB,WAAWipB,EAASa,GAASP,GAAShc,KAAK,GAAK,KAG1D7puB,EAAIulvB,EAASjpB,WAAWupB,EAAQ,GAAI,KACtCN,EAASa,IAAYb,EAASa,GAASP,GAAU7lvB,GAAKulvB,EAASa,GAASP,GAAStsuB,UAC/E,GAAGgsuB,EAAS,IAAMA,EAAS,GAAGM,GAAU7lvB,GAAKulvB,EAAS,GAAGM,GAAStsuB,SAClE,CACJ,IAAI8suB,GAAYf,GAAaC,EAAUa,EAAS1ynB,IAAO,IAAIt2H,MAAM,MAC9DipvB,EAASR,EAAU,GAAI7lvB,EAAIqmvB,EAASR,EAAU,GAC5C7lvB,GAAK,aACX,CACAoN,EAAMpoB,KAAKgb,GACX,KACD,CApBIomvB,EAAU,IAAGA,GAAWA,GACxBb,EAASa,KAAUD,EAAaZ,EAASa,GAASP,IAoBlDM,IAAYA,EAAa,CAAC5suB,KAAM,gBACpCnM,EAAMpoB,KAAKmhwB,EAAW5suB,MACtB,MAED,IAAK,WACJ,IAAI+suB,EAAK,IAAKC,EAAK,IACnB,GAAGT,GAAW,EAAG,CAEhB,OADAC,EAAK,GACEp2uB,EAAQ,GAAGm2uB,GAAS,GAAG,IAE7B,KAAK,EAAGQ,EAAKp0uB,GAAK,IAAKvC,EAAQ,GAAGm2uB,GAAS,GAAG,IAAMQ,EAAI,MAExD,KAAK,EAAGA,EAAKp0uB,GAAK,KAAMvC,EAAQ,GAAGm2uB,GAAS,GAAG,IAAMQ,EAAI,MAEzD,KAAK,EAAGC,EAAKr0uB,GAAK,IAAKvC,EAAQ,GAAGm2uB,GAAS,GAAG,IAAMS,EAAI,MAExD,KAAK,EAAGA,EAAKr0uB,GAAK,KAAMvC,EAAQ,GAAGm2uB,GAAS,GAAG,IAAMS,EAAI,MACzD,QAEC,GAAG7ynB,EAAKkjmB,IAAK,MAAM,IAAIzptB,MAAM,+BAAiCwC,EAAQ,GAAGm2uB,GAAS,GAAG,IAEvFA,GAAW,CACZ,CACA14uB,EAAMpoB,KAAKshwB,EAAKl5uB,EAAMkL,MAAQiuuB,GAAK,MAEpC,IAAK,YAGL,IAAK,cA+CL,IAAK,aAGL,IAAK,eACJn5uB,EAAMpoB,KAAK,SAAU,MAhDtB,IAAK,SACJsS,EAAI,CAACA,EAAGuJ,EAAE,GAAG,GAAYwM,EAAGxM,EAAE,GAAG,IACjC,IAAItK,EAAK,CAACe,EAAGmd,EAAKnd,EAAG+V,EAAEoH,EAAKpH,GAC5B,GAAGk4uB,EAASiB,QAAQtrB,GAAY5juB,IAAK,CACpC,IAAImvvB,EAAWlB,EAASiB,QAAQtrB,GAAY5juB,IAC5C8V,EAAMpoB,KAAK4gwB,GAAkBa,EAAS5pB,EAAQtmuB,EAAGgvvB,EAAU7xnB,GAC5D,KAAO,CACN,IAAIgznB,GAAM,EACV,IAAI11T,EAAG,EAAEA,GAAIu0T,EAASoB,OAAOjjwB,SAAUstc,EAGtC,GADA8qR,EAAKypC,EAASoB,OAAO31T,KAClB15b,EAAEA,EAAIwktB,EAAG,GAAGhntB,EAAEwC,GAAKA,EAAEA,EAAIwktB,EAAG,GAAG1ktB,EAAEE,MACjCA,EAAE+V,EAAIyusB,EAAG,GAAGhntB,EAAEuY,GAAK/V,EAAE+V,EAAIyusB,EAAG,GAAG1ktB,EAAEiW,GAApC,CACAD,EAAMpoB,KAAK4gwB,GAAkB9pC,EAAG,GAAI+gB,EAAQtmuB,EAAGgvvB,EAAU7xnB,IACzDgznB,GAAM,EACN,KAH+C,CAK5CA,GAAKt5uB,EAAMpoB,KAAkB6b,EAAE,GACpC,CACA,MAED,IAAK,WACJuM,EAAMpoB,KAAK,IAAMu/vB,GAAuB1jvB,EAAE,IAAkB,KAC5D,MAMD,IAAK,eACL,IAAK,mBACJilvB,EAAUzjkB,EACV,MAQD,IAAK,aACJj1K,EAAMpoB,KAAK,IACX,MAQD,IAAK,UAEJooB,EAAMpoB,KAAK,QAAU6b,EAAE,GAAGk0G,IAAM,KAAOl0G,EAAE,GAAG49C,GAAK,KACjD,MAcD,IAAK,YACL,IAAK,aACL,IAAK,cACL,IAAK,aACL,IAAK,YACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,WACL,IAAK,YACJ,MAAM,IAAItxC,MAAM,oBAIjB,QAAS,MAAM,IAAIA,MAAM,+BAAiCnpB,OAAO6c,IAGlE,GAAgB,GAAb6yH,EAAKqnmB,MAAc+qB,GAAW,IAA+C,GAD/D,CAAC,eAAgB,mBAAoB,eACL31vB,QAAQwf,EAAQ,GAAG0yK,GAAI,IAAW,CAElF,IAAIukkB,GAAQ,EACZ,QAFA/lvB,EAAI8O,EAAQ,GAAGm2uB,IAEN,GAAG,IAEX,KAAK,EAAGc,GAAQ,EAEhB,KAAK,EAEJb,EAAK7zuB,GAAK,IAAKrR,EAAE,GAAG,IAAK,MAC1B,KAAK,EAAG+lvB,GAAQ,EAEhB,KAAK,EAEJb,EAAK7zuB,GAAK,KAAMrR,EAAE,GAAG,IAAK,MAC3B,QAGC,GAFAklvB,EAAK,GAEFrynB,EAAKkjmB,IAAK,MAAM,IAAIzptB,MAAM,+BAAiCtM,EAAE,GAAG,IAErEuM,EAAMpoB,MAAM4hwB,EAAQb,EAAK,IAAM34uB,EAAMkL,OAASsuuB,EAAQ,GAAKb,IAC3DD,GAAW,CACZ,CACD,CACA,GAAG14uB,EAAM1pB,OAAS,GAAKgwI,EAAKkjmB,IAAK,MAAM,IAAIzptB,MAAM,qBACjD,MAAe,QAAZC,EAAM,IAA0C,SAAZA,EAAM,IACtCA,EAAM,EACd,CAGA,SAASm9tB,GAAyB5vpB,EAAMj3F,EAAQgwI,GAC/C,IACIs2mB,EADA3ouB,EAASs5E,EAAKltE,EAAI/pB,EAAQmc,EAAmB,GAAb6zH,EAAKqnmB,KAAY,EAAI,EAC/C6O,EAAMjvpB,EAAKkqoB,WAAWhltB,GAChC,GAAU,OAAP+puB,EAAe,MAAO,CAAC,GAAG5P,GAAUr/oB,EAAMj3F,EAAO,IACpD,IAAIqmvB,EAAOE,GAAWtvpB,EAAMivpB,EAAKl2mB,GAGjC,OAFGhwI,IAAWkmvB,EAAM/puB,IAAKmquB,EAAOE,GAAevvpB,EAAMj3F,EAASkmvB,EAAM/puB,EAAKkquB,EAAMr2mB,IAC/E/4C,EAAKltE,EAAIpM,EACF,CAAC0ouB,EAAMC,EACf,CAuBA,SAAS6c,GAA0BlsqB,EAAMj3F,EAAQgwI,GAChD,IACIs2mB,EADA3ouB,EAASs5E,EAAKltE,EAAI/pB,EACZkmvB,EAAMjvpB,EAAKkqoB,WAAW,GAC5BklB,EAAOE,GAAWtvpB,EAAMivpB,EAAKl2mB,GACjC,OAAU,OAAPk2mB,EAAsB,CAAC,GAAG5P,GAAUr/oB,EAAMj3F,EAAO,KACjDA,IAAWkmvB,EAAM,IAAGI,EAAOE,GAAevvpB,EAAMt5E,EAASuouB,EAAM,EAAGG,EAAMr2mB,IACpE,CAACq2mB,EAAMC,GACf,CA6BA,SAAS8c,GAAcnsqB,EAAMj3F,EAAQgwI,GACpC,IAAIp3H,EAAMq+E,EAAKltE,EAAI/pB,EACf+wB,EAAO6ytB,GAAc3spB,GACT,GAAb+4C,EAAKqnmB,QAAapgpB,EAAKltE,EAC1B,IAAIktB,EA9BL,SAA4BggD,GAC3B,IAAIljF,EACJ,GAAuC,QAApCmguB,GAAej9oB,EAAKA,EAAKltE,EAAI,GAAe,MAAO,CAACmxtB,GAAWjkpB,GAAM,KACxE,OAAOA,EAAKA,EAAKltE,IAChB,KAAK,EAAmB,OAAbktE,EAAKltE,GAAK,EAAU,CAAC,SAAU,KAC1C,KAAK,EAA+C,OAAzChW,EAAuB,IAAnBkjF,EAAKA,EAAKltE,EAAE,GAAYktE,EAAKltE,GAAK,EAAU,CAAChW,EAAE,KAC9D,KAAK,EAAuC,OAAjCA,EAAIkjF,EAAKA,EAAKltE,EAAE,GAAIktE,EAAKltE,GAAK,EAAU,CAAChW,EAAE,KACtD,KAAK,EAAmB,OAAbkjF,EAAKltE,GAAK,EAAU,CAAC,GAAG,KAEpC,MAAO,EACR,CAoBWs5uB,CAAmBpsqB,GACzBh2E,EAAQg2E,EAAKkqoB,WAAW,GACZ,GAAbnxlB,EAAKqnmB,OACPpgpB,EAAKkqoB,WAAW,GACbnxlB,EAAKqnmB,MAAQ,GACDpgpB,EAAKkqoB,WAAW,IAGhC,IAAImiC,EApEL,SAAoCrsqB,EAAMj3F,EAAQgwI,GACjD,IACIs2mB,EADA3ouB,EAASs5E,EAAKltE,EAAI/pB,EAAQmc,EAAmB,GAAb6zH,EAAKqnmB,KAAY,EAAI,EAC/C6O,EAAMjvpB,EAAKkqoB,WAAWhltB,GAChC,GAAU,OAAP+puB,EAAe,MAAO,CAAC,GAAG5P,GAAUr/oB,EAAMj3F,EAAO,IACpD,IAAIqmvB,EAAOE,GAAWtvpB,EAAMivpB,EAAKl2mB,GAGjC,OAFGhwI,IAAWkmvB,EAAM/puB,IAAKmquB,EAAOE,GAAevvpB,EAAMj3F,EAASkmvB,EAAM/puB,EAAKkquB,EAAMr2mB,IAC/E/4C,EAAKltE,EAAIpM,EACF,CAAC0ouB,EAAMC,EACf,CA4DWid,CAA2BtsqB,EAAMr+E,EAAMq+E,EAAKltE,EAAGimH,GACzD,MAAO,CAACj/G,KAAKA,EAAMkmB,IAAIA,EAAI,GAAIhrB,QAAQq3uB,EAAK98jB,OAASvlL,GAAS,EAAK,EAAG0jC,GAAG1N,EAAI,GAC9E,CAwBA,SAASustB,GAAwBl1tB,EAAMtuC,EAAQgwI,GAC9C,IAAIk2mB,EAAM53sB,EAAK6yrB,WAAW,GACtBklB,EAAOE,GAAWj4sB,EAAM43sB,EAAKl2mB,GAC7B29C,EAAKr/I,EAAK6yrB,WAAW,GAEzB,MAAO,CAACklB,EADG14jB,EAAK,EAAI64jB,GAAel4sB,EAAMq/I,EAAI04jB,EAAMr2mB,GAAQ,KAE5D,CAGA,IAAIyznB,GAA+BD,GAE/BE,GAA8BF,GAM9BG,GAA8BH,GAE9BI,GAAgCJ,GA8MpC,IACIzD,GAAQ,CACV,EAAG,OACH,EAAG,OACH,EAAG,aACH,EAAG,YACH,EAAG,OACH,EAAG,UACH,EAAG,cACH,EAAG,aACH,EAAG,QACH,EAAG,gBACH,GAAI,OACJ,GAAI,aACJ,GAAI,cACJ,GAAI,cACJ,GAAI,cACJ,GAAI,OACJ,GAAI,QACJ,GAAI,MACJ,GAAI,iBACJ,GAAI,mBACJ,GAAI,iBACJ,GAAI,oBACJ,GAAI,OACJ,GAAI,UACJ,GAAI,mBACJ,GAAI,YACJ,GAAI,UACJ,GAAI,gBACJ,GAAI,cACJ,GAAI,YACJ,GAAI,UACJ,GAAI,cACJ,GAAI,eACJ,GAAI,eACJ,GAAI,OACJ,GAAI,cACJ,GAAI,QACJ,GAAI,gBACJ,GAAI,YACJ,GAAI,QACJ,GAAI,SACJ,GAAI,kBACJ,GAAI,eACJ,GAAI,OACJ,GAAI,MACJ,GAAI,OACJ,GAAI,QACJ,GAAI,QACJ,GAAI,gBACJ,GAAI,cACJ,GAAI,SACJ,GAAI,aACJ,GAAI,YACJ,GAAI,cACJ,GAAI,eACJ,GAAI,eACJ,GAAI,eACJ,GAAI,mBACJ,GAAI,mBACJ,GAAI,eACJ,GAAI,cACJ,GAAI,iBACJ,GAAI,eACJ,GAAI,cACJ,GAAI,kBACJ,GAAI,cACJ,GAAI,YACJ,GAAI,cACJ,GAAI,YACJ,GAAI,gBACJ,GAAI,OACJ,GAAI,SACJ,GAAI,cACJ,GAAI,YACJ,GAAI,eACJ,GAAI,mBACJ,GAAI,WACJ,GAAI,aACJ,GAAI,UACJ,GAAI,QACJ,GAAI,gBACJ,GAAI,cACJ,GAAI,cACJ,GAAI,QACJ,GAAI,UACJ,GAAI,OACJ,GAAI,SACJ,GAAI,YACJ,GAAI,UACJ,GAAI,eACJ,GAAI,gBACJ,GAAI,iBACJ,IAAK,iBACL,IAAK,oBACL,IAAK,oBACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,IAAK,gBACL,IAAK,gBACL,IAAK,eACL,IAAK,SACL,IAAK,cACL,IAAK,gBACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,MACL,IAAK,cACL,IAAK,iBACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,kBACL,IAAK,YACL,IAAK,iBACL,IAAK,cACL,IAAK,eACL,IAAK,eACL,IAAK,YACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,gBACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,OACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,iBACL,IAAK,cACL,IAAK,oBACL,IAAK,gBACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,cACL,IAAK,qBACL,IAAK,SACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,eACL,IAAK,eACL,IAAK,iBACL,IAAK,eACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,YACL,IAAK,YACL,IAAK,gBACL,IAAK,cACL,IAAK,eACL,IAAK,kBACL,IAAK,oBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,cACL,IAAK,UACL,IAAK,SACL,IAAK,cACL,IAAK,UACL,IAAK,oBACL,IAAK,kBACL,IAAK,QACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,eACL,IAAK,aACL,IAAK,eACL,IAAK,gBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,iBACL,IAAK,YACL,IAAK,cACL,IAAK,eACL,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,qBACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,kBACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,cACL,IAAK,iBACL,IAAK,qBACL,IAAK,YACL,IAAK,oBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,WACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,eACL,IAAK,cACL,IAAK,YACL,IAAK,kBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,aACL,IAAK,oBACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,mBACL,IAAK,qBACL,IAAK,yBACL,IAAK,cACL,IAAK,aACL,IAAK,mBACL,IAAK,sBACL,IAAK,eACL,IAAK,eACL,IAAK,gBACL,IAAK,cACL,IAAK,kBACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,2BACL,IAAK,eACL,IAAK,iBACL,IAAK,aACL,IAAK,iBACL,IAAK,YACL,IAAK,mBACL,IAAK,cACL,IAAK,wBACL,IAAK,kBACL,IAAK,qBACL,IAAK,kBACL,IAAK,kBACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,iBACL,IAAK,eACL,IAAK,mBACL,IAAK,aACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,iBACL,IAAK,uBACL,IAAK,0BACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,cACL,IAAK,mBACL,IAAK,uBACL,IAAK,mBACL,IAAK,kBACL,IAAK,mBACL,IAAK,cACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,eACL,IAAK,oBACL,IAAK,sBACL,IAAK,sBACL,IAAK,mBACL,IAAK,qBACL,IA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K,aACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,aACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,WACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,aACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,SACL,IAAK,aACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,WACL,IAAK,OACL,IAAK,QACL,IAAK,aACL,IAAK,KACL,IAAK,QACL,IAAK,SACL,IAAK,YACL,IAAK,cACL,IAAK,iBACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,cACL,IAAK,WACL,IAAK,iBACL,IAAK,aACL,IAAK,YACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,eACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,aACL,IAAK,YACL,IAAK,OACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,cACL,IAAK,SACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,MACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,QACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,OACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,YACL,IAAK,cACL,IAAK,QACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,oBACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,QACL,IAAK,cACL,IAAK,cACL,IAAK,WACL,IAAK,eACL,IAAK,YACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,YACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,cACL,IAAK,WACL,IAAK,MACL,IAAK,YACL,IAAK,aACL,IAAK,qBACL,IAAK,mBACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,aACL,IAAK,cACL,IAAK,YACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,SACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,MACL,IAAK,cACL,IAAK,MACL,IAAK,aACL,IAAK,gBACL,IAAK,UACL,IAAK,eACL,IAAK,UACL,IAAK,WACL,IAAK,SACL,IAAK,YACL,IAAK,cAEHD,GAAW,CACb,EAAG,EACH,EAAG,EACH,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,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","sources":["helpers/NumberExtension.js","helpers/string-prototypes.js","../node_modules/classnames/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/_lib/defaultLocale/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/_lib/defaultOptions/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/date-fns/esm/addDays/index.js","../node_modules/date-fns/esm/addHours/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/addMinutes/index.js","../node_modules/date-fns/esm/addMonths/index.js","../node_modules/date-fns/esm/addQuarters/index.js","../node_modules/date-fns/esm/addWeeks/index.js","../node_modules/date-fns/esm/addYears/index.js","../node_modules/date-fns/esm/constants/index.js","../node_modules/date-fns/esm/differenceInCalendarDays/index.js","../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","../node_modules/date-fns/esm/differenceInCalendarYears/index.js","../node_modules/date-fns/esm/endOfDay/index.js","../node_modules/date-fns/esm/endOfMonth/index.js","../node_modules/date-fns/esm/endOfWeek/index.js","../node_modules/date-fns/esm/endOfYear/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/date-fns/esm/getDate/index.js","../node_modules/date-fns/esm/getDay/index.js","../node_modules/date-fns/esm/getHours/index.js","../node_modules/date-fns/esm/startOfISOWeek/index.js","../node_modules/date-fns/esm/startOfISOWeekYear/index.js","../node_modules/date-fns/esm/getISOWeekYear/index.js","../node_modules/date-fns/esm/getISOWeek/index.js","../node_modules/date-fns/esm/getMinutes/index.js","../node_modules/date-fns/esm/getMonth/index.js","../node_modules/date-fns/esm/getQuarter/index.js","../node_modules/date-fns/esm/getSeconds/index.js","../node_modules/date-fns/esm/getTime/index.js","../node_modules/date-fns/esm/getYear/index.js","../node_modules/date-fns/esm/isAfter/index.js","../node_modules/date-fns/esm/isBefore/index.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/isEqual/index.js","../node_modules/date-fns/esm/isSameDay/index.js","../node_modules/date-fns/esm/isSameMonth/index.js","../node_modules/date-fns/esm/isSameQuarter/index.js","../node_modules/date-fns/esm/isSameYear/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/isWithinInterval/index.js","../node_modules/date-fns/esm/max/index.js","../node_modules/date-fns/esm/min/index.js","../node_modules/date-fns/esm/parseISO/index.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/date-fns/esm/parse/_lib/Setter.js","../node_modules/date-fns/esm/parse/_lib/Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","../node_modules/date-fns/esm/parse/_lib/constants.js","../node_modules/date-fns/esm/parse/_lib/utils.js","../node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/parse/index.js","../node_modules/date-fns/esm/setHours/index.js","../node_modules/date-fns/esm/setMinutes/index.js","../node_modules/date-fns/esm/setMonth/index.js","../node_modules/date-fns/esm/getDaysInMonth/index.js","../node_modules/date-fns/esm/setQuarter/index.js","../node_modules/date-fns/esm/setSeconds/index.js","../node_modules/date-fns/esm/setYear/index.js","../node_modules/date-fns/esm/set/index.js","../node_modules/date-fns/esm/startOfDay/index.js","../node_modules/date-fns/esm/startOfMonth/index.js","../node_modules/date-fns/esm/startOfQuarter/index.js","../node_modules/date-fns/esm/startOfWeek/index.js","../node_modules/date-fns/esm/startOfYear/index.js","../node_modules/date-fns/esm/subDays/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/subMonths/index.js","../node_modules/date-fns/esm/subQuarters/index.js","../node_modules/date-fns/esm/subWeeks/index.js","../node_modules/date-fns/esm/subYears/index.js","../node_modules/date-fns/esm/toDate/index.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/jquery/dist/jquery.js","../node_modules/jsonp/index.js","../node_modules/jsonp/node_modules/debug/src/browser.js","../node_modules/jsonp/node_modules/debug/src/debug.js","../node_modules/jsonp/node_modules/ms/index.js","../node_modules/moment/moment.js","../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-confirm-box/src/helpers/unique-name.ts","../node_modules/react-confirm-box/src/config.ts","../node_modules/react-confirm-box/src/portal/index.tsx","../node_modules/react-confirm-box/src/confirm/index.tsx","../node_modules/react-confirm-box/src/index.ts","../node_modules/react-datepicker/dist/react-datepicker.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-ga4/dist/format.js","../node_modules/react-ga4/dist/ga4.js","../node_modules/react-ga4/dist/gtag.js","../node_modules/react-ga4/dist/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","../node_modules/react-popper/lib/esm/Manager.js","../node_modules/react-popper/lib/esm/utils.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/react-popper/lib/esm/usePopper.js","../node_modules/react-popper/lib/esm/Popper.js","../node_modules/react-popper/lib/esm/Reference.js","../node_modules/react-side-effect/lib/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/select2/dist/js/select2.js","../node_modules/shallow-equal-fuzzy/index.js","../node_modules/warning/warning.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/react-weblibrary/dist/esm/useLibrary.js","../node_modules/react-gapi/dist/esm/GoogleApiContext.js","../node_modules/react-gapi/dist/esm/GoogleApiProvider.js","../node_modules/@react-oauth/google/dist/index.esm.js","../node_modules/@tawk.to/tawk-messenger-react/dist/tawk-messenger-react.es.js","components/FixedMessenger.js","helpers/Lookup.js","components/AboutUs.js","../node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-base/src/fetch.js","../node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/@syncfusion/ej2-buttons/src/common/common.js","../node_modules/@syncfusion/ej2-buttons/src/button/button.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/@syncfusion/ej2-lists/src/common/list-base.js","../node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/@syncfusion/ej2-data/src/query.js","../node_modules/@syncfusion/ej2-calendars/src/daterangepicker/daterangepicker.js","../node_modules/@syncfusion/ej2-react-base/src/component-base.js","../node_modules/@syncfusion/ej2-react-base/src/util.js","../node_modules/@syncfusion/ej2-react-base/src/complex-base.js","../node_modules/@syncfusion/ej2-react-base/src/services.js","../node_modules/@syncfusion/ej2-react-base/src/template.js","../node_modules/@syncfusion/ej2-react-calendars/src/daterangepicker/daterangepicker.component.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js","../node_modules/@syncfusion/ej2-react-dropdowns/src/drop-down-list/dropdownlist.component.js","../node_modules/reactstrap/esm/utils.js","../node_modules/reactstrap/esm/Row.js","../node_modules/reactstrap/esm/Col.js","../node_modules/reactstrap/esm/CloseButton.js","../node_modules/reactstrap/esm/Button.js","../node_modules/reactstrap/esm/Label.js","helpers/authentication.js","../node_modules/@syncfusion/ej2-notifications/src/toast/toast.js","helpers/Global.js","helpers/Context.js","../node_modules/reactstrap/esm/Table.js","../node_modules/reactstrap/esm/Pagination.js","../node_modules/reactstrap/esm/PaginationItem.js","../node_modules/reactstrap/esm/PaginationLink.js","components/admin/Admin Dashboard/RevenueSources.js","../node_modules/@syncfusion/ej2-charts/src/common/model/base.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-svg-base/src/tooltip/interface.js","../node_modules/@syncfusion/ej2-charts/src/chart/utils/double-range.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/double-axis.js","../node_modules/@syncfusion/ej2-charts/src/common/model/constants.js","../node_modules/@syncfusion/ej2-charts/src/chart/model/chart-base.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/axis.js","../node_modules/@syncfusion/ej2-charts/src/common/utils/helper.js","../node_modules/@syncfusion/ej2-charts/src/common/model/theme.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/cartesian-panel.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/enum.js","../node_modules/@syncfusion/ej2-charts/src/chart/utils/get-data.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/chart-series.js","../node_modules/@syncfusion/ej2-charts/src/common/model/data.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/marker-explode.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/marker.js","../node_modules/@syncfusion/ej2-charts/src/common/legend/legend.js","../node_modules/@syncfusion/ej2-charts/src/chart/technical-indicators/technical-indicator.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/graphics/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/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/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/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/pages/pdf-page-template-element.js","../node_modules/@syncfusion/ej2-charts/src/common/utils/export.js","../node_modules/@syncfusion/ej2-charts/src/chart/chart.js","../node_modules/@syncfusion/ej2-react-charts/src/chart/chart.component.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/column-base.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/column-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/axis-helper.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/category-axis.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/data-label.js","../node_modules/@syncfusion/ej2-charts/src/chart/legend/legend.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/line-base.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/line-series.js","../node_modules/@syncfusion/ej2-charts/src/common/user-interaction/tooltip.js","../node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/tooltip.js","../node_modules/@syncfusion/ej2-react-charts/src/chart/axes-directive.js","../node_modules/@syncfusion/ej2-react-charts/src/chart/series-directive.js","components/admin/Admin Dashboard/SalesGraph.js","components/admin/Admin Dashboard/SalesPerfomance.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/bar-series.js","components/admin/Admin Dashboard/ShoppingFunnel.js","../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.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-grids/src/grid/base/constant.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/print.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/base/util.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/data.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/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/base/grid.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/grid.component.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/columns-directive.js","../node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.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/datepicker/datepicker.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-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-grids/src/grid/actions/toolbar.js","../node_modules/reactstrap/esm/Portal.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/reactstrap/esm/Fade.js","../node_modules/reactstrap/esm/Modal.js","../node_modules/reactstrap/esm/ModalHeader.js","../node_modules/reactstrap/esm/ModalBody.js","../node_modules/reactstrap/esm/ModalFooter.js","components/admin/Admin Dashboard/StockUpdates.jsx","components/admin/AdminDashboard.js","components/admin/AdminLanding.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/command-column-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/command-column.js","../node_modules/@syncfusion/ej2-react-inputs/src/textbox/textbox.component.js","helpers/validation.js","components/admin/AdminOrders.js","../node_modules/@syncfusion/ej2-react-buttons/src/check-box/checkbox.component.js","../node_modules/@syncfusion/ej2-react-calendars/src/datepicker/datepicker.component.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/constant.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/enum.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/classes.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/render.js","../node_modules/@syncfusion/ej2-richtexteditor/src/common/constant.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/keyboard.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/view-source.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/interface.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/services/service-locator.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/services/renderer-factory.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/execute-command-callback.js","../node_modules/@syncfusion/ej2-filemanager/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-react-richtexteditor/src/rich-text-editor/richtexteditor.component.js","../node_modules/@syncfusion/ej2-splitbuttons/src/common/common.js","../node_modules/@syncfusion/ej2-splitbuttons/src/drop-down-button/drop-down-button.js","../node_modules/@syncfusion/ej2-splitbuttons/src/split-button/split-button.js","../node_modules/@syncfusion/ej2-inputs/src/slider/slider.js","../node_modules/@syncfusion/ej2-inputs/src/color-picker/color-picker.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/toolbar-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/base-toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/dropdown-buttons.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/toolbar-action.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/formatter/formatter.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/base/constant.js","../node_modules/@syncfusion/ej2-richtexteditor/src/selection/selection.js","../node_modules/@syncfusion/ej2-richtexteditor/src/common/config.js","../node_modules/@syncfusion/ej2-richtexteditor/src/common/util.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/dom-node.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/lists.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/insert-methods.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/nodecutter.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/formats.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/inserthtml.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/link.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/alignments.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/indents.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/base/classes.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/image.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/audio.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/video.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/table.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/isformatted.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/selection-commands.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/selection-exec.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/inserthtml-exec.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/clearformat.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/clearformat-exec.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/undo.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/ms-word-clean-up.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/insert-text.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/format-painter-actions.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/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/editor-manager/plugin/toolbar-status.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/html-toolbar-status.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/content-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/iframe-content-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/color-picker.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/xhtml-validation.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/html-editor.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/base-quick-toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/popup-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/quick-toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/count.js","components/admin/AuditLog.js","../node_modules/reactstrap/esm/Input.js","components/admin/BannerLocations.js","../node_modules/@syncfusion/ej2-lists/src/sortable/sortable.js","../node_modules/@syncfusion/ej2-dropdowns/src/list-box/list-box.js","../node_modules/@syncfusion/ej2-react-dropdowns/src/list-box/listbox.component.js","components/BannerThumbnails.js","components/admin/Banners.js","components/admin/BannerSections.js","components/admin/ContactMessages.js","components/admin/ContactReasons.js","../node_modules/reactstrap/esm/Card.js","../node_modules/reactstrap/esm/CardBody.js","components/admin/FAQs.js","components/admin/OrderDashboard.js","components/admin/PageContent.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/freeze-row-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/infinite-scroll.js","components/ImageThumbnails.js","components/admin/ProductBrands.js","components/admin/ProductCategories.js","../node_modules/@syncfusion/ej2-react-inputs/src/numerictextbox/numerictextbox.component.js","components/admin/ProductRange.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-dropdowns/src/multi-select/float-label.js","../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/multi-select.js","../node_modules/@syncfusion/ej2-react-dropdowns/src/multi-select/multiselect.component.js","../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/checkbox-selection.js","helpers/Select2.js","components/PreviewCards.js","../node_modules/xlsx/xlsx.mjs","components/admin/Products.js","components/admin/ProductSubCategories.js","components/admin/ProductType.js","components/admin/PromoCodes.js","components/PromotionsCard.js","components/admin/Promotions.js","components/admin/UserData.js","components/BrandPage.js","components/Categories.js","components/QuickViewModal.js","components/ProductCard.js","components/CategoryPage.js","components/CartItem.js","components/CheckoutPage.js","../node_modules/reactstrap/esm/Spinner.js","helpers/ThrobbleHelper.js","helpers/ToastHelper.js","../node_modules/react-google-recaptcha/lib/esm/recaptcha.js","../node_modules/react-async-script/lib/esm/async-script-loader.js","../node_modules/react-google-recaptcha/lib/esm/recaptcha-wrapper.js","../node_modules/react-google-recaptcha/lib/esm/index.js","helpers/GreptchaHelper.js","components/ContactUs.js","components/CustomerDeliveryAddresses.js","components/DeliveryDetails.js","components/FAQs.js","components/ForgotPassword.js","../node_modules/reactstrap/esm/CarouselContext.js","../node_modules/reactstrap/esm/CarouselItem.js","../node_modules/reactstrap/esm/Carousel.js","../node_modules/reactstrap/esm/CarouselIndicators.js","../node_modules/reactstrap/esm/CarouselControl.js","components/HeroSection.js","components/ShopFor.js","components/Home.js","components/Login.js","components/OrderCompletion.js","components/OrderHistoryItem.js","components/OrderHistory.js","components/payfast/Cancelled.js","components/payfast/Complete.js","../node_modules/reactstrap/esm/FormGroup.js","components/PersonalInformation.js","components/ProductBrandPage.js","components/ProductPage.js","components/ProductSearch.js","../node_modules/reactstrap/esm/Nav.js","../node_modules/reactstrap/esm/NavItem.js","../node_modules/reactstrap/esm/NavLink.js","../node_modules/reactstrap/esm/TabContext.js","../node_modules/reactstrap/esm/TabContent.js","../node_modules/reactstrap/esm/TabPane.js","../node_modules/reactstrap/esm/CardTitle.js","../node_modules/reactstrap/esm/CardText.js","../node_modules/react-helmet/es/Helmet.js","components/ProductView.js","components/PromotionPage.js","../node_modules/reactstrap/esm/FormText.js","components/Register.js","components/ResetPassword.js","components/TagProducts.js","components/TestPayments.js","components/WishListItem.js","components/WishList.js","components/admin/RazerBanners.jsx","components/admin/BestSellers.jsx","AppRoutes.js","../node_modules/reactstrap/esm/Container.js","../node_modules/@radix-ui/react-icons/src/CaretDownIcon.tsx","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@radix-ui/react-context/dist/packages/react/context/src/createContext.tsx","../node_modules/@radix-ui/primitive/dist/packages/core/primitive/src/primitive.tsx","../node_modules/@radix-ui/react-compose-refs/dist/packages/react/compose-refs/src/composeRefs.tsx","../node_modules/@radix-ui/react-slot/dist/packages/react/slot/src/Slot.tsx","../node_modules/@radix-ui/react-primitive/dist/packages/react/primitive/src/Primitive.tsx","../node_modules/@radix-ui/react-use-callback-ref/dist/packages/react/use-callback-ref/src/useCallbackRef.tsx","../node_modules/@radix-ui/react-use-controllable-state/dist/packages/react/use-controllable-state/src/useControllableState.tsx","../node_modules/@radix-ui/react-direction/dist/packages/react/direction/src/Direction.tsx","../node_modules/@radix-ui/react-use-layout-effect/dist/packages/react/use-layout-effect/src/useLayoutEffect.tsx","../node_modules/@radix-ui/react-presence/dist/packages/react/presence/src/Presence.tsx","../node_modules/@radix-ui/react-presence/dist/packages/react/presence/src/useStateMachine.tsx","../node_modules/@radix-ui/react-id/dist/packages/react/id/src/id.tsx","../node_modules/@radix-ui/react-collection/dist/packages/react/collection/src/Collection.tsx","../node_modules/@radix-ui/react-dismissable-layer/dist/packages/react/dismissable-layer/src/DismissableLayer.tsx","../node_modules/@radix-ui/react-use-escape-keydown/dist/packages/react/use-escape-keydown/src/useEscapeKeydown.tsx","../node_modules/@radix-ui/react-use-previous/dist/packages/react/use-previous/src/usePrevious.tsx","../node_modules/@radix-ui/react-visually-hidden/dist/packages/react/visually-hidden/src/VisuallyHidden.tsx","../node_modules/@radix-ui/react-navigation-menu/dist/packages/react/navigation-menu/src/NavigationMenu.tsx","components/Cart.js","components/NavMenu.js","components/nav/Footer.js","components/ScrollToTopButton.js","components/BrandNavMenu.js","components/nav/BrandFooter.js","components/BrandLayout.js","components/ProductBrandCard.js","components/BrandSpecificPage.js","components/Layout.js","components/ProtectedRoutes.js","components/RazerCategoryPage.js","components/RazerProductView.js","App.js","serviceWorkerRegistration.js","reportWebVitals.js","index.js"],"sourcesContent":["/* eslint-disable no-extend-native */\r\nNumber.prototype.toTwoDecimalString = function () {\r\n return this.toFixed(2);\r\n};\r\n\r\nNumber.prototype.toOrdinal = function () {\r\n const number = this;\r\n let suffix = '';\r\n\r\n const ones = number % 10;\r\n const tens = Math.floor(number / 10) % 10;\r\n\r\n if (tens === 1) {\r\n suffix = 'th';\r\n } else {\r\n switch (ones) {\r\n case 1:\r\n suffix = 'st';\r\n break;\r\n case 2:\r\n suffix = 'nd';\r\n break;\r\n case 3:\r\n suffix = 'rd';\r\n break;\r\n default:\r\n if (number !== 0)\r\n suffix = 'th';\r\n break;\r\n }\r\n }\r\n return `${number}${suffix}`;\r\n};\r\n\r\nNumber.prototype.toNumericString = function () {\r\n const value = this;\r\n const options = {\r\n minimumFractionDigits: value % 1 === 0 ? 0 : 2,\r\n maximumFractionDigits: value % 1 === 0 ? 0 : 2,\r\n };\r\n //return value.toLocaleString('en-US', options);\r\n return value.toLocaleString('fr-CH', options).replace(',', '.');;\r\n};\r\n\r\nNumber.prototype.toPercentage = function (NumDecimals) {\r\n const value = this;\r\n \r\n const options = {\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: NumDecimals? NumDecimals : 0,\r\n };\r\n return (value*100).toLocaleString('fr-CH', options)+\"%\";\r\n};\r\n\r\nNumber.prototype.toNumberString = function () {\r\n const value = this;\r\n const options = {\r\n useGrouping: true,\r\n minimumFractionDigits: value % 1 === 0 ? 0 : 2,\r\n maximumFractionDigits: value % 1 === 0 ? 0 : 2,\r\n };\r\n return value.toLocaleString('fr-CH', options).replace(',', '.');;\r\n};\r\n\r\nNumber.prototype.toCurrencyString = function () {\r\n const value = this;\r\n const options = {\r\n useGrouping: true,\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n };\r\n return \"R \" + value.toLocaleString('fr-CH', options).replace(',', '.');;\r\n};\r\n\r\nNumber.prototype.in = function (...values) {\r\n return values.includes(this.valueOf());\r\n};","/* eslint-disable no-extend-native */\r\nString.prototype.ChangeDateFormat = function(format){\r\n\r\n}\r\n\r\nString.prototype.toIsoDateTime = function(){\r\n console.log(this)\r\n\r\n if(this === null || this === \"\")\r\n return \"\";\r\n else {\r\n \r\n }\r\n}\r\n\r\nString.prototype.isNullOrWhitespace = function () {\r\n return this === null || this === undefined || this.trim() === '';\r\n};\r\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar 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};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var months = amount * 3;\n return addMonths(dirtyDate, months);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nexport default function getQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import startOfQuarter from \"../startOfQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n requiredArgs(2, arguments);\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n return time >= startTime && time <= endTime;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} - the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport default function min(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result > currentDate || isNaN(currentDate.getDate())) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import 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}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", 0);\n }\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n var _super = _createSuper(ValueSetter);\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n _classCallCheck(this, ValueSetter);\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n return _this;\n }\n _createClass(ValueSetter, [{\n key: \"validate\",\n value: function validate(utcDate, options) {\n return this.validateValue(utcDate, this.value, options);\n }\n }, {\n key: \"set\",\n value: function set(utcDate, flags, options) {\n return this.setValue(utcDate, flags, this.value, options);\n }\n }]);\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n function DateToSystemTimezoneSetter() {\n var _this2;\n _classCallCheck(this, DateToSystemTimezoneSetter);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n return _this2;\n }\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n }\n }]);\n return DateToSystemTimezoneSetter;\n}(Setter);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n _defineProperty(this, \"incompatibleTokens\", void 0);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", void 0);\n }\n _createClass(Parser, [{\n key: \"run\",\n value: function run(dateString, token, match, options) {\n var result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n }, {\n key: \"validate\",\n value: function validate(_utcDate, _value, _options) {\n return true;\n }\n }]);\n return Parser;\n}();","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n var _super = _createSuper(EraParser);\n function EraParser() {\n var _this;\n _classCallCheck(this, EraParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n return _this;\n }\n _createClass(EraParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n // A, B\n case 'GGGGG':\n return match.era(dateString, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(dateString, {\n width: 'wide'\n }) || match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return EraParser;\n}(Parser);","export var numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nexport var timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case 'morning':\n return 4;\n case 'evening':\n return 17;\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n _inherits(YearParser, _Parser);\n var _super = _createSuper(YearParser);\n function YearParser() {\n var _this;\n _classCallCheck(this, YearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(YearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n switch (token) {\n case 'y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n var currentYear = date.getUTCFullYear();\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return YearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekYearParser, _Parser);\n var _super = _createSuper(LocalWeekYearParser);\n function LocalWeekYearParser() {\n var _this;\n _classCallCheck(this, LocalWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n switch (token) {\n case 'Y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'Yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n }]);\n return LocalWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n var _super = _createSuper(ISOWeekYearParser);\n function ISOWeekYearParser() {\n var _this;\n _classCallCheck(this, ISOWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'R') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n }\n }]);\n return ISOWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n var _super = _createSuper(ExtendedYearParser);\n function ExtendedYearParser() {\n var _this;\n _classCallCheck(this, ExtendedYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'u') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ExtendedYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n var _super = _createSuper(QuarterParser);\n function QuarterParser() {\n var _this;\n _classCallCheck(this, QuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(QuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return QuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n var _super = _createSuper(StandAloneQuarterParser);\n function StandAloneQuarterParser() {\n var _this;\n _classCallCheck(this, StandAloneQuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneQuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneQuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(MonthParser, _Parser);\n var _super = _createSuper(MonthParser);\n function MonthParser() {\n var _this;\n _classCallCheck(this, MonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n return _this;\n }\n _createClass(MonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'MM':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return MonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneMonthParser, _Parser);\n var _super = _createSuper(StandAloneMonthParser);\n function StandAloneMonthParser() {\n var _this;\n _classCallCheck(this, StandAloneMonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneMonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'LL':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneMonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n var _super = _createSuper(LocalWeekParser);\n function LocalWeekParser() {\n var _this;\n _classCallCheck(this, LocalWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'wo':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n }\n }]);\n return LocalWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n var _super = _createSuper(ISOWeekParser);\n function ISOWeekParser() {\n var _this;\n _classCallCheck(this, ISOWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'Io':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value));\n }\n }]);\n return ISOWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n var _super = _createSuper(DateParser);\n function DateParser() {\n var _this;\n _classCallCheck(this, DateParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DateParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, dateString);\n case 'do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DateParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayOfYearParser, _Parser);\n var _super = _createSuper(DayOfYearParser);\n function DayOfYearParser() {\n var _this;\n _classCallCheck(this, DayOfYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayOfYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case 'Do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayOfYearParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n var _super = _createSuper(DayParser);\n function DayParser() {\n var _this;\n _classCallCheck(this, DayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n var _super = _createSuper(LocalDayParser);\n function LocalDayParser() {\n var _this;\n _classCallCheck(this, LocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n return _this;\n }\n _createClass(LocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'eo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'eee':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return LocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n var _super = _createSuper(StandAloneLocalDayParser);\n function StandAloneLocalDayParser() {\n var _this;\n _classCallCheck(this, StandAloneLocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneLocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'co':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'ccc':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneLocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n var _super = _createSuper(ISODayParser);\n function ISODayParser() {\n var _this;\n _classCallCheck(this, ISODayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISODayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case 'io':\n return match.ordinalNumber(dateString, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return mapValue(match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // T\n case 'iiiii':\n return mapValue(match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tu\n case 'iiiiii':\n return mapValue(match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tuesday\n case 'iiii':\n default:\n return mapValue(match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date = setUTCISODay(date, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ISODayParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n if (day % 7 === 0) {\n day = day - 7;\n }\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n var _super = _createSuper(AMPMParser);\n function AMPMParser() {\n var _this;\n _classCallCheck(this, AMPMParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaaa':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n var _super = _createSuper(AMPMMidnightParser);\n function AMPMMidnightParser() {\n var _this;\n _classCallCheck(this, AMPMMidnightParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMMidnightParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbbb':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMMidnightParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n var _super = _createSuper(DayPeriodParser);\n function DayPeriodParser() {\n var _this;\n _classCallCheck(this, DayPeriodParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n return _this;\n }\n _createClass(DayPeriodParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBBB':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return DayPeriodParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1to12Parser, _Parser);\n var _super = _createSuper(Hour1to12Parser);\n function Hour1to12Parser() {\n var _this;\n _classCallCheck(this, Hour1to12Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour1to12Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case 'ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour1to12Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0to23Parser, _Parser);\n var _super = _createSuper(Hour0to23Parser);\n function Hour0to23Parser() {\n var _this;\n _classCallCheck(this, Hour0to23Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0to23Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case 'Ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n }\n }]);\n return Hour0to23Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0To11Parser, _Parser);\n var _super = _createSuper(Hour0To11Parser);\n function Hour0To11Parser() {\n var _this;\n _classCallCheck(this, Hour0To11Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0To11Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case 'Ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour0To11Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1To24Parser, _Parser);\n var _super = _createSuper(Hour1To24Parser);\n function Hour1To24Parser() {\n var _this;\n _classCallCheck(this, Hour1To24Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n return _this;\n }\n _createClass(Hour1To24Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case 'ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n }\n }]);\n return Hour1To24Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n _inherits(MinuteParser, _Parser);\n var _super = _createSuper(MinuteParser);\n function MinuteParser() {\n var _this;\n _classCallCheck(this, MinuteParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(MinuteParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, dateString);\n case 'mo':\n return match.ordinalNumber(dateString, {\n unit: 'minute'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n }\n }]);\n return MinuteParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(SecondParser, _Parser);\n var _super = _createSuper(SecondParser);\n function SecondParser() {\n var _this;\n _classCallCheck(this, SecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(SecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, dateString);\n case 'so':\n return match.ordinalNumber(dateString, {\n unit: 'second'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCSeconds(value, 0);\n return date;\n }\n }]);\n return SecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n var _super = _createSuper(FractionOfSecondParser);\n function FractionOfSecondParser() {\n var _this;\n _classCallCheck(this, FractionOfSecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(FractionOfSecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMilliseconds(value);\n return date;\n }\n }]);\n return FractionOfSecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n var _super = _createSuper(ISOTimezoneWithZParser);\n function ISOTimezoneWithZParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneWithZParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n return _this;\n }\n _createClass(ISOTimezoneWithZParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneWithZParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n var _super = _createSuper(ISOTimezoneParser);\n function ISOTimezoneParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n return _this;\n }\n _createClass(ISOTimezoneParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n var _super = _createSuper(TimestampSecondsParser);\n function TimestampSecondsParser() {\n var _this;\n _classCallCheck(this, TimestampSecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampSecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampSecondsParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n var _super = _createSuper(TimestampMillisecondsParser);\n function TimestampMillisecondsParser() {\n var _this;\n _classCallCheck(this, TimestampMillisecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampMillisecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport var parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n try {\n var _loop = function _loop() {\n var token = _step.value;\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n });\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n if (!parseResult) {\n return {\n v: new Date(NaN)\n };\n }\n setters.push(parseResult.setter);\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return {\n v: new Date(NaN)\n };\n }\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n // Check if the remaining input contains something other than whitespace\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n if (!setter.validate(utcDate, subFnOptions)) {\n return new Date(NaN);\n }\n var result = setter.set(utcDate, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n utcDate = result[0];\n assign(flags, result[1]);\n // Result is date\n } else {\n utcDate = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return utcDate;\n}\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * const result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nexport default function setQuarter(dirtyDate, dirtyQuarter) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var quarter = toInteger(dirtyQuarter);\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n var diff = quarter - oldQuarter;\n return setMonth(date, date.getMonth() + diff * 3);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n date.setFullYear(year);\n return date;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Object} values - an object with options\n * @param {Number} [values.year] - the number of years to be set\n * @param {Number} [values.month] - the number of months to be set\n * @param {Number} [values.date] - the number of days to be set\n * @param {Number} [values.hours] - the number of hours to be set\n * @param {Number} [values.minutes] - the number of minutes to be set\n * @param {Number} [values.seconds] - the number of seconds to be set\n * @param {Number} [values.milliseconds] - the number of milliseconds to be set\n * @returns {Date} the new date with options set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `values` must be an object\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * const result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * const result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\nexport default function set(dirtyDate, values) {\n requiredArgs(2, arguments);\n if (_typeof(values) !== 'object' || values === null) {\n throw new RangeError('values parameter must be an object');\n }\n var date = toDate(dirtyDate);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n if (values.year != null) {\n date.setFullYear(values.year);\n }\n if (values.month != null) {\n date = setMonth(date, values.month);\n }\n if (values.date != null) {\n date.setDate(toInteger(values.date));\n }\n if (values.hours != null) {\n date.setHours(toInteger(values.hours));\n }\n if (values.minutes != null) {\n date.setMinutes(toInteger(values.minutes));\n }\n if (values.seconds != null) {\n date.setSeconds(toInteger(values.seconds));\n }\n if (values.milliseconds != null) {\n date.setMilliseconds(toInteger(values.milliseconds));\n }\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport default function startOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addQuarters from \"../addQuarters/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport default function subQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addQuarters(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i {\r\n const worksheet = this.workbook.addWorksheet(options.sheetName);\r\n\r\n const dateFormats = options.dateFormats || [\r\n 'YYYY-MM-DD[T]HH:mm:ssZ',\r\n 'YYYY-MM-DD[T]HH:mm:ss',\r\n 'MM-DD-YYYY',\r\n 'YYYY-MM-DD',\r\n ];\r\n const map =\r\n options.map ||\r\n function(datum) {\r\n if (datum === '') {\r\n return null;\r\n }\r\n const datumNumber = Number(datum);\r\n if (!Number.isNaN(datumNumber) && datumNumber !== Infinity) {\r\n return datumNumber;\r\n }\r\n const dt = dateFormats.reduce((matchingDate, currentDateFormat) => {\r\n if (matchingDate) {\r\n return matchingDate;\r\n }\r\n const dayjsObj = dayjs(datum, currentDateFormat, true);\r\n if (dayjsObj.isValid()) {\r\n return dayjsObj;\r\n }\r\n return null;\r\n }, null);\r\n if (dt) {\r\n return new Date(dt.valueOf());\r\n }\r\n const special = SpecialValues[datum];\r\n if (special !== undefined) {\r\n return special;\r\n }\r\n return datum;\r\n };\r\n\r\n const csvStream = fastCsv\r\n .parse(options.parserOptions)\r\n .on('data', data => {\r\n worksheet.addRow(data.map(map));\r\n })\r\n .on('end', () => {\r\n csvStream.emit('worksheet', worksheet);\r\n });\r\n\r\n csvStream.on('worksheet', resolve).on('error', reject);\r\n\r\n stream.pipe(csvStream);\r\n });\r\n }\r\n\r\n /**\r\n * @deprecated since version 4.0. You should use `CSV#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 '`CSV#createInputStream` is deprecated. You should use `CSV#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 write(stream, options) {\r\n return new Promise((resolve, reject) => {\r\n options = options || {};\r\n // const encoding = options.encoding || 'utf8';\r\n // const separator = options.separator || ',';\r\n // const quoteChar = options.quoteChar || '\\'';\r\n\r\n const worksheet = this.workbook.getWorksheet(options.sheetName || options.sheetId);\r\n\r\n const csvStream = fastCsv.format(options.formatterOptions);\r\n stream.on('finish', () => {\r\n resolve();\r\n });\r\n csvStream.on('error', reject);\r\n csvStream.pipe(stream);\r\n\r\n const {dateFormat, dateUTC} = options;\r\n const map =\r\n options.map ||\r\n (value => {\r\n if (value) {\r\n if (value.text || value.hyperlink) {\r\n return value.hyperlink || value.text || '';\r\n }\r\n if (value.formula || value.result) {\r\n return value.result || '';\r\n }\r\n if (value instanceof Date) {\r\n if (dateFormat) {\r\n return dateUTC\r\n ? dayjs.utc(value).format(dateFormat)\r\n : dayjs(value).format(dateFormat);\r\n }\r\n return dateUTC ? dayjs.utc(value).format() : dayjs(value).format();\r\n }\r\n if (value.error) {\r\n return value.error;\r\n }\r\n if (typeof value === 'object') {\r\n return JSON.stringify(value);\r\n }\r\n }\r\n return value;\r\n });\r\n\r\n const includeEmptyRows = options.includeEmptyRows === undefined || options.includeEmptyRows;\r\n let lastRow = 1;\r\n if (worksheet) {\r\n worksheet.eachRow((row, rowNumber) => {\r\n if (includeEmptyRows) {\r\n while (lastRow++ < rowNumber - 1) {\r\n csvStream.write([]);\r\n }\r\n }\r\n const {values} = row;\r\n values.shift();\r\n csvStream.write(values.map(map));\r\n lastRow = rowNumber;\r\n });\r\n }\r\n csvStream.end();\r\n });\r\n }\r\n\r\n writeFile(filename, options) {\r\n options = options || {};\r\n\r\n const streamOptions = {\r\n encoding: options.encoding || 'utf8',\r\n };\r\n const stream = fs.createWriteStream(filename, streamOptions);\r\n\r\n return this.write(stream, options);\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\nmodule.exports = CSV;\r\n","'use strict';\r\n\r\nconst colCache = require('../utils/col-cache');\r\n\r\nclass Anchor {\r\n constructor(worksheet, address, offset = 0) {\r\n if (!address) {\r\n this.nativeCol = 0;\r\n this.nativeColOff = 0;\r\n this.nativeRow = 0;\r\n this.nativeRowOff = 0;\r\n } else if (typeof address === 'string') {\r\n const decoded = colCache.decodeAddress(address);\r\n this.nativeCol = decoded.col + offset;\r\n this.nativeColOff = 0;\r\n this.nativeRow = decoded.row + offset;\r\n this.nativeRowOff = 0;\r\n } else if (address.nativeCol !== undefined) {\r\n this.nativeCol = address.nativeCol || 0;\r\n this.nativeColOff = address.nativeColOff || 0;\r\n this.nativeRow = address.nativeRow || 0;\r\n this.nativeRowOff = address.nativeRowOff || 0;\r\n } else if (address.col !== undefined) {\r\n this.col = address.col + offset;\r\n this.row = address.row + offset;\r\n } else {\r\n this.nativeCol = 0;\r\n this.nativeColOff = 0;\r\n this.nativeRow = 0;\r\n this.nativeRowOff = 0;\r\n }\r\n\r\n this.worksheet = worksheet;\r\n }\r\n\r\n static asInstance(model) {\r\n return model instanceof Anchor || model == null ? model : new Anchor(model);\r\n }\r\n\r\n get col() {\r\n return this.nativeCol + (Math.min(this.colWidth - 1, this.nativeColOff) / this.colWidth);\r\n }\r\n\r\n set col(v) {\r\n this.nativeCol = Math.floor(v);\r\n this.nativeColOff = Math.floor((v - this.nativeCol) * this.colWidth);\r\n }\r\n\r\n get row() {\r\n return this.nativeRow + (Math.min(this.rowHeight - 1, this.nativeRowOff) / this.rowHeight);\r\n }\r\n\r\n set row(v) {\r\n this.nativeRow = Math.floor(v);\r\n this.nativeRowOff = Math.floor((v - this.nativeRow) * this.rowHeight);\r\n }\r\n\r\n get colWidth() {\r\n return this.worksheet &&\r\n this.worksheet.getColumn(this.nativeCol + 1) &&\r\n this.worksheet.getColumn(this.nativeCol + 1).isCustomWidth\r\n ? Math.floor(this.worksheet.getColumn(this.nativeCol + 1).width * 10000)\r\n : 640000;\r\n }\r\n\r\n get rowHeight() {\r\n return this.worksheet &&\r\n this.worksheet.getRow(this.nativeRow + 1) &&\r\n this.worksheet.getRow(this.nativeRow + 1).height\r\n ? Math.floor(this.worksheet.getRow(this.nativeRow + 1).height * 10000)\r\n : 180000;\r\n }\r\n\r\n get model() {\r\n return {\r\n nativeCol: this.nativeCol,\r\n nativeColOff: this.nativeColOff,\r\n nativeRow: this.nativeRow,\r\n nativeRowOff: this.nativeRowOff,\r\n };\r\n }\r\n\r\n set model(value) {\r\n this.nativeCol = value.nativeCol;\r\n this.nativeColOff = value.nativeColOff;\r\n this.nativeRow = value.nativeRow;\r\n this.nativeRowOff = value.nativeRowOff;\r\n }\r\n}\r\n\r\nmodule.exports = Anchor;\r\n","/* eslint-disable max-classes-per-file */\r\nconst colCache = require('../utils/col-cache');\r\nconst _ = require('../utils/under-dash');\r\nconst Enums = require('./enums');\r\nconst {slideFormula} = require('../utils/shared-formula');\r\nconst Note = require('./note');\r\n// Cell requirements\r\n// Operate inside a worksheet\r\n// Store and retrieve a value with a range of types: text, number, date, hyperlink, reference, formula, etc.\r\n// Manage/use and manipulate cell format either as local to cell or inherited from column or row.\r\n\r\nclass Cell {\r\n constructor(row, column, address) {\r\n if (!row || !column) {\r\n throw new Error('A Cell needs a Row');\r\n }\r\n\r\n this._row = row;\r\n this._column = column;\r\n\r\n colCache.validateAddress(address);\r\n this._address = address;\r\n\r\n // TODO: lazy evaluation of this._value\r\n this._value = Value.create(Cell.Types.Null, this);\r\n\r\n this.style = this._mergeStyle(row.style, column.style, {});\r\n\r\n this._mergeCount = 0;\r\n }\r\n\r\n get worksheet() {\r\n return this._row.worksheet;\r\n }\r\n\r\n get workbook() {\r\n return this._row.worksheet.workbook;\r\n }\r\n\r\n // help GC by removing cyclic (and other) references\r\n destroy() {\r\n delete this.style;\r\n delete this._value;\r\n delete this._row;\r\n delete this._column;\r\n delete this._address;\r\n }\r\n\r\n // =========================================================================\r\n // Styles stuff\r\n get numFmt() {\r\n return this.style.numFmt;\r\n }\r\n\r\n set numFmt(value) {\r\n this.style.numFmt = value;\r\n }\r\n\r\n get font() {\r\n return this.style.font;\r\n }\r\n\r\n set font(value) {\r\n this.style.font = value;\r\n }\r\n\r\n get alignment() {\r\n return this.style.alignment;\r\n }\r\n\r\n set alignment(value) {\r\n this.style.alignment = value;\r\n }\r\n\r\n get border() {\r\n return this.style.border;\r\n }\r\n\r\n set border(value) {\r\n this.style.border = value;\r\n }\r\n\r\n get fill() {\r\n return this.style.fill;\r\n }\r\n\r\n set fill(value) {\r\n this.style.fill = value;\r\n }\r\n\r\n get protection() {\r\n return this.style.protection;\r\n }\r\n\r\n set protection(value) {\r\n this.style.protection = value;\r\n }\r\n\r\n _mergeStyle(rowStyle, colStyle, style) {\r\n const numFmt = (rowStyle && rowStyle.numFmt) || (colStyle && colStyle.numFmt);\r\n if (numFmt) style.numFmt = numFmt;\r\n\r\n const font = (rowStyle && rowStyle.font) || (colStyle && colStyle.font);\r\n if (font) style.font = font;\r\n\r\n const alignment = (rowStyle && rowStyle.alignment) || (colStyle && colStyle.alignment);\r\n if (alignment) style.alignment = alignment;\r\n\r\n const border = (rowStyle && rowStyle.border) || (colStyle && colStyle.border);\r\n if (border) style.border = border;\r\n\r\n const fill = (rowStyle && rowStyle.fill) || (colStyle && colStyle.fill);\r\n if (fill) style.fill = fill;\r\n\r\n const protection = (rowStyle && rowStyle.protection) || (colStyle && colStyle.protection);\r\n if (protection) style.protection = protection;\r\n\r\n return style;\r\n }\r\n\r\n // =========================================================================\r\n // return the address for this cell\r\n get address() {\r\n return this._address;\r\n }\r\n\r\n get row() {\r\n return this._row.number;\r\n }\r\n\r\n get col() {\r\n return this._column.number;\r\n }\r\n\r\n get $col$row() {\r\n return `$${this._column.letter}$${this.row}`;\r\n }\r\n\r\n // =========================================================================\r\n // Value stuff\r\n\r\n get type() {\r\n return this._value.type;\r\n }\r\n\r\n get effectiveType() {\r\n return this._value.effectiveType;\r\n }\r\n\r\n toCsvString() {\r\n return this._value.toCsvString();\r\n }\r\n\r\n // =========================================================================\r\n // Merge stuff\r\n\r\n addMergeRef() {\r\n this._mergeCount++;\r\n }\r\n\r\n releaseMergeRef() {\r\n this._mergeCount--;\r\n }\r\n\r\n get isMerged() {\r\n return this._mergeCount > 0 || this.type === Cell.Types.Merge;\r\n }\r\n\r\n merge(master, ignoreStyle) {\r\n this._value.release();\r\n this._value = Value.create(Cell.Types.Merge, this, master);\r\n if (!ignoreStyle) {\r\n this.style = master.style;\r\n }\r\n }\r\n\r\n unmerge() {\r\n if (this.type === Cell.Types.Merge) {\r\n this._value.release();\r\n this._value = Value.create(Cell.Types.Null, this);\r\n this.style = this._mergeStyle(this._row.style, this._column.style, {});\r\n }\r\n }\r\n\r\n isMergedTo(master) {\r\n if (this._value.type !== Cell.Types.Merge) return false;\r\n return this._value.isMergedTo(master);\r\n }\r\n\r\n get master() {\r\n if (this.type === Cell.Types.Merge) {\r\n return this._value.master;\r\n }\r\n return this; // an unmerged cell is its own master\r\n }\r\n\r\n get isHyperlink() {\r\n return this._value.type === Cell.Types.Hyperlink;\r\n }\r\n\r\n get hyperlink() {\r\n return this._value.hyperlink;\r\n }\r\n\r\n // return the value\r\n get value() {\r\n return this._value.value;\r\n }\r\n\r\n // set the value - can be number, string or raw\r\n set value(v) {\r\n // special case - merge cells set their master's value\r\n if (this.type === Cell.Types.Merge) {\r\n this._value.master.value = v;\r\n return;\r\n }\r\n\r\n this._value.release();\r\n\r\n // assign value\r\n this._value = Value.create(Value.getType(v), this, v);\r\n }\r\n\r\n get note() {\r\n return this._comment && this._comment.note;\r\n }\r\n\r\n set note(note) {\r\n this._comment = new Note(note);\r\n }\r\n\r\n get text() {\r\n return this._value.toString();\r\n }\r\n\r\n get html() {\r\n return _.escapeHtml(this.text);\r\n }\r\n\r\n toString() {\r\n return this.text;\r\n }\r\n\r\n _upgradeToHyperlink(hyperlink) {\r\n // if this cell is a string, turn it into a Hyperlink\r\n if (this.type === Cell.Types.String) {\r\n this._value = Value.create(Cell.Types.Hyperlink, this, {\r\n text: this._value.value,\r\n hyperlink,\r\n });\r\n }\r\n }\r\n\r\n // =========================================================================\r\n // Formula stuff\r\n get formula() {\r\n return this._value.formula;\r\n }\r\n\r\n get result() {\r\n return this._value.result;\r\n }\r\n\r\n get formulaType() {\r\n return this._value.formulaType;\r\n }\r\n\r\n // =========================================================================\r\n // Name stuff\r\n get fullAddress() {\r\n const {worksheet} = this._row;\r\n return {\r\n sheetName: worksheet.name,\r\n address: this.address,\r\n row: this.row,\r\n col: this.col,\r\n };\r\n }\r\n\r\n get name() {\r\n return this.names[0];\r\n }\r\n\r\n set name(value) {\r\n this.names = [value];\r\n }\r\n\r\n get names() {\r\n return this.workbook.definedNames.getNamesEx(this.fullAddress);\r\n }\r\n\r\n set names(value) {\r\n const {definedNames} = this.workbook;\r\n definedNames.removeAllNames(this.fullAddress);\r\n value.forEach(name => {\r\n definedNames.addEx(this.fullAddress, name);\r\n });\r\n }\r\n\r\n addName(name) {\r\n this.workbook.definedNames.addEx(this.fullAddress, name);\r\n }\r\n\r\n removeName(name) {\r\n this.workbook.definedNames.removeEx(this.fullAddress, name);\r\n }\r\n\r\n removeAllNames() {\r\n this.workbook.definedNames.removeAllNames(this.fullAddress);\r\n }\r\n\r\n // =========================================================================\r\n // Data Validation stuff\r\n get _dataValidations() {\r\n return this.worksheet.dataValidations;\r\n }\r\n\r\n get dataValidation() {\r\n return this._dataValidations.find(this.address);\r\n }\r\n\r\n set dataValidation(value) {\r\n this._dataValidations.add(this.address, value);\r\n }\r\n\r\n // =========================================================================\r\n // Model stuff\r\n\r\n get model() {\r\n const {model} = this._value;\r\n model.style = this.style;\r\n if (this._comment) {\r\n model.comment = this._comment.model;\r\n }\r\n return model;\r\n }\r\n\r\n set model(value) {\r\n this._value.release();\r\n this._value = Value.create(value.type, this);\r\n this._value.model = value;\r\n\r\n if (value.comment) {\r\n switch (value.comment.type) {\r\n case 'note':\r\n this._comment = Note.fromModel(value.comment);\r\n break;\r\n }\r\n }\r\n\r\n if (value.style) {\r\n this.style = value.style;\r\n } else {\r\n this.style = {};\r\n }\r\n }\r\n}\r\nCell.Types = Enums.ValueType;\r\n\r\n// =============================================================================\r\n// Internal Value Types\r\n\r\nclass NullValue {\r\n constructor(cell) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Null,\r\n };\r\n }\r\n\r\n get value() {\r\n return null;\r\n }\r\n\r\n set value(value) {\r\n // nothing to do\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Null;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.Null;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return '';\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return '';\r\n }\r\n}\r\n\r\nclass NumberValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Number,\r\n value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.value;\r\n }\r\n\r\n set value(value) {\r\n this.model.value = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Number;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.Number;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return this.model.value.toString();\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.value.toString();\r\n }\r\n}\r\n\r\nclass StringValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.String,\r\n value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.value;\r\n }\r\n\r\n set value(value) {\r\n this.model.value = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.String;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.String;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return `\"${this.model.value.replace(/\"/g, '\"\"')}\"`;\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.value;\r\n }\r\n}\r\n\r\nclass RichTextValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.String,\r\n value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.value;\r\n }\r\n\r\n set value(value) {\r\n this.model.value = value;\r\n }\r\n\r\n toString() {\r\n return this.model.value.richText.map(t => t.text).join('');\r\n }\r\n\r\n get type() {\r\n return Cell.Types.RichText;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.RichText;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return `\"${this.text.replace(/\"/g, '\"\"')}\"`;\r\n }\r\n\r\n release() {}\r\n}\r\n\r\nclass DateValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Date,\r\n value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.value;\r\n }\r\n\r\n set value(value) {\r\n this.model.value = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Date;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.Date;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return this.model.value.toISOString();\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.value.toString();\r\n }\r\n}\r\n\r\nclass HyperlinkValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Hyperlink,\r\n text: value ? value.text : undefined,\r\n hyperlink: value ? value.hyperlink : undefined,\r\n };\r\n if (value && value.tooltip) {\r\n this.model.tooltip = value.tooltip;\r\n }\r\n }\r\n\r\n get value() {\r\n const v = {\r\n text: this.model.text,\r\n hyperlink: this.model.hyperlink,\r\n };\r\n if (this.model.tooltip) {\r\n v.tooltip = this.model.tooltip;\r\n }\r\n return v;\r\n }\r\n\r\n set value(value) {\r\n this.model = {\r\n text: value.text,\r\n hyperlink: value.hyperlink,\r\n };\r\n if (value.tooltip) {\r\n this.model.tooltip = value.tooltip;\r\n }\r\n }\r\n\r\n get text() {\r\n return this.model.text;\r\n }\r\n\r\n set text(value) {\r\n this.model.text = value;\r\n }\r\n\r\n /*\r\n get tooltip() {\r\n return this.model.tooltip;\r\n }\r\n\r\n set tooltip(value) {\r\n this.model.tooltip = value;\r\n } */\r\n\r\n get hyperlink() {\r\n return this.model.hyperlink;\r\n }\r\n\r\n set hyperlink(value) {\r\n this.model.hyperlink = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Hyperlink;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.Hyperlink;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return this.model.hyperlink;\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.text;\r\n }\r\n}\r\n\r\nclass MergeValue {\r\n constructor(cell, master) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Merge,\r\n master: master ? master.address : undefined,\r\n };\r\n this._master = master;\r\n if (master) {\r\n master.addMergeRef();\r\n }\r\n }\r\n\r\n get value() {\r\n return this._master.value;\r\n }\r\n\r\n set value(value) {\r\n if (value instanceof Cell) {\r\n if (this._master) {\r\n this._master.releaseMergeRef();\r\n }\r\n value.addMergeRef();\r\n this._master = value;\r\n } else {\r\n this._master.value = value;\r\n }\r\n }\r\n\r\n isMergedTo(master) {\r\n return master === this._master;\r\n }\r\n\r\n get master() {\r\n return this._master;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Merge;\r\n }\r\n\r\n get effectiveType() {\r\n return this._master.effectiveType;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return '';\r\n }\r\n\r\n release() {\r\n this._master.releaseMergeRef();\r\n }\r\n\r\n toString() {\r\n return this.value.toString();\r\n }\r\n}\r\n\r\nclass FormulaValue {\r\n constructor(cell, value) {\r\n this.cell = cell;\r\n\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Formula,\r\n shareType: value ? value.shareType : undefined,\r\n ref: value ? value.ref : undefined,\r\n formula: value ? value.formula : undefined,\r\n sharedFormula: value ? value.sharedFormula : undefined,\r\n result: value ? value.result : undefined,\r\n };\r\n }\r\n\r\n _copyModel(model) {\r\n const copy = {};\r\n const cp = name => {\r\n const value = model[name];\r\n if (value) {\r\n copy[name] = value;\r\n }\r\n };\r\n cp('formula');\r\n cp('result');\r\n cp('ref');\r\n cp('shareType');\r\n cp('sharedFormula');\r\n return copy;\r\n }\r\n\r\n get value() {\r\n return this._copyModel(this.model);\r\n }\r\n\r\n set value(value) {\r\n this.model = this._copyModel(value);\r\n }\r\n\r\n validate(value) {\r\n switch (Value.getType(value)) {\r\n case Cell.Types.Null:\r\n case Cell.Types.String:\r\n case Cell.Types.Number:\r\n case Cell.Types.Date:\r\n break;\r\n case Cell.Types.Hyperlink:\r\n case Cell.Types.Formula:\r\n default:\r\n throw new Error('Cannot process that type of result value');\r\n }\r\n }\r\n\r\n get dependencies() {\r\n // find all the ranges and cells mentioned in the formula\r\n const ranges = this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}:[A-Z]{1,3}\\d{1,4}/g);\r\n const cells = this.formula\r\n .replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}:[A-Z]{1,3}\\d{1,4}/g, '')\r\n .match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}/g);\r\n return {\r\n ranges,\r\n cells,\r\n };\r\n }\r\n\r\n get formula() {\r\n return this.model.formula || this._getTranslatedFormula();\r\n }\r\n\r\n set formula(value) {\r\n this.model.formula = value;\r\n }\r\n\r\n get formulaType() {\r\n if (this.model.formula) {\r\n return Enums.FormulaType.Master;\r\n }\r\n if (this.model.sharedFormula) {\r\n return Enums.FormulaType.Shared;\r\n }\r\n return Enums.FormulaType.None;\r\n }\r\n\r\n get result() {\r\n return this.model.result;\r\n }\r\n\r\n set result(value) {\r\n this.model.result = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Formula;\r\n }\r\n\r\n get effectiveType() {\r\n const v = this.model.result;\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 (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\r\n return Enums.ValueType.Null;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n _getTranslatedFormula() {\r\n if (!this._translatedFormula && this.model.sharedFormula) {\r\n const {worksheet} = this.cell;\r\n const master = worksheet.findCell(this.model.sharedFormula);\r\n this._translatedFormula =\r\n master && slideFormula(master.formula, master.address, this.model.address);\r\n }\r\n return this._translatedFormula;\r\n }\r\n\r\n toCsvString() {\r\n return `${this.model.result || ''}`;\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.result ? this.model.result.toString() : '';\r\n }\r\n}\r\n\r\nclass SharedStringValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.SharedString,\r\n value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.value;\r\n }\r\n\r\n set value(value) {\r\n this.model.value = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.SharedString;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.SharedString;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return this.model.value.toString();\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.value.toString();\r\n }\r\n}\r\n\r\nclass BooleanValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Boolean,\r\n value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.value;\r\n }\r\n\r\n set value(value) {\r\n this.model.value = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Boolean;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.Boolean;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return this.model.value ? 1 : 0;\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.value.toString();\r\n }\r\n}\r\n\r\nclass ErrorValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.Error,\r\n value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.value;\r\n }\r\n\r\n set value(value) {\r\n this.model.value = value;\r\n }\r\n\r\n get type() {\r\n return Cell.Types.Error;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.Error;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return this.toString();\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.value.error.toString();\r\n }\r\n}\r\n\r\nclass JSONValue {\r\n constructor(cell, value) {\r\n this.model = {\r\n address: cell.address,\r\n type: Cell.Types.String,\r\n value: JSON.stringify(value),\r\n rawValue: value,\r\n };\r\n }\r\n\r\n get value() {\r\n return this.model.rawValue;\r\n }\r\n\r\n set value(value) {\r\n this.model.rawValue = value;\r\n this.model.value = JSON.stringify(value);\r\n }\r\n\r\n get type() {\r\n return Cell.Types.String;\r\n }\r\n\r\n get effectiveType() {\r\n return Cell.Types.String;\r\n }\r\n\r\n get address() {\r\n return this.model.address;\r\n }\r\n\r\n set address(value) {\r\n this.model.address = value;\r\n }\r\n\r\n toCsvString() {\r\n return this.model.value;\r\n }\r\n\r\n release() {}\r\n\r\n toString() {\r\n return this.model.value;\r\n }\r\n}\r\n\r\n// Value is a place to hold common static Value type functions\r\nconst Value = {\r\n getType(value) {\r\n if (value === null || value === undefined) {\r\n return Cell.Types.Null;\r\n }\r\n if (value instanceof String || typeof value === 'string') {\r\n return Cell.Types.String;\r\n }\r\n if (typeof value === 'number') {\r\n return Cell.Types.Number;\r\n }\r\n if (typeof value === 'boolean') {\r\n return Cell.Types.Boolean;\r\n }\r\n if (value instanceof Date) {\r\n return Cell.Types.Date;\r\n }\r\n if (value.text && value.hyperlink) {\r\n return Cell.Types.Hyperlink;\r\n }\r\n if (value.formula || value.sharedFormula) {\r\n return Cell.Types.Formula;\r\n }\r\n if (value.richText) {\r\n return Cell.Types.RichText;\r\n }\r\n if (value.sharedString) {\r\n return Cell.Types.SharedString;\r\n }\r\n if (value.error) {\r\n return Cell.Types.Error;\r\n }\r\n return Cell.Types.JSON;\r\n },\r\n\r\n // map valueType to constructor\r\n types: [\r\n {t: Cell.Types.Null, f: NullValue},\r\n {t: Cell.Types.Number, f: NumberValue},\r\n {t: Cell.Types.String, f: StringValue},\r\n {t: Cell.Types.Date, f: DateValue},\r\n {t: Cell.Types.Hyperlink, f: HyperlinkValue},\r\n {t: Cell.Types.Formula, f: FormulaValue},\r\n {t: Cell.Types.Merge, f: MergeValue},\r\n {t: Cell.Types.JSON, f: JSONValue},\r\n {t: Cell.Types.SharedString, f: SharedStringValue},\r\n {t: Cell.Types.RichText, f: RichTextValue},\r\n {t: Cell.Types.Boolean, f: BooleanValue},\r\n {t: Cell.Types.Error, f: ErrorValue},\r\n ].reduce((p, t) => {\r\n p[t.t] = t.f;\r\n return p;\r\n }, []),\r\n\r\n create(type, cell, value) {\r\n const T = this.types[type];\r\n if (!T) {\r\n throw new Error(`Could not create Value of type ${type}`);\r\n }\r\n return new T(cell, value);\r\n },\r\n};\r\n\r\nmodule.exports = Cell;\r\n","'use strict';\r\n\r\nconst _ = require('../utils/under-dash');\r\n\r\nconst Enums = require('./enums');\r\nconst colCache = require('../utils/col-cache');\r\n\r\nconst DEFAULT_COLUMN_WIDTH = 9;\r\n\r\n// Column defines the column properties for 1 column.\r\n// This includes header rows, widths, key, (style), etc.\r\n// Worksheet will condense the columns as appropriate during serialization\r\nclass Column {\r\n constructor(worksheet, number, defn) {\r\n this._worksheet = worksheet;\r\n this._number = number;\r\n if (defn !== false) {\r\n // sometimes defn will follow\r\n this.defn = defn;\r\n }\r\n }\r\n\r\n get number() {\r\n return this._number;\r\n }\r\n\r\n get worksheet() {\r\n return this._worksheet;\r\n }\r\n\r\n get letter() {\r\n return colCache.n2l(this._number);\r\n }\r\n\r\n get isCustomWidth() {\r\n return this.width !== undefined && this.width !== DEFAULT_COLUMN_WIDTH;\r\n }\r\n\r\n get defn() {\r\n return {\r\n header: this._header,\r\n key: this.key,\r\n width: this.width,\r\n style: this.style,\r\n hidden: this.hidden,\r\n outlineLevel: this.outlineLevel,\r\n };\r\n }\r\n\r\n set defn(value) {\r\n if (value) {\r\n this.key = value.key;\r\n this.width = value.width !== undefined ? value.width : DEFAULT_COLUMN_WIDTH;\r\n this.outlineLevel = value.outlineLevel;\r\n if (value.style) {\r\n this.style = value.style;\r\n } else {\r\n this.style = {};\r\n }\r\n\r\n // headers must be set after style\r\n this.header = value.header;\r\n this._hidden = !!value.hidden;\r\n } else {\r\n delete this._header;\r\n delete this._key;\r\n delete this.width;\r\n this.style = {};\r\n this.outlineLevel = 0;\r\n }\r\n }\r\n\r\n get headers() {\r\n return this._header && this._header instanceof Array ? this._header : [this._header];\r\n }\r\n\r\n get header() {\r\n return this._header;\r\n }\r\n\r\n set header(value) {\r\n if (value !== undefined) {\r\n this._header = value;\r\n this.headers.forEach((text, index) => {\r\n this._worksheet.getCell(index + 1, this.number).value = text;\r\n });\r\n } else {\r\n this._header = undefined;\r\n }\r\n }\r\n\r\n get key() {\r\n return this._key;\r\n }\r\n\r\n set key(value) {\r\n const column = this._key && this._worksheet.getColumnKey(this._key);\r\n if (column === this) {\r\n this._worksheet.deleteColumnKey(this._key);\r\n }\r\n\r\n this._key = value;\r\n if (value) {\r\n this._worksheet.setColumnKey(this._key, this);\r\n }\r\n }\r\n\r\n get hidden() {\r\n return !!this._hidden;\r\n }\r\n\r\n set hidden(value) {\r\n this._hidden = value;\r\n }\r\n\r\n get outlineLevel() {\r\n return this._outlineLevel || 0;\r\n }\r\n\r\n set outlineLevel(value) {\r\n this._outlineLevel = value;\r\n }\r\n\r\n get collapsed() {\r\n return !!(\r\n this._outlineLevel && this._outlineLevel >= this._worksheet.properties.outlineLevelCol\r\n );\r\n }\r\n\r\n toString() {\r\n return JSON.stringify({\r\n key: this.key,\r\n width: this.width,\r\n headers: this.headers.length ? this.headers : undefined,\r\n });\r\n }\r\n\r\n equivalentTo(other) {\r\n return (\r\n this.width === other.width &&\r\n this.hidden === other.hidden &&\r\n this.outlineLevel === other.outlineLevel &&\r\n _.isEqual(this.style, other.style)\r\n );\r\n }\r\n\r\n get isDefault() {\r\n if (this.isCustomWidth) {\r\n return false;\r\n }\r\n if (this.hidden) {\r\n return false;\r\n }\r\n if (this.outlineLevel) {\r\n return false;\r\n }\r\n const s = this.style;\r\n if (s && (s.font || s.numFmt || s.alignment || s.border || s.fill || s.protection)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n get headerCount() {\r\n return this.headers.length;\r\n }\r\n\r\n eachCell(options, iteratee) {\r\n const colNumber = this.number;\r\n if (!iteratee) {\r\n iteratee = options;\r\n options = null;\r\n }\r\n this._worksheet.eachRow(options, (row, rowNumber) => {\r\n iteratee(row.getCell(colNumber), rowNumber);\r\n });\r\n }\r\n\r\n get values() {\r\n const v = [];\r\n this.eachCell((cell, rowNumber) => {\r\n if (cell && cell.type !== Enums.ValueType.Null) {\r\n v[rowNumber] = cell.value;\r\n }\r\n });\r\n return v;\r\n }\r\n\r\n set values(v) {\r\n if (!v) {\r\n return;\r\n }\r\n const colNumber = this.number;\r\n let offset = 0;\r\n if (v.hasOwnProperty('0')) {\r\n // assume contiguous array, start at row 1\r\n offset = 1;\r\n }\r\n v.forEach((value, index) => {\r\n this._worksheet.getCell(index + offset, colNumber).value = value;\r\n });\r\n }\r\n\r\n // =========================================================================\r\n // styles\r\n _applyStyle(name, value) {\r\n this.style[name] = value;\r\n this.eachCell(cell => {\r\n cell[name] = value;\r\n });\r\n return value;\r\n }\r\n\r\n get numFmt() {\r\n return this.style.numFmt;\r\n }\r\n\r\n set numFmt(value) {\r\n this._applyStyle('numFmt', value);\r\n }\r\n\r\n get font() {\r\n return this.style.font;\r\n }\r\n\r\n set font(value) {\r\n this._applyStyle('font', value);\r\n }\r\n\r\n get alignment() {\r\n return this.style.alignment;\r\n }\r\n\r\n set alignment(value) {\r\n this._applyStyle('alignment', value);\r\n }\r\n\r\n get protection() {\r\n return this.style.protection;\r\n }\r\n\r\n set protection(value) {\r\n this._applyStyle('protection', value);\r\n }\r\n\r\n get border() {\r\n return this.style.border;\r\n }\r\n\r\n set border(value) {\r\n this._applyStyle('border', value);\r\n }\r\n\r\n get fill() {\r\n return this.style.fill;\r\n }\r\n\r\n set fill(value) {\r\n this._applyStyle('fill', value);\r\n }\r\n\r\n // =============================================================================\r\n // static functions\r\n\r\n static toModel(columns) {\r\n // Convert array of Column into compressed list cols\r\n const cols = [];\r\n let col = null;\r\n if (columns) {\r\n columns.forEach((column, index) => {\r\n if (column.isDefault) {\r\n if (col) {\r\n col = null;\r\n }\r\n } else if (!col || !column.equivalentTo(col)) {\r\n col = {\r\n min: index + 1,\r\n max: index + 1,\r\n width: column.width !== undefined ? column.width : DEFAULT_COLUMN_WIDTH,\r\n style: column.style,\r\n isCustomWidth: column.isCustomWidth,\r\n hidden: column.hidden,\r\n outlineLevel: column.outlineLevel,\r\n collapsed: column.collapsed,\r\n };\r\n cols.push(col);\r\n } else {\r\n col.max = index + 1;\r\n }\r\n });\r\n }\r\n return cols.length ? cols : undefined;\r\n }\r\n\r\n static fromModel(worksheet, cols) {\r\n cols = cols || [];\r\n const columns = [];\r\n let count = 1;\r\n let index = 0;\r\n while (index < cols.length) {\r\n const col = cols[index++];\r\n while (count < col.min) {\r\n columns.push(new Column(worksheet, count++));\r\n }\r\n while (count <= col.max) {\r\n columns.push(new Column(worksheet, count++, col));\r\n }\r\n }\r\n return columns.length ? columns : null;\r\n }\r\n}\r\n\r\nmodule.exports = Column;\r\n","class DataValidations {\r\n constructor(model) {\r\n this.model = model || {};\r\n }\r\n\r\n add(address, validation) {\r\n return (this.model[address] = validation);\r\n }\r\n\r\n find(address) {\r\n return this.model[address];\r\n }\r\n\r\n remove(address) {\r\n this.model[address] = undefined;\r\n }\r\n}\r\n\r\nmodule.exports = DataValidations;\r\n","'use strict';\r\n\r\nconst _ = require('../utils/under-dash');\r\nconst colCache = require('../utils/col-cache');\r\nconst CellMatrix = require('../utils/cell-matrix');\r\nconst Range = require('./range');\r\n\r\nconst rangeRegexp = /[$](\\w+)[$](\\d+)(:[$](\\w+)[$](\\d+))?/;\r\n\r\nclass DefinedNames {\r\n constructor() {\r\n this.matrixMap = {};\r\n }\r\n\r\n getMatrix(name) {\r\n const matrix = this.matrixMap[name] || (this.matrixMap[name] = new CellMatrix());\r\n return matrix;\r\n }\r\n\r\n // add a name to a cell. locStr in the form SheetName!$col$row or SheetName!$c1$r1:$c2:$r2\r\n add(locStr, name) {\r\n const location = colCache.decodeEx(locStr);\r\n this.addEx(location, name);\r\n }\r\n\r\n addEx(location, name) {\r\n const matrix = this.getMatrix(name);\r\n if (location.top) {\r\n for (let col = location.left; col <= location.right; col++) {\r\n for (let row = location.top; row <= location.bottom; row++) {\r\n const address = {\r\n sheetName: location.sheetName,\r\n address: colCache.n2l(col) + row,\r\n row,\r\n col,\r\n };\r\n\r\n matrix.addCellEx(address);\r\n }\r\n }\r\n } else {\r\n matrix.addCellEx(location);\r\n }\r\n }\r\n\r\n remove(locStr, name) {\r\n const location = colCache.decodeEx(locStr);\r\n this.removeEx(location, name);\r\n }\r\n\r\n removeEx(location, name) {\r\n const matrix = this.getMatrix(name);\r\n matrix.removeCellEx(location);\r\n }\r\n\r\n removeAllNames(location) {\r\n _.each(this.matrixMap, matrix => {\r\n matrix.removeCellEx(location);\r\n });\r\n }\r\n\r\n forEach(callback) {\r\n _.each(this.matrixMap, (matrix, name) => {\r\n matrix.forEach(cell => {\r\n callback(name, cell);\r\n });\r\n });\r\n }\r\n\r\n // get all the names of a cell\r\n getNames(addressStr) {\r\n return this.getNamesEx(colCache.decodeEx(addressStr));\r\n }\r\n\r\n getNamesEx(address) {\r\n return _.map(this.matrixMap, (matrix, name) => matrix.findCellEx(address) && name).filter(\r\n Boolean\r\n );\r\n }\r\n\r\n _explore(matrix, cell) {\r\n cell.mark = false;\r\n const {sheetName} = cell;\r\n\r\n const range = new Range(cell.row, cell.col, cell.row, cell.col, sheetName);\r\n let x;\r\n let y;\r\n\r\n // grow vertical - only one col to worry about\r\n function vGrow(yy, edge) {\r\n const c = matrix.findCellAt(sheetName, yy, cell.col);\r\n if (!c || !c.mark) {\r\n return false;\r\n }\r\n range[edge] = yy;\r\n c.mark = false;\r\n return true;\r\n }\r\n for (y = cell.row - 1; vGrow(y, 'top'); y--);\r\n for (y = cell.row + 1; vGrow(y, 'bottom'); y++);\r\n\r\n // grow horizontal - ensure all rows can grow\r\n function hGrow(xx, edge) {\r\n const cells = [];\r\n for (y = range.top; y <= range.bottom; y++) {\r\n const c = matrix.findCellAt(sheetName, y, xx);\r\n if (c && c.mark) {\r\n cells.push(c);\r\n } else {\r\n return false;\r\n }\r\n }\r\n range[edge] = xx;\r\n for (let i = 0; i < cells.length; i++) {\r\n cells[i].mark = false;\r\n }\r\n return true;\r\n }\r\n for (x = cell.col - 1; hGrow(x, 'left'); x--);\r\n for (x = cell.col + 1; hGrow(x, 'right'); x++);\r\n\r\n return range;\r\n }\r\n\r\n getRanges(name, matrix) {\r\n matrix = matrix || this.matrixMap[name];\r\n\r\n if (!matrix) {\r\n return {name, ranges: []};\r\n }\r\n\r\n // mark and sweep!\r\n matrix.forEach(cell => {\r\n cell.mark = true;\r\n });\r\n const ranges = matrix\r\n .map(cell => cell.mark && this._explore(matrix, cell))\r\n .filter(Boolean)\r\n .map(range => range.$shortRange);\r\n\r\n return {\r\n name,\r\n ranges,\r\n };\r\n }\r\n\r\n normaliseMatrix(matrix, sheetName) {\r\n // some of the cells might have shifted on specified sheet\r\n // need to reassign rows, cols\r\n matrix.forEachInSheet(sheetName, (cell, row, col) => {\r\n if (cell) {\r\n if (cell.row !== row || cell.col !== col) {\r\n cell.row = row;\r\n cell.col = col;\r\n cell.address = colCache.n2l(col) + row;\r\n }\r\n }\r\n });\r\n }\r\n\r\n spliceRows(sheetName, start, numDelete, numInsert) {\r\n _.each(this.matrixMap, matrix => {\r\n matrix.spliceRows(sheetName, start, numDelete, numInsert);\r\n this.normaliseMatrix(matrix, sheetName);\r\n });\r\n }\r\n\r\n spliceColumns(sheetName, start, numDelete, numInsert) {\r\n _.each(this.matrixMap, matrix => {\r\n matrix.spliceColumns(sheetName, start, numDelete, numInsert);\r\n this.normaliseMatrix(matrix, sheetName);\r\n });\r\n }\r\n\r\n get model() {\r\n // To get names per cell - just iterate over all names finding cells if they exist\r\n return _.map(this.matrixMap, (matrix, name) => this.getRanges(name, matrix)).filter(\r\n definedName => definedName.ranges.length\r\n );\r\n }\r\n\r\n set model(value) {\r\n // value is [ { name, ranges }, ... ]\r\n const matrixMap = (this.matrixMap = {});\r\n value.forEach(definedName => {\r\n const matrix = (matrixMap[definedName.name] = new CellMatrix());\r\n definedName.ranges.forEach(rangeStr => {\r\n if (rangeRegexp.test(rangeStr.split('!').pop() || '')) {\r\n matrix.addCell(rangeStr);\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\nmodule.exports = DefinedNames;\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n ValueType: {\r\n Null: 0,\r\n Merge: 1,\r\n Number: 2,\r\n String: 3,\r\n Date: 4,\r\n Hyperlink: 5,\r\n Formula: 6,\r\n SharedString: 7,\r\n RichText: 8,\r\n Boolean: 9,\r\n Error: 10,\r\n },\r\n FormulaType: {\r\n None: 0,\r\n Master: 1,\r\n Shared: 2,\r\n },\r\n RelationshipType: {\r\n None: 0,\r\n OfficeDocument: 1,\r\n Worksheet: 2,\r\n CalcChain: 3,\r\n SharedStrings: 4,\r\n Styles: 5,\r\n Theme: 6,\r\n Hyperlink: 7,\r\n },\r\n DocumentType: {\r\n Xlsx: 1,\r\n },\r\n ReadingOrder: {\r\n LeftToRight: 1,\r\n RightToLeft: 2,\r\n },\r\n ErrorValue: {\r\n NotApplicable: '#N/A',\r\n Ref: '#REF!',\r\n Name: '#NAME?',\r\n DivZero: '#DIV/0!',\r\n Null: '#NULL!',\r\n Value: '#VALUE!',\r\n Num: '#NUM!',\r\n },\r\n};\r\n","const colCache = require('../utils/col-cache');\r\nconst Anchor = require('./anchor');\r\n\r\nclass Image {\r\n constructor(worksheet, model) {\r\n this.worksheet = worksheet;\r\n this.model = model;\r\n }\r\n\r\n get model() {\r\n switch (this.type) {\r\n case 'background':\r\n return {\r\n type: this.type,\r\n imageId: this.imageId,\r\n };\r\n case 'image':\r\n return {\r\n type: this.type,\r\n imageId: this.imageId,\r\n hyperlinks: this.range.hyperlinks,\r\n range: {\r\n tl: this.range.tl.model,\r\n br: this.range.br && this.range.br.model,\r\n ext: this.range.ext,\r\n editAs: this.range.editAs,\r\n },\r\n };\r\n default:\r\n throw new Error('Invalid Image Type');\r\n }\r\n }\r\n\r\n set model({type, imageId, range, hyperlinks}) {\r\n this.type = type;\r\n this.imageId = imageId;\r\n\r\n if (type === 'image') {\r\n if (typeof range === 'string') {\r\n const decoded = colCache.decode(range);\r\n this.range = {\r\n tl: new Anchor(this.worksheet, {col: decoded.left, row: decoded.top}, -1),\r\n br: new Anchor(this.worksheet, {col: decoded.right, row: decoded.bottom}, 0),\r\n editAs: 'oneCell',\r\n };\r\n } else {\r\n this.range = {\r\n tl: new Anchor(this.worksheet, range.tl, 0),\r\n br: range.br && new Anchor(this.worksheet, range.br, 0),\r\n ext: range.ext,\r\n editAs: range.editAs,\r\n hyperlinks: hyperlinks || range.hyperlinks,\r\n };\r\n }\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = Image;\r\n","const _ = require('../utils/under-dash');\r\n\r\nclass Note {\r\n constructor(note) {\r\n this.note = note;\r\n }\r\n\r\n get model() {\r\n let value = null;\r\n switch (typeof this.note) {\r\n case 'string':\r\n value = {\r\n type: 'note',\r\n note: {\r\n texts: [\r\n {\r\n text: this.note,\r\n },\r\n ],\r\n },\r\n };\r\n break;\r\n default:\r\n value = {\r\n type: 'note',\r\n note: this.note,\r\n };\r\n break;\r\n }\r\n // Suitable for all cell comments\r\n return _.deepMerge({}, Note.DEFAULT_CONFIGS, value);\r\n }\r\n\r\n set model(value) {\r\n const {note} = value;\r\n const {texts} = note;\r\n if (texts.length === 1 && Object.keys(texts[0]).length === 1) {\r\n this.note = texts[0].text;\r\n } else {\r\n this.note = note;\r\n }\r\n }\r\n\r\n static fromModel(model) {\r\n const note = new Note();\r\n note.model = model;\r\n return note;\r\n }\r\n}\r\n\r\nNote.DEFAULT_CONFIGS = {\r\n note: {\r\n margins: {\r\n insetmode: 'auto',\r\n inset: [0.13, 0.13, 0.25, 0.25],\r\n },\r\n protection: {\r\n locked: 'True',\r\n lockText: 'True',\r\n },\r\n editAs: 'absolute',\r\n },\r\n};\r\n\r\nmodule.exports = Note;\r\n","const colCache = require('../utils/col-cache');\r\n\r\n// used by worksheet to calculate sheet dimensions\r\nclass Range {\r\n constructor() {\r\n this.decode(arguments);\r\n }\r\n\r\n setTLBR(t, l, b, r, s) {\r\n if (arguments.length < 4) {\r\n // setTLBR(tl, br, s)\r\n const tl = colCache.decodeAddress(t);\r\n const br = colCache.decodeAddress(l);\r\n this.model = {\r\n top: Math.min(tl.row, br.row),\r\n left: Math.min(tl.col, br.col),\r\n bottom: Math.max(tl.row, br.row),\r\n right: Math.max(tl.col, br.col),\r\n sheetName: b,\r\n };\r\n\r\n this.setTLBR(tl.row, tl.col, br.row, br.col, s);\r\n } else {\r\n // setTLBR(t, l, b, r, s)\r\n this.model = {\r\n top: Math.min(t, b),\r\n left: Math.min(l, r),\r\n bottom: Math.max(t, b),\r\n right: Math.max(l, r),\r\n sheetName: s,\r\n };\r\n }\r\n }\r\n\r\n decode(argv) {\r\n switch (argv.length) {\r\n case 5: // [t,l,b,r,s]\r\n this.setTLBR(argv[0], argv[1], argv[2], argv[3], argv[4]);\r\n break;\r\n case 4: // [t,l,b,r]\r\n this.setTLBR(argv[0], argv[1], argv[2], argv[3]);\r\n break;\r\n\r\n case 3: // [tl,br,s]\r\n this.setTLBR(argv[0], argv[1], argv[2]);\r\n break;\r\n case 2: // [tl,br]\r\n this.setTLBR(argv[0], argv[1]);\r\n break;\r\n\r\n case 1: {\r\n const value = argv[0];\r\n if (value instanceof Range) {\r\n // copy constructor\r\n this.model = {\r\n top: value.model.top,\r\n left: value.model.left,\r\n bottom: value.model.bottom,\r\n right: value.model.right,\r\n sheetName: value.sheetName,\r\n };\r\n } else if (value instanceof Array) {\r\n // an arguments array\r\n this.decode(value);\r\n } else if (value.top && value.left && value.bottom && value.right) {\r\n // a model\r\n this.model = {\r\n top: value.top,\r\n left: value.left,\r\n bottom: value.bottom,\r\n right: value.right,\r\n sheetName: value.sheetName,\r\n };\r\n } else {\r\n // [sheetName!]tl:br\r\n const tlbr = colCache.decodeEx(value);\r\n if (tlbr.top) {\r\n this.model = {\r\n top: tlbr.top,\r\n left: tlbr.left,\r\n bottom: tlbr.bottom,\r\n right: tlbr.right,\r\n sheetName: tlbr.sheetName,\r\n };\r\n } else {\r\n this.model = {\r\n top: tlbr.row,\r\n left: tlbr.col,\r\n bottom: tlbr.row,\r\n right: tlbr.col,\r\n sheetName: tlbr.sheetName,\r\n };\r\n }\r\n }\r\n break;\r\n }\r\n\r\n case 0:\r\n this.model = {\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0,\r\n };\r\n break;\r\n\r\n default:\r\n throw new Error(`Invalid number of arguments to _getDimensions() - ${argv.length}`);\r\n }\r\n }\r\n\r\n get top() {\r\n return this.model.top || 1;\r\n }\r\n\r\n set top(value) {\r\n this.model.top = value;\r\n }\r\n\r\n get left() {\r\n return this.model.left || 1;\r\n }\r\n\r\n set left(value) {\r\n this.model.left = value;\r\n }\r\n\r\n get bottom() {\r\n return this.model.bottom || 1;\r\n }\r\n\r\n set bottom(value) {\r\n this.model.bottom = value;\r\n }\r\n\r\n get right() {\r\n return this.model.right || 1;\r\n }\r\n\r\n set right(value) {\r\n this.model.right = value;\r\n }\r\n\r\n get sheetName() {\r\n return this.model.sheetName;\r\n }\r\n\r\n set sheetName(value) {\r\n this.model.sheetName = value;\r\n }\r\n\r\n get _serialisedSheetName() {\r\n const {sheetName} = this.model;\r\n if (sheetName) {\r\n if (/^[a-zA-Z0-9]*$/.test(sheetName)) {\r\n return `${sheetName}!`;\r\n }\r\n return `'${sheetName}'!`;\r\n }\r\n return '';\r\n }\r\n\r\n expand(top, left, bottom, right) {\r\n if (!this.model.top || top < this.top) this.top = top;\r\n if (!this.model.left || left < this.left) this.left = left;\r\n if (!this.model.bottom || bottom > this.bottom) this.bottom = bottom;\r\n if (!this.model.right || right > this.right) this.right = right;\r\n }\r\n\r\n expandRow(row) {\r\n if (row) {\r\n const {dimensions, number} = row;\r\n if (dimensions) {\r\n this.expand(number, dimensions.min, number, dimensions.max);\r\n }\r\n }\r\n }\r\n\r\n expandToAddress(addressStr) {\r\n const address = colCache.decodeEx(addressStr);\r\n this.expand(address.row, address.col, address.row, address.col);\r\n }\r\n\r\n get tl() {\r\n return colCache.n2l(this.left) + this.top;\r\n }\r\n\r\n get $t$l() {\r\n return `$${colCache.n2l(this.left)}$${this.top}`;\r\n }\r\n\r\n get br() {\r\n return colCache.n2l(this.right) + this.bottom;\r\n }\r\n\r\n get $b$r() {\r\n return `$${colCache.n2l(this.right)}$${this.bottom}`;\r\n }\r\n\r\n get range() {\r\n return `${this._serialisedSheetName + this.tl}:${this.br}`;\r\n }\r\n\r\n get $range() {\r\n return `${this._serialisedSheetName + this.$t$l}:${this.$b$r}`;\r\n }\r\n\r\n get shortRange() {\r\n return this.count > 1 ? this.range : this._serialisedSheetName + this.tl;\r\n }\r\n\r\n get $shortRange() {\r\n return this.count > 1 ? this.$range : this._serialisedSheetName + this.$t$l;\r\n }\r\n\r\n get count() {\r\n return (1 + this.bottom - this.top) * (1 + this.right - this.left);\r\n }\r\n\r\n toString() {\r\n return this.range;\r\n }\r\n\r\n intersects(other) {\r\n if (other.sheetName && this.sheetName && other.sheetName !== this.sheetName) return false;\r\n if (other.bottom < this.top) return false;\r\n if (other.top > this.bottom) return false;\r\n if (other.right < this.left) return false;\r\n if (other.left > this.right) return false;\r\n return true;\r\n }\r\n\r\n contains(addressStr) {\r\n const address = colCache.decodeEx(addressStr);\r\n return this.containsEx(address);\r\n }\r\n\r\n containsEx(address) {\r\n if (address.sheetName && this.sheetName && address.sheetName !== this.sheetName) return false;\r\n return (\r\n address.row >= this.top &&\r\n address.row <= this.bottom &&\r\n address.col >= this.left &&\r\n address.col <= this.right\r\n );\r\n }\r\n\r\n forEachAddress(cb) {\r\n for (let col = this.left; col <= this.right; col++) {\r\n for (let row = this.top; row <= this.bottom; row++) {\r\n cb(colCache.encodeAddress(row, col), row, col);\r\n }\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = Range;\r\n","'use strict';\r\n\r\nconst _ = require('../utils/under-dash');\r\n\r\nconst Enums = require('./enums');\r\nconst colCache = require('../utils/col-cache');\r\nconst Cell = require('./cell');\r\n\r\nclass Row {\r\n constructor(worksheet, number) {\r\n this._worksheet = worksheet;\r\n this._number = number;\r\n this._cells = [];\r\n this.style = {};\r\n this.outlineLevel = 0;\r\n }\r\n\r\n // return the row number\r\n get number() {\r\n return this._number;\r\n }\r\n\r\n get worksheet() {\r\n return this._worksheet;\r\n }\r\n\r\n // Inform Streaming Writer that this row (and all rows before it) are complete\r\n // and ready to write. Has no effect on Worksheet document\r\n commit() {\r\n this._worksheet._commitRow(this); // eslint-disable-line no-underscore-dangle\r\n }\r\n\r\n // helps GC by breaking cyclic references\r\n destroy() {\r\n delete this._worksheet;\r\n delete this._cells;\r\n delete this.style;\r\n }\r\n\r\n findCell(colNumber) {\r\n return this._cells[colNumber - 1];\r\n }\r\n\r\n // given {address, row, col}, find or create new cell\r\n getCellEx(address) {\r\n let cell = this._cells[address.col - 1];\r\n if (!cell) {\r\n const column = this._worksheet.getColumn(address.col);\r\n cell = new Cell(this, column, address.address);\r\n this._cells[address.col - 1] = cell;\r\n }\r\n return cell;\r\n }\r\n\r\n // get cell by key, letter or column number\r\n getCell(col) {\r\n if (typeof col === 'string') {\r\n // is it a key?\r\n const column = this._worksheet.getColumnKey(col);\r\n if (column) {\r\n col = column.number;\r\n } else {\r\n col = colCache.l2n(col);\r\n }\r\n }\r\n return (\r\n this._cells[col - 1] ||\r\n this.getCellEx({\r\n address: colCache.encodeAddress(this._number, col),\r\n row: this._number,\r\n col,\r\n })\r\n );\r\n }\r\n\r\n // remove cell(s) and shift all higher cells down by count\r\n splice(start, count, ...inserts) {\r\n const nKeep = start + count;\r\n const nExpand = inserts.length - count;\r\n const nEnd = this._cells.length;\r\n let i;\r\n let cSrc;\r\n let cDst;\r\n\r\n if (nExpand < 0) {\r\n // remove cells\r\n for (i = start + inserts.length; i <= nEnd; i++) {\r\n cDst = this._cells[i - 1];\r\n cSrc = this._cells[i - nExpand - 1];\r\n if (cSrc) {\r\n cDst = this.getCell(i);\r\n cDst.value = cSrc.value;\r\n cDst.style = cSrc.style;\r\n // eslint-disable-next-line no-underscore-dangle\r\n cDst._comment = cSrc._comment;\r\n } else if (cDst) {\r\n cDst.value = null;\r\n cDst.style = {};\r\n // eslint-disable-next-line no-underscore-dangle\r\n cDst._comment = undefined;\r\n }\r\n }\r\n } else if (nExpand > 0) {\r\n // insert new cells\r\n for (i = nEnd; i >= nKeep; i--) {\r\n cSrc = this._cells[i - 1];\r\n if (cSrc) {\r\n cDst = this.getCell(i + nExpand);\r\n cDst.value = cSrc.value;\r\n cDst.style = cSrc.style;\r\n // eslint-disable-next-line no-underscore-dangle\r\n cDst._comment = cSrc._comment;\r\n } else {\r\n this._cells[i + nExpand - 1] = undefined;\r\n }\r\n }\r\n }\r\n\r\n // now add the new values\r\n for (i = 0; i < inserts.length; i++) {\r\n cDst = this.getCell(start + i);\r\n cDst.value = inserts[i];\r\n cDst.style = {};\r\n // eslint-disable-next-line no-underscore-dangle\r\n cDst._comment = undefined;\r\n }\r\n }\r\n\r\n // Iterate over all non-null cells in this row\r\n eachCell(options, iteratee) {\r\n if (!iteratee) {\r\n iteratee = options;\r\n options = null;\r\n }\r\n if (options && options.includeEmpty) {\r\n const n = this._cells.length;\r\n for (let i = 1; i <= n; i++) {\r\n iteratee(this.getCell(i), i);\r\n }\r\n } else {\r\n this._cells.forEach((cell, index) => {\r\n if (cell && cell.type !== Enums.ValueType.Null) {\r\n iteratee(cell, index + 1);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // ===========================================================================\r\n // Page Breaks\r\n addPageBreak(lft, rght) {\r\n const ws = this._worksheet;\r\n const left = Math.max(0, lft - 1) || 0;\r\n const right = Math.max(0, rght - 1) || 16838;\r\n const pb = {\r\n id: this._number,\r\n max: right,\r\n man: 1,\r\n };\r\n if (left) pb.min = left;\r\n\r\n ws.rowBreaks.push(pb);\r\n }\r\n\r\n // return a sparse array of cell values\r\n get values() {\r\n const values = [];\r\n this._cells.forEach(cell => {\r\n if (cell && cell.type !== Enums.ValueType.Null) {\r\n values[cell.col] = cell.value;\r\n }\r\n });\r\n return values;\r\n }\r\n\r\n // set the values by contiguous or sparse array, or by key'd object literal\r\n set values(value) {\r\n // this operation is not additive - any prior cells are removed\r\n this._cells = [];\r\n if (!value) {\r\n // empty row\r\n } else if (value instanceof Array) {\r\n let offset = 0;\r\n if (value.hasOwnProperty('0')) {\r\n // contiguous array - start at column 1\r\n offset = 1;\r\n }\r\n value.forEach((item, index) => {\r\n if (item !== undefined) {\r\n this.getCellEx({\r\n address: colCache.encodeAddress(this._number, index + offset),\r\n row: this._number,\r\n col: index + offset,\r\n }).value = item;\r\n }\r\n });\r\n } else {\r\n // assume object with column keys\r\n this._worksheet.eachColumnKey((column, key) => {\r\n if (value[key] !== undefined) {\r\n this.getCellEx({\r\n address: colCache.encodeAddress(this._number, column.number),\r\n row: this._number,\r\n col: column.number,\r\n }).value = value[key];\r\n }\r\n });\r\n }\r\n }\r\n\r\n // returns true if the row includes at least one cell with a value\r\n get hasValues() {\r\n return _.some(this._cells, cell => cell && cell.type !== Enums.ValueType.Null);\r\n }\r\n\r\n get cellCount() {\r\n return this._cells.length;\r\n }\r\n\r\n get actualCellCount() {\r\n let count = 0;\r\n this.eachCell(() => {\r\n count++;\r\n });\r\n return count;\r\n }\r\n\r\n // get the min and max column number for the non-null cells in this row or null\r\n get dimensions() {\r\n let min = 0;\r\n let max = 0;\r\n this._cells.forEach(cell => {\r\n if (cell && cell.type !== Enums.ValueType.Null) {\r\n if (!min || min > cell.col) {\r\n min = cell.col;\r\n }\r\n if (max < cell.col) {\r\n max = cell.col;\r\n }\r\n }\r\n });\r\n return min > 0\r\n ? {\r\n min,\r\n max,\r\n }\r\n : null;\r\n }\r\n\r\n // =========================================================================\r\n // styles\r\n _applyStyle(name, value) {\r\n this.style[name] = value;\r\n this._cells.forEach(cell => {\r\n if (cell) {\r\n cell[name] = value;\r\n }\r\n });\r\n return value;\r\n }\r\n\r\n get numFmt() {\r\n return this.style.numFmt;\r\n }\r\n\r\n set numFmt(value) {\r\n this._applyStyle('numFmt', value);\r\n }\r\n\r\n get font() {\r\n return this.style.font;\r\n }\r\n\r\n set font(value) {\r\n this._applyStyle('font', value);\r\n }\r\n\r\n get alignment() {\r\n return this.style.alignment;\r\n }\r\n\r\n set alignment(value) {\r\n this._applyStyle('alignment', value);\r\n }\r\n\r\n get protection() {\r\n return this.style.protection;\r\n }\r\n\r\n set protection(value) {\r\n this._applyStyle('protection', value);\r\n }\r\n\r\n get border() {\r\n return this.style.border;\r\n }\r\n\r\n set border(value) {\r\n this._applyStyle('border', value);\r\n }\r\n\r\n get fill() {\r\n return this.style.fill;\r\n }\r\n\r\n set fill(value) {\r\n this._applyStyle('fill', value);\r\n }\r\n\r\n get hidden() {\r\n return !!this._hidden;\r\n }\r\n\r\n set hidden(value) {\r\n this._hidden = value;\r\n }\r\n\r\n get outlineLevel() {\r\n return this._outlineLevel || 0;\r\n }\r\n\r\n set outlineLevel(value) {\r\n this._outlineLevel = value;\r\n }\r\n\r\n get collapsed() {\r\n return !!(\r\n this._outlineLevel && this._outlineLevel >= this._worksheet.properties.outlineLevelRow\r\n );\r\n }\r\n\r\n // =========================================================================\r\n get model() {\r\n const cells = [];\r\n let min = 0;\r\n let max = 0;\r\n this._cells.forEach(cell => {\r\n if (cell) {\r\n const cellModel = cell.model;\r\n if (cellModel) {\r\n if (!min || min > cell.col) {\r\n min = cell.col;\r\n }\r\n if (max < cell.col) {\r\n max = cell.col;\r\n }\r\n cells.push(cellModel);\r\n }\r\n }\r\n });\r\n\r\n return this.height || cells.length\r\n ? {\r\n cells,\r\n number: this.number,\r\n min,\r\n max,\r\n height: this.height,\r\n style: this.style,\r\n hidden: this.hidden,\r\n outlineLevel: this.outlineLevel,\r\n collapsed: this.collapsed,\r\n }\r\n : null;\r\n }\r\n\r\n set model(value) {\r\n if (value.number !== this._number) {\r\n throw new Error('Invalid row number in model');\r\n }\r\n this._cells = [];\r\n let previousAddress;\r\n value.cells.forEach(cellModel => {\r\n switch (cellModel.type) {\r\n case Cell.Types.Merge:\r\n // special case - don't add this types\r\n break;\r\n default: {\r\n let address;\r\n if (cellModel.address) {\r\n address = colCache.decodeAddress(cellModel.address);\r\n } else if (previousAddress) {\r\n // This is a element without an r attribute\r\n // Assume that it's the cell for the next column\r\n const {row} = previousAddress;\r\n const col = previousAddress.col + 1;\r\n address = {\r\n row,\r\n col,\r\n address: colCache.encodeAddress(row, col),\r\n $col$row: `$${colCache.n2l(col)}$${row}`,\r\n };\r\n }\r\n previousAddress = address;\r\n const cell = this.getCellEx(address);\r\n cell.model = cellModel;\r\n break;\r\n }\r\n }\r\n });\r\n\r\n if (value.height) {\r\n this.height = value.height;\r\n } else {\r\n delete this.height;\r\n }\r\n\r\n this.hidden = value.hidden;\r\n this.outlineLevel = value.outlineLevel || 0;\r\n\r\n this.style = (value.style && JSON.parse(JSON.stringify(value.style))) || {};\r\n }\r\n}\r\n\r\nmodule.exports = Row;\r\n","/* eslint-disable max-classes-per-file */\r\nconst colCache = require('../utils/col-cache');\r\n\r\nclass Column {\r\n // wrapper around column model, allowing access and manipulation\r\n constructor(table, column, index) {\r\n this.table = table;\r\n this.column = column;\r\n this.index = index;\r\n }\r\n\r\n _set(name, value) {\r\n this.table.cacheState();\r\n this.column[name] = value;\r\n }\r\n\r\n /* eslint-disable lines-between-class-members */\r\n get name() {\r\n return this.column.name;\r\n }\r\n set name(value) {\r\n this._set('name', value);\r\n }\r\n\r\n get filterButton() {\r\n return this.column.filterButton;\r\n }\r\n set filterButton(value) {\r\n this.column.filterButton = value;\r\n }\r\n\r\n get style() {\r\n return this.column.style;\r\n }\r\n set style(value) {\r\n this.column.style = value;\r\n }\r\n\r\n get totalsRowLabel() {\r\n return this.column.totalsRowLabel;\r\n }\r\n set totalsRowLabel(value) {\r\n this._set('totalsRowLabel', value);\r\n }\r\n\r\n get totalsRowFunction() {\r\n return this.column.totalsRowFunction;\r\n }\r\n set totalsRowFunction(value) {\r\n this._set('totalsRowFunction', value);\r\n }\r\n\r\n get totalsRowResult() {\r\n return this.column.totalsRowResult;\r\n }\r\n set totalsRowResult(value) {\r\n this._set('totalsRowResult', value);\r\n }\r\n\r\n get totalsRowFormula() {\r\n return this.column.totalsRowFormula;\r\n }\r\n set totalsRowFormula(value) {\r\n this._set('totalsRowFormula', value);\r\n }\r\n /* eslint-enable lines-between-class-members */\r\n}\r\n\r\nclass Table {\r\n constructor(worksheet, table) {\r\n this.worksheet = worksheet;\r\n if (table) {\r\n this.table = table;\r\n // check things are ok first\r\n this.validate();\r\n\r\n this.store();\r\n }\r\n }\r\n\r\n getFormula(column) {\r\n // get the correct formula to apply to the totals row\r\n switch (column.totalsRowFunction) {\r\n case 'none':\r\n return null;\r\n case 'average':\r\n return `SUBTOTAL(101,${this.table.name}[${column.name}])`;\r\n case 'countNums':\r\n return `SUBTOTAL(102,${this.table.name}[${column.name}])`;\r\n case 'count':\r\n return `SUBTOTAL(103,${this.table.name}[${column.name}])`;\r\n case 'max':\r\n return `SUBTOTAL(104,${this.table.name}[${column.name}])`;\r\n case 'min':\r\n return `SUBTOTAL(105,${this.table.name}[${column.name}])`;\r\n case 'stdDev':\r\n return `SUBTOTAL(106,${this.table.name}[${column.name}])`;\r\n case 'var':\r\n return `SUBTOTAL(107,${this.table.name}[${column.name}])`;\r\n case 'sum':\r\n return `SUBTOTAL(109,${this.table.name}[${column.name}])`;\r\n case 'custom':\r\n return column.totalsRowFormula;\r\n default:\r\n throw new Error(`Invalid Totals Row Function: ${column.totalsRowFunction}`);\r\n }\r\n }\r\n\r\n get width() {\r\n // width of the table\r\n return this.table.columns.length;\r\n }\r\n\r\n get height() {\r\n // height of the table data\r\n return this.table.rows.length;\r\n }\r\n\r\n get filterHeight() {\r\n // height of the table data plus optional header row\r\n return this.height + (this.table.headerRow ? 1 : 0);\r\n }\r\n\r\n get tableHeight() {\r\n // full height of the table on the sheet\r\n return this.filterHeight + (this.table.totalsRow ? 1 : 0);\r\n }\r\n\r\n validate() {\r\n const {table} = this;\r\n // set defaults and check is valid\r\n const assign = (o, name, dflt) => {\r\n if (o[name] === undefined) {\r\n o[name] = dflt;\r\n }\r\n };\r\n assign(table, 'headerRow', true);\r\n assign(table, 'totalsRow', false);\r\n\r\n assign(table, 'style', {});\r\n assign(table.style, 'theme', 'TableStyleMedium2');\r\n assign(table.style, 'showFirstColumn', false);\r\n assign(table.style, 'showLastColumn', false);\r\n assign(table.style, 'showRowStripes', false);\r\n assign(table.style, 'showColumnStripes', false);\r\n\r\n const assert = (test, message) => {\r\n if (!test) {\r\n throw new Error(message);\r\n }\r\n };\r\n assert(table.ref, 'Table must have ref');\r\n assert(table.columns, 'Table must have column definitions');\r\n assert(table.rows, 'Table must have row definitions');\r\n\r\n table.tl = colCache.decodeAddress(table.ref);\r\n const {row, col} = table.tl;\r\n assert(row > 0, 'Table must be on valid row');\r\n assert(col > 0, 'Table must be on valid col');\r\n\r\n const {width, filterHeight, tableHeight} = this;\r\n\r\n // autoFilterRef is a range that includes optional headers only\r\n table.autoFilterRef = colCache.encode(row, col, row + filterHeight - 1, col + width - 1);\r\n\r\n // tableRef is a range that includes optional headers and totals\r\n table.tableRef = colCache.encode(row, col, row + tableHeight - 1, col + width - 1);\r\n\r\n table.columns.forEach((column, i) => {\r\n assert(column.name, `Column ${i} must have a name`);\r\n if (i === 0) {\r\n assign(column, 'totalsRowLabel', 'Total');\r\n } else {\r\n assign(column, 'totalsRowFunction', 'none');\r\n column.totalsRowFormula = this.getFormula(column);\r\n }\r\n });\r\n }\r\n\r\n store() {\r\n // where the table needs to store table data, headers, footers in\r\n // the sheet...\r\n const assignStyle = (cell, style) => {\r\n if (style) {\r\n Object.keys(style).forEach(key => {\r\n cell[key] = style[key];\r\n });\r\n }\r\n };\r\n\r\n const {worksheet, table} = this;\r\n const {row, col} = table.tl;\r\n let count = 0;\r\n if (table.headerRow) {\r\n const r = worksheet.getRow(row + count++);\r\n table.columns.forEach((column, j) => {\r\n const {style, name} = column;\r\n const cell = r.getCell(col + j);\r\n cell.value = name;\r\n assignStyle(cell, style);\r\n });\r\n }\r\n table.rows.forEach(data => {\r\n const r = worksheet.getRow(row + count++);\r\n data.forEach((value, j) => {\r\n const cell = r.getCell(col + j);\r\n cell.value = value;\r\n\r\n assignStyle(cell, table.columns[j].style);\r\n });\r\n });\r\n\r\n if (table.totalsRow) {\r\n const r = worksheet.getRow(row + count++);\r\n table.columns.forEach((column, j) => {\r\n const cell = r.getCell(col + j);\r\n if (j === 0) {\r\n cell.value = column.totalsRowLabel;\r\n } else {\r\n const formula = this.getFormula(column);\r\n if (formula) {\r\n cell.value = {\r\n formula: column.totalsRowFormula,\r\n result: column.totalsRowResult,\r\n };\r\n } else {\r\n cell.value = null;\r\n }\r\n }\r\n\r\n assignStyle(cell, column.style);\r\n });\r\n }\r\n }\r\n\r\n load(worksheet) {\r\n // where the table will read necessary features from a loaded sheet\r\n const {table} = this;\r\n const {row, col} = table.tl;\r\n let count = 0;\r\n if (table.headerRow) {\r\n const r = worksheet.getRow(row + count++);\r\n table.columns.forEach((column, j) => {\r\n const cell = r.getCell(col + j);\r\n cell.value = column.name;\r\n });\r\n }\r\n table.rows.forEach(data => {\r\n const r = worksheet.getRow(row + count++);\r\n data.forEach((value, j) => {\r\n const cell = r.getCell(col + j);\r\n cell.value = value;\r\n });\r\n });\r\n\r\n if (table.totalsRow) {\r\n const r = worksheet.getRow(row + count++);\r\n table.columns.forEach((column, j) => {\r\n const cell = r.getCell(col + j);\r\n if (j === 0) {\r\n cell.value = column.totalsRowLabel;\r\n } else {\r\n const formula = this.getFormula(column);\r\n if (formula) {\r\n cell.value = {\r\n formula: column.totalsRowFormula,\r\n result: column.totalsRowResult,\r\n };\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n get model() {\r\n return this.table;\r\n }\r\n\r\n set model(value) {\r\n this.table = value;\r\n }\r\n\r\n // ================================================================\r\n // TODO: Mutating methods\r\n cacheState() {\r\n if (!this._cache) {\r\n this._cache = {\r\n ref: this.ref,\r\n width: this.width,\r\n tableHeight: this.tableHeight,\r\n };\r\n }\r\n }\r\n\r\n commit() {\r\n // changes may have been made that might have on-sheet effects\r\n if (!this._cache) {\r\n return;\r\n }\r\n\r\n // check things are ok first\r\n this.validate();\r\n\r\n const ref = colCache.decodeAddress(this._cache.ref);\r\n if (this.ref !== this._cache.ref) {\r\n // wipe out whole table footprint at previous location\r\n for (let i = 0; i < this._cache.tableHeight; i++) {\r\n const row = this.worksheet.getRow(ref.row + i);\r\n for (let j = 0; j < this._cache.width; j++) {\r\n const cell = row.getCell(ref.col + j);\r\n cell.value = null;\r\n }\r\n }\r\n } else {\r\n // clear out below table if it has shrunk\r\n for (let i = this.tableHeight; i < this._cache.tableHeight; i++) {\r\n const row = this.worksheet.getRow(ref.row + i);\r\n for (let j = 0; j < this._cache.width; j++) {\r\n const cell = row.getCell(ref.col + j);\r\n cell.value = null;\r\n }\r\n }\r\n\r\n // clear out to right of table if it has lost columns\r\n for (let i = 0; i < this.tableHeight; i++) {\r\n const row = this.worksheet.getRow(ref.row + i);\r\n for (let j = this.width; j < this._cache.width; j++) {\r\n const cell = row.getCell(ref.col + j);\r\n cell.value = null;\r\n }\r\n }\r\n }\r\n\r\n this.store();\r\n }\r\n\r\n addRow(values, rowNumber) {\r\n // Add a row of data, either insert at rowNumber or append\r\n this.cacheState();\r\n\r\n if (rowNumber === undefined) {\r\n this.table.rows.push(values);\r\n } else {\r\n this.table.rows.splice(rowNumber, 0, values);\r\n }\r\n }\r\n\r\n removeRows(rowIndex, count = 1) {\r\n // Remove a rows of data\r\n this.cacheState();\r\n this.table.rows.splice(rowIndex, count);\r\n }\r\n\r\n getColumn(colIndex) {\r\n const column = this.table.columns[colIndex];\r\n return new Column(this, column, colIndex);\r\n }\r\n\r\n addColumn(column, values, colIndex) {\r\n // Add a new column, including column defn and values\r\n // Inserts at colNumber or adds to the right\r\n this.cacheState();\r\n\r\n if (colIndex === undefined) {\r\n this.table.columns.push(column);\r\n this.table.rows.forEach((row, i) => {\r\n row.push(values[i]);\r\n });\r\n } else {\r\n this.table.columns.splice(colIndex, 0, column);\r\n this.table.rows.forEach((row, i) => {\r\n row.splice(colIndex, 0, values[i]);\r\n });\r\n }\r\n }\r\n\r\n removeColumns(colIndex, count = 1) {\r\n // Remove a column with data\r\n this.cacheState();\r\n\r\n this.table.columns.splice(colIndex, count);\r\n this.table.rows.forEach(row => {\r\n row.splice(colIndex, count);\r\n });\r\n }\r\n\r\n _assign(target, prop, value) {\r\n this.cacheState();\r\n target[prop] = value;\r\n }\r\n\r\n /* eslint-disable lines-between-class-members */\r\n get ref() {\r\n return this.table.ref;\r\n }\r\n set ref(value) {\r\n this._assign(this.table, 'ref', value);\r\n }\r\n\r\n get name() {\r\n return this.table.name;\r\n }\r\n set name(value) {\r\n this.table.name = value;\r\n }\r\n\r\n get displayName() {\r\n return this.table.displyName || this.table.name;\r\n }\r\n set displayNamename(value) {\r\n this.table.displayName = value;\r\n }\r\n\r\n get headerRow() {\r\n return this.table.headerRow;\r\n }\r\n set headerRow(value) {\r\n this._assign(this.table, 'headerRow', value);\r\n }\r\n\r\n get totalsRow() {\r\n return this.table.totalsRow;\r\n }\r\n set totalsRow(value) {\r\n this._assign(this.table, 'totalsRow', value);\r\n }\r\n\r\n get theme() {\r\n return this.table.style.name;\r\n }\r\n set theme(value) {\r\n this.table.style.name = value;\r\n }\r\n\r\n get showFirstColumn() {\r\n return this.table.style.showFirstColumn;\r\n }\r\n set showFirstColumn(value) {\r\n this.table.style.showFirstColumn = value;\r\n }\r\n\r\n get showLastColumn() {\r\n return this.table.style.showLastColumn;\r\n }\r\n set showLastColumn(value) {\r\n this.table.style.showLastColumn = value;\r\n }\r\n\r\n get showRowStripes() {\r\n return this.table.style.showRowStripes;\r\n }\r\n set showRowStripes(value) {\r\n this.table.style.showRowStripes = value;\r\n }\r\n\r\n get showColumnStripes() {\r\n return this.table.style.showColumnStripes;\r\n }\r\n set showColumnStripes(value) {\r\n this.table.style.showColumnStripes = value;\r\n }\r\n /* eslint-enable lines-between-class-members */\r\n}\r\n\r\nmodule.exports = Table;\r\n","'use strict';\r\n\r\nconst Worksheet = require('./worksheet');\r\nconst DefinedNames = require('./defined-names');\r\nconst XLSX = require('../xlsx/xlsx');\r\nconst CSV = require('../csv/csv');\r\n\r\n// Workbook requirements\r\n// Load and Save from file and stream\r\n// Access/Add/Delete individual worksheets\r\n// Manage String table, Hyperlink table, etc.\r\n// Manage scaffolding for contained objects to write to/read from\r\n\r\nclass Workbook {\r\n constructor() {\r\n this.category = '';\r\n this.company = '';\r\n this.created = new Date();\r\n this.description = '';\r\n this.keywords = '';\r\n this.manager = '';\r\n this.modified = this.created;\r\n this.properties = {};\r\n this.calcProperties = {};\r\n this._worksheets = [];\r\n this.subject = '';\r\n this.title = '';\r\n this.views = [];\r\n this.media = [];\r\n this._definedNames = new DefinedNames();\r\n }\r\n\r\n get xlsx() {\r\n if (!this._xlsx) this._xlsx = new XLSX(this);\r\n return this._xlsx;\r\n }\r\n\r\n get csv() {\r\n if (!this._csv) this._csv = new CSV(this);\r\n return this._csv;\r\n }\r\n\r\n get nextId() {\r\n // find the next unique spot to add worksheet\r\n for (let i = 1; i < this._worksheets.length; i++) {\r\n if (!this._worksheets[i]) {\r\n return i;\r\n }\r\n }\r\n return this._worksheets.length || 1;\r\n }\r\n\r\n addWorksheet(name, options) {\r\n const id = this.nextId;\r\n\r\n if (name && name.length > 31) {\r\n // eslint-disable-next-line no-console\r\n console.warn(`Worksheet name ${name} exceeds 31 chars. This will be truncated`);\r\n }\r\n\r\n // Illegal character in worksheet name: asterisk (*), question mark (?),\r\n // colon (:), forward slash (/ \\), or bracket ([])\r\n if (/[*?:/\\\\[\\]]/.test(name)) {\r\n throw new Error(\r\n `Worksheet name ${name} cannot include any of the following characters: * ? : \\\\ / [ ]`\r\n );\r\n }\r\n\r\n if (/(^')|('$)/.test(name)) {\r\n throw new Error(\r\n `The first or last character of worksheet name cannot be a single quotation mark: ${name}`\r\n );\r\n }\r\n\r\n name = (name || `sheet${id}`).substring(0, 31);\r\n if (this._worksheets.find(ws => ws && ws.name.toLowerCase() === name.toLowerCase())) {\r\n throw new Error(`Worksheet name already exists: ${name}`);\r\n }\r\n\r\n // if options is a color, call it tabColor (and signal deprecated message)\r\n if (options) {\r\n if (typeof options === 'string') {\r\n // eslint-disable-next-line no-console\r\n console.trace(\r\n 'tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { argb: \"rbg value\" } }'\r\n );\r\n options = {\r\n properties: {\r\n tabColor: {argb: options},\r\n },\r\n };\r\n } else if (options.argb || options.theme || options.indexed) {\r\n // eslint-disable-next-line no-console\r\n console.trace(\r\n 'tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { ... } }'\r\n );\r\n options = {\r\n properties: {\r\n tabColor: options,\r\n },\r\n };\r\n }\r\n }\r\n\r\n const lastOrderNo = this._worksheets.reduce(\r\n (acc, ws) => ((ws && ws.orderNo) > acc ? ws.orderNo : acc),\r\n 0\r\n );\r\n const worksheetOptions = Object.assign({}, options, {\r\n id,\r\n name,\r\n orderNo: lastOrderNo + 1,\r\n workbook: this,\r\n });\r\n\r\n const worksheet = new Worksheet(worksheetOptions);\r\n\r\n this._worksheets[id] = worksheet;\r\n return worksheet;\r\n }\r\n\r\n removeWorksheetEx(worksheet) {\r\n delete this._worksheets[worksheet.id];\r\n }\r\n\r\n removeWorksheet(id) {\r\n const worksheet = this.getWorksheet(id);\r\n if (worksheet) {\r\n worksheet.destroy();\r\n }\r\n }\r\n\r\n getWorksheet(id) {\r\n if (id === undefined) {\r\n return this._worksheets.find(Boolean);\r\n }\r\n if (typeof id === 'number') {\r\n return this._worksheets[id];\r\n }\r\n if (typeof id === 'string') {\r\n return this._worksheets.find(worksheet => worksheet && worksheet.name === id);\r\n }\r\n return undefined;\r\n }\r\n\r\n get worksheets() {\r\n // return a clone of _worksheets\r\n return this._worksheets\r\n .slice(1)\r\n .sort((a, b) => a.orderNo - b.orderNo)\r\n .filter(Boolean);\r\n }\r\n\r\n eachSheet(iteratee) {\r\n this.worksheets.forEach(sheet => {\r\n iteratee(sheet, sheet.id);\r\n });\r\n }\r\n\r\n get definedNames() {\r\n return this._definedNames;\r\n }\r\n\r\n clearThemes() {\r\n // Note: themes are not an exposed feature, meddle at your peril!\r\n this._themes = undefined;\r\n }\r\n\r\n addImage(image) {\r\n // TODO: validation?\r\n const id = this.media.length;\r\n this.media.push(Object.assign({}, image, {type: 'image'}));\r\n return id;\r\n }\r\n\r\n getImage(id) {\r\n return this.media[id];\r\n }\r\n\r\n get model() {\r\n return {\r\n creator: this.creator || 'Unknown',\r\n lastModifiedBy: this.lastModifiedBy || 'Unknown',\r\n lastPrinted: this.lastPrinted,\r\n created: this.created,\r\n modified: this.modified,\r\n properties: this.properties,\r\n worksheets: this.worksheets.map(worksheet => worksheet.model),\r\n sheets: this.worksheets.map(ws => ws.model).filter(Boolean),\r\n definedNames: this._definedNames.model,\r\n views: this.views,\r\n company: this.company,\r\n manager: this.manager,\r\n title: this.title,\r\n subject: this.subject,\r\n keywords: this.keywords,\r\n category: this.category,\r\n description: this.description,\r\n language: this.language,\r\n revision: this.revision,\r\n contentStatus: this.contentStatus,\r\n themes: this._themes,\r\n media: this.media,\r\n calcProperties: this.calcProperties,\r\n };\r\n }\r\n\r\n set model(value) {\r\n this.creator = value.creator;\r\n this.lastModifiedBy = value.lastModifiedBy;\r\n this.lastPrinted = value.lastPrinted;\r\n this.created = value.created;\r\n this.modified = value.modified;\r\n this.company = value.company;\r\n this.manager = value.manager;\r\n this.title = value.title;\r\n this.subject = value.subject;\r\n this.keywords = value.keywords;\r\n this.category = value.category;\r\n this.description = value.description;\r\n this.language = value.language;\r\n this.revision = value.revision;\r\n this.contentStatus = value.contentStatus;\r\n\r\n this.properties = value.properties;\r\n this.calcProperties = value.calcProperties;\r\n this._worksheets = [];\r\n value.worksheets.forEach(worksheetModel => {\r\n const {id, name, state} = worksheetModel;\r\n const orderNo = value.sheets && value.sheets.findIndex(ws => ws.id === id);\r\n const worksheet = (this._worksheets[id] = new Worksheet({\r\n id,\r\n name,\r\n orderNo,\r\n state,\r\n workbook: this,\r\n }));\r\n\r\n worksheet.model = worksheetModel;\r\n });\r\n\r\n this._definedNames.model = value.definedNames;\r\n this.views = value.views;\r\n this._themes = value.themes;\r\n this.media = value.media || [];\r\n }\r\n}\r\n\r\nmodule.exports = Workbook;\r\n","const _ = require('../utils/under-dash');\r\n\r\nconst colCache = require('../utils/col-cache');\r\nconst Range = require('./range');\r\nconst Row = require('./row');\r\nconst Column = require('./column');\r\nconst Enums = require('./enums');\r\nconst Image = require('./image');\r\nconst Table = require('./table');\r\nconst DataValidations = require('./data-validations');\r\nconst Encryptor = require('../utils/encryptor');\r\n\r\n// Worksheet requirements\r\n// Operate as sheet inside workbook or standalone\r\n// Load and Save from file and stream\r\n// Access/Add/Delete individual cells\r\n// Manage column widths and row heights\r\n\r\nclass Worksheet {\r\n constructor(options) {\r\n options = options || {};\r\n\r\n // in a workbook, each sheet will have a number\r\n this.id = options.id;\r\n this.orderNo = options.orderNo;\r\n\r\n // and a name\r\n this.name = options.name || `Sheet${this.id}`;\r\n\r\n // add a state\r\n this.state = options.state || 'visible';\r\n\r\n // rows allows access organised by row. Sparse array of arrays indexed by row-1, col\r\n // Note: _rows is zero based. Must subtract 1 to go from cell.row to index\r\n this._rows = [];\r\n\r\n // column definitions\r\n this._columns = null;\r\n\r\n // column keys (addRow convenience): key ==> this._collumns index\r\n this._keys = {};\r\n\r\n // keep record of all merges\r\n this._merges = {};\r\n\r\n // record of all row and column pageBreaks\r\n this.rowBreaks = [];\r\n\r\n this._workbook = options.workbook;\r\n\r\n // for tabColor, default row height, outline levels, etc\r\n this.properties = Object.assign(\r\n {},\r\n {\r\n defaultRowHeight: 15,\r\n dyDescent: 55,\r\n outlineLevelCol: 0,\r\n outlineLevelRow: 0,\r\n },\r\n options.properties\r\n );\r\n\r\n // for all things printing\r\n this.pageSetup = Object.assign(\r\n {},\r\n {\r\n margins: {left: 0.7, right: 0.7, top: 0.75, bottom: 0.75, header: 0.3, footer: 0.3},\r\n orientation: 'portrait',\r\n horizontalDpi: 4294967295,\r\n verticalDpi: 4294967295,\r\n fitToPage: !!(\r\n options.pageSetup &&\r\n (options.pageSetup.fitToWidth || options.pageSetup.fitToHeight) &&\r\n !options.pageSetup.scale\r\n ),\r\n pageOrder: 'downThenOver',\r\n blackAndWhite: false,\r\n draft: false,\r\n cellComments: 'None',\r\n errors: 'displayed',\r\n scale: 100,\r\n fitToWidth: 1,\r\n fitToHeight: 1,\r\n paperSize: undefined,\r\n showRowColHeaders: false,\r\n showGridLines: false,\r\n firstPageNumber: undefined,\r\n horizontalCentered: false,\r\n verticalCentered: false,\r\n rowBreaks: null,\r\n colBreaks: null,\r\n },\r\n options.pageSetup\r\n );\r\n\r\n this.headerFooter = Object.assign(\r\n {},\r\n {\r\n differentFirst: false,\r\n differentOddEven: false,\r\n oddHeader: null,\r\n oddFooter: null,\r\n evenHeader: null,\r\n evenFooter: null,\r\n firstHeader: null,\r\n firstFooter: null,\r\n },\r\n options.headerFooter\r\n );\r\n\r\n this.dataValidations = new DataValidations();\r\n\r\n // for freezepanes, split, zoom, gridlines, etc\r\n this.views = options.views || [];\r\n\r\n this.autoFilter = options.autoFilter || null;\r\n\r\n // for images, etc\r\n this._media = [];\r\n\r\n // worksheet protection\r\n this.sheetProtection = null;\r\n\r\n // for tables\r\n this.tables = {};\r\n\r\n this.conditionalFormattings = [];\r\n }\r\n\r\n get workbook() {\r\n return this._workbook;\r\n }\r\n\r\n // when you're done with this worksheet, call this to remove from workbook\r\n destroy() {\r\n this._workbook.removeWorksheetEx(this);\r\n }\r\n\r\n // Get the bounding range of the cells in this worksheet\r\n get dimensions() {\r\n const dimensions = new Range();\r\n this._rows.forEach(row => {\r\n if (row) {\r\n const rowDims = row.dimensions;\r\n if (rowDims) {\r\n dimensions.expand(row.number, rowDims.min, row.number, rowDims.max);\r\n }\r\n }\r\n });\r\n return dimensions;\r\n }\r\n\r\n // =========================================================================\r\n // Columns\r\n\r\n // get the current columns array.\r\n get columns() {\r\n return this._columns;\r\n }\r\n\r\n // set the columns from an array of column definitions.\r\n // Note: any headers defined will overwrite existing values.\r\n set columns(value) {\r\n // calculate max header row count\r\n this._headerRowCount = value.reduce((pv, cv) => {\r\n const headerCount = (cv.header && 1) || (cv.headers && cv.headers.length) || 0;\r\n return Math.max(pv, headerCount);\r\n }, 0);\r\n\r\n // construct Column objects\r\n let count = 1;\r\n const columns = (this._columns = []);\r\n value.forEach(defn => {\r\n const column = new Column(this, count++, false);\r\n columns.push(column);\r\n column.defn = defn;\r\n });\r\n }\r\n\r\n getColumnKey(key) {\r\n return this._keys[key];\r\n }\r\n\r\n setColumnKey(key, value) {\r\n this._keys[key] = value;\r\n }\r\n\r\n deleteColumnKey(key) {\r\n delete this._keys[key];\r\n }\r\n\r\n eachColumnKey(f) {\r\n _.each(this._keys, f);\r\n }\r\n\r\n // get a single column by col number. If it doesn't exist, create it and any gaps before it\r\n getColumn(c) {\r\n if (typeof c === 'string') {\r\n // if it matches a key'd column, return that\r\n const col = this._keys[c];\r\n if (col) return col;\r\n\r\n // otherwise, assume letter\r\n c = colCache.l2n(c);\r\n }\r\n if (!this._columns) {\r\n this._columns = [];\r\n }\r\n if (c > this._columns.length) {\r\n let n = this._columns.length + 1;\r\n while (n <= c) {\r\n this._columns.push(new Column(this, n++));\r\n }\r\n }\r\n return this._columns[c - 1];\r\n }\r\n\r\n spliceColumns(start, count, ...inserts) {\r\n const rows = this._rows;\r\n const nRows = rows.length;\r\n if (inserts.length > 0) {\r\n // must iterate over all rows whether they exist yet or not\r\n for (let i = 0; i < nRows; i++) {\r\n const rowArguments = [start, count];\r\n // eslint-disable-next-line no-loop-func\r\n inserts.forEach(insert => {\r\n rowArguments.push(insert[i] || null);\r\n });\r\n const row = this.getRow(i + 1);\r\n // eslint-disable-next-line prefer-spread\r\n row.splice.apply(row, rowArguments);\r\n }\r\n } else {\r\n // nothing to insert, so just splice all rows\r\n this._rows.forEach(r => {\r\n if (r) {\r\n r.splice(start, count);\r\n }\r\n });\r\n }\r\n\r\n // splice column definitions\r\n const nExpand = inserts.length - count;\r\n const nKeep = start + count;\r\n const nEnd = this._columns.length;\r\n if (nExpand < 0) {\r\n for (let i = start + inserts.length; i <= nEnd; i++) {\r\n this.getColumn(i).defn = this.getColumn(i - nExpand).defn;\r\n }\r\n } else if (nExpand > 0) {\r\n for (let i = nEnd; i >= nKeep; i--) {\r\n this.getColumn(i + nExpand).defn = this.getColumn(i).defn;\r\n }\r\n }\r\n for (let i = start; i < start + inserts.length; i++) {\r\n this.getColumn(i).defn = null;\r\n }\r\n\r\n // account for defined names\r\n this.workbook.definedNames.spliceColumns(this.name, start, count, inserts.length);\r\n }\r\n\r\n get lastColumn() {\r\n return this.getColumn(this.columnCount);\r\n }\r\n\r\n get columnCount() {\r\n let maxCount = 0;\r\n this.eachRow(row => {\r\n maxCount = Math.max(maxCount, row.cellCount);\r\n });\r\n return maxCount;\r\n }\r\n\r\n get actualColumnCount() {\r\n // performance nightmare - for each row, counts all the columns used\r\n const counts = [];\r\n let count = 0;\r\n this.eachRow(row => {\r\n row.eachCell(({col}) => {\r\n if (!counts[col]) {\r\n counts[col] = true;\r\n count++;\r\n }\r\n });\r\n });\r\n return count;\r\n }\r\n\r\n // =========================================================================\r\n // Rows\r\n\r\n _commitRow() {\r\n // nop - allows streaming reader to fill a document\r\n }\r\n\r\n get _lastRowNumber() {\r\n // need to cope with results of splice\r\n const rows = this._rows;\r\n let n = rows.length;\r\n while (n > 0 && rows[n - 1] === undefined) {\r\n n--;\r\n }\r\n return n;\r\n }\r\n\r\n get _nextRow() {\r\n return this._lastRowNumber + 1;\r\n }\r\n\r\n get lastRow() {\r\n if (this._rows.length) {\r\n return this._rows[this._rows.length - 1];\r\n }\r\n return undefined;\r\n }\r\n\r\n // find a row (if exists) by row number\r\n findRow(r) {\r\n return this._rows[r - 1];\r\n }\r\n\r\n // find multiple rows (if exists) by row number\r\n findRows(start, length) {\r\n return this._rows.slice(start - 1, start - 1 + length);\r\n }\r\n\r\n get rowCount() {\r\n return this._lastRowNumber;\r\n }\r\n\r\n get actualRowCount() {\r\n // counts actual rows that have actual data\r\n let count = 0;\r\n this.eachRow(() => {\r\n count++;\r\n });\r\n return count;\r\n }\r\n\r\n // get a row by row number.\r\n getRow(r) {\r\n let row = this._rows[r - 1];\r\n if (!row) {\r\n row = this._rows[r - 1] = new Row(this, r);\r\n }\r\n return row;\r\n }\r\n\r\n // get multiple rows by row number.\r\n getRows(start, length) {\r\n if (length < 1) return undefined;\r\n const rows = [];\r\n for (let i = start; i < start + length; i++) {\r\n rows.push(this.getRow(i));\r\n }\r\n return rows;\r\n }\r\n\r\n addRow(value, style = 'n') {\r\n const rowNo = this._nextRow;\r\n const row = this.getRow(rowNo);\r\n row.values = value;\r\n this._setStyleOption(rowNo, style[0] === 'i' ? style : 'n');\r\n return row;\r\n }\r\n\r\n addRows(value, style = 'n') {\r\n const rows = [];\r\n value.forEach(row => {\r\n rows.push(this.addRow(row, style));\r\n });\r\n return rows;\r\n }\r\n\r\n insertRow(pos, value, style = 'n') {\r\n this.spliceRows(pos, 0, value);\r\n this._setStyleOption(pos, style);\r\n return this.getRow(pos);\r\n }\r\n\r\n insertRows(pos, values, style = 'n') {\r\n this.spliceRows(pos, 0, ...values);\r\n if (style !== 'n') {\r\n // copy over the styles\r\n for (let i = 0; i < values.length; i++) {\r\n if (style[0] === 'o' && this.findRow(values.length + pos + i) !== undefined) {\r\n this._copyStyle(values.length + pos + i, pos + i, style[1] === '+');\r\n } else if (style[0] === 'i' && this.findRow(pos - 1) !== undefined) {\r\n this._copyStyle(pos - 1, pos + i, style[1] === '+');\r\n }\r\n }\r\n }\r\n return this.getRows(pos, values.length);\r\n }\r\n\r\n // set row at position to same style as of either pervious row (option 'i') or next row (option 'o')\r\n _setStyleOption(pos, style = 'n') {\r\n if (style[0] === 'o' && this.findRow(pos + 1) !== undefined) {\r\n this._copyStyle(pos + 1, pos, style[1] === '+');\r\n } else if (style[0] === 'i' && this.findRow(pos - 1) !== undefined) {\r\n this._copyStyle(pos - 1, pos, style[1] === '+');\r\n }\r\n }\r\n\r\n _copyStyle(src, dest, styleEmpty = false) {\r\n const rSrc = this.getRow(src);\r\n const rDst = this.getRow(dest);\r\n rDst.style = Object.freeze({...rSrc.style});\r\n // eslint-disable-next-line no-loop-func\r\n rSrc.eachCell({includeEmpty: styleEmpty}, (cell, colNumber) => {\r\n rDst.getCell(colNumber).style = Object.freeze({...cell.style});\r\n });\r\n rDst.height = rSrc.height;\r\n }\r\n\r\n duplicateRow(rowNum, count, insert = false) {\r\n // create count duplicates of rowNum\r\n // either inserting new or overwriting existing rows\r\n\r\n const rSrc = this._rows[rowNum - 1];\r\n const inserts = new Array(count).fill(rSrc.values);\r\n this.spliceRows(rowNum + 1, insert ? 0 : count, ...inserts);\r\n\r\n // now copy styles...\r\n for (let i = 0; i < count; i++) {\r\n const rDst = this._rows[rowNum + i];\r\n rDst.style = rSrc.style;\r\n rDst.height = rSrc.height;\r\n // eslint-disable-next-line no-loop-func\r\n rSrc.eachCell({includeEmpty: true}, (cell, colNumber) => {\r\n rDst.getCell(colNumber).style = cell.style;\r\n });\r\n }\r\n }\r\n\r\n spliceRows(start, count, ...inserts) {\r\n // same problem as row.splice, except worse.\r\n const nKeep = start + count;\r\n const nInserts = inserts.length;\r\n const nExpand = nInserts - count;\r\n const nEnd = this._rows.length;\r\n let i;\r\n let rSrc;\r\n if (nExpand < 0) {\r\n // remove rows\r\n for (i = nKeep; i <= nEnd; i++) {\r\n rSrc = this._rows[i - 1];\r\n if (rSrc) {\r\n const rDst = this.getRow(i + nExpand);\r\n rDst.values = rSrc.values;\r\n rDst.style = rSrc.style;\r\n rDst.height = rSrc.height;\r\n // eslint-disable-next-line no-loop-func\r\n rSrc.eachCell({includeEmpty: true}, (cell, colNumber) => {\r\n rDst.getCell(colNumber).style = cell.style;\r\n });\r\n this._rows[i - 1] = undefined;\r\n } else {\r\n this._rows[i + nExpand - 1] = undefined;\r\n }\r\n }\r\n } else if (nExpand > 0) {\r\n // insert new cells\r\n for (i = nEnd; i >= nKeep; i--) {\r\n rSrc = this._rows[i - 1];\r\n if (rSrc) {\r\n const rDst = this.getRow(i + nExpand);\r\n rDst.values = rSrc.values;\r\n rDst.style = rSrc.style;\r\n rDst.height = rSrc.height;\r\n // eslint-disable-next-line no-loop-func\r\n rSrc.eachCell({includeEmpty: true}, (cell, colNumber) => {\r\n rDst.getCell(colNumber).style = cell.style;\r\n\r\n // remerge cells accounting for insert offset\r\n if (cell._value.constructor.name === 'MergeValue') {\r\n const cellToBeMerged = this.getRow(cell._row._number + nInserts).getCell(colNumber);\r\n const prevMaster = cell._value._master;\r\n const newMaster = this.getRow(prevMaster._row._number + nInserts).getCell(prevMaster._column._number);\r\n cellToBeMerged.merge(newMaster);\r\n }\r\n });\r\n } else {\r\n this._rows[i + nExpand - 1] = undefined;\r\n }\r\n }\r\n }\r\n\r\n // now copy over the new values\r\n for (i = 0; i < nInserts; i++) {\r\n const rDst = this.getRow(start + i);\r\n rDst.style = {};\r\n rDst.values = inserts[i];\r\n }\r\n\r\n // account for defined names\r\n this.workbook.definedNames.spliceRows(this.name, start, count, nInserts);\r\n }\r\n\r\n // iterate over every row in the worksheet, including maybe empty rows\r\n eachRow(options, iteratee) {\r\n if (!iteratee) {\r\n iteratee = options;\r\n options = undefined;\r\n }\r\n if (options && options.includeEmpty) {\r\n const n = this._rows.length;\r\n for (let i = 1; i <= n; i++) {\r\n iteratee(this.getRow(i), i);\r\n }\r\n } else {\r\n this._rows.forEach(row => {\r\n if (row && row.hasValues) {\r\n iteratee(row, row.number);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // return all rows as sparse array\r\n getSheetValues() {\r\n const rows = [];\r\n this._rows.forEach(row => {\r\n if (row) {\r\n rows[row.number] = row.values;\r\n }\r\n });\r\n return rows;\r\n }\r\n\r\n // =========================================================================\r\n // Cells\r\n\r\n // returns the cell at [r,c] or address given by r. If not found, return undefined\r\n findCell(r, c) {\r\n const address = colCache.getAddress(r, c);\r\n const row = this._rows[address.row - 1];\r\n return row ? row.findCell(address.col) : undefined;\r\n }\r\n\r\n // return the cell at [r,c] or address given by r. If not found, create a new one.\r\n getCell(r, c) {\r\n const address = colCache.getAddress(r, c);\r\n const row = this.getRow(address.row);\r\n return row.getCellEx(address);\r\n }\r\n\r\n // =========================================================================\r\n // Merge\r\n\r\n // convert the range defined by ['tl:br'], [tl,br] or [t,l,b,r] into a single 'merged' cell\r\n mergeCells(...cells) {\r\n const dimensions = new Range(cells);\r\n this._mergeCellsInternal(dimensions);\r\n }\r\n\r\n mergeCellsWithoutStyle(...cells) {\r\n const dimensions = new Range(cells);\r\n this._mergeCellsInternal(dimensions, true);\r\n }\r\n\r\n _mergeCellsInternal(dimensions, ignoreStyle) {\r\n // check cells aren't already merged\r\n _.each(this._merges, merge => {\r\n if (merge.intersects(dimensions)) {\r\n throw new Error('Cannot merge already merged cells');\r\n }\r\n });\r\n\r\n // apply merge\r\n const master = this.getCell(dimensions.top, dimensions.left);\r\n for (let i = dimensions.top; i <= dimensions.bottom; i++) {\r\n for (let j = dimensions.left; j <= dimensions.right; j++) {\r\n // merge all but the master cell\r\n if (i > dimensions.top || j > dimensions.left) {\r\n this.getCell(i, j).merge(master, ignoreStyle);\r\n }\r\n }\r\n }\r\n\r\n // index merge\r\n this._merges[master.address] = dimensions;\r\n }\r\n\r\n _unMergeMaster(master) {\r\n // master is always top left of a rectangle\r\n const merge = this._merges[master.address];\r\n if (merge) {\r\n for (let i = merge.top; i <= merge.bottom; i++) {\r\n for (let j = merge.left; j <= merge.right; j++) {\r\n this.getCell(i, j).unmerge();\r\n }\r\n }\r\n delete this._merges[master.address];\r\n }\r\n }\r\n\r\n get hasMerges() {\r\n // return true if this._merges has a merge object\r\n return _.some(this._merges, Boolean);\r\n }\r\n\r\n // scan the range defined by ['tl:br'], [tl,br] or [t,l,b,r] and if any cell is part of a merge,\r\n // un-merge the group. Note this function can affect multiple merges and merge-blocks are\r\n // atomic - either they're all merged or all un-merged.\r\n unMergeCells(...cells) {\r\n const dimensions = new Range(cells);\r\n\r\n // find any cells in that range and unmerge them\r\n for (let i = dimensions.top; i <= dimensions.bottom; i++) {\r\n for (let j = dimensions.left; j <= dimensions.right; j++) {\r\n const cell = this.findCell(i, j);\r\n if (cell) {\r\n if (cell.type === Enums.ValueType.Merge) {\r\n // this cell merges to another master\r\n this._unMergeMaster(cell.master);\r\n } else if (this._merges[cell.address]) {\r\n // this cell is a master\r\n this._unMergeMaster(cell);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // ===========================================================================\r\n // Shared/Array Formula\r\n fillFormula(range, formula, results, shareType = 'shared') {\r\n // Define formula for top-left cell and share to rest\r\n const decoded = colCache.decode(range);\r\n const {top, left, bottom, right} = decoded;\r\n const width = right - left + 1;\r\n const masterAddress = colCache.encodeAddress(top, left);\r\n const isShared = shareType === 'shared';\r\n\r\n // work out result accessor\r\n let getResult;\r\n if (typeof results === 'function') {\r\n getResult = results;\r\n } else if (Array.isArray(results)) {\r\n if (Array.isArray(results[0])) {\r\n getResult = (row, col) => results[row - top][col - left];\r\n } else {\r\n // eslint-disable-next-line no-mixed-operators\r\n getResult = (row, col) => results[(row - top) * width + (col - left)];\r\n }\r\n } else {\r\n getResult = () => undefined;\r\n }\r\n let first = true;\r\n for (let r = top; r <= bottom; r++) {\r\n for (let c = left; c <= right; c++) {\r\n if (first) {\r\n this.getCell(r, c).value = {\r\n shareType,\r\n formula,\r\n ref: range,\r\n result: getResult(r, c),\r\n };\r\n first = false;\r\n } else {\r\n this.getCell(r, c).value = isShared\r\n ? {\r\n sharedFormula: masterAddress,\r\n result: getResult(r, c),\r\n }\r\n : getResult(r, c);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // =========================================================================\r\n // Images\r\n addImage(imageId, range) {\r\n const model = {\r\n type: 'image',\r\n imageId,\r\n range,\r\n };\r\n this._media.push(new Image(this, model));\r\n }\r\n\r\n getImages() {\r\n return this._media.filter(m => m.type === 'image');\r\n }\r\n\r\n addBackgroundImage(imageId) {\r\n const model = {\r\n type: 'background',\r\n imageId,\r\n };\r\n this._media.push(new Image(this, model));\r\n }\r\n\r\n getBackgroundImageId() {\r\n const image = this._media.find(m => m.type === 'background');\r\n return image && image.imageId;\r\n }\r\n\r\n // =========================================================================\r\n // Worksheet Protection\r\n protect(password, options) {\r\n // TODO: make this function truly async\r\n // perhaps marshal to worker thread or something\r\n return new Promise(resolve => {\r\n this.sheetProtection = {\r\n sheet: true,\r\n };\r\n if (options && 'spinCount' in options) {\r\n // force spinCount to be integer >= 0\r\n options.spinCount = Number.isFinite(options.spinCount) ? Math.round(Math.max(0, options.spinCount)) : 100000;\r\n }\r\n if (password) {\r\n this.sheetProtection.algorithmName = 'SHA-512';\r\n this.sheetProtection.saltValue = Encryptor.randomBytes(16).toString('base64');\r\n this.sheetProtection.spinCount = options && 'spinCount' in options ? options.spinCount : 100000; // allow user specified spinCount\r\n this.sheetProtection.hashValue = Encryptor.convertPasswordToHash(\r\n password,\r\n 'SHA512',\r\n this.sheetProtection.saltValue,\r\n this.sheetProtection.spinCount\r\n );\r\n }\r\n if (options) {\r\n this.sheetProtection = Object.assign(this.sheetProtection, options);\r\n if (!password && 'spinCount' in options) {\r\n delete this.sheetProtection.spinCount;\r\n }\r\n }\r\n resolve();\r\n });\r\n }\r\n\r\n unprotect() {\r\n this.sheetProtection = null;\r\n }\r\n\r\n // =========================================================================\r\n // Tables\r\n addTable(model) {\r\n const table = new Table(this, model);\r\n this.tables[model.name] = table;\r\n return table;\r\n }\r\n\r\n getTable(name) {\r\n return this.tables[name];\r\n }\r\n\r\n removeTable(name) {\r\n delete this.tables[name];\r\n }\r\n\r\n getTables() {\r\n return Object.values(this.tables);\r\n }\r\n\r\n // ===========================================================================\r\n // Conditional Formatting\r\n addConditionalFormatting(cf) {\r\n this.conditionalFormattings.push(cf);\r\n }\r\n\r\n removeConditionalFormatting(filter) {\r\n if (typeof filter === 'number') {\r\n this.conditionalFormattings.splice(filter, 1);\r\n } else if (filter instanceof Function) {\r\n this.conditionalFormattings = this.conditionalFormattings.filter(filter);\r\n } else {\r\n this.conditionalFormattings = [];\r\n }\r\n }\r\n\r\n // ===========================================================================\r\n // Deprecated\r\n get tabColor() {\r\n // eslint-disable-next-line no-console\r\n console.trace('worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor');\r\n return this.properties.tabColor;\r\n }\r\n\r\n set tabColor(value) {\r\n // eslint-disable-next-line no-console\r\n console.trace('worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor');\r\n this.properties.tabColor = value;\r\n }\r\n\r\n // ===========================================================================\r\n // Model\r\n\r\n get model() {\r\n const model = {\r\n id: this.id,\r\n name: this.name,\r\n dataValidations: this.dataValidations.model,\r\n properties: this.properties,\r\n state: this.state,\r\n pageSetup: this.pageSetup,\r\n headerFooter: this.headerFooter,\r\n rowBreaks: this.rowBreaks,\r\n views: this.views,\r\n autoFilter: this.autoFilter,\r\n media: this._media.map(medium => medium.model),\r\n sheetProtection: this.sheetProtection,\r\n tables: Object.values(this.tables).map(table => table.model),\r\n conditionalFormattings: this.conditionalFormattings,\r\n };\r\n\r\n // =================================================\r\n // columns\r\n model.cols = Column.toModel(this.columns);\r\n\r\n // ==========================================================\r\n // Rows\r\n const rows = (model.rows = []);\r\n const dimensions = (model.dimensions = new Range());\r\n this._rows.forEach(row => {\r\n const rowModel = row && row.model;\r\n if (rowModel) {\r\n dimensions.expand(rowModel.number, rowModel.min, rowModel.number, rowModel.max);\r\n rows.push(rowModel);\r\n }\r\n });\r\n\r\n // ==========================================================\r\n // Merges\r\n model.merges = [];\r\n _.each(this._merges, merge => {\r\n model.merges.push(merge.range);\r\n });\r\n\r\n return model;\r\n }\r\n\r\n _parseRows(model) {\r\n this._rows = [];\r\n model.rows.forEach(rowModel => {\r\n const row = new Row(this, rowModel.number);\r\n this._rows[row.number - 1] = row;\r\n row.model = rowModel;\r\n });\r\n }\r\n\r\n _parseMergeCells(model) {\r\n _.each(model.mergeCells, merge => {\r\n // Do not merge styles when importing an Excel file\r\n // since each cell may have different styles intentionally.\r\n this.mergeCellsWithoutStyle(merge);\r\n });\r\n }\r\n\r\n set model(value) {\r\n this.name = value.name;\r\n this._columns = Column.fromModel(this, value.cols);\r\n this._parseRows(value);\r\n\r\n this._parseMergeCells(value);\r\n this.dataValidations = new DataValidations(value.dataValidations);\r\n this.properties = value.properties;\r\n this.pageSetup = value.pageSetup;\r\n this.headerFooter = value.headerFooter;\r\n this.views = value.views;\r\n this.autoFilter = value.autoFilter;\r\n this._media = value.media.map(medium => new Image(this, medium));\r\n this.sheetProtection = value.sheetProtection;\r\n this.tables = value.tables.reduce((tables, table) => {\r\n const t = new Table();\r\n t.model = table;\r\n tables[table.name] = t;\r\n return tables;\r\n }, {});\r\n this.conditionalFormattings = value.conditionalFormattings;\r\n }\r\n}\r\n\r\nmodule.exports = Worksheet;\r\n","/* eslint-disable import/no-extraneous-dependencies,node/no-unpublished-require */\r\nrequire('core-js/modules/es.promise');\r\nrequire('core-js/modules/es.object.assign');\r\nrequire('core-js/modules/es.object.keys');\r\nrequire('core-js/modules/es.object.values');\r\nrequire('core-js/modules/es.symbol');\r\nrequire('core-js/modules/es.symbol.async-iterator');\r\n// required by core-js/modules/es.promise Promise.all\r\nrequire('core-js/modules/es.array.iterator');\r\n// required by node_modules/saxes/saxes.js SaxesParser.captureTo\r\nrequire('core-js/modules/es.array.includes');\r\n// required by lib/doc/workbook.js Workbook.model\r\nrequire('core-js/modules/es.array.find-index');\r\n// required by lib/doc/workbook.js Workbook.addWorksheet and Workbook.getWorksheet\r\nrequire('core-js/modules/es.array.find');\r\n// required by node_modules/saxes/saxes.js SaxesParser.getCode10\r\nrequire('core-js/modules/es.string.from-code-point');\r\n// required by lib/xlsx/xform/sheet/data-validations-xform.js DataValidationsXform.parseClose\r\nrequire('core-js/modules/es.string.includes');\r\n// required by lib/utils/utils.js utils.validInt and lib/csv/csv.js CSV.read\r\nrequire('core-js/modules/es.number.is-nan');\r\nrequire('regenerator-runtime/runtime');\r\n\r\nconst ExcelJS = {\r\n Workbook: require('./doc/workbook'),\r\n};\r\n\r\n// Object.assign mono-fill\r\nconst Enums = require('./doc/enums');\r\n\r\nObject.keys(Enums).forEach(key => {\r\n ExcelJS[key] = Enums[key];\r\n});\r\n\r\nmodule.exports = ExcelJS;\r\n","// eslint-disable-next-line node/no-unsupported-features/node-builtins\r\nconst textDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8');\r\n\r\nfunction bufferToString(chunk) {\r\n if (typeof chunk === 'string') {\r\n return chunk;\r\n }\r\n if (textDecoder) {\r\n return textDecoder.decode(chunk);\r\n }\r\n return chunk.toString();\r\n}\r\n\r\nexports.bufferToString = bufferToString;\r\n","// eslint-disable-next-line node/no-unsupported-features/node-builtins\r\nconst textEncoder = typeof TextEncoder === 'undefined' ? null : new TextEncoder('utf-8');\r\nconst {Buffer} = require('buffer');\r\n\r\nfunction stringToBuffer(str) {\r\n if (typeof str !== 'string') {\r\n return str;\r\n }\r\n if (textEncoder) {\r\n return Buffer.from(textEncoder.encode(str).buffer);\r\n }\r\n return Buffer.from(str);\r\n}\r\n\r\nexports.stringToBuffer = stringToBuffer;\r\n","const _ = require('./under-dash');\r\nconst colCache = require('./col-cache');\r\n\r\nclass CellMatrix {\r\n constructor(template) {\r\n this.template = template;\r\n this.sheets = {};\r\n }\r\n\r\n addCell(addressStr) {\r\n this.addCellEx(colCache.decodeEx(addressStr));\r\n }\r\n\r\n getCell(addressStr) {\r\n return this.findCellEx(colCache.decodeEx(addressStr), true);\r\n }\r\n\r\n findCell(addressStr) {\r\n return this.findCellEx(colCache.decodeEx(addressStr), false);\r\n }\r\n\r\n findCellAt(sheetName, rowNumber, colNumber) {\r\n const sheet = this.sheets[sheetName];\r\n const row = sheet && sheet[rowNumber];\r\n return row && row[colNumber];\r\n }\r\n\r\n addCellEx(address) {\r\n if (address.top) {\r\n for (let row = address.top; row <= address.bottom; row++) {\r\n for (let col = address.left; col <= address.right; col++) {\r\n this.getCellAt(address.sheetName, row, col);\r\n }\r\n }\r\n } else {\r\n this.findCellEx(address, true);\r\n }\r\n }\r\n\r\n getCellEx(address) {\r\n return this.findCellEx(address, true);\r\n }\r\n\r\n findCellEx(address, create) {\r\n const sheet = this.findSheet(address, create);\r\n const row = this.findSheetRow(sheet, address, create);\r\n return this.findRowCell(row, address, create);\r\n }\r\n\r\n getCellAt(sheetName, rowNumber, colNumber) {\r\n const sheet = this.sheets[sheetName] || (this.sheets[sheetName] = []);\r\n const row = sheet[rowNumber] || (sheet[rowNumber] = []);\r\n const cell =\r\n row[colNumber] ||\r\n (row[colNumber] = {\r\n sheetName,\r\n address: colCache.n2l(colNumber) + rowNumber,\r\n row: rowNumber,\r\n col: colNumber,\r\n });\r\n return cell;\r\n }\r\n\r\n removeCellEx(address) {\r\n const sheet = this.findSheet(address);\r\n if (!sheet) {\r\n return;\r\n }\r\n const row = this.findSheetRow(sheet, address);\r\n if (!row) {\r\n return;\r\n }\r\n delete row[address.col];\r\n }\r\n\r\n forEachInSheet(sheetName, callback) {\r\n const sheet = this.sheets[sheetName];\r\n if (sheet) {\r\n sheet.forEach((row, rowNumber) => {\r\n if (row) {\r\n row.forEach((cell, colNumber) => {\r\n if (cell) {\r\n callback(cell, rowNumber, colNumber);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n forEach(callback) {\r\n _.each(this.sheets, (sheet, sheetName) => {\r\n this.forEachInSheet(sheetName, callback);\r\n });\r\n }\r\n\r\n map(callback) {\r\n const results = [];\r\n this.forEach(cell => {\r\n results.push(callback(cell));\r\n });\r\n return results;\r\n }\r\n\r\n findSheet(address, create) {\r\n const name = address.sheetName;\r\n if (this.sheets[name]) {\r\n return this.sheets[name];\r\n }\r\n if (create) {\r\n return (this.sheets[name] = []);\r\n }\r\n return undefined;\r\n }\r\n\r\n findSheetRow(sheet, address, create) {\r\n const {row} = address;\r\n if (sheet && sheet[row]) {\r\n return sheet[row];\r\n }\r\n if (create) {\r\n return (sheet[row] = []);\r\n }\r\n return undefined;\r\n }\r\n\r\n findRowCell(row, address, create) {\r\n const {col} = address;\r\n if (row && row[col]) {\r\n return row[col];\r\n }\r\n if (create) {\r\n return (row[col] = this.template\r\n ? Object.assign(address, JSON.parse(JSON.stringify(this.template)))\r\n : address);\r\n }\r\n return undefined;\r\n }\r\n\r\n spliceRows(sheetName, start, numDelete, numInsert) {\r\n const sheet = this.sheets[sheetName];\r\n if (sheet) {\r\n const inserts = [];\r\n for (let i = 0; i < numInsert; i++) {\r\n inserts.push([]);\r\n }\r\n sheet.splice(start, numDelete, ...inserts);\r\n }\r\n }\r\n\r\n spliceColumns(sheetName, start, numDelete, numInsert) {\r\n const sheet = this.sheets[sheetName];\r\n if (sheet) {\r\n const inserts = [];\r\n for (let i = 0; i < numInsert; i++) {\r\n inserts.push(null);\r\n }\r\n _.each(sheet, row => {\r\n row.splice(start, numDelete, ...inserts);\r\n });\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = CellMatrix;\r\n","const addressRegex = /^[A-Z]+\\d+$/;\r\n// =========================================================================\r\n// Column Letter to Number conversion\r\nconst colCache = {\r\n _dictionary: [\r\n 'A',\r\n 'B',\r\n 'C',\r\n 'D',\r\n 'E',\r\n 'F',\r\n 'G',\r\n 'H',\r\n 'I',\r\n 'J',\r\n 'K',\r\n 'L',\r\n 'M',\r\n 'N',\r\n 'O',\r\n 'P',\r\n 'Q',\r\n 'R',\r\n 'S',\r\n 'T',\r\n 'U',\r\n 'V',\r\n 'W',\r\n 'X',\r\n 'Y',\r\n 'Z',\r\n ],\r\n _l2nFill: 0,\r\n _l2n: {},\r\n _n2l: [],\r\n _level(n) {\r\n if (n <= 26) {\r\n return 1;\r\n }\r\n if (n <= 26 * 26) {\r\n return 2;\r\n }\r\n return 3;\r\n },\r\n _fill(level) {\r\n let c;\r\n let v;\r\n let l1;\r\n let l2;\r\n let l3;\r\n let n = 1;\r\n if (level >= 4) {\r\n throw new Error('Out of bounds. Excel supports columns from 1 to 16384');\r\n }\r\n if (this._l2nFill < 1 && level >= 1) {\r\n while (n <= 26) {\r\n c = this._dictionary[n - 1];\r\n this._n2l[n] = c;\r\n this._l2n[c] = n;\r\n n++;\r\n }\r\n this._l2nFill = 1;\r\n }\r\n if (this._l2nFill < 2 && level >= 2) {\r\n n = 27;\r\n while (n <= 26 + (26 * 26)) {\r\n v = n - (26 + 1);\r\n l1 = v % 26;\r\n l2 = Math.floor(v / 26);\r\n c = this._dictionary[l2] + this._dictionary[l1];\r\n this._n2l[n] = c;\r\n this._l2n[c] = n;\r\n n++;\r\n }\r\n this._l2nFill = 2;\r\n }\r\n if (this._l2nFill < 3 && level >= 3) {\r\n n = 26 + (26 * 26) + 1;\r\n while (n <= 16384) {\r\n v = n - ((26 * 26) + 26 + 1);\r\n l1 = v % 26;\r\n l2 = Math.floor(v / 26) % 26;\r\n l3 = Math.floor(v / (26 * 26));\r\n c = this._dictionary[l3] + this._dictionary[l2] + this._dictionary[l1];\r\n this._n2l[n] = c;\r\n this._l2n[c] = n;\r\n n++;\r\n }\r\n this._l2nFill = 3;\r\n }\r\n },\r\n l2n(l) {\r\n if (!this._l2n[l]) {\r\n this._fill(l.length);\r\n }\r\n if (!this._l2n[l]) {\r\n throw new Error(`Out of bounds. Invalid column letter: ${l}`);\r\n }\r\n return this._l2n[l];\r\n },\r\n n2l(n) {\r\n if (n < 1 || n > 16384) {\r\n throw new Error(`${n} is out of bounds. Excel supports columns from 1 to 16384`);\r\n }\r\n if (!this._n2l[n]) {\r\n this._fill(this._level(n));\r\n }\r\n return this._n2l[n];\r\n },\r\n\r\n // =========================================================================\r\n // Address processing\r\n _hash: {},\r\n\r\n // check if value looks like an address\r\n validateAddress(value) {\r\n if (!addressRegex.test(value)) {\r\n throw new Error(`Invalid Address: ${value}`);\r\n }\r\n return true;\r\n },\r\n\r\n // convert address string into structure\r\n decodeAddress(value) {\r\n const addr = value.length < 5 && this._hash[value];\r\n if (addr) {\r\n return addr;\r\n }\r\n let hasCol = false;\r\n let col = '';\r\n let colNumber = 0;\r\n let hasRow = false;\r\n let row = '';\r\n let rowNumber = 0;\r\n for (let i = 0, char; i < value.length; i++) {\r\n char = value.charCodeAt(i);\r\n // col should before row\r\n if (!hasRow && char >= 65 && char <= 90) {\r\n // 65 = 'A'.charCodeAt(0)\r\n // 90 = 'Z'.charCodeAt(0)\r\n hasCol = true;\r\n col += value[i];\r\n // colNumber starts from 1\r\n colNumber = (colNumber * 26) + char - 64;\r\n } else if (char >= 48 && char <= 57) {\r\n // 48 = '0'.charCodeAt(0)\r\n // 57 = '9'.charCodeAt(0)\r\n hasRow = true;\r\n row += value[i];\r\n // rowNumber starts from 0\r\n rowNumber = (rowNumber * 10) + char - 48;\r\n } else if (hasRow && hasCol && char !== 36) {\r\n // 36 = '$'.charCodeAt(0)\r\n break;\r\n }\r\n }\r\n if (!hasCol) {\r\n colNumber = undefined;\r\n } else if (colNumber > 16384) {\r\n throw new Error(`Out of bounds. Invalid column letter: ${col}`);\r\n }\r\n if (!hasRow) {\r\n rowNumber = undefined;\r\n }\r\n\r\n // in case $row$col\r\n value = col + row;\r\n\r\n const address = {\r\n address: value,\r\n col: colNumber,\r\n row: rowNumber,\r\n $col$row: `$${col}$${row}`,\r\n };\r\n\r\n // mem fix - cache only the tl 100x100 square\r\n if (colNumber <= 100 && rowNumber <= 100) {\r\n this._hash[value] = address;\r\n this._hash[address.$col$row] = address;\r\n }\r\n\r\n return address;\r\n },\r\n\r\n // convert r,c into structure (if only 1 arg, assume r is address string)\r\n getAddress(r, c) {\r\n if (c) {\r\n const address = this.n2l(c) + r;\r\n return this.decodeAddress(address);\r\n }\r\n return this.decodeAddress(r);\r\n },\r\n\r\n // convert [address], [tl:br] into address structures\r\n decode(value) {\r\n const parts = value.split(':');\r\n if (parts.length === 2) {\r\n const tl = this.decodeAddress(parts[0]);\r\n const br = this.decodeAddress(parts[1]);\r\n const result = {\r\n top: Math.min(tl.row, br.row),\r\n left: Math.min(tl.col, br.col),\r\n bottom: Math.max(tl.row, br.row),\r\n right: Math.max(tl.col, br.col),\r\n };\r\n // reconstruct tl, br and dimensions\r\n result.tl = this.n2l(result.left) + result.top;\r\n result.br = this.n2l(result.right) + result.bottom;\r\n result.dimensions = `${result.tl}:${result.br}`;\r\n return result;\r\n }\r\n return this.decodeAddress(value);\r\n },\r\n\r\n // convert [sheetName!][$]col[$]row[[$]col[$]row] into address or range structures\r\n decodeEx(value) {\r\n const groups = value.match(/(?:(?:(?:'((?:[^']|'')*)')|([^'^ !]*))!)?(.*)/);\r\n\r\n const sheetName = groups[1] || groups[2]; // Qouted and unqouted groups\r\n const reference = groups[3]; // Remaining address\r\n\r\n const parts = reference.split(':');\r\n if (parts.length > 1) {\r\n let tl = this.decodeAddress(parts[0]);\r\n let br = this.decodeAddress(parts[1]);\r\n const top = Math.min(tl.row, br.row);\r\n const left = Math.min(tl.col, br.col);\r\n const bottom = Math.max(tl.row, br.row);\r\n const right = Math.max(tl.col, br.col);\r\n\r\n tl = this.n2l(left) + top;\r\n br = this.n2l(right) + bottom;\r\n\r\n return {\r\n top,\r\n left,\r\n bottom,\r\n right,\r\n sheetName,\r\n tl: {address: tl, col: left, row: top, $col$row: `$${this.n2l(left)}$${top}`, sheetName},\r\n br: {\r\n address: br,\r\n col: right,\r\n row: bottom,\r\n $col$row: `$${this.n2l(right)}$${bottom}`,\r\n sheetName,\r\n },\r\n dimensions: `${tl}:${br}`,\r\n };\r\n }\r\n if (reference.startsWith('#')) {\r\n return sheetName ? {sheetName, error: reference} : {error: reference};\r\n }\r\n\r\n const address = this.decodeAddress(reference);\r\n return sheetName ? {sheetName, ...address} : address;\r\n },\r\n\r\n // convert row,col into address string\r\n encodeAddress(row, col) {\r\n return colCache.n2l(col) + row;\r\n },\r\n\r\n // convert row,col into string address or t,l,b,r into range\r\n encode() {\r\n switch (arguments.length) {\r\n case 2:\r\n return colCache.encodeAddress(arguments[0], arguments[1]);\r\n case 4:\r\n return `${colCache.encodeAddress(arguments[0], arguments[1])}:${colCache.encodeAddress(\r\n arguments[2],\r\n arguments[3]\r\n )}`;\r\n default:\r\n throw new Error('Can only encode with 2 or 4 arguments');\r\n }\r\n },\r\n\r\n // return true if address is contained within range\r\n inRange(range, address) {\r\n const [left, top, , right, bottom] = range;\r\n const [col, row] = address;\r\n return col >= left && col <= right && row >= top && row <= bottom;\r\n },\r\n};\r\n\r\nmodule.exports = colCache;\r\n","'use strict';\r\n\r\nconst crypto = require('crypto');\r\n\r\nconst Encryptor = {\r\n /**\r\n * Calculate a hash of the concatenated buffers with the given algorithm.\r\n * @param {string} algorithm - The hash algorithm.\r\n * @returns {Buffer} The hash\r\n */\r\n hash(algorithm, ...buffers) {\r\n const hash = crypto.createHash(algorithm);\r\n hash.update(Buffer.concat(buffers));\r\n return hash.digest();\r\n },\r\n /**\r\n * Convert a password into an encryption key\r\n * @param {string} password - The password\r\n * @param {string} hashAlgorithm - The hash algoritm\r\n * @param {string} saltValue - The salt value\r\n * @param {number} spinCount - The spin count\r\n * @param {number} keyBits - The length of the key in bits\r\n * @param {Buffer} blockKey - The block key\r\n * @returns {Buffer} The encryption key\r\n */\r\n convertPasswordToHash(password, hashAlgorithm, saltValue, spinCount) {\r\n hashAlgorithm = hashAlgorithm.toLowerCase();\r\n const hashes = crypto.getHashes();\r\n if (hashes.indexOf(hashAlgorithm) < 0) {\r\n throw new Error(`Hash algorithm '${hashAlgorithm}' not supported!`);\r\n }\r\n\r\n // Password must be in unicode buffer\r\n const passwordBuffer = Buffer.from(password, 'utf16le');\r\n // Generate the initial hash\r\n let key = this.hash(hashAlgorithm, Buffer.from(saltValue, 'base64'), passwordBuffer);\r\n // Now regenerate until spin count\r\n for (let i = 0; i < spinCount; i++) {\r\n const iterator = Buffer.alloc(4);\r\n // this is the 'special' element of Excel password hashing\r\n // that stops us from using crypto.pbkdf2()\r\n iterator.writeUInt32LE(i, 0);\r\n key = this.hash(hashAlgorithm, key, iterator);\r\n }\r\n return key.toString('base64');\r\n },\r\n /**\r\n * Generates cryptographically strong pseudo-random data.\r\n * @param size The size argument is a number indicating the number of bytes to generate.\r\n */\r\n randomBytes(size) {\r\n return crypto.randomBytes(size);\r\n },\r\n};\r\nmodule.exports = Encryptor;\r\n","const {SaxesParser} = require('saxes');\r\nconst {PassThrough} = require('readable-stream');\r\nconst {bufferToString} = require('./browser-buffer-decode');\r\n\r\nmodule.exports = async function* (iterable) {\r\n // TODO: Remove once node v8 is deprecated\r\n // Detect and upgrade old streams\r\n if (iterable.pipe && !iterable[Symbol.asyncIterator]) {\r\n iterable = iterable.pipe(new PassThrough());\r\n }\r\n const saxesParser = new SaxesParser();\r\n let error;\r\n saxesParser.on('error', err => {\r\n error = err;\r\n });\r\n let events = [];\r\n saxesParser.on('opentag', value => events.push({eventType: 'opentag', value}));\r\n saxesParser.on('text', value => events.push({eventType: 'text', value}));\r\n saxesParser.on('closetag', value => events.push({eventType: 'closetag', value}));\r\n for await (const chunk of iterable) {\r\n saxesParser.write(bufferToString(chunk));\r\n // saxesParser.write and saxesParser.on() are synchronous,\r\n // so we can only reach the below line once all events have been emitted\r\n if (error) throw error;\r\n // As a performance optimization, we gather all events instead of passing\r\n // them one by one, which would cause each event to go through the event queue\r\n yield events;\r\n events = [];\r\n }\r\n};\r\n","const colCache = require('./col-cache');\r\n\r\n// const cellRefRegex = /(([a-z_\\-0-9]*)!)?[$]?([a-z]+)[$]?([1-9][0-9]*)/i;\r\nconst replacementCandidateRx = /(([a-z_\\-0-9]*)!)?([a-z0-9_$]{2,})([(])?/gi;\r\nconst CRrx = /^([$])?([a-z]+)([$])?([1-9][0-9]*)$/i;\r\n\r\nfunction slideFormula(formula, fromCell, toCell) {\r\n const offset = colCache.decode(fromCell);\r\n const to = colCache.decode(toCell);\r\n return formula.replace(\r\n replacementCandidateRx,\r\n (refMatch, sheet, sheetMaybe, addrPart, trailingParen) => {\r\n if (trailingParen) {\r\n return refMatch;\r\n }\r\n const match = CRrx.exec(addrPart);\r\n if (match) {\r\n const colDollar = match[1];\r\n const colStr = match[2].toUpperCase();\r\n const rowDollar = match[3];\r\n const rowStr = match[4];\r\n if (colStr.length > 3 || (colStr.length === 3 && colStr > 'XFD')) {\r\n // > XFD is the highest col number in excel 2007 and beyond, so this is a named range\r\n return refMatch;\r\n }\r\n let col = colCache.l2n(colStr);\r\n let row = parseInt(rowStr, 10);\r\n if (!colDollar) {\r\n col += to.col - offset.col;\r\n }\r\n if (!rowDollar) {\r\n row += to.row - offset.row;\r\n }\r\n const res = (sheet || '') + (colDollar || '') + colCache.n2l(col) + (rowDollar || '') + row;\r\n return res;\r\n }\r\n return refMatch;\r\n }\r\n );\r\n}\r\n\r\nmodule.exports = {\r\n slideFormula,\r\n};\r\n","/* eslint-disable max-classes-per-file */\r\nconst Stream = require('readable-stream');\r\n\r\nconst utils = require('./utils');\r\nconst StringBuf = require('./string-buf');\r\n\r\n// =============================================================================\r\n// data chunks - encapsulating incoming data\r\nclass StringChunk {\r\n constructor(data, encoding) {\r\n this._data = data;\r\n this._encoding = encoding;\r\n }\r\n\r\n get length() {\r\n return this.toBuffer().length;\r\n }\r\n\r\n // copy to target buffer\r\n copy(target, targetOffset, offset, length) {\r\n return this.toBuffer().copy(target, targetOffset, offset, length);\r\n }\r\n\r\n toBuffer() {\r\n if (!this._buffer) {\r\n this._buffer = Buffer.from(this._data, this._encoding);\r\n }\r\n return this._buffer;\r\n }\r\n}\r\n\r\nclass StringBufChunk {\r\n constructor(data) {\r\n this._data = data;\r\n }\r\n\r\n get length() {\r\n return this._data.length;\r\n }\r\n\r\n // copy to target buffer\r\n copy(target, targetOffset, offset, length) {\r\n // eslint-disable-next-line no-underscore-dangle\r\n return this._data._buf.copy(target, targetOffset, offset, length);\r\n }\r\n\r\n toBuffer() {\r\n return this._data.toBuffer();\r\n }\r\n}\r\n\r\nclass BufferChunk {\r\n constructor(data) {\r\n this._data = data;\r\n }\r\n\r\n get length() {\r\n return this._data.length;\r\n }\r\n\r\n // copy to target buffer\r\n copy(target, targetOffset, offset, length) {\r\n this._data.copy(target, targetOffset, offset, length);\r\n }\r\n\r\n toBuffer() {\r\n return this._data;\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// ReadWriteBuf - a single buffer supporting simple read-write\r\nclass ReadWriteBuf {\r\n constructor(size) {\r\n this.size = size;\r\n // the buffer\r\n this.buffer = Buffer.alloc(size);\r\n // read index\r\n this.iRead = 0;\r\n // write index\r\n this.iWrite = 0;\r\n }\r\n\r\n toBuffer() {\r\n if (this.iRead === 0 && this.iWrite === this.size) {\r\n return this.buffer;\r\n }\r\n\r\n const buf = Buffer.alloc(this.iWrite - this.iRead);\r\n this.buffer.copy(buf, 0, this.iRead, this.iWrite);\r\n return buf;\r\n }\r\n\r\n get length() {\r\n return this.iWrite - this.iRead;\r\n }\r\n\r\n get eod() {\r\n return this.iRead === this.iWrite;\r\n }\r\n\r\n get full() {\r\n return this.iWrite === this.size;\r\n }\r\n\r\n read(size) {\r\n let buf;\r\n // read size bytes from buffer and return buffer\r\n if (size === 0) {\r\n // special case - return null if no data requested\r\n return null;\r\n }\r\n\r\n if (size === undefined || size >= this.length) {\r\n // if no size specified or size is at least what we have then return all of the bytes\r\n buf = this.toBuffer();\r\n this.iRead = this.iWrite;\r\n return buf;\r\n }\r\n\r\n // otherwise return a chunk\r\n buf = Buffer.alloc(size);\r\n this.buffer.copy(buf, 0, this.iRead, size);\r\n this.iRead += size;\r\n return buf;\r\n }\r\n\r\n write(chunk, offset, length) {\r\n // write as many bytes from data from optional source offset\r\n // and return number of bytes written\r\n const size = Math.min(length, this.size - this.iWrite);\r\n chunk.copy(this.buffer, this.iWrite, offset, offset + size);\r\n this.iWrite += size;\r\n return size;\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// StreamBuf - a multi-purpose read-write stream\r\n// As MemBuf - write as much data as you like. Then call toBuffer() to consolidate\r\n// As StreamHub - pipe to multiple writables\r\n// As readable stream - feed data into the writable part and have some other code read from it.\r\n\r\n// Note: Not sure why but StreamBuf does not like JS \"class\" sugar. It fails the\r\n// integration tests\r\nconst StreamBuf = function(options) {\r\n options = options || {};\r\n this.bufSize = options.bufSize || 1024 * 1024;\r\n this.buffers = [];\r\n\r\n // batch mode fills a buffer completely before passing the data on\r\n // to pipes or 'readable' event listeners\r\n this.batch = options.batch || false;\r\n\r\n this.corked = false;\r\n // where in the current writable buffer we're up to\r\n this.inPos = 0;\r\n\r\n // where in the current readable buffer we've read up to\r\n this.outPos = 0;\r\n\r\n // consuming pipe streams go here\r\n this.pipes = [];\r\n\r\n // controls emit('data')\r\n this.paused = false;\r\n\r\n this.encoding = null;\r\n};\r\n\r\nutils.inherits(StreamBuf, Stream.Duplex, {\r\n toBuffer() {\r\n switch (this.buffers.length) {\r\n case 0:\r\n return null;\r\n case 1:\r\n return this.buffers[0].toBuffer();\r\n default:\r\n return Buffer.concat(this.buffers.map(rwBuf => rwBuf.toBuffer()));\r\n }\r\n },\r\n\r\n // writable\r\n // event drain - if write returns false (which it won't), indicates when safe to write again.\r\n // finish - end() has been called\r\n // pipe(src) - pipe() has been called on readable\r\n // unpipe(src) - unpipe() has been called on readable\r\n // error - duh\r\n\r\n _getWritableBuffer() {\r\n if (this.buffers.length) {\r\n const last = this.buffers[this.buffers.length - 1];\r\n if (!last.full) {\r\n return last;\r\n }\r\n }\r\n const buf = new ReadWriteBuf(this.bufSize);\r\n this.buffers.push(buf);\r\n return buf;\r\n },\r\n\r\n async _pipe(chunk) {\r\n const write = function(pipe) {\r\n return new Promise(resolve => {\r\n pipe.write(chunk.toBuffer(), () => {\r\n resolve();\r\n });\r\n });\r\n };\r\n await Promise.all(this.pipes.map(write));\r\n },\r\n _writeToBuffers(chunk) {\r\n let inPos = 0;\r\n const inLen = chunk.length;\r\n while (inPos < inLen) {\r\n // find writable buffer\r\n const buffer = this._getWritableBuffer();\r\n\r\n // write some data\r\n inPos += buffer.write(chunk, inPos, inLen - inPos);\r\n }\r\n },\r\n async write(data, encoding, callback) {\r\n if (encoding instanceof Function) {\r\n callback = encoding;\r\n encoding = 'utf8';\r\n }\r\n callback = callback || utils.nop;\r\n\r\n // encapsulate data into a chunk\r\n let chunk;\r\n if (data instanceof StringBuf) {\r\n chunk = new StringBufChunk(data);\r\n } else if (data instanceof Buffer) {\r\n chunk = new BufferChunk(data);\r\n } else if (typeof data === 'string' || data instanceof String || data instanceof ArrayBuffer) {\r\n chunk = new StringChunk(data, encoding);\r\n } else {\r\n throw new Error('Chunk must be one of type String, Buffer or StringBuf.');\r\n }\r\n\r\n // now, do something with the chunk\r\n if (this.pipes.length) {\r\n if (this.batch) {\r\n this._writeToBuffers(chunk);\r\n while (!this.corked && this.buffers.length > 1) {\r\n this._pipe(this.buffers.shift());\r\n }\r\n } else if (!this.corked) {\r\n await this._pipe(chunk);\r\n callback();\r\n } else {\r\n this._writeToBuffers(chunk);\r\n process.nextTick(callback);\r\n }\r\n } else {\r\n if (!this.paused) {\r\n this.emit('data', chunk.toBuffer());\r\n }\r\n\r\n this._writeToBuffers(chunk);\r\n this.emit('readable');\r\n }\r\n\r\n return true;\r\n },\r\n cork() {\r\n this.corked = true;\r\n },\r\n _flush(/* destination */) {\r\n // if we have comsumers...\r\n if (this.pipes.length) {\r\n // and there's stuff not written\r\n while (this.buffers.length) {\r\n this._pipe(this.buffers.shift());\r\n }\r\n }\r\n },\r\n uncork() {\r\n this.corked = false;\r\n this._flush();\r\n },\r\n end(chunk, encoding, callback) {\r\n const writeComplete = error => {\r\n if (error) {\r\n callback(error);\r\n } else {\r\n this._flush();\r\n this.pipes.forEach(pipe => {\r\n pipe.end();\r\n });\r\n this.emit('finish');\r\n }\r\n };\r\n if (chunk) {\r\n this.write(chunk, encoding, writeComplete);\r\n } else {\r\n writeComplete();\r\n }\r\n },\r\n\r\n // readable\r\n // event readable - some data is now available\r\n // event data - switch to flowing mode - feeds chunks to handler\r\n // event end - no more data\r\n // event close - optional, indicates upstream close\r\n // event error - duh\r\n read(size) {\r\n let buffers;\r\n // read min(buffer, size || infinity)\r\n if (size) {\r\n buffers = [];\r\n while (size && this.buffers.length && !this.buffers[0].eod) {\r\n const first = this.buffers[0];\r\n const buffer = first.read(size);\r\n size -= buffer.length;\r\n buffers.push(buffer);\r\n if (first.eod && first.full) {\r\n this.buffers.shift();\r\n }\r\n }\r\n return Buffer.concat(buffers);\r\n }\r\n\r\n buffers = this.buffers.map(buf => buf.toBuffer()).filter(Boolean);\r\n this.buffers = [];\r\n return Buffer.concat(buffers);\r\n },\r\n setEncoding(encoding) {\r\n // causes stream.read or stream.on('data) to return strings of encoding instead of Buffer objects\r\n this.encoding = encoding;\r\n },\r\n pause() {\r\n this.paused = true;\r\n },\r\n resume() {\r\n this.paused = false;\r\n },\r\n isPaused() {\r\n return !!this.paused;\r\n },\r\n pipe(destination) {\r\n // add destination to pipe list & write current buffer\r\n this.pipes.push(destination);\r\n if (!this.paused && this.buffers.length) {\r\n this.end();\r\n }\r\n },\r\n unpipe(destination) {\r\n // remove destination from pipe list\r\n this.pipes = this.pipes.filter(pipe => pipe !== destination);\r\n },\r\n unshift(/* chunk */) {\r\n // some numpty has read some data that's not for them and they want to put it back!\r\n // Might implement this some day\r\n throw new Error('Not Implemented');\r\n },\r\n wrap(/* stream */) {\r\n // not implemented\r\n throw new Error('Not Implemented');\r\n },\r\n});\r\n\r\nmodule.exports = StreamBuf;\r\n","// StringBuf - a way to keep string memory operations to a minimum\r\n// while building the strings for the xml files\r\nclass StringBuf {\r\n constructor(options) {\r\n this._buf = Buffer.alloc((options && options.size) || 16384);\r\n this._encoding = (options && options.encoding) || 'utf8';\r\n\r\n // where in the buffer we are at\r\n this._inPos = 0;\r\n\r\n // for use by toBuffer()\r\n this._buffer = undefined;\r\n }\r\n\r\n get length() {\r\n return this._inPos;\r\n }\r\n\r\n get capacity() {\r\n return this._buf.length;\r\n }\r\n\r\n get buffer() {\r\n return this._buf;\r\n }\r\n\r\n toBuffer() {\r\n // return the current data as a single enclosing buffer\r\n if (!this._buffer) {\r\n this._buffer = Buffer.alloc(this.length);\r\n this._buf.copy(this._buffer, 0, 0, this.length);\r\n }\r\n return this._buffer;\r\n }\r\n\r\n reset(position) {\r\n position = position || 0;\r\n this._buffer = undefined;\r\n this._inPos = position;\r\n }\r\n\r\n _grow(min) {\r\n let size = this._buf.length * 2;\r\n while (size < min) {\r\n size *= 2;\r\n }\r\n const buf = Buffer.alloc(size);\r\n this._buf.copy(buf, 0);\r\n this._buf = buf;\r\n }\r\n\r\n addText(text) {\r\n this._buffer = undefined;\r\n\r\n let inPos = this._inPos + this._buf.write(text, this._inPos, this._encoding);\r\n\r\n // if we've hit (or nearing capacity), grow the buf\r\n while (inPos >= this._buf.length - 4) {\r\n this._grow(this._inPos + text.length);\r\n\r\n // keep trying to write until we've completely written the text\r\n inPos = this._inPos + this._buf.write(text, this._inPos, this._encoding);\r\n }\r\n\r\n this._inPos = inPos;\r\n }\r\n\r\n addStringBuf(inBuf) {\r\n if (inBuf.length) {\r\n this._buffer = undefined;\r\n\r\n if (this.length + inBuf.length > this.capacity) {\r\n this._grow(this.length + inBuf.length);\r\n }\r\n // eslint-disable-next-line no-underscore-dangle\r\n inBuf._buf.copy(this._buf, this._inPos, 0, inBuf.length);\r\n this._inPos += inBuf.length;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = StringBuf;\r\n","const {toString} = Object.prototype;\r\nconst escapeHtmlRegex = /[\"&<>]/;\r\nconst _ = {\r\n each: function each(obj, cb) {\r\n if (obj) {\r\n if (Array.isArray(obj)) {\r\n obj.forEach(cb);\r\n } else {\r\n Object.keys(obj).forEach(key => {\r\n cb(obj[key], key);\r\n });\r\n }\r\n }\r\n },\r\n\r\n some: function some(obj, cb) {\r\n if (obj) {\r\n if (Array.isArray(obj)) {\r\n return obj.some(cb);\r\n }\r\n return Object.keys(obj).some(key => cb(obj[key], key));\r\n }\r\n return false;\r\n },\r\n\r\n every: function every(obj, cb) {\r\n if (obj) {\r\n if (Array.isArray(obj)) {\r\n return obj.every(cb);\r\n }\r\n return Object.keys(obj).every(key => cb(obj[key], key));\r\n }\r\n return true;\r\n },\r\n\r\n map: function map(obj, cb) {\r\n if (obj) {\r\n if (Array.isArray(obj)) {\r\n return obj.map(cb);\r\n }\r\n return Object.keys(obj).map(key => cb(obj[key], key));\r\n }\r\n return [];\r\n },\r\n\r\n keyBy(a, p) {\r\n return a.reduce((o, v) => {\r\n o[v[p]] = v;\r\n return o;\r\n }, {});\r\n },\r\n\r\n isEqual: function isEqual(a, b) {\r\n const aType = typeof a;\r\n const bType = typeof b;\r\n const aArray = Array.isArray(a);\r\n const bArray = Array.isArray(b);\r\n\r\n if (aType !== bType) {\r\n return false;\r\n }\r\n switch (typeof a) {\r\n case 'object':\r\n if (aArray || bArray) {\r\n if (aArray && bArray) {\r\n return (\r\n a.length === b.length &&\r\n a.every((aValue, index) => {\r\n const bValue = b[index];\r\n return _.isEqual(aValue, bValue);\r\n })\r\n );\r\n }\r\n return false;\r\n }\r\n return _.every(a, (aValue, key) => {\r\n const bValue = b[key];\r\n return _.isEqual(aValue, bValue);\r\n });\r\n\r\n default:\r\n return a === b;\r\n }\r\n },\r\n\r\n escapeHtml(html) {\r\n const regexResult = escapeHtmlRegex.exec(html);\r\n if (!regexResult) return html;\r\n\r\n let result = '';\r\n let escape = '';\r\n let lastIndex = 0;\r\n let i = regexResult.index;\r\n for (; i < html.length; i++) {\r\n switch (html.charAt(i)) {\r\n case '\"':\r\n escape = '"';\r\n break;\r\n case '&':\r\n escape = '&';\r\n break;\r\n case '\\'':\r\n escape = ''';\r\n break;\r\n case '<':\r\n escape = '<';\r\n break;\r\n case '>':\r\n escape = '>';\r\n break;\r\n default:\r\n continue;\r\n }\r\n if (lastIndex !== i) result += html.substring(lastIndex, i);\r\n lastIndex = i + 1;\r\n result += escape;\r\n }\r\n if (lastIndex !== i) return result + html.substring(lastIndex, i);\r\n return result;\r\n },\r\n\r\n strcmp(a, b) {\r\n if (a < b) return -1;\r\n if (a > b) return 1;\r\n return 0;\r\n },\r\n\r\n isUndefined(val) {\r\n return toString.call(val) === '[object Undefined]';\r\n },\r\n\r\n isObject(val) {\r\n return toString.call(val) === '[object Object]';\r\n },\r\n\r\n deepMerge() {\r\n const target = arguments[0] || {};\r\n const {length} = arguments;\r\n // eslint-disable-next-line one-var\r\n let src, clone, copyIsArray;\r\n\r\n function assignValue(val, key) {\r\n src = target[key];\r\n copyIsArray = Array.isArray(val);\r\n if (_.isObject(val) || copyIsArray) {\r\n if (copyIsArray) {\r\n copyIsArray = false;\r\n clone = src && Array.isArray(src) ? src : [];\r\n } else {\r\n clone = src && _.isObject(src) ? src : {};\r\n }\r\n target[key] = _.deepMerge(clone, val);\r\n } else if (!_.isUndefined(val)) {\r\n target[key] = val;\r\n }\r\n }\r\n\r\n for (let i = 0; i < length; i++) {\r\n _.each(arguments[i], assignValue);\r\n }\r\n return target;\r\n },\r\n};\r\n\r\nmodule.exports = _;\r\n","const fs = require('fs');\r\n\r\n// useful stuff\r\nconst inherits = function(cls, superCtor, statics, prototype) {\r\n // eslint-disable-next-line no-underscore-dangle\r\n cls.super_ = superCtor;\r\n\r\n if (!prototype) {\r\n prototype = statics;\r\n statics = null;\r\n }\r\n\r\n if (statics) {\r\n Object.keys(statics).forEach(i => {\r\n Object.defineProperty(cls, i, Object.getOwnPropertyDescriptor(statics, i));\r\n });\r\n }\r\n\r\n const properties = {\r\n constructor: {\r\n value: cls,\r\n enumerable: false,\r\n writable: false,\r\n configurable: true,\r\n },\r\n };\r\n if (prototype) {\r\n Object.keys(prototype).forEach(i => {\r\n properties[i] = Object.getOwnPropertyDescriptor(prototype, i);\r\n });\r\n }\r\n\r\n cls.prototype = Object.create(superCtor.prototype, properties);\r\n};\r\n\r\n// eslint-disable-next-line no-control-regex\r\nconst xmlDecodeRegex = /[<>&'\"\\x7F\\x00-\\x08\\x0B-\\x0C\\x0E-\\x1F]/;\r\nconst utils = {\r\n nop() {},\r\n promiseImmediate(value) {\r\n return new Promise(resolve => {\r\n if (global.setImmediate) {\r\n setImmediate(() => {\r\n resolve(value);\r\n });\r\n } else {\r\n // poorman's setImmediate - must wait at least 1ms\r\n setTimeout(() => {\r\n resolve(value);\r\n }, 1);\r\n }\r\n });\r\n },\r\n inherits,\r\n dateToExcel(d, date1904) {\r\n return 25569 + ( d.getTime() / (24 * 3600 * 1000) ) - (date1904 ? 1462 : 0);\r\n },\r\n excelToDate(v, date1904) {\r\n const millisecondSinceEpoch = Math.round((v - 25569 + (date1904 ? 1462 : 0)) * 24 * 3600 * 1000);\r\n return new Date(millisecondSinceEpoch);\r\n },\r\n parsePath(filepath) {\r\n const last = filepath.lastIndexOf('/');\r\n return {\r\n path: filepath.substring(0, last),\r\n name: filepath.substring(last + 1),\r\n };\r\n },\r\n getRelsPath(filepath) {\r\n const path = utils.parsePath(filepath);\r\n return `${path.path}/_rels/${path.name}.rels`;\r\n },\r\n xmlEncode(text) {\r\n const regexResult = xmlDecodeRegex.exec(text);\r\n if (!regexResult) return text;\r\n\r\n let result = '';\r\n let escape = '';\r\n let lastIndex = 0;\r\n let i = regexResult.index;\r\n for (; i < text.length; i++) {\r\n const charCode = text.charCodeAt(i);\r\n switch (charCode) {\r\n case 34: // \"\r\n escape = '"';\r\n break;\r\n case 38: // &\r\n escape = '&';\r\n break;\r\n case 39: // '\r\n escape = ''';\r\n break;\r\n case 60: // <\r\n escape = '<';\r\n break;\r\n case 62: // >\r\n escape = '>';\r\n break;\r\n case 127:\r\n escape = '';\r\n break;\r\n default: {\r\n if (charCode <= 31 && (charCode <= 8 || (charCode >= 11 && charCode !== 13))) {\r\n escape = '';\r\n break;\r\n }\r\n continue;\r\n }\r\n }\r\n if (lastIndex !== i) result += text.substring(lastIndex, i);\r\n lastIndex = i + 1;\r\n if (escape) result += escape;\r\n }\r\n if (lastIndex !== i) return result + text.substring(lastIndex, i);\r\n return result;\r\n },\r\n xmlDecode(text) {\r\n return text.replace(/&([a-z]*);/g, c => {\r\n switch (c) {\r\n case '<':\r\n return '<';\r\n case '>':\r\n return '>';\r\n case '&':\r\n return '&';\r\n case ''':\r\n return '\\'';\r\n case '"':\r\n return '\"';\r\n default:\r\n return c;\r\n }\r\n });\r\n },\r\n validInt(value) {\r\n const i = parseInt(value, 10);\r\n return !Number.isNaN(i) ? i : 0;\r\n },\r\n\r\n isDateFmt(fmt) {\r\n if (!fmt) {\r\n return false;\r\n }\r\n\r\n // must remove all chars inside quotes and []\r\n fmt = fmt.replace(/\\[[^\\]]*]/g, '');\r\n fmt = fmt.replace(/\"[^\"]*\"/g, '');\r\n // then check for date formatting chars\r\n const result = fmt.match(/[ymdhMsb]+/) !== null;\r\n return result;\r\n },\r\n\r\n fs: {\r\n exists(path) {\r\n return new Promise(resolve => {\r\n fs.access(path, fs.constants.F_OK, err => {\r\n resolve(!err);\r\n });\r\n });\r\n },\r\n },\r\n\r\n toIsoDateString(dt) {\r\n return dt.toIsoString().subsstr(0, 10);\r\n },\r\n};\r\n\r\nmodule.exports = utils;\r\n","const _ = require('./under-dash');\r\n\r\nconst utils = require('./utils');\r\n\r\n// constants\r\nconst OPEN_ANGLE = '<';\r\nconst CLOSE_ANGLE = '>';\r\nconst OPEN_ANGLE_SLASH = '';\r\nconst EQUALS_QUOTE = '=\"';\r\nconst QUOTE = '\"';\r\nconst SPACE = ' ';\r\n\r\nfunction pushAttribute(xml, name, value) {\r\n xml.push(SPACE);\r\n xml.push(name);\r\n xml.push(EQUALS_QUOTE);\r\n xml.push(utils.xmlEncode(value.toString()));\r\n xml.push(QUOTE);\r\n}\r\nfunction pushAttributes(xml, attributes) {\r\n if (attributes) {\r\n _.each(attributes, (value, name) => {\r\n if (value !== undefined) {\r\n pushAttribute(xml, name, value);\r\n }\r\n });\r\n }\r\n}\r\n\r\nclass XmlStream {\r\n constructor() {\r\n this._xml = [];\r\n this._stack = [];\r\n this._rollbacks = [];\r\n }\r\n\r\n get tos() {\r\n return this._stack.length ? this._stack[this._stack.length - 1] : undefined;\r\n }\r\n\r\n get cursor() {\r\n // handy way to track whether anything has been added\r\n return this._xml.length;\r\n }\r\n\r\n openXml(docAttributes) {\r\n const xml = this._xml;\r\n // \r\n xml.push('\\n');\r\n }\r\n\r\n openNode(name, attributes) {\r\n const parent = this.tos;\r\n const xml = this._xml;\r\n if (parent && this.open) {\r\n xml.push(CLOSE_ANGLE);\r\n }\r\n\r\n this._stack.push(name);\r\n\r\n // start streaming node\r\n xml.push(OPEN_ANGLE);\r\n xml.push(name);\r\n pushAttributes(xml, attributes);\r\n this.leaf = true;\r\n this.open = true;\r\n }\r\n\r\n addAttribute(name, value) {\r\n if (!this.open) {\r\n throw new Error('Cannot write attributes to node if it is not open');\r\n }\r\n if (value !== undefined) {\r\n pushAttribute(this._xml, name, value);\r\n }\r\n }\r\n\r\n addAttributes(attrs) {\r\n if (!this.open) {\r\n throw new Error('Cannot write attributes to node if it is not open');\r\n }\r\n pushAttributes(this._xml, attrs);\r\n }\r\n\r\n writeText(text) {\r\n const xml = this._xml;\r\n if (this.open) {\r\n xml.push(CLOSE_ANGLE);\r\n this.open = false;\r\n }\r\n this.leaf = false;\r\n xml.push(utils.xmlEncode(text.toString()));\r\n }\r\n\r\n writeXml(xml) {\r\n if (this.open) {\r\n this._xml.push(CLOSE_ANGLE);\r\n this.open = false;\r\n }\r\n this.leaf = false;\r\n this._xml.push(xml);\r\n }\r\n\r\n closeNode() {\r\n const node = this._stack.pop();\r\n const xml = this._xml;\r\n if (this.leaf) {\r\n xml.push(CLOSE_SLASH_ANGLE);\r\n } else {\r\n xml.push(OPEN_ANGLE_SLASH);\r\n xml.push(node);\r\n xml.push(CLOSE_ANGLE);\r\n }\r\n this.open = false;\r\n this.leaf = false;\r\n }\r\n\r\n leafNode(name, attributes, text) {\r\n this.openNode(name, attributes);\r\n if (text !== undefined) {\r\n // zeros need to be written\r\n this.writeText(text);\r\n }\r\n this.closeNode();\r\n }\r\n\r\n closeAll() {\r\n while (this._stack.length) {\r\n this.closeNode();\r\n }\r\n }\r\n\r\n addRollback() {\r\n this._rollbacks.push({\r\n xml: this._xml.length,\r\n stack: this._stack.length,\r\n leaf: this.leaf,\r\n open: this.open,\r\n });\r\n return this.cursor;\r\n }\r\n\r\n commit() {\r\n this._rollbacks.pop();\r\n }\r\n\r\n rollback() {\r\n const r = this._rollbacks.pop();\r\n if (this._xml.length > r.xml) {\r\n this._xml.splice(r.xml, this._xml.length - r.xml);\r\n }\r\n if (this._stack.length > r.stack) {\r\n this._stack.splice(r.stack, this._stack.length - r.stack);\r\n }\r\n this.leaf = r.leaf;\r\n this.open = r.open;\r\n }\r\n\r\n get xml() {\r\n this.closeAll();\r\n return this._xml.join('');\r\n }\r\n}\r\n\r\nXmlStream.StdDocAttributes = {\r\n version: '1.0',\r\n encoding: 'UTF-8',\r\n standalone: 'yes',\r\n};\r\n\r\nmodule.exports = XmlStream;\r\n","const events = require('events');\r\nconst JSZip = require('jszip');\r\n\r\nconst StreamBuf = require('./stream-buf');\r\nconst {stringToBuffer} = require('./browser-buffer-encode');\r\n\r\n// =============================================================================\r\n// The ZipWriter class\r\n// Packs streamed data into an output zip stream\r\nclass ZipWriter extends events.EventEmitter {\r\n constructor(options) {\r\n super();\r\n this.options = Object.assign(\r\n {\r\n type: 'nodebuffer',\r\n compression: 'DEFLATE',\r\n },\r\n options\r\n );\r\n\r\n this.zip = new JSZip();\r\n this.stream = new StreamBuf();\r\n }\r\n\r\n append(data, options) {\r\n if (options.hasOwnProperty('base64') && options.base64) {\r\n this.zip.file(options.name, data, {base64: true});\r\n } else {\r\n // https://www.npmjs.com/package/process\r\n if (process.browser && typeof data === 'string') {\r\n // use TextEncoder in browser\r\n data = stringToBuffer(data);\r\n }\r\n this.zip.file(options.name, data);\r\n }\r\n }\r\n\r\n async finalize() {\r\n const content = await this.zip.generateAsync(this.options);\r\n this.stream.end(content);\r\n this.emit('finish');\r\n }\r\n\r\n // ==========================================================================\r\n // Stream.Readable interface\r\n read(size) {\r\n return this.stream.read(size);\r\n }\r\n\r\n setEncoding(encoding) {\r\n return this.stream.setEncoding(encoding);\r\n }\r\n\r\n pause() {\r\n return this.stream.pause();\r\n }\r\n\r\n resume() {\r\n return this.stream.resume();\r\n }\r\n\r\n isPaused() {\r\n return this.stream.isPaused();\r\n }\r\n\r\n pipe(destination, options) {\r\n return this.stream.pipe(destination, options);\r\n }\r\n\r\n unpipe(destination) {\r\n return this.stream.unpipe(destination);\r\n }\r\n\r\n unshift(chunk) {\r\n return this.stream.unshift(chunk);\r\n }\r\n\r\n wrap(stream) {\r\n return this.stream.wrap(stream);\r\n }\r\n}\r\n\r\n// =============================================================================\r\n\r\nmodule.exports = {\r\n ZipWriter,\r\n};\r\n","module.exports = {\r\n 0: {f: 'General'},\r\n 1: {f: '0'},\r\n 2: {f: '0.00'},\r\n 3: {f: '#,##0'},\r\n 4: {f: '#,##0.00'},\r\n 9: {f: '0%'},\r\n 10: {f: '0.00%'},\r\n 11: {f: '0.00E+00'},\r\n 12: {f: '# ?/?'},\r\n 13: {f: '# ??/??'},\r\n 14: {f: 'mm-dd-yy'},\r\n 15: {f: 'd-mmm-yy'},\r\n 16: {f: 'd-mmm'},\r\n 17: {f: 'mmm-yy'},\r\n 18: {f: 'h:mm AM/PM'},\r\n 19: {f: 'h:mm:ss AM/PM'},\r\n 20: {f: 'h:mm'},\r\n 21: {f: 'h:mm:ss'},\r\n 22: {f: 'm/d/yy \"h\":mm'},\r\n\r\n 27: {\r\n 'zh-tw': '[$-404]e/m/d',\r\n 'zh-cn': 'yyyy\"年\"m\"月\"',\r\n 'ja-jp': '[$-411]ge.m.d',\r\n 'ko-kr': 'yyyy\"年\" mm\"月\" dd\"日\"',\r\n },\r\n 28: {\r\n 'zh-tw': '[$-404]e\"年\"m\"月\"d\"日\"',\r\n 'zh-cn': 'm\"月\"d\"日\"',\r\n 'ja-jp': '[$-411]ggge\"年\"m\"月\"d\"日\"',\r\n 'ko-kr': 'mm-dd',\r\n },\r\n 29: {\r\n 'zh-tw': '[$-404]e\"年\"m\"月\"d\"日\"',\r\n 'zh-cn': 'm\"月\"d\"日\"',\r\n 'ja-jp': '[$-411]ggge\"年\"m\"月\"d\"日\"',\r\n 'ko-kr': 'mm-dd',\r\n },\r\n 30: {'zh-tw': 'm/d/yy ', 'zh-cn': 'm-d-yy', 'ja-jp': 'm/d/yy', 'ko-kr': 'mm-dd-yy'},\r\n 31: {\r\n 'zh-tw': 'yyyy\"年\"m\"月\"d\"日\"',\r\n 'zh-cn': 'yyyy\"年\"m\"月\"d\"日\"',\r\n 'ja-jp': 'yyyy\"年\"m\"月\"d\"日\"',\r\n 'ko-kr': 'yyyy\"년\" mm\"월\" dd\"일\"',\r\n },\r\n 32: {\r\n 'zh-tw': 'hh\"時\"mm\"分\"',\r\n 'zh-cn': 'h\"时\"mm\"分\"',\r\n 'ja-jp': 'h\"時\"mm\"分\"',\r\n 'ko-kr': 'h\"시\" mm\"분\"',\r\n },\r\n 33: {\r\n 'zh-tw': 'hh\"時\"mm\"分\"ss\"秒\"',\r\n 'zh-cn': 'h\"时\"mm\"分\"ss\"秒\"',\r\n 'ja-jp': 'h\"時\"mm\"分\"ss\"秒\"',\r\n 'ko-kr': 'h\"시\" mm\"분\" ss\"초\"',\r\n },\r\n 34: {\r\n 'zh-tw': '上午/下午 hh\"時\"mm\"分\"',\r\n 'zh-cn': '上午/下午 h\"时\"mm\"分\"',\r\n 'ja-jp': 'yyyy\"年\"m\"月\"',\r\n 'ko-kr': 'yyyy-mm-dd',\r\n },\r\n 35: {\r\n 'zh-tw': '上午/下午 hh\"時\"mm\"分\"ss\"秒\"',\r\n 'zh-cn': '上午/下午 h\"时\"mm\"分\"ss\"秒\"',\r\n 'ja-jp': 'm\"月\"d\"日\"',\r\n 'ko-kr': 'yyyy-mm-dd',\r\n },\r\n 36: {\r\n 'zh-tw': '[$-404]e/m/d',\r\n 'zh-cn': 'yyyy\"年\"m\"月\"',\r\n 'ja-jp': '[$-411]ge.m.d',\r\n 'ko-kr': 'yyyy\"年\" mm\"月\" dd\"日\"',\r\n },\r\n\r\n 37: {f: '#,##0 ;(#,##0)'},\r\n 38: {f: '#,##0 ;[Red](#,##0)'},\r\n 39: {f: '#,##0.00 ;(#,##0.00)'},\r\n 40: {f: '#,##0.00 ;[Red](#,##0.00)'},\r\n 45: {f: 'mm:ss'},\r\n 46: {f: '[h]:mm:ss'},\r\n 47: {f: 'mmss.0'},\r\n 48: {f: '##0.0E+0'},\r\n 49: {f: '@'},\r\n\r\n 50: {\r\n 'zh-tw': '[$-404]e/m/d',\r\n 'zh-cn': 'yyyy\"年\"m\"月\"',\r\n 'ja-jp': '[$-411]ge.m.d',\r\n 'ko-kr': 'yyyy\"年\" mm\"月\" dd\"日\"',\r\n },\r\n 51: {\r\n 'zh-tw': '[$-404]e\"年\"m\"月\"d\"日\"',\r\n 'zh-cn': 'm\"月\"d\"日\"',\r\n 'ja-jp': '[$-411]ggge\"年\"m\"月\"d\"日\"',\r\n 'ko-kr': 'mm-dd',\r\n },\r\n 52: {\r\n 'zh-tw': '上午/下午 hh\"時\"mm\"分\"',\r\n 'zh-cn': 'yyyy\"年\"m\"月\"',\r\n 'ja-jp': 'yyyy\"年\"m\"月\"',\r\n 'ko-kr': 'yyyy-mm-dd',\r\n },\r\n 53: {\r\n 'zh-tw': '上午/下午 hh\"時\"mm\"分\"ss\"秒\"',\r\n 'zh-cn': 'm\"月\"d\"日\"',\r\n 'ja-jp': 'm\"月\"d\"日\"',\r\n 'ko-kr': 'yyyy-mm-dd',\r\n },\r\n 54: {\r\n 'zh-tw': '[$-404]e\"年\"m\"月\"d\"日\"',\r\n 'zh-cn': 'm\"月\"d\"日\"',\r\n 'ja-jp': '[$-411]ggge\"年\"m\"月\"d\"日\"',\r\n 'ko-kr': 'mm-dd',\r\n },\r\n 55: {\r\n 'zh-tw': '上午/下午 hh\"時\"mm\"分\"',\r\n 'zh-cn': '上午/下午 h\"时\"mm\"分\"',\r\n 'ja-jp': 'yyyy\"年\"m\"月\"',\r\n 'ko-kr': 'yyyy-mm-dd',\r\n },\r\n 56: {\r\n 'zh-tw': '上午/下午 hh\"時\"mm\"分\"ss\"秒\"',\r\n 'zh-cn': '上午/下午 h\"时\"mm\"分\"ss\"秒\"',\r\n 'ja-jp': 'm\"月\"d\"日\"',\r\n 'ko-kr': 'yyyy-mm-dd',\r\n },\r\n 57: {\r\n 'zh-tw': '[$-404]e/m/d',\r\n 'zh-cn': 'yyyy\"年\"m\"月\"',\r\n 'ja-jp': '[$-411]ge.m.d',\r\n 'ko-kr': 'yyyy\"年\" mm\"月\" dd\"日\"',\r\n },\r\n 58: {\r\n 'zh-tw': '[$-404]e\"年\"m\"月\"d\"日\"',\r\n 'zh-cn': 'm\"月\"d\"日\"',\r\n 'ja-jp': '[$-411]ggge\"年\"m\"月\"d\"日\"',\r\n 'ko-kr': 'mm-dd',\r\n },\r\n\r\n 59: {'th-th': 't0'},\r\n 60: {'th-th': 't0.00'},\r\n 61: {'th-th': 't#,##0'},\r\n 62: {'th-th': 't#,##0.00'},\r\n 67: {'th-th': 't0%'},\r\n 68: {'th-th': 't0.00%'},\r\n 69: {'th-th': 't# ?/?'},\r\n 70: {'th-th': 't# ??/??'},\r\n\r\n 81: {'th-th': 'd/m/bb'},\r\n};\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n OfficeDocument:\r\n 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',\r\n Worksheet: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet',\r\n CalcChain: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain',\r\n SharedStrings:\r\n 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings',\r\n Styles: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',\r\n Theme: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',\r\n Hyperlink: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',\r\n Image: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',\r\n CoreProperties:\r\n 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',\r\n ExtenderProperties:\r\n 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\r\n Comments: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments',\r\n VmlDrawing: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing',\r\n Table: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/table',\r\n};\r\n","const parseSax = require('../../utils/parse-sax');\r\nconst XmlStream = require('../../utils/xml-stream');\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\r\nclass BaseXform {\r\n // constructor(/* model, name */) {}\r\n\r\n // ============================================================\r\n // Virtual Interface\r\n prepare(/* model, options */) {\r\n // optional preparation (mutation) of model so it is ready for write\r\n }\r\n\r\n render(/* xmlStream, model */) {\r\n // convert model to xml\r\n }\r\n\r\n parseOpen(node) {\r\n // XML node opened\r\n }\r\n\r\n parseText(text) {\r\n // chunk of text encountered for current node\r\n }\r\n\r\n parseClose(name) {\r\n // XML node closed\r\n }\r\n\r\n reconcile(model, options) {\r\n // optional post-parse step (opposite to prepare)\r\n }\r\n\r\n // ============================================================\r\n reset() {\r\n // to make sure parses don't bleed to next iteration\r\n this.model = null;\r\n\r\n // if we have a map - reset them too\r\n if (this.map) {\r\n Object.values(this.map).forEach(xform => {\r\n if (xform instanceof BaseXform) {\r\n xform.reset();\r\n } else if (xform.xform) {\r\n xform.xform.reset();\r\n }\r\n });\r\n }\r\n }\r\n\r\n mergeModel(obj) {\r\n // set obj's props to this.model\r\n this.model = Object.assign(this.model || {}, obj);\r\n }\r\n\r\n async parse(saxParser) {\r\n for await (const events of saxParser) {\r\n for (const {eventType, value} of events) {\r\n if (eventType === 'opentag') {\r\n this.parseOpen(value);\r\n } else if (eventType === 'text') {\r\n this.parseText(value);\r\n } else if (eventType === 'closetag') {\r\n if (!this.parseClose(value.name)) {\r\n return this.model;\r\n }\r\n }\r\n }\r\n }\r\n return this.model;\r\n }\r\n\r\n async parseStream(stream) {\r\n return this.parse(parseSax(stream));\r\n }\r\n\r\n get xml() {\r\n // convenience function to get the xml of this.model\r\n // useful for manager types that are built during the prepare phase\r\n return this.toXml(this.model);\r\n }\r\n\r\n toXml(model) {\r\n const xmlStream = new XmlStream();\r\n this.render(xmlStream, model);\r\n return xmlStream.xml;\r\n }\r\n\r\n // ============================================================\r\n // Useful Utilities\r\n static toAttribute(value, dflt, always = false) {\r\n if (value === undefined) {\r\n if (always) {\r\n return dflt;\r\n }\r\n } else if (always || value !== dflt) {\r\n return value.toString();\r\n }\r\n return undefined;\r\n }\r\n\r\n static toStringAttribute(value, dflt, always = false) {\r\n return BaseXform.toAttribute(value, dflt, always);\r\n }\r\n\r\n static toStringValue(attr, dflt) {\r\n return attr === undefined ? dflt : attr;\r\n }\r\n\r\n static toBoolAttribute(value, dflt, always = false) {\r\n if (value === undefined) {\r\n if (always) {\r\n return dflt;\r\n }\r\n } else if (always || value !== dflt) {\r\n return value ? '1' : '0';\r\n }\r\n return undefined;\r\n }\r\n\r\n static toBoolValue(attr, dflt) {\r\n return attr === undefined ? dflt : attr === '1';\r\n }\r\n\r\n static toIntAttribute(value, dflt, always = false) {\r\n return BaseXform.toAttribute(value, dflt, always);\r\n }\r\n\r\n static toIntValue(attr, dflt) {\r\n return attr === undefined ? dflt : parseInt(attr, 10);\r\n }\r\n\r\n static toFloatAttribute(value, dflt, always = false) {\r\n return BaseXform.toAttribute(value, dflt, always);\r\n }\r\n\r\n static toFloatValue(attr, dflt) {\r\n return attr === undefined ? dflt : parseFloat(attr);\r\n }\r\n}\r\n\r\nmodule.exports = BaseXform;\r\n","const BaseXform = require('../base-xform');\r\nconst colCache = require('../../../utils/col-cache');\r\n\r\nclass DefinedNamesXform extends BaseXform {\r\n render(xmlStream, model) {\r\n // \r\n // name.ranges.join(',')\r\n // name.ranges.join(',')\r\n // \r\n xmlStream.openNode('definedName', {\r\n name: model.name,\r\n localSheetId: model.localSheetId,\r\n });\r\n xmlStream.writeText(model.ranges.join(','));\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case 'definedName':\r\n this._parsedName = node.attributes.name;\r\n this._parsedLocalSheetId = node.attributes.localSheetId;\r\n this._parsedText = [];\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n this._parsedText.push(text);\r\n }\r\n\r\n parseClose() {\r\n this.model = {\r\n name: this._parsedName,\r\n ranges: extractRanges(this._parsedText.join('')),\r\n };\r\n if (this._parsedLocalSheetId !== undefined) {\r\n this.model.localSheetId = parseInt(this._parsedLocalSheetId, 10);\r\n }\r\n return false;\r\n }\r\n}\r\n\r\nfunction isValidRange(range) {\r\n try {\r\n colCache.decodeEx(range);\r\n return true;\r\n } catch (err) {\r\n return false;\r\n }\r\n}\r\n\r\nfunction extractRanges(parsedText) {\r\n const ranges = [];\r\n let quotesOpened = false;\r\n let last = '';\r\n parsedText.split(',').forEach(item => {\r\n if (!item) {\r\n return;\r\n }\r\n const quotes = (item.match(/'/g) || []).length;\r\n\r\n if (!quotes) {\r\n if (quotesOpened) {\r\n last += `${item},`;\r\n } else if (isValidRange(item)) {\r\n ranges.push(item);\r\n }\r\n return;\r\n }\r\n const quotesEven = quotes % 2 === 0;\r\n\r\n if (!quotesOpened && quotesEven && isValidRange(item)) {\r\n ranges.push(item);\r\n } else if (quotesOpened && !quotesEven) {\r\n quotesOpened = false;\r\n if (isValidRange(last + item)) {\r\n ranges.push(last + item);\r\n }\r\n last = '';\r\n } else {\r\n quotesOpened = true;\r\n last += `${item},`;\r\n }\r\n });\r\n return ranges;\r\n}\r\n\r\nmodule.exports = DefinedNamesXform;\r\n","const utils = require('../../../utils/utils');\r\nconst BaseXform = require('../base-xform');\r\n\r\nclass WorksheetXform extends BaseXform {\r\n render(xmlStream, model) {\r\n xmlStream.leafNode('sheet', {\r\n sheetId: model.id,\r\n name: model.name,\r\n state: model.state,\r\n 'r:id': model.rId,\r\n });\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === 'sheet') {\r\n this.model = {\r\n name: utils.xmlDecode(node.attributes.name),\r\n id: parseInt(node.attributes.sheetId, 10),\r\n state: node.attributes.state,\r\n rId: node.attributes['r:id'],\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 = WorksheetXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass WorkbookCalcPropertiesXform extends BaseXform {\r\n render(xmlStream, model) {\r\n xmlStream.leafNode('calcPr', {\r\n calcId: 171027,\r\n fullCalcOnLoad: model.fullCalcOnLoad ? 1 : undefined,\r\n });\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === 'calcPr') {\r\n this.model = {};\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 = WorkbookCalcPropertiesXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass WorksheetPropertiesXform extends BaseXform {\r\n render(xmlStream, model) {\r\n xmlStream.leafNode('workbookPr', {\r\n date1904: model.date1904 ? 1 : undefined,\r\n defaultThemeVersion: 164011,\r\n filterPrivacy: 1,\r\n });\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === 'workbookPr') {\r\n this.model = {\r\n date1904: node.attributes.date1904 === '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 = WorksheetPropertiesXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass WorkbookViewXform extends BaseXform {\r\n render(xmlStream, model) {\r\n const attributes = {\r\n xWindow: model.x || 0,\r\n yWindow: model.y || 0,\r\n windowWidth: model.width || 12000,\r\n windowHeight: model.height || 24000,\r\n firstSheet: model.firstSheet,\r\n activeTab: model.activeTab,\r\n };\r\n if (model.visibility && model.visibility !== 'visible') {\r\n attributes.visibility = model.visibility;\r\n }\r\n xmlStream.leafNode('workbookView', attributes);\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === 'workbookView') {\r\n const model = (this.model = {});\r\n const addS = function(name, value, dflt) {\r\n const s = value !== undefined ? (model[name] = value) : dflt;\r\n if (s !== undefined) {\r\n model[name] = s;\r\n }\r\n };\r\n const addN = function(name, value, dflt) {\r\n const n = value !== undefined ? (model[name] = parseInt(value, 10)) : dflt;\r\n if (n !== undefined) {\r\n model[name] = n;\r\n }\r\n };\r\n addN('x', node.attributes.xWindow, 0);\r\n addN('y', node.attributes.yWindow, 0);\r\n addN('width', node.attributes.windowWidth, 25000);\r\n addN('height', node.attributes.windowHeight, 10000);\r\n addS('visibility', node.attributes.visibility, 'visible');\r\n addN('activeTab', node.attributes.activeTab, undefined);\r\n addN('firstSheet', node.attributes.firstSheet, undefined);\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 = WorkbookViewXform;\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 BaseXform = require('../base-xform');\r\nconst StaticXform = require('../static-xform');\r\nconst ListXform = require('../list-xform');\r\nconst DefinedNameXform = require('./defined-name-xform');\r\nconst SheetXform = require('./sheet-xform');\r\nconst WorkbookViewXform = require('./workbook-view-xform');\r\nconst WorkbookPropertiesXform = require('./workbook-properties-xform');\r\nconst WorkbookCalcPropertiesXform = require('./workbook-calc-properties-xform');\r\n\r\nclass WorkbookXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n fileVersion: WorkbookXform.STATIC_XFORMS.fileVersion,\r\n workbookPr: new WorkbookPropertiesXform(),\r\n bookViews: new ListXform({\r\n tag: 'bookViews',\r\n count: false,\r\n childXform: new WorkbookViewXform(),\r\n }),\r\n sheets: new ListXform({tag: 'sheets', count: false, childXform: new SheetXform()}),\r\n definedNames: new ListXform({\r\n tag: 'definedNames',\r\n count: false,\r\n childXform: new DefinedNameXform(),\r\n }),\r\n calcPr: new WorkbookCalcPropertiesXform(),\r\n };\r\n }\r\n\r\n prepare(model) {\r\n model.sheets = model.worksheets;\r\n\r\n // collate all the print areas from all of the sheets and add them to the defined names\r\n const printAreas = [];\r\n let index = 0; // sheets is sparse array - calc index manually\r\n model.sheets.forEach(sheet => {\r\n if (sheet.pageSetup && sheet.pageSetup.printArea) {\r\n sheet.pageSetup.printArea.split('&&').forEach(printArea => {\r\n const printAreaComponents = printArea.split(':');\r\n const definedName = {\r\n name: '_xlnm.Print_Area',\r\n ranges: [`'${sheet.name}'!$${printAreaComponents[0]}:$${printAreaComponents[1]}`],\r\n localSheetId: index,\r\n };\r\n printAreas.push(definedName);\r\n });\r\n }\r\n\r\n if (\r\n sheet.pageSetup &&\r\n (sheet.pageSetup.printTitlesRow || sheet.pageSetup.printTitlesColumn)\r\n ) {\r\n const ranges = [];\r\n\r\n if (sheet.pageSetup.printTitlesColumn) {\r\n const titlesColumns = sheet.pageSetup.printTitlesColumn.split(':');\r\n ranges.push(`'${sheet.name}'!$${titlesColumns[0]}:$${titlesColumns[1]}`);\r\n }\r\n\r\n if (sheet.pageSetup.printTitlesRow) {\r\n const titlesRows = sheet.pageSetup.printTitlesRow.split(':');\r\n ranges.push(`'${sheet.name}'!$${titlesRows[0]}:$${titlesRows[1]}`);\r\n }\r\n\r\n const definedName = {\r\n name: '_xlnm.Print_Titles',\r\n ranges,\r\n localSheetId: index,\r\n };\r\n\r\n printAreas.push(definedName);\r\n }\r\n index++;\r\n });\r\n if (printAreas.length) {\r\n model.definedNames = model.definedNames.concat(printAreas);\r\n }\r\n\r\n (model.media || []).forEach((medium, i) => {\r\n // assign name\r\n medium.name = medium.type + (i + 1);\r\n });\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openXml(XmlStream.StdDocAttributes);\r\n xmlStream.openNode('workbook', WorkbookXform.WORKBOOK_ATTRIBUTES);\r\n\r\n this.map.fileVersion.render(xmlStream);\r\n this.map.workbookPr.render(xmlStream, model.properties);\r\n this.map.bookViews.render(xmlStream, model.views);\r\n this.map.sheets.render(xmlStream, model.sheets);\r\n this.map.definedNames.render(xmlStream, model.definedNames);\r\n this.map.calcPr.render(xmlStream, model.calcProperties);\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 'workbook':\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 'workbook':\r\n this.model = {\r\n sheets: this.map.sheets.model,\r\n properties: this.map.workbookPr.model || {},\r\n views: this.map.bookViews.model,\r\n calcProperties: {},\r\n };\r\n if (this.map.definedNames.model) {\r\n this.model.definedNames = this.map.definedNames.model;\r\n }\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 reconcile(model) {\r\n const rels = (model.workbookRels || []).reduce((map, rel) => {\r\n map[rel.Id] = rel;\r\n return map;\r\n }, {});\r\n\r\n // reconcile sheet ids, rIds and names\r\n const worksheets = [];\r\n let worksheet;\r\n let index = 0;\r\n\r\n (model.sheets || []).forEach(sheet => {\r\n const rel = rels[sheet.rId];\r\n if (!rel) {\r\n return;\r\n }\r\n // if rel.Target start with `[space]/xl/` or `/xl/` , then it will be replaced with `''` and spliced behind `xl/`,\r\n // otherwise it will be spliced directly behind `xl/`. i.g.\r\n worksheet = model.worksheetHash[`xl/${rel.Target.replace(/^(\\s|\\/xl\\/)+/, '')}`];\r\n // If there are \"chartsheets\" in the file, rel.Target will\r\n // come out as chartsheets/sheet1.xml or similar here, and\r\n // that won't be in model.worksheetHash.\r\n // As we don't have the infrastructure to support chartsheets,\r\n // we will ignore them for now:\r\n if (worksheet) {\r\n worksheet.name = sheet.name;\r\n worksheet.id = sheet.id;\r\n worksheet.state = sheet.state;\r\n worksheets[index++] = worksheet;\r\n }\r\n });\r\n\r\n // reconcile print areas\r\n const definedNames = [];\r\n _.each(model.definedNames, definedName => {\r\n if (definedName.name === '_xlnm.Print_Area') {\r\n worksheet = worksheets[definedName.localSheetId];\r\n if (worksheet) {\r\n if (!worksheet.pageSetup) {\r\n worksheet.pageSetup = {};\r\n }\r\n const range = colCache.decodeEx(definedName.ranges[0]);\r\n worksheet.pageSetup.printArea = worksheet.pageSetup.printArea\r\n ? `${worksheet.pageSetup.printArea}&&${range.dimensions}`\r\n : range.dimensions;\r\n }\r\n } else if (definedName.name === '_xlnm.Print_Titles') {\r\n worksheet = worksheets[definedName.localSheetId];\r\n if (worksheet) {\r\n if (!worksheet.pageSetup) {\r\n worksheet.pageSetup = {};\r\n }\r\n\r\n const rangeString = definedName.ranges.join(',');\r\n\r\n const dollarRegex = /\\$/g;\r\n\r\n const rowRangeRegex = /\\$\\d+:\\$\\d+/;\r\n const rowRangeMatches = rangeString.match(rowRangeRegex);\r\n\r\n if (rowRangeMatches && rowRangeMatches.length) {\r\n const range = rowRangeMatches[0];\r\n worksheet.pageSetup.printTitlesRow = range.replace(dollarRegex, '');\r\n }\r\n\r\n const columnRangeRegex = /\\$[A-Z]+:\\$[A-Z]+/;\r\n const columnRangeMatches = rangeString.match(columnRangeRegex);\r\n\r\n if (columnRangeMatches && columnRangeMatches.length) {\r\n const range = columnRangeMatches[0];\r\n worksheet.pageSetup.printTitlesColumn = range.replace(dollarRegex, '');\r\n }\r\n }\r\n } else {\r\n definedNames.push(definedName);\r\n }\r\n });\r\n model.definedNames = definedNames;\r\n\r\n // used by sheets to build their image models\r\n model.media.forEach((media, i) => {\r\n media.index = i;\r\n });\r\n }\r\n}\r\n\r\nWorkbookXform.WORKBOOK_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': 'x15',\r\n 'xmlns:x15': 'http://schemas.microsoft.com/office/spreadsheetml/2010/11/main',\r\n};\r\nWorkbookXform.STATIC_XFORMS = {\r\n fileVersion: new StaticXform({\r\n tag: 'fileVersion',\r\n $: {appName: 'xl', lastEdited: 5, lowestEdited: 5, rupBuild: 9303},\r\n }),\r\n};\r\n\r\nmodule.exports = WorkbookXform;\r\n","const RichTextXform = require('../strings/rich-text-xform');\r\nconst utils = require('../../../utils/utils');\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 \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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1zL0hlYWRlclRyYW5zZm9ybWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBLG9CQUFBLEdBQUEsZUFBQSxDQUFBLE9BQUEsQ0FBQSxvQkFBQSxDQUFBLENBQUE7O0FBQ0EsSUFBQSxtQkFBQSxHQUFBLGVBQUEsQ0FBQSxPQUFBLENBQUEsbUJBQUEsQ0FBQSxDQUFBOztBQUNBLElBQUEsYUFBQSxHQUFBLGVBQUEsQ0FBQSxPQUFBLENBQUEsYUFBQSxDQUFBLENBQUE7O0FBQ0EsSUFBQSxnQkFBQSxHQUFBLGVBQUEsQ0FBQSxPQUFBLENBQUEsZ0JBQUEsQ0FBQSxDQUFBOztJQVlhLGlCO0FBZVQsNkJBQW1CLGFBQW5CLEVBQStDO0FBQUE7O0FBWi9DLFNBQUEsT0FBQSxHQUE4QixJQUE5QjtBQUVRLFNBQUEsZUFBQSxHQUFrQixLQUFsQjtBQUVTLFNBQUEsaUJBQUEsR0FBNkIsS0FBN0I7QUFFVCxTQUFBLGlCQUFBLEdBQW9CLEtBQXBCO0FBRUEsU0FBQSxhQUFBLEdBQWdCLENBQWhCO0FBS0osU0FBSyxhQUFMLEdBQXFCLGFBQXJCOztBQUNBLFFBQUksYUFBYSxDQUFDLE9BQWQsS0FBMEIsSUFBOUIsRUFBb0M7QUFDaEMsV0FBSyxpQkFBTCxHQUF5QixJQUF6QjtBQUNILEtBRkQsTUFFTyxJQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsYUFBYSxDQUFDLE9BQTVCLENBQUosRUFBMEM7QUFDN0MsV0FBSyxVQUFMLENBQWdCLGFBQWEsQ0FBQyxPQUE5QjtBQUNILEtBRk0sTUFFQSxJQUFJLG1CQUFBLENBQUEsT0FBQSxDQUFXLGFBQWEsQ0FBQyxPQUF6QixDQUFKLEVBQXVDO0FBQzFDLFdBQUssZ0JBQUwsR0FBd0IsYUFBYSxDQUFDLE9BQXRDO0FBQ0g7QUFDSjs7Ozs4QkFFZ0IsRyxFQUFlLEUsRUFBMkI7QUFDdkQsVUFBSSxDQUFDLEtBQUssWUFBTCxDQUFrQixH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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\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 integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions, option);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n // eslint-disable-next-line\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions, option) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === \"#,###,,;(#,###,,)\" ? this.customPivotFormat(parseInt(fValue)) : fValue;\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max, option) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split(\".\"), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return \"\";\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(\\.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nexport var IntlBase;\n(function (IntlBase) {\n /* eslint-disable */\n // tslint:disable-next-line:max-line-length.\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[ca]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n // eslint-disable-next-line\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n // eslint-disable-next-line\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n // eslint-disable-next-line\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n // eslint-disable-next-line\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { isNullOrUndefined as isNOU, isObject, merge } from './util';\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @class */ (function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNOU(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n }\n else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNOU(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNOU(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNOU(this.fetchRequest)) {\n this.data = !isNOU(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: { 'Content-Type': this.contentType },\n body: this.data\n });\n }\n var eventArgs = { cancel: false, fetchRequest: this.fetchRequest };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n // eslint-disable-next-line\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n // eslint-disable-next-line\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n }\n catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNOU(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}());\nexport { Fetch };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[\"\" + dFunc].apply(prop, [newValue[parseInt(i.toString(), 10)]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[parseInt(i.toString(), 10)], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[\"\" + dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable') {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode = '';\n/**\n * Method for set the Global animation modes for Syncfusion Blazor components.\n *\n * @param {string} value - Specifies the animation mode.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '22';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : \"https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjI=&utm_source=license&utm_medium=listing&utm_campaign=license-information\";\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + 'Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string}\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\" && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n this.detachUnloadEvent();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n // eslint-disable-next-line\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Adding unload event to persist data when enable persistence true\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('unload', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('unload', this.handleUnload);\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n this.attachUnloadEvent();\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Checked weather cases are valid or not. If control leads to more than five counts \n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.enableAutoScroll) {\n this.setDragArea();\n }\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n if (this.dragArea) {\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight + document.scrollingElement.scrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;\n var isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - document.scrollingElement.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n if (typeof template === 'function') {\n return template;\n }\n else {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n // eslint-disable-next-line\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\\\"' + evalExpResult + '\\\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : ' ';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== \"true\" && str !== \"false\") ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision coordinates\n * @param {OffsetPosition} position - specifies the position\n * @returns {void}\n */\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n var zoomingFactor = 1;\n var parentWithZoomStyle = element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n zoomingFactor = parseFloat(getComputedStyle(parentWithZoomStyle).zoom);\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft() / zoomingFactor;\n var containerRight = ContainerRight() / zoomingFactor;\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop() / zoomingFactor;\n var containerBottom = ContainerBottom() / zoomingFactor;\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the html element\n * @param {HTMLElement} viewPortElement - specifies the html element\n * @param {number} x - specifies the number\n * @param {number} y - specifies the number\n * @returns {string[]} - returns the string value\n */\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n // eslint-disable-next-line\n var topData = '', leftData = '';\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} target - specifies the element\n * @param {number} offsetX - specifies the number\n * @param {number} offsetY - specifies the number\n * @param {string} positionX - specifies the string value\n * @param {string} positionY - specifies the string value\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision axis\n * @param {boolean} fixedParent - specifies the boolean\n * @returns {void}\n */\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, \n/* eslint-disable */\naxis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null\n }, eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n /* eslint-enable */\n };\n var elementRect;\n if (window.getComputedStyle(element).display === 'none') {\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n }\n else {\n elementRect = element.getBoundingClientRect();\n }\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction setPopup(element, pos, elementRect) {\n //eslint-disable-next-line\n var left = 0, top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n var scaleX = 1;\n var scaleY = 1;\n if (element.offsetParent) {\n var transformStyle = getComputedStyle(element.offsetParent).transform;\n if (transformStyle !== 'none') {\n var matrix = new DOMMatrix(transformStyle);\n scaleX = matrix.a;\n scaleY = matrix.d;\n }\n }\n element.style.top = ((pos.position.top / scaleY) + pos.offsetY - (top)) + 'px';\n element.style.left = ((pos.position.left / scaleX) + pos.offsetX - (left)) + 'px';\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {PositionLocation} pos - specifies theloaction\n * @param {boolean} fixedParent - specifies the boolean\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\n/**\n *\n * @param {EdgeOffset} eStatus - specifies the status\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client\n * @returns {void}\n */\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\n/**\n *\n * @param {number} left - specifies the number\n * @param {number} right - specifies the number\n * @returns {LeftCorners} - returns the value\n */\nfunction leftCollideCheck(left, right) {\n //eslint-disable-next-line\n var leftSide = false, rightSide = false;\n if (((left - getBodyScrollLeft()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifes the element\n * @param {EdgeOffset} tEdge - specifies the edge offset\n * @param {PositionLocation} pos - specifes the location\n * @param {ClientRect} elementRect - specifies the client\n * @param {boolean} deepCheck - specifies the boolean value\n * @returns {void}\n */\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left > ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {EdgeOffset} tEdge - specifies the offset\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @param {boolean} deepCheck - specifies the boolean\n * @returns {void}\n */\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom() && target.getBoundingClientRect().bottom < window.innerHeight) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {number} top - specifies the number\n * @param {number} bottom - specifies the number\n * @returns {TopCorners} - retyrns the value\n */\nfunction topCollideCheck(top, bottom) {\n //eslint-disable-next-line\n var topSide = false, bottomSide = false;\n if ((top - getBodyScrollTop()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\n//eslint-disable-next-line\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft() + getViewPortWidth());\n}\n//eslint-disable-next-line\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop() + getViewPortHeight());\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var documentReact = document.documentElement.getBoundingClientRect();\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : documentReact.width;\n return windowWidth - (windowWidth - offsetWidth);\n}\n","/**\n * SanitizeHtmlHelper for sanitize the value.\n */\nimport { detach } from './dom';\nvar removeTags = [\n 'script',\n 'style',\n 'iframe[src]',\n 'link[href*=\"javascript:\"]',\n 'object[type=\"text/x-scriptlet\"]',\n 'object[data^=\"data:text/html;base64\"]',\n 'img[src^=\"data:text/html;base64\"]',\n '[src^=\"javascript:\"]',\n '[dynsrc^=\"javascript:\"]',\n '[lowsrc^=\"javascript:\"]',\n '[type^=\"application/x-shockwave-flash\"]'\n];\nvar removeAttrs = [\n { attribute: 'href', selector: '[href*=\"javascript:\"]' },\n { attribute: 'background', selector: '[background^=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"expression(\"]' },\n { attribute: 'href', selector: 'a[href^=\"data:text/html;base64\"]' }\n];\nvar jsEvents = ['onchange',\n 'onclick',\n 'onmouseover',\n 'onmouseout',\n 'onkeydown',\n 'onload',\n 'onerror',\n 'onblur',\n 'onfocus',\n 'onbeforeload',\n 'onbeforeunload',\n 'onkeyup',\n 'onsubmit',\n 'onafterprint',\n 'onbeforeonload',\n 'onbeforeprint',\n 'oncanplay',\n 'oncanplaythrough',\n 'oncontextmenu',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onformchange',\n 'onforminput',\n 'onhaschange',\n 'oninput',\n 'oninvalid',\n 'onkeypress',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onmessage',\n 'onmousedown',\n 'onmousemove',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'onoine',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onreadystatechange',\n 'onredo',\n 'onresize',\n 'onscroll',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onstalled',\n 'onstorage',\n 'onsuspend',\n 'ontimeupdate',\n 'onundo',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onmouseenter',\n 'onmouseleave',\n 'onstart',\n 'onpropertychange',\n 'oncopy',\n 'ontoggle',\n 'onpointerout',\n 'onpointermove',\n 'onpointerleave',\n 'onpointerenter',\n 'onpointerrawupdate',\n 'onpointerover',\n 'onbeforecopy',\n 'onbeforecut',\n 'onbeforeinput'\n];\nvar SanitizeHtmlHelper = /** @class */ (function () {\n function SanitizeHtmlHelper() {\n }\n SanitizeHtmlHelper.beforeSanitize = function () {\n return {\n selectors: {\n tags: removeTags,\n attributes: removeAttrs\n }\n };\n };\n SanitizeHtmlHelper.sanitize = function (value) {\n var item = this.beforeSanitize();\n var output = this.serializeValue(item, value);\n return output;\n };\n SanitizeHtmlHelper.serializeValue = function (item, value) {\n this.removeAttrs = item.selectors.attributes;\n this.removeTags = item.selectors.tags;\n this.wrapElement = document.createElement('div');\n this.wrapElement.innerHTML = value;\n this.removeXssTags();\n this.removeJsEvents();\n this.removeXssAttrs();\n var tempEleValue = this.wrapElement.innerHTML;\n this.removeElement();\n return tempEleValue.replace('&', '&');\n };\n SanitizeHtmlHelper.removeElement = function () {\n // Removes an element's attibute to avoid html tag validation\n var nodes = this.wrapElement.children;\n for (var j = 0; j < nodes.length; j++) {\n var attribute = nodes[parseInt(j.toString(), 10)].attributes;\n for (var i = 0; i < attribute.length; i++) {\n this.wrapElement.children[parseInt(j.toString(), 10)].removeAttribute(attribute[parseInt(i.toString(), 10)].localName);\n }\n }\n };\n SanitizeHtmlHelper.removeXssTags = function () {\n var elements = this.wrapElement.querySelectorAll(this.removeTags.join(','));\n if (elements.length > 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-unused-expressions */\nimport { Component, EventHandler, Internationalization } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.previousDates = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'data-role': 'calendar'\n });\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n if (this.getModuleName() === 'daterangepicker') {\n attributes(this.previousIcon, { tabIndex: '-1' });\n attributes(this.nextIcon, { tabIndex: '-1' });\n }\n attributes(this.nextIcon, ariaNextAttrs);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { tabIndex: '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = 'days.stand-alone.' + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n if (!isNullOrUndefined(cldrObj)) {\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n // eslint-disable-next-line max-len\n var shortNames = this.getCultureValues().length > 0 && this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek) : null;\n if (!isNullOrUndefined(shortNames)) {\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement =\n this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveRight':\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveUp':\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n break;\n case 'moveDown':\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n break;\n case 'select':\n if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) && !levelRestrict || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate, e);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate, e) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentTarget = void 0;\n if (!isNullOrUndefined(e) && e.type === 'click') {\n currentTarget = e.currentTarget;\n }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n if (!isNullOrUndefined(currentTarget) && currentTarget.innerText === tdEle.innerText &&\n this.previousDates && tdEle.classList.contains(SELECTED) && currentTarget.classList.contains(SELECTED)) {\n removeClass([tdEle], SELECTED);\n this.previousDates = false;\n var copyValues = this.copyValues(values);\n for (var i = 0; i < copyValues.length; i++) {\n var type_1 = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions_1 = { format: null, type: 'date', skeleton: 'short', calendar: type_1 };\n var localDateString_1 = this.globalize.formatDate(date, formatOptions_1);\n var tempDateString_1 = this.globalize.formatDate(copyValues[i], formatOptions_1);\n if (localDateString_1 === tempDateString_1) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n values.splice(index, 1);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (!isNullOrUndefined(date) && date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value;\n if (!isNullOrUndefined(date)) {\n value = date.valueOf();\n }\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr');\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].\n classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.islamicPreviousHeader = this.headerElement.textContent;\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n }\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n if (this.tableBodyElement) {\n detach(this.tableBodyElement);\n }\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n if (this.getModuleName() !== 'datepicker') {\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentBody();\n }\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n this.l10.setLocale(this.locale);\n this.updateFooter();\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n if (!isNullOrUndefined(this.headerTitleElement)) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n }\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n this.todayElement = null;\n this.tableBodyElement = null;\n this.renderDayCellArgs = null;\n this.headerElement = null;\n this.nextIcon = null;\n this.table = null;\n this.tableHeadElement = null;\n this.previousIcon = null;\n this.headerTitleElement = null;\n this.footer = null;\n this.contentElement = null;\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n !Browser.isDevice && e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n !Browser.isDevice && eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.' + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = '.dates.calendars.islamic.days.format.' + this.dayHeaderFormat.toLowerCase();\n var mainVal = 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n if (this.getModuleName() === 'calendar') {\n this.setEnable(this.enabled);\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate, e) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate, e);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (copyValues.toString().indexOf(this.getIdValue(e, null).toString()) === -1) {\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.previousDates = true;\n }\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n // eslint-disable-next-line use-isnan\n if (!this.isMultiSelection && +this.value !== Number.NaN && (!isNullOrUndefined(this.value) &&\n !isNullOrUndefined(this.previousDate) || this.previousDate === null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
\n *
Popup Content
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PopupModel} newProp - specifies the new property\n * @param {PopupModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n // eslint-disable-next-line\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n // eslint-disable-next-line\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n *\n * @returns {void}\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n *\n * @returns {void}\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n *\n * @returns {void}\n */\n Popup.prototype.destroy = function () {\n if (this.element.classList.contains('e-popup-open')) {\n this.unwireEvents();\n }\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.content = null;\n this.relateTo = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!isNullOrUndefined(this.element) && !(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n *\n * @param {HTMLElement} relateToElement - specifies the element\n * @param {HTMLElement} scrollElement - specifies the scroll element\n * @returns {boolean} - retruns the boolean\n */\n // eslint-disable-next-line\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n // eslint-disable-next-line\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n var relateToElem = this.getRelateToElement();\n // eslint-disable-next-line\n var props = this.content.props;\n if (!relateToElem.classList.contains('e-dropdown-btn') || isNullOrUndefined(props)) {\n this.element.appendChild(this.content);\n }\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n // eslint-disable-next-line\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\n * @returns {void}\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var parentDisplay = void 0;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var height = this.element.clientHeight;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY, height);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY, height) {\n if (height === void 0) { height = 0; }\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width - eleRect.width);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container' && !ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else if (this.targetType === 'container' && ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n *\n * @returns {void}\n * @param {AnimationModel} animationOptions - specifies the model\n * @param { HTMLElement } relativeElement - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n var relateToElement = this.getRelateToElement();\n if (relateToElement.classList.contains('e-filemanager')) {\n this.fmDialogContainer = this.element.getElementsByClassName('e-file-select-wrap')[0];\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.fmDialogContainer) && Browser.isIos) {\n this.fmDialogContainer.style.display = 'block';\n }\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n *\n * @param {AnimationModel} animationOptions - To give the animation options.\n * @returns {void}\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (parentStyle.position === 'fixed' && !isNullOrUndefined(this.element) && this.element.offsetParent &&\n this.element.offsetParent.tagName === 'BODY' && getComputedStyle(this.element.offsetParent).overflow !== 'hidden') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top, 10) ?\n formatUnit(window.scrollY - parseInt(this.element.style.top, 10))\n : formatUnit(parseInt(this.element.style.top, 10) - window.scrollY);\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (!isNullOrUndefined(this.element) && isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n *\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @param {boolean} fixedParent - specifies the parent element\n * @private\n * @returns {void}\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n if (!element.isEqualNode(childNodes[i])) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n *\n * @returns {void}\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n *\n * @private\n *\n * @param {CreateElementArgs} createElement - Specifies created element args\n * @param {string} tag - Specifies tag name\n * @param {string} type - Specifies type name\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} WRAPPER - Specifies wrapper element\n * @param {string} role - Specifies role\n * @returns {HTMLInputElement} - Input Element\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\n/**\n * Get the text node.\n *\n * @param {HTMLElement} element - Specifies html element\n * @private\n * @returns {Node} - Text node.\n */\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n *\n * @private\n * @param {Switch | CheckBox} ejInst - Specifies eJ2 Instance\n * @param {Element} wrapper - Specifies wrapper element\n * @param {string} tagName - Specifies tag name\n * @returns {void}\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label' });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n }\n else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\n/**\n * Defines the icon position of button.\n */\nexport var IconPosition;\n(function (IconPosition) {\n /**\n * Positions the Icon at the left of the text content in the Button.\n */\n IconPosition[\"Left\"] = \"Left\";\n /**\n * Positions the Icon at the right of the text content in the Button.\n */\n IconPosition[\"Right\"] = \"Right\";\n /**\n * Positions the Icon at the top of the text content in the Button.\n */\n IconPosition[\"Top\"] = \"Top\";\n /**\n * Positions the Icon at the bottom of the text content in the Button.\n */\n IconPosition[\"Bottom\"] = \"Bottom\";\n})(IconPosition || (IconPosition = {}));\nexport var buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {ButtonModel} options - Specifies the button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n var tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Button.prototype.destroy = function () {\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist Data\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @private\n * @returns {void}\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ButtonModel} newProp - Specifies new properties\n * @param {ButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Button.prototype.onPropertyChanged = function (newProp, oldProp) {\n var span = this.element.querySelector('span.e-btn-icon');\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss': {\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n }\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content': {\n var node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn')) {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n }\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n };\n /**\n * Click the button element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('Left')\n ], Button.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isToggle\", void 0);\n __decorate([\n Property()\n ], Button.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Button.prototype, \"created\", void 0);\n Button = __decorate([\n NotifyPropertyChanges\n ], Button);\n return Button;\n}(Component));\nexport { Button };\n","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\nimport { createElement, attributes, addClass, removeClass, detach, classList } from '@syncfusion/ej2-base';\nimport { closest, formatUnit, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n FLOATTEXTCONTENT: 'e-float-text-content',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Base for Input creation through util methods.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n var isBindClearAction = true;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n *\n */\n function createInput(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n isBindClearAction = args.bindClearAction;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton) {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons)) {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n createSpanElement(inputObject.container, makeElement);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n args.element.addEventListener('focus', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n if (args.floatLabelType === 'Auto') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n });\n args.element.addEventListener('blur', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n if (args.floatLabelType === 'Auto' && args.element.value === '') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n });\n args.element.addEventListener('input', function () {\n checkInputValue(floatType, args.element);\n });\n }\n Input.bindInitialEvent = bindInitialEvent;\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n if (inputValue !== '' && !isNullOrUndefined(inputValue) && inputElement.parentElement) {\n inputElement.parentElement.classList.add('e-valid-input');\n }\n else if (floatLabelType !== 'Always' && inputElement.parentElement) {\n inputElement.parentElement.classList.remove('e-valid-input');\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n inputObject.container.classList.add(CLASSNAMES.INPUTGROUP);\n if (args.element.parentNode) {\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n var floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n var floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('input', function (event) {\n updateLabelState(args.element.value, floatLabelElement, args.element);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('blur', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button, readonly) {\n if (!isNullOrUndefined(button)) {\n if (value && !readonly) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n function updateLabelState(value, label, element) {\n if (element === void 0) { element = null; }\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n var isNotFocused = element != null ? element !== document.activeElement : true;\n if (isNotFocused) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction === undefined || isBindClearAction) {\n button.addEventListener('click', function (event) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('input', function (event) {\n updateIconState(element.value, button);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('focus', function (event) {\n updateIconState(element.value, button, element.readOnly);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('blur', function (event) {\n setTimeout(function () {\n if (!isNullOrUndefined(button)) {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n button = !isNullOrUndefined(element) && element.classList.contains('e-combobox') ? null : button;\n }\n }, 200);\n });\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function destroy() {\n privateInputObj = null;\n }\n Input.destroy = destroy;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label, element);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n *\n * @param {string} value - Specify the value of the input element.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the specified value is updated.\n * @param {string} floatLabelType - Specify the float label type of the input element.\n * @param {boolean} clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n if (floatLabelType === 'Auto' && value === '') {\n calculateWidth(element, element.parentElement);\n }\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && !isNullOrUndefined(parentElement) && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n *\n * @param {string} cssClass - Css class names which are needed to add.\n * @param {Element[] | NodeList} elements - The elements which are needed to add / remove classes.\n * @param {string} oldClass\n * - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc\n * ```\n * E.g : Input.calculateWidth(element, container);\n * ```\n *\n * @param {any} element - Input element which is need to add.\n * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width\n */\n function calculateWidth(element, container, moduleName) {\n var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'), 10);\n if (!isNullOrUndefined(container.getElementsByClassName('e-float-text-content')[0])) {\n if (container.getElementsByClassName('e-float-text-content')[0].classList.contains('e-float-text-overflow')) {\n container.getElementsByClassName('e-float-text-content')[0].classList.remove('e-float-text-overflow');\n }\n if (elementWidth < container.getElementsByClassName('e-float-text-content')[0].clientWidth || elementWidth === container.getElementsByClassName('e-float-text-content')[0].clientWidth) {\n container.getElementsByClassName('e-float-text-content')[0].classList.add('e-float-text-overflow');\n }\n }\n }\n Input.calculateWidth = calculateWidth;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n *\n * @param {number | string} width - Width value which is need to add.\n * @param {HTMLElement} container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n calculateWidth(container.firstChild, container);\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n *\n * @param {string} placeholder - Placeholder value which is need to add.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n placeholder = encodePlaceHolder(placeholder);\n var parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = placeholder : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = '' : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n *\n * @param {boolean} isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n *\n * @param {boolean} isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param {Element[] | NodeList} elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n *\n * @param {boolean} isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = { 'disabled': 'disabled', 'aria-disabled': 'true' };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which are need to removed from the element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which is added to element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[\"\" + key];\n }\n else {\n element.setAttribute(key, attrs[\"\" + key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n if (type !== 'Never') {\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = { element: input, floatLabelType: type,\n customTag: customTag, properties: { placeholder: placeholder } };\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n createSpanElement(inputObj.container, makeElement);\n calculateWidth(args.element, inputObj.container);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n else {\n var floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n var floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n var wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Create the span inside the label and add the label text into the span textcontent\n * ```\n * E.g : Input.createSpanElement(inputObject, makeElement);\n * ```\n *\n * @param {InputObject} inputObject\n * - Element which is need to get the label\n * @param {createElementParams} makeElement\n * - Element which is need to create the span\n */\n function createSpanElement(inputObject, makeElement) {\n if (inputObject.classList.contains('e-outline') && inputObject.getElementsByClassName('e-float-text')[0]) {\n var labelSpanElement = makeElement('span', { className: CLASSNAMES.FLOATTEXTCONTENT });\n labelSpanElement.innerHTML = inputObject.getElementsByClassName('e-float-text')[0].innerHTML;\n inputObject.getElementsByClassName('e-float-text')[0].innerHTML = '';\n inputObject.getElementsByClassName('e-float-text')[0].appendChild(labelSpanElement);\n }\n }\n Input.createSpanElement = createSpanElement;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n *\n * @param {boolean} isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param {InputObject[]} inputObj\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[parseInt(i.toString())].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString())].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString())].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _onMouseDownRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n setTimeout(function () {\n ele.classList.remove('e-input-btn-ripple');\n }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param {string | string[]} icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} input - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function addIcon(position, icons, container, input, internalCreate) {\n /* eslint-enable @typescript-eslint/indent */\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {\n container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} inputElement - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n /* eslint-enable @typescript-eslint/indent */\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n innerWrapper.appendChild(result[parseInt(i.toString())]);\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n var wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n }\n else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n})(Input || (Input = {}));\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { merge, extend, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n *\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n *\n * @param {DataOptions} ds?\n * @param ds\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors\n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n *\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n *\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param ds\n * @param query\n * @param xhr\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n *\n * @hidden\n */\nvar JsonAdaptor = /** @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup') && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n *\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field = args.group[0].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n *\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n *\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n * @param e.validate\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n *\n * @param {Object[]} ds\n * @param e\n * @param {string} } type\n * @param e.field\n * @param e.type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n *\n * @param {Object[]} ds\n * @param e\n * @param {Object} b\n * @param e.comparer\n * @param e.fieldName\n * @param query\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } pageIndex\n * @param e.pageSize\n * @param {Query} query\n * @param e.pageIndex\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } end\n * @param e.start\n * @param e.end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n * @param e.fieldNames\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param tableName\n * @param query\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n *\n * @hidden\n */\nvar UrlAdaptor = /** @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n var res = DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query);\n if ((this.getModuleName &&\n this.getModuleName() === 'ODataV4Adaptor') &&\n !isNullOrUndefined(queries.filters[i].e.key) && queries.filters.length > 1) {\n res = '(' + res + ')';\n }\n request.filters.push(res);\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n *\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n *\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param query\n * @param original\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n *\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n *\n * @hidden\n */\nvar ODataAdaptor = /** @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = val.replace(/'/g, '\\'\\'');\n if (predicate.ignoreCase) {\n val = val.toLowerCase();\n }\n if (predicate.operator !== 'like') {\n val = encodeURIComponent(val);\n }\n if (predicate.operator !== 'wildcard' && predicate.operator !== 'like') {\n val = '\\'' + val + '\\'';\n }\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n if (predicate.operator === 'isempty' || predicate.operator === 'isnull' || predicate.operator === 'isnotempty' ||\n predicate.operator === 'isnotnull') {\n operator = predicate.operator.indexOf('isnot') !== -1 ? DataUtil.odBiOperator['notequal'] : DataUtil.odBiOperator['equal'];\n val = predicate.operator === 'isnull' || predicate.operator === 'isnotnull' ? null : '\\'\\'';\n }\n else {\n operator = DataUtil.odBiOperator[predicate.operator];\n }\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'like') {\n val = val;\n if (val.indexOf('%') !== -1) {\n if (val.charAt(0) === '%' && val.lastIndexOf('%') < 2) {\n val = val.substring(1, val.length);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n }\n else if (val.charAt(val.length - 1) === '%' && val.indexOf('%') > val.length - 3) {\n val = val.substring(0, val.length - 1);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n }\n else if (val.lastIndexOf('%') !== val.indexOf('%') && val.lastIndexOf('%') > val.indexOf('%') + 1) {\n val = val.substring(val.indexOf('%') + 1, val.lastIndexOf('%'));\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n }\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n }\n else if (operator === 'wildcard') {\n val = val;\n if (val.indexOf('*') !== -1) {\n var splittedStringValue = val.split('*');\n var splittedValue = void 0;\n var count = 0;\n if (val.indexOf('*') !== 0 && splittedStringValue[0].indexOf('%3f') === -1 &&\n splittedStringValue[0].indexOf('?') === -1) {\n splittedValue = splittedStringValue[0];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (val.lastIndexOf('*') !== val.length - 1 && splittedStringValue[splittedStringValue.length - 1].indexOf('%3f') === -1 &&\n splittedStringValue[splittedStringValue.length - 1].indexOf('?') === -1) {\n splittedValue = splittedStringValue[splittedStringValue.length - 1];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n if (count > 0) {\n returnValue += ' and ';\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (splittedStringValue.length > 2) {\n for (var i = 1; i < splittedStringValue.length - 1; i++) {\n if (splittedStringValue[i].indexOf('%3f') === -1 && splittedStringValue[i].indexOf('?') === -1) {\n splittedValue = splittedStringValue[i];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (count > 0) {\n returnValue += ' and ';\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = splittedValue;\n splittedValue = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n }\n }\n if (count === 0) {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n else {\n operator = 'wildcard';\n }\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n if (operator !== 'wildcard') {\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n }\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n *\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n * @param settings\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.options.multipartAccept);\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.setRequestHeader('Accept', this.options.accept);\n }\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.setRequestHeader('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @param query\n * @param original\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @param org\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') && xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.getResponseHeader('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n *\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n *\n * @param {string} e\n * @param e.selects\n * @param e.expands\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n if (splits.length === 2) {\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1) {\n if (selected[splits[0]][0].indexOf('$expand') !== -1 && selected[splits[0]][0].indexOf(';$select=') === -1) {\n selected[splits[0]][0] = selected[splits[0]][0] + ';' + '$select=' + splits[1];\n }\n else {\n selected[splits[0]][0] = selected[splits[0]][0] + ',' + splits[1];\n }\n }\n else {\n selected[splits[0]].push('$select=' + splits[1]);\n }\n }\n else {\n var sel = '$select=' + splits[splits.length - 1];\n var exp = '';\n var close_1 = '';\n for (var i = 1; i < splits.length - 1; i++) {\n exp = exp + '$expand=' + splits[i] + '(';\n close_1 = close_1 + ')';\n }\n var combineVal = exp + sel + close_1;\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1 &&\n _this.expandQueryIndex(selected[splits[0]], true)) {\n var idx = _this.expandQueryIndex(selected[splits[0]]);\n selected[splits[0]][idx] = selected[splits[0]][idx] + combineVal.replace('$expand=', ',');\n }\n else {\n selected[splits[0]].push(combineVal);\n }\n }\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + selected[expand].join(';') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n ODataV4Adaptor.prototype.expandQueryIndex = function (query, isExpand) {\n for (var i = 0; i < query.length; i++) {\n if (query[i].indexOf('$expand') !== -1) {\n return isExpand ? true : i;\n }\n }\n return isExpand ? false : 0;\n };\n /**\n * Returns the groupby query string.\n *\n * @param {string} e\n * @param distinctFields\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.setRequestHeader('Prefer', 'return=representation');\n }\n request.setRequestHeader('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n var metaV4Name = '@context';\n if ((request && request.type === 'GET') && !this.rootUrl && (data[metaName] || data[metaV4Name])) {\n var dataUrl = data[metaName] ? data[metaName].split('/$metadata#') : data[metaV4Name].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n var dataV4Count = '@count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n else if (dataV4Count in data) {\n count = data[dataV4Count];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n *\n * @hidden\n */\nvar WebApiAdaptor = /** @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation\n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n *\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n *\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n var newData = request ? JSON.parse(request.data) : data;\n data = newData.action === 'batch' ? DataUtil.parse.parseJson(data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\nexport { RemoteSaveAdaptor };\n/**\n * Ajax Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n *\n * @hidden\n */\nvar CustomDataAdaptor = /** @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: function () { },\n addRecord: function () { },\n updateRecord: function () { },\n deleteRecord: function () { },\n batchUpdate: function () { }\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\nexport { CustomDataAdaptor };\n/**\n * The GraphqlAdaptor that is extended from URL Adaptor, is used for retrieving data from the Graphql server.\n * It interacts with the Graphql server with all the DataManager Queries and performs CRUD operations.\n *\n * @hidden\n */\nvar GraphQLAdaptor = /** @class */ (function (_super) {\n __extends(GraphQLAdaptor, _super);\n function GraphQLAdaptor(options) {\n var _this = _super.call(this) || this;\n _this.opt = options;\n _this.schema = _this.opt.response;\n _this.query = _this.opt.query;\n /* eslint-disable @typescript-eslint/no-empty-function */\n // tslint:disable-next-line:no-empty\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () { };\n /* eslint-enable @typescript-eslint/no-empty-function */\n _this.getQuery = function () { return _this.query; };\n return _this;\n }\n GraphQLAdaptor.prototype.getModuleName = function () {\n return 'GraphQLAdaptor';\n };\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param datamanager\n * @param query\n */\n GraphQLAdaptor.prototype.processQuery = function (datamanager, query) {\n var urlQuery = _super.prototype.processQuery.apply(this, arguments);\n var dm = JSON.parse(urlQuery.data);\n // constructing GraphQL parameters\n var keys = ['skip', 'take', 'sorted', 'table', 'select', 'where',\n 'search', 'requiresCounts', 'aggregates', 'params'];\n var temp = {};\n var str = 'searchwhereparams';\n keys.filter(function (e) {\n temp[e] = str.indexOf(e) > -1 ? JSON.stringify(dm[e]) : dm[e];\n });\n var vars = this.getVariables() || {};\n // tslint:disable-next-line:no-string-literal\n vars['datamanager'] = temp;\n var data = JSON.stringify({\n query: this.getQuery(),\n variables: vars\n });\n urlQuery.data = data;\n return urlQuery;\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param resData\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @returns DataResult\n */\n GraphQLAdaptor.prototype.processResponse = function (resData, ds, query, xhr, request) {\n var res = resData;\n var count;\n var aggregates;\n var result = getValue(this.schema.result, res.data);\n if (this.schema.count) {\n count = getValue(this.schema.count, res.data);\n }\n if (this.schema.aggregates) {\n aggregates = getValue(this.schema.aggregates, res.data);\n aggregates = !isNullOrUndefined(aggregates) ? DataUtil.parse.parseJson(aggregates) : aggregates;\n }\n var pvt = request.pvtData || {};\n var args = { result: result, aggregates: aggregates };\n var data = args;\n if (pvt && pvt.groups && pvt.groups.length) {\n this.getAggregateResult(pvt, data, args, null, query);\n }\n return !isNullOrUndefined(count) ? { result: args.result, count: count, aggregates: aggregates } : args.result;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n */\n GraphQLAdaptor.prototype.insert = function () {\n var inserted = _super.prototype.insert.apply(this, arguments);\n return this.generateCrudData(inserted, 'insert');\n };\n /**\n * Prepare and returns request body which is used to update a new record in the table.\n */\n GraphQLAdaptor.prototype.update = function () {\n var inserted = _super.prototype.update.apply(this, arguments);\n return this.generateCrudData(inserted, 'update');\n };\n /**\n * Prepare and returns request body which is used to remove a new record in the table.\n */\n GraphQLAdaptor.prototype.remove = function () {\n var inserted = _super.prototype.remove.apply(this, arguments);\n return this.generateCrudData(inserted, 'remove');\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param e.key\n * @param {Query} query\n * @param {Object} original\n */\n GraphQLAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var batch = _super.prototype.batchRequest.apply(this, arguments);\n // tslint:disable-next-line:typedef\n var bData = JSON.parse(batch.data);\n bData.key = e.key;\n batch.data = JSON.stringify(bData);\n return this.generateCrudData(batch, 'batch');\n };\n GraphQLAdaptor.prototype.generateCrudData = function (crudData, action) {\n var parsed = JSON.parse(crudData.data);\n crudData.data = JSON.stringify({\n query: this.opt.getMutation(action),\n variables: parsed\n });\n return crudData;\n };\n return GraphQLAdaptor;\n}(UrlAdaptor));\nexport { GraphQLAdaptor };\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n *\n * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n *\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @param adaptor\n * @param timeStamp\n * @param pageSize\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = { keys: [], results: [] };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n *\n * @param {string} url\n * @param {Query} query?\n * @param query\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n * @param query\n * @param hierarchyFilters\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n /* eslint-disable prefer-spread */\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n /* eslint-disable prefer-spread */\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n * @param settings\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor));\nexport { CacheAdaptor };\n","/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, \n // eslint-disable-next-line\n options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = (componentInstance &&\n (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect'))\n ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n // eslint-disable-next-line no-prototype-builtins\n !typeofData(dataSource).item.hasOwnProperty(fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, \n // eslint-disable-next-line no-prototype-builtins\n (curItem.hasOwnProperty('isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole == 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} sortOrder- Specifies final result sort order.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[\"\" + hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[\"\" + newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // eslint-disable-next-line\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n // eslint-disable-next-line\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n // eslint-disable-next-line\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-disable-next-line\n fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n // eslint-disable-next-line\n var compiledString = compileTemplate(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() != 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[\"\" + category] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== \"listview\") {\n // eslint-disable-next-line\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // eslint-disable-next-line\n fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n // eslint-disable-next-line no-self-assign\n text = text;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== \"listview\") {\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataSource - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[\"\" + field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[\"\" + dataField] = value;\n }\n }\n }\n return fieldData;\n}\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { Ajax } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Predicate, Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, CustomDataAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */ (function () {\n /**\n * Constructor for DataManager class\n *\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @param dataSource\n * @param query\n * @param adaptor\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.persistQuery = {};\n this.isInitialLoad = false;\n this.requests = [];\n this.isInitialLoad = true;\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n if (!dataSource.enablePersistence) {\n dataSource.enablePersistence = false;\n }\n if (!dataSource.id) {\n dataSource.id = '';\n }\n if (!dataSource.ignoreOnPersist) {\n dataSource.ignoreOnPersist = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof CustomDataAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat,\n enablePersistence: dataSource.enablePersistence,\n id: dataSource.id,\n ignoreOnPersist: dataSource.ignoreOnPersist\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n /**\n * Get the queries maintained in the persisted state.\n * @param {string} id - The identifier of the persisted query to retrieve.\n * @returns {object} The persisted data object.\n */\n DataManager.prototype.getPersistedData = function (id) {\n var persistedData = localStorage.getItem(id || this.dataSource.id);\n return JSON.parse(persistedData);\n };\n /**\n * Set the queries to be maintained in the persisted state.\n * @param {Event} e - The event parameter that triggers the setPersistData method.\n * @param {string} id - The identifier of the persisted query to set.\n * @param {object} persistData - The data to be persisted.\n * @returns {void} .\n */\n DataManager.prototype.setPersistData = function (e, id, persistData) {\n localStorage.setItem(id || this.dataSource.id, JSON.stringify(persistData || this.persistQuery));\n };\n DataManager.prototype.setPersistQuery = function (query) {\n var _this = this;\n var persistedQuery = this.getPersistedData();\n if (this.isInitialLoad && persistedQuery && Object.keys(persistedQuery).length) {\n this.persistQuery = persistedQuery;\n this.persistQuery.queries = this.persistQuery.queries.filter(function (query) {\n if (_this.dataSource.ignoreOnPersist && _this.dataSource.ignoreOnPersist.length) {\n if (query.fn && _this.dataSource.ignoreOnPersist.some(function (keyword) { return query.fn === keyword; })) {\n return false; // Exclude the matching query\n }\n }\n if (query.fn === 'onWhere') {\n var e = query.e;\n if (e && e.isComplex && e.predicates instanceof Array) {\n var allPredicates = e.predicates.map(function (predicateObj) {\n if (predicateObj.predicates && predicateObj.predicates instanceof Array) {\n // Process nested predicate array\n var nestedPredicates = predicateObj.predicates.map(function (nestedPredicate) {\n var field = nestedPredicate.field, operator = nestedPredicate.operator, value = nestedPredicate.value, ignoreCase = nestedPredicate.ignoreCase, ignoreAccent = nestedPredicate.ignoreAccent, matchCase = nestedPredicate.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n });\n return predicateObj.condition === 'and' ? Predicate.and(nestedPredicates) : Predicate.or(nestedPredicates);\n }\n else {\n // Process individual predicate\n var field = predicateObj.field, operator = predicateObj.operator, value = predicateObj.value, ignoreCase = predicateObj.ignoreCase, ignoreAccent = predicateObj.ignoreAccent, matchCase = predicateObj.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n });\n query.e = new Predicate(allPredicates[0], e.condition, allPredicates.slice(1));\n }\n }\n return true; // Keep all other queries\n });\n var newQuery = extend(new Query(), this.persistQuery);\n this.isInitialLoad = false;\n return (newQuery);\n }\n else {\n this.persistQuery = query;\n this.isInitialLoad = false;\n return query;\n }\n };\n /**\n * Overrides DataManager's default query with given query.\n *\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n *\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n *\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isCustomDataAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isCustomDataAdaptor(this.adaptor)) {\n this.requests = [];\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n (window.setImmediate || window.setTimeout)(fn, 0);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n return fnFail(data['errors'], request);\n }\n }\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.ajaxReqOption, request);\n }\n if (request.httpRequest.getResponseHeader('Content-Type').indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.httpRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.httpRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_1 = new Ajax(req);\n ajax_1.beforeSend = function () {\n _this.beforeSend(ajax_1.httpRequest, ajax_1);\n };\n req = ajax_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests.\n this.requests.push(ajax_1);\n }\n else {\n this.ajaxReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].httpRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].httpRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].httpRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.setRequestHeader(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n *\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var ajax_2 = new Ajax(req);\n ajax_2.beforeSend = function () {\n _this.beforeSend(ajax_2.httpRequest, ajax_2);\n };\n ajax_2.onSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n ajax_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.httpRequest, request, changes, args));\n };\n ajax_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n ajax_2.send().catch(function (e) { return true; }); // to handle the failure requests.\n return deff_1.promise;\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n *\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param position\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.doAjaxRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.doAjaxRequest(res, update);\n }\n };\n DataManager.prototype.isCustomDataAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'CustomDataAdaptor';\n };\n DataManager.prototype.isGraphQLAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'GraphQLAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isGraphQLAdaptor(this.adaptor)) {\n var data = JSON.parse(record);\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n this.failureFunc(JSON.stringify(data['errors']));\n }\n }\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.ajaxReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.httpRequest, request);\n this.ajaxDeffered.resolve(record);\n };\n DataManager.prototype.failureFunc = function (e) {\n this.ajaxDeffered.reject([{ error: e }]);\n };\n DataManager.prototype.doAjaxRequest = function (res, ajaxFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.ajaxDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_3 = new Ajax(res);\n ajax_3.beforeSend = function () {\n _this.beforeSend(ajax_3.httpRequest, ajax_3);\n };\n ajax_3.onSuccess = this.successFunc.bind(this);\n ajax_3.onFailure = this.failureFunc.bind(this);\n ajax_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.ajaxReqOption = res;\n ajaxFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.ajaxDeffered.promise;\n };\n DataManager.prototype.clearPersistence = function () {\n window.removeEventListener('unload', this.setPersistData.bind(this));\n this.dataSource.enablePersistence = false;\n this.persistQuery = {};\n window.localStorage.setItem(this.dataSource.id, '[]');\n };\n return DataManager;\n}());\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n *\n * @hidden\n */\nvar DataUtil = /** @class */ (function () {\n function DataUtil() {\n }\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n *\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @param inst\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string not ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.notEndsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) !== substr;\n };\n /**\n * Returns true if the input string starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * Returns true if the input string not starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.notStartsWith = function (input, start) {\n return input.slice(0, start.length) !== start;\n };\n /**\n * Returns true if the input string pattern(wildcard) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.wildCard = function (input, pattern) {\n var asteriskSplit;\n var optionalSplit;\n // special character allowed search\n if (pattern.indexOf('[') !== -1) {\n pattern = pattern.split('[').join('[[]');\n }\n if (pattern.indexOf('(') !== -1) {\n pattern = pattern.split('(').join('[(]');\n }\n if (pattern.indexOf(')') !== -1) {\n pattern = pattern.split(')').join('[)]');\n }\n if (pattern.indexOf('\\\\') !== -1) {\n pattern = pattern.split('\\\\').join('[\\\\\\\\]');\n }\n if (pattern.indexOf('*') !== -1) {\n if (pattern.charAt(0) !== '*') {\n pattern = '^' + pattern;\n }\n if (pattern.charAt(pattern.length - 1) !== '*') {\n pattern = pattern + '$';\n }\n asteriskSplit = pattern.split('*');\n for (var i = 0; i < asteriskSplit.length; i++) {\n if (asteriskSplit[i].indexOf('.') === -1) {\n asteriskSplit[i] = asteriskSplit[i] + '.*';\n }\n else {\n asteriskSplit[i] = asteriskSplit[i] + '*';\n }\n }\n pattern = asteriskSplit.join('');\n }\n if (pattern.indexOf('%3f') !== -1 || pattern.indexOf('?') !== -1) {\n optionalSplit = pattern.indexOf('%3f') !== -1 ? pattern.split('%3f') : pattern.split('?');\n pattern = optionalSplit.join('.');\n }\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regexPattern = new RegExp(pattern, 'g');\n return regexPattern.test(input);\n };\n /**\n * Returns true if the input string pattern(like) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.like = function (input, pattern) {\n if (pattern.indexOf('%') !== -1) {\n if (pattern.charAt(0) === '%' && pattern.lastIndexOf('%') < 2) {\n pattern = pattern.substring(1, pattern.length);\n return DataUtil.startsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.charAt(pattern.length - 1) === '%' && pattern.indexOf('%') > pattern.length - 3) {\n pattern = pattern.substring(0, pattern.length - 1);\n return DataUtil.endsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.lastIndexOf('%') !== pattern.indexOf('%') && pattern.lastIndexOf('%') > pattern.indexOf('%') + 1) {\n pattern = pattern.substring(pattern.indexOf('%') + 1, pattern.lastIndexOf('%'));\n return input.indexOf(pattern) !== -1;\n }\n else {\n return input.indexOf(pattern) !== -1;\n }\n }\n else {\n return false;\n }\n };\n /**\n * To return the sorting function based on the string.\n *\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n *\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n *\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n * @param field\n * @param aggregates\n * @param level\n * @param groupDs\n * @param format\n * @param isLazyLoad\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || (isLazyLoad && aggregates.length)) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n *\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @param lookup\n * @param pKey\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n *\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @param fields\n * @param prefix\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n *\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n var lowerCaseNameSpace = nameSpace.charAt(0).toLowerCase() + nameSpace.slice(1);\n var upperCaseNameSpace = nameSpace.charAt(0).toUpperCase() + nameSpace.slice(1);\n if (!isNullOrUndefined(from[nameSpace])) {\n return from[nameSpace];\n }\n else {\n if (!isNullOrUndefined(from[lowerCaseNameSpace])) {\n return from[lowerCaseNameSpace];\n }\n else if (!isNullOrUndefined(from[upperCaseNameSpace])) {\n return from[upperCaseNameSpace];\n }\n else {\n return null;\n }\n }\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n if (value === undefined) {\n var casing = splits[i].charAt(0).toUpperCase() + splits[i].slice(1);\n value = from[casing] || from[casing.charAt(0).toLowerCase() + casing.slice(1)] || null;\n }\n from = value;\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n *\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) { return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp; });\n return newValue.join('');\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n *\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @param param1\n * @param param2\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query.params,\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n *\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return (!!obj) && (obj.constructor === Object);\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n *\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n *\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n *\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n *\n * @param {Object[]} json\n * @param {string} field\n * @param fieldName\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Process the given records based on the datamanager string.\n *\n * @param {string} datamanager\n * @param dm\n * @param {Object[]} records\n */\n DataUtil.processData = function (dm, records) {\n var query = this.prepareQuery(dm);\n var sampledata = new DataManager(records);\n if (dm.requiresCounts) {\n query.requiresCount();\n }\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n var result = sampledata.executeLocal(query);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n var returnValue = {\n result: dm.requiresCounts ? result.result : result,\n count: result.count,\n aggregates: JSON.stringify(result.aggregates)\n };\n return dm.requiresCounts ? returnValue : result;\n };\n DataUtil.prepareQuery = function (dm) {\n var _this = this;\n var query = new Query();\n if (dm.select) {\n query.select(dm.select);\n }\n if (dm.where) {\n var where = DataUtil.parse.parseJson(dm.where);\n where.filter(function (pred) {\n if (isNullOrUndefined(pred.condition)) {\n query.where(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent);\n }\n else {\n var predicateList = [];\n if (pred.field) {\n predicateList.push(new Predicate(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent));\n }\n else {\n predicateList = predicateList.concat(_this.getPredicate(pred.predicates));\n }\n if (pred.condition === 'or') {\n query.where(Predicate.or(predicateList));\n }\n else if (pred.condition === 'and') {\n query.where(Predicate.and(predicateList));\n }\n }\n });\n }\n if (dm.search) {\n var search = DataUtil.parse.parseJson(dm.search);\n // tslint:disable-next-line:no-string-literal\n search.filter(function (e) { return query.search(e.key, e.fields, e['operator'], \n // tslint:disable-next-line:no-string-literal\n e['ignoreCase'], e['ignoreAccent']); });\n }\n if (dm.aggregates) {\n dm.aggregates.filter(function (e) { return query.aggregate(e.type, e.field); });\n }\n if (dm.sorted) {\n dm.sorted.filter(function (e) { return query.sortBy(e.name, e.direction); });\n }\n if (dm.skip) {\n query.skip(dm.skip);\n }\n if (dm.take) {\n query.take(dm.take);\n }\n if (dm.group) {\n dm.group.filter(function (grp) { return query.group(grp); });\n }\n return query;\n };\n DataUtil.getPredicate = function (pred) {\n var mainPred = [];\n for (var i = 0; i < pred.length; i++) {\n var e = pred[i];\n if (e.field) {\n mainPred.push(new Predicate(e.field, e.operator, e.value, e.ignoreCase, e.ignoreAccent));\n }\n else {\n var childPred = [];\n // tslint:disable-next-line:typedef\n var cpre = this.getPredicate(e.predicates);\n for (var _i = 0, _a = Object.keys(cpre); _i < _a.length; _i++) {\n var prop = _a[_i];\n childPred.push(cpre[prop]);\n }\n mainPred.push(e.condition === 'or' ? Predicate.or(childPred) : Predicate.and(childPred));\n }\n }\n return mainPred;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n *\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n *\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n *\n * @param {string} er\n * @param error\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n // eslint-disable-next-line no-throw-literal\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n *\n * @param {Object[]} ds\n * @param {string} field?\n * @param field\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not substringof',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not contains',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n * @param ignoreCase\n * @param ignoreAccent\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the actual input not contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n doesnotcontain: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) === -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) === -1;\n },\n /**\n * Returns true when the given input value is not null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotnull: function (actual) {\n return actual !== null && actual !== undefined;\n },\n /**\n * Returns true when the given input value is null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null || actual === undefined;\n },\n /**\n * Returns true when the actual input starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotstartwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notStartsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notStartsWith(actual, expected);\n },\n /**\n * Returns true when the actual input like with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n like: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.like(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.like(actual, expected);\n },\n /**\n * Returns true when the given input value is empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isempty: function (actual) {\n return actual === undefined || actual === '';\n },\n /**\n * Returns true when the given input value is not empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotempty: function (actual) {\n return actual !== undefined && actual !== '';\n },\n /**\n * Returns true when the actual input pattern(wildcard) matches with the given string.\n *\n * @param {string|Date} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n wildcard: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return (actual || typeof actual === 'boolean') && expected && typeof actual !== 'object' &&\n DataUtil.wildCard(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return (actual || typeof actual === 'boolean') && expected && DataUtil.wildCard(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotendwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notEndsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notEndsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n *\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n *\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n *\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string') {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n *\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n // eslint-disable-next-line no-useless-escape\n }\n else if (typeof array[i] === 'string' && !/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i])) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n if (arr[5].indexOf('.') > -1) {\n var secondsMs = arr[5].split('.');\n arr[5] = secondsMs[0];\n arr[6] = new Date(value).getUTCMilliseconds().toString();\n }\n else {\n arr[6] = '00';\n }\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10), parseInt(arr[6], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n else if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n var arr = value.split(/[^0-9.]/);\n return new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n *\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n *\n * @param {string} value\n */\n isGuid: function (value) {\n // eslint-disable-next-line security/detect-unsafe-regex\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n *\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n *\n * @param {string} key\n * @param {Object} val\n * @param stringify\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n *\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n *\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, (((value.getTimezoneOffset() / 60) * 2)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}());\nexport { DataUtil };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */ (function () {\n /**\n * Constructor for Query class.\n *\n * @param {string|string[]} from?\n * @param from\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n /**\n * Sets the primary key.\n *\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
\n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
\n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n *\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n *\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @param fields\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n *\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n *\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n * @param matchCase\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent, matchCase) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n *\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n *\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n *\n * @param {string} fieldName - Defines the column field.\n * @param fn\n * @param format\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n *\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n *\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n *\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n *\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n *\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n *\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n *\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n *\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n *\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */ (function () {\n /**\n * Constructor for Predicate class.\n *\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @param ignoreAccent\n * @param {boolean} matchCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.matchCase = matchCase;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n this.matchCase = field.matchCase;\n this.ignoreCase = field.ignoreCase;\n this.ignoreAccent = field.ignoreAccent;\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.ornot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.ornot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'ornot', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.andnot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.andnot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'andnot', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n *\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n *\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var ret;\n var isAnd;\n if (!this.isComplex && this.comparer) {\n if (this.condition && this.condition.indexOf('not') !== -1) {\n this.condition = this.condition.split('not')[0] === '' ? undefined : this.condition.split('not')[0];\n return !this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n else {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.condition && this.condition.indexOf('not') !== -1) {\n isAnd = this.condition.indexOf('and') !== -1;\n }\n else {\n isAnd = this.condition === 'and';\n }\n for (var i = 0; i < predicate.length; i++) {\n if (i > 0 && this.condition && this.condition.indexOf('not') !== -1) {\n predicate[i].condition = predicate[i].condition ? predicate[i].condition + 'not' : 'not';\n }\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates,\n matchCase: this.matchCase\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\nexport { Predicate };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, EventHandler, Internationalization, NotifyPropertyChanges, detach, getUniqueID } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Event, Browser, L10n, ChildProperty } from '@syncfusion/ej2-base';\nimport { addClass, createElement, remove, closest, select, prepend, removeClass, attributes, Collection } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, formatUnit, setValue, rippleEffect, merge, extend, Touch } from '@syncfusion/ej2-base';\nimport { CalendarBase } from '../calendar/calendar';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar DATERANGEWRAPPER = 'e-date-range-wrapper';\nvar INPUTCONTAINER = 'e-input-group';\nvar DATERANGEICON = 'e-input-group-icon e-range-icon e-icons';\nvar POPUP = 'e-popup';\nvar LEFTCALENDER = 'e-left-calendar';\nvar RIGHTCALENDER = 'e-right-calendar';\nvar LEFTCONTAINER = 'e-left-container';\nvar RIGHTCONTAINER = 'e-right-container';\nvar ROOT = 'e-daterangepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar STARTENDCONTAINER = 'e-start-end';\nvar STARTDATE = 'e-start-date';\nvar ENDDATE = 'e-end-date';\nvar STARTBUTTON = 'e-start-btn';\nvar INPUTFOCUS = 'e-input-focus';\nvar ENDBUTTON = 'e-end-btn';\nvar RANGEHOVER = 'e-range-hover';\nvar OTHERMONTH = 'e-other-month';\nvar STARTLABEL = 'e-start-label';\nvar ENDLABEL = 'e-end-label';\nvar DISABLED = 'e-disabled';\nvar SELECTED = 'e-selected';\nvar CALENDAR = 'e-calendar';\nvar NEXTICON = 'e-next';\nvar PREVICON = 'e-prev';\nvar HEADER = 'e-header';\nvar TITLE = 'e-title';\nvar ICONCONTAINER = 'e-icon-container';\nvar RANGECONTAINER = 'e-date-range-container';\nvar RANGEHEADER = 'e-range-header';\nvar PRESETS = 'e-presets';\nvar FOOTER = 'e-footer';\nvar RANGEBORDER = 'e-range-border';\nvar TODAY = 'e-today';\nvar FOCUSDATE = 'e-focused-date';\nvar CONTENT = 'e-content';\nvar DAYSPAN = 'e-day-span';\nvar WEEKNUMBER = 'e-week-number';\nvar DATEDISABLED = 'e-date-disabled';\nvar ICONDISABLED = 'e-icon-disabled';\nvar CALENDARCONTAINER = 'e-calendar-container';\nvar SEPARATOR = 'e-separator';\nvar APPLY = 'e-apply';\nvar CANCEL = 'e-cancel';\nvar DEVICE = 'e-device';\nvar OVERLAY = 'e-overlay';\nvar CHANGEICON = 'e-change-icon e-icons';\nvar LISTCLASS = 'e-list-item';\nvar RTL = 'e-rtl';\nvar HOVER = 'e-hover';\nvar OVERFLOW = 'e-range-overflow';\nvar OFFSETVALUE = 4;\nvar PRIMARY = 'e-primary';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar ZOOMIN = 'e-zoomin';\nvar NONEDITABLE = 'e-non-edit';\nvar DAYHEADERLONG = 'e-daterange-day-header-lg';\nvar HIDDENELEMENT = 'e-daterange-hidden';\nvar wrapperAttr = ['title', 'class', 'style'];\nvar Presets = /** @class */ (function (_super) {\n __extends(Presets, _super);\n function Presets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Presets.prototype, \"label\", void 0);\n __decorate([\n Property()\n ], Presets.prototype, \"start\", void 0);\n __decorate([\n Property()\n ], Presets.prototype, \"end\", void 0);\n return Presets;\n}(ChildProperty));\nexport { Presets };\n/**\n * Represents the DateRangePicker component that allows user to select the date range from the calendar\n * or entering the range through the input element.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateRangePicker = /** @class */ (function (_super) {\n __extends(DateRangePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateRangePickerModel} options - Specifies the DateRangePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateRangePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isCustomRange = false;\n _this.isCustomWindow = false;\n _this.presetsItem = [];\n _this.liCollections = [];\n _this.previousEleValue = '';\n _this.isKeyPopup = false;\n _this.dateDisabled = false;\n _this.isRangeIconClicked = false;\n _this.isMaxDaysClicked = false;\n _this.disabledDays = [];\n _this.preventBlur = false;\n _this.preventFocus = false;\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.dateRangeOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.render = function () {\n this.initialize();\n this.setProperties({ startDate: this.startValue }, true);\n this.setProperties({ endDate: this.endValue }, true);\n this.setModelValue();\n this.setDataAttribute(false);\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.preRender = function () {\n this.keyInputConfigs = {\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n tab: 'tab',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n spacebar: 'space'\n };\n this.defaultConstant = {\n placeholder: this.placeholder,\n startLabel: 'Start Date',\n endLabel: 'End Date',\n customRange: 'Custom Range',\n applyText: 'Apply',\n cancelText: 'Cancel',\n selectedDays: 'Selected Days',\n days: 'days'\n };\n /**\n * Mobile View\n */\n this.isMobile = (Browser.isDevice) ? true : window.matchMedia('(max-width:550px)').matches;\n this.inputElement = this.element;\n this.angularTag = null;\n if (this.element.tagName === 'EJS-DATERANGEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.updateHtmlAttributeToElement();\n if (this.element.getAttribute('id')) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n this.checkInvalidRange(this.value);\n if (!this.invalidValueString && (typeof (this.value) === 'string')) {\n var rangeArray = this.value.split(' ' + this.separator + ' ');\n this.value = [new Date(rangeArray[0]), new Date(rangeArray[1])];\n }\n this.initProperty();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n this.navNextFunction = this.navNextMonth.bind(this);\n this.navPrevFunction = this.navPrevMonth.bind(this);\n this.deviceNavNextFunction = this.deviceNavNext.bind(this);\n this.deviceNavPrevFunction = this.deviceNavPrevious.bind(this);\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n this.formElement = closest(this.element, 'form');\n };\n DateRangePicker.prototype.updateValue = function () {\n if (this.value && this.value.length > 0) {\n if (this.value[0] instanceof Date && !isNaN(+this.value[0])) {\n this.setProperties({ startDate: this.value[0] }, true);\n this.startValue = this.value[0];\n }\n else if (typeof this.value[0] === 'string') {\n if (+this.value[0] === 0 || isNaN(+(new Date(this.checkValue(this.value[0]))))) {\n this.startValue = null;\n this.setValue();\n }\n else {\n this.setProperties({ startDate: new Date(this.checkValue(this.value[0])) }, true);\n this.startValue = new Date(this.checkValue(this.value[0]));\n }\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (this.value[1] instanceof Date && !isNaN(+this.value[1])) {\n this.setProperties({ endDate: this.value[1] }, true);\n this.endValue = this.value[1];\n }\n else if (typeof this.value[1] === 'string') {\n if (+this.value[0] === 0 || isNaN(+(new Date(this.checkValue(this.value[0]))))) {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n else {\n this.setProperties({ endDate: new Date(this.checkValue(this.value[1])) }, true);\n this.endValue = new Date(this.checkValue(this.value[1]));\n this.setValue();\n }\n }\n else {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n }\n else if (this.value && this.value.start) {\n if (this.value.start instanceof Date && !isNaN(+this.value.start)) {\n this.setProperties({ startDate: this.value.start }, true);\n this.startValue = this.value.start;\n }\n else if (typeof this.value.start === 'string') {\n this.setProperties({ startDate: new Date(this.checkValue(this.value.start)) }, true);\n this.startValue = new Date(this.checkValue(this.value.start));\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (this.value.end instanceof Date && !isNaN(+this.value.end)) {\n this.setProperties({ endDate: this.value.end }, true);\n this.endValue = this.value.end;\n }\n else if (typeof this.value.end === 'string') {\n this.setProperties({ endDate: new Date(this.checkValue(this.value.end)) }, true);\n this.endValue = new Date(this.checkValue(this.value.end));\n this.setValue();\n }\n else {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n }\n else if (isNullOrUndefined(this.value)) {\n this.endValue = this.checkDateValue(new Date(this.checkValue(this.endDate)));\n this.startValue = this.checkDateValue(new Date(this.checkValue(this.startDate)));\n this.setValue();\n }\n };\n DateRangePicker.prototype.initProperty = function () {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.updateValue();\n };\n DateRangePicker.prototype.checkFormat = function () {\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 this.formatString = this.globalize.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n else {\n this.formatString = null;\n }\n }\n else {\n this.formatString = null;\n }\n };\n DateRangePicker.prototype.initialize = function () {\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.checkHtmlAttributes(false);\n merge(this.defaultKeyConfigs, { shiftTab: 'shift+tab', tab: 'tab' });\n var start = this.checkDateValue(new Date(this.checkValue(this.startValue)));\n this.setProperties({ startDate: start }, true); // persist the value propeerty.\n this.setProperties({ endValue: this.checkDateValue(new Date(this.checkValue(this.endValue))) }, true);\n this.setValue();\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.l10n = new L10n('daterangepicker', this.defaultConstant, this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.processPresets();\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setRangeAllowEdit();\n this.bindEvents();\n };\n DateRangePicker.prototype.setDataAttribute = function (isDynamic) {\n var attributes = {};\n if (!isDynamic) {\n for (var i = 0; i < this.element.attributes.length; i++) {\n attributes[this.element.attributes[i].name] =\n this.element.getAttribute(this.element.attributes[i].name);\n }\n }\n else {\n attributes = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (pro.indexOf('data') === 0) {\n this.firstHiddenChild.setAttribute(pro, attributes[\"\" + pro]);\n this.secondHiddenChild.setAttribute(pro, attributes[\"\" + pro]);\n }\n }\n };\n DateRangePicker.prototype.setRangeAllowEdit = 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.updateClearIconState();\n };\n DateRangePicker.prototype.updateClearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n };\n DateRangePicker.prototype.validationAttribute = function (element, input) {\n var name = element.getAttribute('name') ? element.getAttribute('name') : element.getAttribute('id');\n input.setAttribute('name', name);\n element.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(element.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = element.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n element.removeAttribute(attributes[i]);\n }\n };\n DateRangePicker.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 (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (key === 'style') {\n var dateRangeStyle = this.inputWrapper.container.getAttribute(key);\n dateRangeStyle = !isNullOrUndefined(dateRangeStyle) ? (dateRangeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, dateRangeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n DateRangePicker.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 (wrapperAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DateRangePicker.prototype.updateCssClass = function (cssNewClass, cssOldClass) {\n if (!isNullOrUndefined(cssOldClass)) {\n cssOldClass = (cssOldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssNewClass)) {\n cssNewClass = (cssNewClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssNewClass, [this.inputWrapper.container], cssOldClass);\n if (this.popupWrapper) {\n Input.setCssClass(cssNewClass, [this.popupWrapper], cssOldClass);\n }\n };\n DateRangePicker.prototype.processPresets = function () {\n this.presetsItem = [];\n var i = 0;\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n for (var _i = 0, _a = this.presets; _i < _a.length; _i++) {\n var range = _a[_i];\n var id = range.label.replace(/\\s+/g, '') + '_' + (++i);\n if (typeof range.end === 'string') {\n this.presetsItem.push({\n id: id, text: range.label, end: new Date(this.checkValue(range.end)), start: new Date(this.checkValue(range.start))\n });\n }\n else {\n this.presetsItem.push({ id: id, text: range.label, start: range.start, end: range.end });\n }\n }\n var startDate = isNullOrUndefined(this.startValue) ? null : new Date(+this.startValue);\n var endDate = isNullOrUndefined(this.endValue) ? null : new Date(+this.endValue);\n this.presetsItem.push({ id: 'custom_range', text: this.l10n.getConstant('customRange'), start: startDate, end: endDate });\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.isCustomRange = true;\n this.activeIndex = this.presetsItem.length - 1;\n }\n }\n };\n DateRangePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n if (!this.isMobile) {\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.inputKeyboardModule = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n };\n DateRangePicker.prototype.unBindEvents = function () {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler);\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 if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.inputKeyboardModule)) {\n this.inputKeyboardModule.destroy();\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.inputElement.tabIndex = -1;\n };\n DateRangePicker.prototype.updateHiddenInput = function () {\n if (this.firstHiddenChild && this.secondHiddenChild) {\n var format = { format: this.formatString, type: 'datetime', skeleton: 'yMd' };\n if (typeof this.startDate === 'string') {\n this.startDate = this.globalize.parseDate(this.startDate, format);\n }\n if (typeof this.endDate === 'string') {\n this.endDate = this.globalize.parseDate(this.endDate, format);\n }\n this.firstHiddenChild.value = (this.startDate && this.globalize.formatDate(this.startDate, format))\n || (this.inputElement.value);\n this.secondHiddenChild.value = (this.endDate && this.globalize.formatDate(this.endDate, format)) ||\n (this.inputElement.value);\n this.dispatchEvent(this.firstHiddenChild, 'focusout');\n this.dispatchEvent(this.firstHiddenChild, 'change');\n }\n };\n DateRangePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n this.updateHiddenInput();\n };\n DateRangePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DateRangePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.valueType = this.value;\n e.preventDefault();\n this.clear();\n var clearedArgs = {\n event: e\n };\n this.setProperties({ endDate: this.checkDateValue(this.endValue) }, true);\n this.setProperties({ startDate: this.checkDateValue(this.startValue) }, true);\n this.trigger('cleared', clearedArgs);\n this.changeTrigger(e);\n this.clearRange();\n this.hide(e);\n if (closest(this.element, 'form')) {\n var element = this.firstHiddenChild;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DateRangePicker.prototype.restoreValue = function () {\n this.previousEleValue = this.inputElement.value;\n this.previousStartValue = this.startValue;\n this.previousEndValue = this.endValue;\n this.valueType = null;\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n this.setValue();\n this.setModelValue();\n };\n DateRangePicker.prototype.formResetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.formElement && (e.target === this.formElement) && !this.inputElement.disabled) {\n var val = this.inputElement.getAttribute('value');\n if (!isNullOrUndefined(this.startCopy)) {\n if (!isNullOrUndefined(this.value) && !isNullOrUndefined(this.value.start)) {\n this.setProperties({ value: { start: this.startCopy, end: this.endCopy } }, true);\n this.startValue = this.value.start;\n this.endValue = this.value.end;\n }\n else {\n this.setProperties({ value: [this.startCopy, this.endCopy] }, true);\n this.startValue = this.value[0];\n this.endValue = this.value[1];\n }\n this.setProperties({ startDate: this.startValue, endDate: this.endValue }, true);\n }\n else {\n this.setProperties({ value: null, startDate: null, endDate: null }, true);\n this.startValue = this.endValue = null;\n }\n if (this.element.tagName === 'EJS-DATERANGEPICKER') {\n this.setProperties({ value: null, startDate: null, endDate: null }, true);\n val = '';\n this.startValue = this.endValue = null;\n this.inputElement.setAttribute('value', '');\n }\n this.restoreValue();\n if (this.inputElement) {\n Input.setValue(val, this.inputElement, this.floatLabelType, this.showClearButton);\n this.errorClass();\n }\n }\n };\n DateRangePicker.prototype.clear = function () {\n if (this.startValue !== null) {\n this.startValue = null;\n }\n if (this.endValue !== null) {\n this.endValue = null;\n }\n if (this.value && this.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n if (this.value !== null && this.value.length > 0) {\n this.setProperties({ value: null }, true);\n }\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n if (!(isNullOrUndefined(this.applyButton))) {\n this.applyButton.disabled = this.applyButton.element.disabled = true;\n }\n this.removeSelection();\n };\n DateRangePicker.prototype.rangeIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isMobile) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n this.targetElement = null;\n if (this.isPopupOpen() && document.body.contains(this.popupObj.element)) {\n this.applyFunction(e);\n }\n else {\n this.isRangeIconClicked = true;\n this.inputWrapper.container.children[0].focus();\n this.show(null, e);\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftCalendar)) {\n this.calendarFocus();\n }\n }\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateRangePicker.prototype.checkHtmlAttributes = function (isDynamic) {\n this.globalize = new Internationalization(this.locale);\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['startDate', 'endDate', 'minDays', 'maxDays', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder',\n 'type', 'value'];\n var format = { format: this.formatString, type: 'date', skeleton: 'yMd' };\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.dateRangeOptions) || (this.dateRangeOptions['enabled'] === undefined)) || isDynamic) {\n var disabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ enabled: !disabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === 'true' || this.inputElement.getAttribute(prop) === '' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['value'] === undefined)) || isDynamic) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, value, {}), !isDynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'min':\n if ((isNullOrUndefined(this.min) || +this.min === +new Date(1900, 0, 1)) || isDynamic) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.setProperties(setValue(prop, dateValue, {}), !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'max':\n if ((isNullOrUndefined(this.max) || +this.max === +new Date(2099, 11, 31)) || isDynamic) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.setProperties(setValue(prop, dateValue, {}), !isDynamic);\n }\n break;\n case 'startDate':\n if (isNullOrUndefined(this.startDate)) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.startValue = dateValue;\n this.setValue();\n }\n break;\n case 'endDate':\n if (isNullOrUndefined(this.endDate)) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.endValue = dateValue;\n this.setValue();\n }\n break;\n case 'minDays':\n if (isNullOrUndefined(this.minDays)) {\n this.setProperties(setValue(prop, parseInt(this.inputElement.getAttribute(prop), 10), {}), true);\n }\n break;\n case 'maxDays':\n if (isNullOrUndefined(this.maxDays)) {\n this.setProperties(setValue(prop, parseInt(this.inputElement.getAttribute(prop), 10), {}), true);\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 DateRangePicker.prototype.createPopup = function () {\n for (var i = 0; i < this.presetsItem.length; i++) {\n if ((i !== (this.presetsItem.length - 1)) && this.presetsItem[i].id === 'custom_range') {\n this.presetsItem.splice(i, 1);\n }\n }\n this.activeIndex = this.presetsItem.length - 1;\n this.isCustomRange = true;\n for (var i = 0; i <= this.presetsItem.length - 2; i++) {\n var startDate = this.presetsItem[i].start;\n var endDate = this.presetsItem[i].end;\n if (this.startValue && this.endValue) {\n if ((+new Date(startDate.setHours(0, 0, 0, 0)) === +new Date(this.startValue.setHours(0, 0, 0, 0))) &&\n (+new Date(endDate.setHours(0, 0, 0, 0)) === +new Date(this.endValue.setHours(0, 0, 0, 0)))) {\n this.activeIndex = i;\n this.isCustomRange = false;\n }\n }\n }\n this.popupWrapper = createElement('div', { id: this.element.id + '_popup', className: ROOT + ' ' + POPUP });\n this.adjustLongHeaderWidth();\n var isPreset = (!this.isCustomRange || this.isMobile);\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && isPreset) {\n this.isCustomWindow = false;\n this.createPresets();\n this.listRippleEffect();\n this.renderPopup();\n }\n else {\n this.isCustomWindow = true;\n this.renderControl();\n }\n };\n DateRangePicker.prototype.renderControl = function () {\n this.createControl();\n this.bindCalendarEvents();\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) &&\n !isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n this.updateHeader();\n };\n DateRangePicker.prototype.clearCalendarEvents = function () {\n if (this.leftCalPrevIcon && this.leftCalNextIcon && this.rightCalPrevIcon && this.rightCalNextIcon) {\n EventHandler.clearEvents(this.leftCalPrevIcon);\n EventHandler.clearEvents(this.leftCalNextIcon);\n EventHandler.clearEvents(this.rightCalPrevIcon);\n EventHandler.clearEvents(this.rightCalNextIcon);\n }\n };\n DateRangePicker.prototype.updateNavIcons = function () {\n _super.prototype.iconHandler.call(this);\n };\n DateRangePicker.prototype.calendarIconEvent = function () {\n this.clearCalendarEvents();\n if (this.leftCalPrevIcon && !this.leftCalPrevIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.leftCalPrevIcon, 'mousedown', this.navPrevFunction);\n }\n if (this.leftCalNextIcon && !this.leftCalNextIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.leftCalNextIcon, 'mousedown', this.navNextFunction);\n }\n if (this.rightCalPrevIcon && !this.rightCalPrevIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.rightCalPrevIcon, 'mousedown', this.navPrevFunction);\n }\n if (this.rightCalNextIcon && !this.rightCalNextIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.rightCalNextIcon, 'mousedown', this.navNextFunction);\n }\n };\n DateRangePicker.prototype.bindCalendarEvents = function () {\n if (!this.isMobile) {\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.headerTitleElement = this.popupObj.element.querySelector('.' + RIGHTCALENDER + ' .' + HEADER + ' .' + TITLE);\n this.headerTitleElement = this.popupObj.element.querySelector('.' + LEFTCALENDER + ' .' + HEADER + ' .' + TITLE);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.leftKeyboardModule = new KeyboardEvents(this.leftCalendar, {\n eventName: 'keydown',\n keyAction: this.keyInputHandler.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n this.rightKeyboardModule = new KeyboardEvents(this.rightCalendar, {\n eventName: 'keydown',\n keyAction: this.keyInputHandler.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.deviceCalendarEvent();\n EventHandler.add(this.startButton.element, 'click', this.deviceHeaderClick, this);\n EventHandler.add(this.endButton.element, 'click', this.deviceHeaderClick, this);\n }\n if (this.start === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.calendarIconRipple = function () {\n rippleEffect(this.leftCalPrevIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.leftCalNextIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n rippleEffect(this.rightCalPrevIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.rightCalNextIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n };\n DateRangePicker.prototype.deviceCalendarEvent = function () {\n EventHandler.clearEvents(this.nextIcon);\n EventHandler.clearEvents(this.previousIcon);\n rippleEffect(this.nextIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.previousIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n if (this.nextIcon && !this.nextIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.nextIcon, 'mousedown', this.deviceNavNextFunction);\n }\n if (this.previousIcon && !this.previousIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.previousIcon, 'mousedown', this.deviceNavPrevFunction);\n }\n };\n DateRangePicker.prototype.deviceNavNext = function (e) {\n var calendar = closest(e.target, '.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n this.navigateNext(e);\n this.deviceNavigation();\n };\n DateRangePicker.prototype.deviceNavPrevious = function (e) {\n var calendar = closest(e.target, '.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n this.navigatePrevious(e);\n this.deviceNavigation();\n };\n DateRangePicker.prototype.updateDeviceCalendar = function (calendar) {\n if (calendar) {\n this.previousIcon = calendar.querySelector('.' + PREVICON);\n this.nextIcon = calendar.querySelector('.' + NEXTICON);\n this.calendarElement = calendar;\n this.deviceCalendar = calendar;\n this.contentElement = calendar.querySelector('.' + CONTENT);\n this.tableBodyElement = select('.' + CONTENT + ' tbody', calendar);\n this.table = calendar.querySelector('.' + CONTENT).getElementsByTagName('table')[0];\n this.headerTitleElement = calendar.querySelector('.' + HEADER + ' .' + TITLE);\n this.headerElement = calendar.querySelector('.' + HEADER);\n }\n };\n DateRangePicker.prototype.deviceHeaderClick = function (event) {\n var element = event.currentTarget;\n if (element.classList.contains(STARTBUTTON) && !isNullOrUndefined(this.startValue)) {\n this.endButton.element.classList.remove(ACTIVE);\n this.startButton.element.classList.add(ACTIVE);\n var calendar = this.popupObj.element.querySelector('.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n if (isNullOrUndefined(this.calendarElement.querySelector('.' + STARTDATE + ':not(.e-other-month)'))) {\n this.currentDate = new Date(+this.startValue);\n remove(this.tableBodyElement);\n this.createContentBody();\n this.deviceNavigation();\n }\n this.removeClassDisabled();\n }\n else if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.startButton.element.classList.remove(ACTIVE);\n this.endButton.element.classList.add(ACTIVE);\n var calendar = this.popupObj.element.querySelector('.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n if (isNullOrUndefined(this.calendarElement.querySelector('.' + ENDDATE + ':not(.e-other-month)'))) {\n this.currentDate = new Date(+this.endValue);\n remove(this.tableBodyElement);\n this.createContentBody();\n this.deviceNavigation();\n }\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n this.selectableDates();\n }\n };\n DateRangePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n this.preventBlur = false;\n var focusArguments = {\n model: this\n };\n if (!this.preventFocus) {\n this.trigger('focus', focusArguments);\n }\n this.updateClearIconState();\n if (this.openOnFocus && !this.preventFocus) {\n this.preventFocus = true;\n this.show();\n }\n else {\n this.preventFocus = true;\n }\n };\n DateRangePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (!this.preventBlur) {\n var value = this.inputElement.value;\n if (!isNullOrUndefined(this.presetsItem)) {\n if (this.presetsItem.length > 0 && this.previousEleValue !== this.inputElement.value) {\n this.activeIndex = this.presetsItem.length - 1;\n this.isCustomRange = true;\n }\n }\n if (!isNullOrUndefined(value) && value.trim() !== '') {\n var range = value.split(' ' + this.separator + ' ');\n if (range.length > 1) {\n this.invalidValueString = null;\n var dateOptions = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n var start = new Date(range[0]);\n var end = new Date(range[1]);\n var startDate = this.getStartEndDate(start, false, range, dateOptions);\n var endDate = this.getStartEndDate(end, true, range, dateOptions);\n if (!isNullOrUndefined(startDate) && !isNaN(+startDate) && !isNullOrUndefined(endDate) && !isNaN(+endDate)) {\n var prevStartVal = this.startValue;\n this.startValue = startDate;\n var prevEndVal = this.endValue;\n this.endValue = endDate;\n this.setValue();\n this.refreshControl();\n if (value !== this.previousEleValue) {\n this.changeTrigger(e);\n }\n if (!this.preventBlur && document.activeElement !== this.inputElement) {\n this.preventFocus = false;\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n this.updateHiddenInput();\n // For Mobile mode, when a value is present and choose another range and click on console\n // when popup is open, two startvalues and end values are updated in the popup.\n if (this.isMobile && this.isPopupOpen()) {\n this.startValue = prevStartVal;\n this.endValue = prevEndVal;\n }\n return;\n }\n else {\n if (!this.strictMode) {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n else {\n if (!this.strictMode) {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n if (!this.strictMode) {\n if (isNullOrUndefined(this.popupObj)) {\n this.currentDate = null;\n }\n this.previousStartValue = this.previousEndValue = null;\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n else {\n if (!isNullOrUndefined(value) && value.trim() === '') {\n this.startValue = null;\n this.endValue = null;\n }\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.updateInput();\n }\n this.errorClass();\n this.changeTrigger(e);\n if (!this.preventBlur && document.activeElement !== this.inputElement) {\n this.preventFocus = false;\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n }\n this.updateHiddenInput();\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n DateRangePicker.prototype.getStartEndDate = function (date, isEnd, range, dateOptions) {\n if (this.depth === 'Month') {\n return this.globalize.parseDate(range[isEnd ? 1 : 0].trim(), dateOptions);\n }\n else if (this.depth === 'Year') {\n return new Date(date.getFullYear(), date.getMonth() + (isEnd ? 1 : 0), isEnd ? 0 : 1);\n }\n else {\n return new Date(date.getFullYear(), isEnd ? 11 : 0, isEnd ? 31 : 1);\n }\n };\n DateRangePicker.prototype.clearRange = function () {\n this.previousStartValue = this.previousEndValue = null;\n this.currentDate = null;\n };\n DateRangePicker.prototype.errorClass = function () {\n var inputStr = this.inputElement.value.trim();\n if (((isNullOrUndefined(this.endValue) && isNullOrUndefined(this.startValue) && inputStr !== '') ||\n ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max))\n || ((this.startValue && this.isDateDisabled(this.startValue))\n || (this.endValue && this.isDateDisabled(this.endValue)))) && inputStr !== '') {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else {\n if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n }\n };\n DateRangePicker.prototype.keyCalendarUpdate = function (isLeftCalendar, ele, isRemoveFocus) {\n if (isRemoveFocus === void 0) { isRemoveFocus = true; }\n if (isRemoveFocus) {\n this.removeFocusedDate();\n }\n if (isLeftCalendar) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n ele = this.leftCalendar;\n }\n else {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n ele = this.rightCalendar;\n }\n this.updateCalendarElement(ele);\n this.table.focus();\n return ele;\n };\n DateRangePicker.prototype.navInCalendar = function (e, isLeftCalendar, leftLimit, rightLimit, ele) {\n var view = this.getViewNumber(this.currentView());\n var date;\n var min = this.min;\n var max;\n if (!isNullOrUndefined(this.maxDays) && this.isMaxDaysClicked && !isNullOrUndefined(this.startValue)) {\n max = new Date(new Date(+this.startValue).setDate(this.startValue.getDate() + (this.maxDays - 1)));\n }\n else {\n max = this.max;\n }\n switch (e.action) {\n case 'moveRight':\n date = new Date(+this.currentDate);\n this.addDay(date, 1, e, max, min);\n if (isLeftCalendar && +date === +rightLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.keyboardNavigate(1, view, e, max, min);\n this.keyNavigation(ele, e);\n break;\n case 'moveLeft':\n date = new Date(+this.currentDate);\n this.addDay(date, -1, e, max, min);\n if (!isLeftCalendar) {\n if (+date === +leftLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n }\n this.keyboardNavigate(-1, view, e, max, min);\n this.keyNavigation(ele, e);\n break;\n case 'moveUp':\n if (view === 0) {\n date = new Date(+this.currentDate);\n this.addDay(date, -7, e, max, min);\n if (+date <= +leftLimit && !isLeftCalendar) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.keyboardNavigate(-7, view, e, max, min);\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n this.keyNavigation(ele, e);\n break;\n case 'moveDown':\n if (view === 0) {\n date = new Date(+this.currentDate);\n this.addDay(date, 7, e, max, min);\n if (isLeftCalendar && +date >= +rightLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.keyboardNavigate(7, view, e, max, min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n this.keyNavigation(ele, e);\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n remove(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 this.keyNavigation(ele, e);\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n remove(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 this.keyNavigation(ele, e);\n break;\n case 'tab':\n if (this.tabKeyValidation(ele, LEFTCALENDER)) {\n ele = this.keyCalendarUpdate(false, ele, false);\n this.currentDate = this.firstCellToFocus(this.rightCalendar);\n view = this.getViewNumber(this.currentView());\n this.keyboardNavigate(0, view, e, max, min);\n this.keyNavigation(ele, e);\n }\n break;\n case 'shiftTab':\n if (this.tabKeyValidation(ele, RIGHTCALENDER)) {\n ele = this.keyCalendarUpdate(true, ele, false);\n this.currentDate = this.firstCellToFocus(this.leftCalendar);\n this.keyboardNavigate(0, view, e, max, min);\n this.keyNavigation(ele, e);\n }\n break;\n }\n };\n DateRangePicker.prototype.firstCellToFocus = function (calendar) {\n var focusAbleEle = this.getViewNumber(this.currentView()) === 2 ? calendar.children[1].firstElementChild.querySelector('td.e-cell:not(.e-week-number):not(.e-disabled):not(.e-other-year)') : calendar.children[1].firstElementChild.querySelector('td.e-cell:not(.e-week-number):not(.e-disabled):not(.e-other-month)');\n var focusEleID = focusAbleEle && focusAbleEle.id ? focusAbleEle.id.split('_')[0] : null;\n var currentFirstDay = new Date(this.currentDate.getFullYear(), this.currentDate.getMonth(), 1);\n var focusDate = focusEleID ? new Date(+focusEleID) : currentFirstDay;\n return focusDate;\n };\n DateRangePicker.prototype.keyInputHandler = function (e, value) {\n var date;\n var view = this.getViewNumber(this.currentView());\n var rightDateLimit = new Date(this.rightCalCurrentDate.getFullYear(), this.rightCalCurrentDate.getMonth(), 1);\n var leftDateLimit = new Date(this.leftCalCurrentDate.getFullYear(), this.leftCalCurrentDate.getMonth() + 1, 0);\n var ele = closest(e.target, '.' + RIGHTCALENDER);\n ele = isNullOrUndefined(ele) ? this.leftCalendar : ele;\n var isLeftCalendar = ele.classList.contains(LEFTCALENDER);\n this.updateCalendarElement(ele);\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n var focusedDate = ele.querySelector('tr td.' + FOCUSDATE);\n var startDate = ele.querySelector('tr td.' + STARTDATE);\n var endDate = ele.querySelector('tr td.' + ENDDATE);\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n var leftCalendar = closest(e.target, '.' + LEFTCALENDER);\n var rightCalendar = closest(e.target, '.' + RIGHTCALENDER);\n var presetElement = closest(e.target, '.' + PRESETS);\n if (!isNullOrUndefined(focusedDate)) {\n // eslint-disable-next-line no-self-assign\n this.currentDate = this.currentDate;\n }\n else if (!isNullOrUndefined(endDate) && !this.dateDisabled) {\n this.currentDate = new Date(+this.endValue);\n }\n else if (!isNullOrUndefined(startDate) && !this.dateDisabled) {\n this.currentDate = new Date(+this.startValue);\n }\n else if (!this.dateDisabled) {\n this.currentDate.setDate(1);\n }\n this.effect = '';\n switch (e.action) {\n case 'altUpArrow':\n if (this.isPopupOpen()) {\n this.hide(e);\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n break;\n case 'select':\n if (levelRestrict) {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : startDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n this.selectRange(null, (element));\n }\n }\n else {\n if (!isNullOrUndefined(selectedDate) && !levelRestrict || !isNullOrUndefined(focusedDate)) {\n if (!isNullOrUndefined(this.value)) {\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n value = this.startDate;\n }\n else {\n value = this.endDate;\n }\n }\n this.controlDown = e;\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n }\n e.preventDefault();\n break;\n case 'controlHome':\n {\n var yearDate = new Date(this.currentDate.getFullYear(), 0, 1);\n if (!isLeftCalendar && +yearDate < +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n _super.prototype.navigateTo.call(this, 'Month', new Date(this.currentDate.getFullYear(), 0, 1));\n this.keyNavigation(ele, e);\n }\n break;\n case 'altRightArrow':\n if (!isNullOrUndefined(leftCalendar)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n else if (!isNullOrUndefined(rightCalendar)) {\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetElement.focus();\n this.removeFocusedDate();\n }\n else {\n this.cancelButton.element.focus();\n }\n }\n else {\n if (!isNullOrUndefined(presetElement)) {\n this.cancelButton.element.focus();\n }\n }\n e.preventDefault();\n break;\n case 'altLeftArrow':\n if (!isNullOrUndefined(leftCalendar)) {\n if (this.applyButton.element.disabled !== true) {\n this.applyButton.element.focus();\n }\n else {\n this.cancelButton.element.focus();\n }\n }\n else {\n if (!isNullOrUndefined(rightCalendar)) {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n e.preventDefault();\n break;\n case 'controlUp':\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n this.calendarNavigation(e, this.calendarElement);\n }\n else {\n this.calendarNavigation(e, this.calendarElement);\n }\n e.preventDefault();\n break;\n case 'controlDown':\n if ((!isNullOrUndefined(selectedDate) || !isNullOrUndefined(focusedDate)) && !levelRestrict) {\n if (!isNullOrUndefined(this.value)) {\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n value = this.startDate;\n }\n else {\n value = this.endDate;\n }\n }\n this.controlDown = e;\n this.contentClick(null, --view, (selectedDate || focusedDate), value);\n }\n e.preventDefault();\n break;\n case 'controlEnd':\n {\n var yearDate = new Date(this.currentDate.getFullYear(), 11, 31);\n if (isLeftCalendar && +yearDate > +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n _super.prototype.navigateTo.call(this, 'Month', new Date(this.currentDate.getFullYear(), 11, 31));\n this.keyNavigation(ele, e);\n }\n break;\n case 'pageUp':\n date = new Date(+this.currentDate);\n this.addMonths(date, -1);\n if (!isLeftCalendar && +date <= +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.addMonths(this.currentDate, -1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'pageDown':\n date = new Date(+this.currentDate);\n this.addMonths(date, 1);\n if (isLeftCalendar && +date >= +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.addMonths(this.currentDate, 1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftPageUp':\n date = new Date(+this.currentDate);\n this.addYears(date, -1);\n if (!isLeftCalendar && +date <= +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.addYears(this.currentDate, -1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftPageDown':\n date = new Date(+this.currentDate);\n this.addYears(date, 1);\n if (isLeftCalendar && +date >= +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.addYears(this.currentDate, 1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftTab':\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetElement.setAttribute('tabindex', '0');\n this.presetElement.focus();\n this.removeFocusedDate();\n }\n if (isLeftCalendar) {\n e.preventDefault();\n }\n if (this.tabKeyValidation(ele, RIGHTCALENDER)) {\n this.currentDate = new Date(+this.leftCalCurrentDate);\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n }\n break;\n case 'spacebar':\n if (this.applyButton && !this.applyButton.disabled) {\n this.applyFunction(e);\n }\n break;\n case 'tab':\n if (this.tabKeyValidation(ele, LEFTCALENDER)) {\n this.currentDate = new Date(+this.rightCalCurrentDate);\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n }\n break;\n default:\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n this.checkMinMaxDays();\n }\n this.presetHeight();\n };\n DateRangePicker.prototype.tabKeyValidation = function (ele, calendarPos) {\n var isLeftCalendar = ele.classList.contains(calendarPos);\n var rightHeader = this.rightCalendar.querySelector('.e-header');\n var leftHeader = this.leftCalendar.querySelector('.e-header');\n var isRightMonth = rightHeader ? rightHeader.classList.contains('e-month') : false;\n var isLeftMonth = leftHeader ? leftHeader.classList.contains('e-month') : false;\n var isRightYear = rightHeader ? rightHeader.classList.contains('e-year') : false;\n var isLeftYear = leftHeader ? leftHeader.classList.contains('e-year') : false;\n var isRightDecade = rightHeader ? rightHeader.classList.contains('e-decade') : false;\n var isLeftDecade = leftHeader ? leftHeader.classList.contains('e-decade') : false;\n return isLeftCalendar && (isLeftMonth || isLeftYear || isLeftDecade) &&\n (isRightMonth || isRightYear || isRightDecade) && !this.isMobile;\n };\n DateRangePicker.prototype.keyNavigation = function (calendar, e) {\n this.bindCalendarCellEvents(calendar);\n if (calendar.classList.contains(LEFTCALENDER)) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n }\n else {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n }\n this.updateNavIcons();\n this.calendarIconEvent();\n this.updateRange([calendar]);\n this.dateDisabled = this.isDateDisabled(this.currentDate);\n e.preventDefault();\n };\n DateRangePicker.prototype.inputHandler = function (e) {\n switch (e.action) {\n case 'altDownArrow':\n if (!this.isPopupOpen()) {\n if (this.inputElement.value === '') {\n this.clear();\n this.changeTrigger(e);\n this.clearRange();\n }\n this.show(null, e);\n this.isRangeIconClicked = false;\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftCalendar)) {\n this.calendarFocus();\n }\n }\n this.isKeyPopup = true;\n }\n break;\n case 'escape':\n if (this.isPopupOpen()) {\n this.hide(e);\n }\n break;\n case 'enter':\n if (document.activeElement === this.inputElement) {\n this.inputBlurHandler(e);\n this.hide(e);\n }\n break;\n case 'tab':\n if (document.activeElement === this.inputElement && this.isPopupOpen()) {\n this.hide(e);\n e.preventDefault();\n }\n break;\n }\n };\n DateRangePicker.prototype.bindCalendarCellEvents = function (calendar) {\n var tdCells;\n if (calendar) {\n tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n }\n else {\n tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td');\n }\n for (var _i = 0, tdCells_1 = tdCells; _i < tdCells_1.length; _i++) {\n var cell = tdCells_1[_i];\n EventHandler.clearEvents(cell);\n var disabledCell = cell.classList.contains(DISABLED) || cell.classList.contains(DATEDISABLED);\n if (!disabledCell && !cell.classList.contains(WEEKNUMBER)) {\n if (!this.isMobile) {\n EventHandler.add(cell, 'mouseover', this.hoverSelection, this);\n }\n EventHandler.add(cell, 'mousedown', this.selectRange, this);\n }\n }\n };\n DateRangePicker.prototype.removeFocusedDate = function () {\n var isDate = !isNullOrUndefined(this.startValue) || !isNullOrUndefined(this.endValue);\n var focusedDate = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' .' + FOCUSDATE);\n for (var _i = 0, focusedDate_1 = focusedDate; _i < focusedDate_1.length; _i++) {\n var ele = focusedDate_1[_i];\n var today = new Date();\n var eleDate = this.getIdValue(null, ele);\n if ((this.depth === 'Month' && this.currentView() === 'Month' &&\n (!ele.classList.contains(TODAY) || (ele.classList.contains(TODAY) && isDate)))\n || (this.depth === 'Year' && this.currentView() === 'Year' &&\n ((!this.isSameMonth(today, eleDate) && !this.isSameYear(today, eleDate)) || isDate))\n || (this.depth === 'Decade' && this.currentView() === 'Decade' &&\n (!this.isSameYear(today, eleDate) || isDate))) {\n ele.classList.remove(FOCUSDATE);\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(ENDDATE)) {\n ele.removeAttribute('aria-label');\n }\n }\n }\n };\n DateRangePicker.prototype.hoverSelection = function (event, element) {\n var currentElement = element || event.currentTarget;\n var currentDate = this.getIdValue(null, currentElement);\n if (!isNullOrUndefined(this.startValue) && +this.startValue >= +this.min && +this.startValue <= +this.max) {\n if ((!this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)\n && isNullOrUndefined(this.endValue) && isNullOrUndefined(this.startValue))\n || (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue))) {\n var tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td');\n for (var _i = 0, tdCells_2 = tdCells; _i < tdCells_2.length; _i++) {\n var ele = tdCells_2[_i];\n var isDisabledCell = (!ele.classList.contains(DISABLED) || ele.classList.contains(DATEDISABLED));\n if (!ele.classList.contains(WEEKNUMBER) && isDisabledCell) {\n var eleDate = this.getIdValue(null, ele);\n var startDateValue = new Date(+this.startValue);\n var eleDateValue = new Date(+eleDate);\n if (eleDateValue.setHours(0, 0, 0, 0) >= startDateValue.setHours(0, 0, 0, 0) && +eleDate <= +currentDate) {\n addClass([ele], RANGEHOVER);\n }\n else {\n removeClass([ele], [RANGEHOVER]);\n }\n }\n }\n }\n }\n };\n DateRangePicker.prototype.isSameStartEnd = function (startVal, endVal) {\n var isSame = false;\n if (this.depth === 'Month') {\n if ((startVal).setHours(0, 0, 0, 0) === (endVal).setHours(0, 0, 0, 0)) {\n isSame = true;\n }\n }\n else if (this.depth === 'Year') {\n if ((startVal.getFullYear() === endVal.getFullYear()) &&\n (startVal.getMonth() === endVal.getMonth())) {\n isSame = true;\n }\n }\n else if (this.depth === 'Decade') {\n if (startVal.getFullYear() === endVal.getFullYear()) {\n isSame = true;\n }\n }\n return isSame;\n };\n DateRangePicker.prototype.updateRange = function (elementCollection) {\n if (!isNullOrUndefined(this.startValue)) {\n for (var _i = 0, elementCollection_1 = elementCollection; _i < elementCollection_1.length; _i++) {\n var calendar = elementCollection_1[_i];\n var tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n for (var _a = 0, tdCells_3 = tdCells; _a < tdCells_3.length; _a++) {\n var ele = tdCells_3[_a];\n if (!ele.classList.contains(WEEKNUMBER) && !ele.classList.contains(DISABLED)) {\n var eleDate = this.getIdValue(null, ele);\n var eleDateValue = this.getIdValue(null, ele);\n if (!isNullOrUndefined(this.endValue)) {\n if (this.currentView() === this.depth &&\n +eleDateValue.setHours(0, 0, 0, 0) >= +new Date(+this.startValue).setHours(0, 0, 0, 0)\n && +eleDateValue.setHours(0, 0, 0, 0) <= +new Date(+this.endValue).setHours(0, 0, 0, 0) &&\n !this.isSameStartEnd(new Date(+this.startValue), new Date(+this.endValue)) &&\n +new Date(+this.startValue).setHours(0, 0, 0, 0) >= +this.min\n && +new Date(+this.endValue).setHours(0, 0, 0, 0) <= +this.max\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], RANGEHOVER);\n }\n }\n else {\n removeClass([ele], [RANGEHOVER]);\n }\n if (ele.classList.contains(SELECTED) && ele.classList.contains(ENDDATE) &&\n (+eleDateValue !== +this.endValue)) {\n removeClass([ele], [SELECTED]);\n removeClass([ele], [ENDDATE]);\n }\n if (ele.classList.contains(RANGEHOVER) && (+eleDateValue > +this.endValue)) {\n removeClass([ele], [RANGEHOVER]);\n }\n if (!ele.classList.contains(OTHERMONTH)) {\n var startDateValue = new Date(+this.startValue);\n var eleDateValue_1 = new Date(+eleDate);\n if (this.currentView() === this.depth &&\n +eleDateValue_1.setHours(0, 0, 0, 0) === +startDateValue.setHours(0, 0, 0, 0)\n && +eleDateValue_1.setHours(0, 0, 0, 0) >= +startDateValue.setHours(0, 0, 0, 0) &&\n +this.startValue >= +this.min\n && !this.inputWrapper.container.classList.contains('e-error')\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], [STARTDATE, SELECTED]);\n this.addSelectedAttributes(ele, this.startValue, true);\n }\n var endDateValue = new Date(+this.endValue);\n if (this.currentView() === 'Year') {\n eleDateValue_1 = new Date(eleDateValue_1.getFullYear(), eleDateValue_1.getMonth() + 1, 0);\n }\n else if (this.currentView() === 'Decade') {\n eleDateValue_1 = new Date(eleDateValue_1.getFullYear(), 11, 31);\n }\n if (this.currentView() === this.depth &&\n !isNullOrUndefined(this.endValue) &&\n +eleDateValue_1.setHours(0, 0, 0, 0) === +endDateValue.setHours(0, 0, 0, 0)\n && +eleDateValue_1.setHours(0, 0, 0, 0) <= +endDateValue.setHours(0, 0, 0, 0) &&\n +this.startValue >= +this.min\n && !this.inputWrapper.container.classList.contains('e-error')\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], [ENDDATE, SELECTED]);\n this.addSelectedAttributes(ele, this.startValue, false);\n }\n if (+eleDate === +this.startValue && !isNullOrUndefined(this.endValue) && +eleDate === +this.endValue) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n }\n }\n }\n }\n }\n };\n DateRangePicker.prototype.checkMinMaxDays = function () {\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) || (!isNullOrUndefined(this.maxDays) && this.maxDays > 0)) {\n if (!this.isMobile) {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + LEFTCALENDER));\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + RIGHTCALENDER));\n }\n else {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n }\n }\n };\n DateRangePicker.prototype.rangeArgs = function (e) {\n var inputValue;\n var range;\n var startDate = !isNullOrUndefined(this.startValue) ?\n this.globalize.formatDate(this.startValue, {\n format: this.formatString, type: 'date', skeleton: 'yMd'\n }) : null;\n var endDate = !isNullOrUndefined(this.endValue) ?\n this.globalize.formatDate(this.endValue, {\n format: this.formatString, type: 'date', skeleton: 'yMd'\n }) : null;\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n inputValue = startDate + ' ' + this.separator + ' ' + endDate;\n range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n }\n else {\n inputValue = '';\n range = 0;\n }\n var args = {\n value: this.value,\n startDate: this.startValue,\n endDate: this.endValue,\n daySpan: range,\n event: e || null,\n element: this.element,\n isInteracted: !isNullOrUndefined(e),\n text: inputValue\n };\n return args;\n };\n DateRangePicker.prototype.otherMonthSelect = function (ele, isStartDate, sameDate) {\n var value = +this.getIdValue(null, ele);\n var dateIdString = '*[id^=\"/id\"]:not(.e-other-month)'.replace('/id', '' + value);\n var tdCell = this.popupObj && this.popupObj.element.querySelector(dateIdString);\n if (!isNullOrUndefined(tdCell)) {\n if (isStartDate) {\n addClass([tdCell], [STARTDATE, SELECTED]);\n this.addSelectedAttributes(tdCell, this.startValue, true);\n }\n else {\n addClass([tdCell], [ENDDATE, SELECTED]);\n this.addSelectedAttributes(tdCell, this.endValue, true);\n }\n if (sameDate) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n }\n };\n DateRangePicker.prototype.selectRange = function (event, element) {\n var leftCalendar;\n var rightCalendar;\n if (event) {\n event.preventDefault();\n }\n var date = isNullOrUndefined(event) ? this.getIdValue(null, element)\n : this.getIdValue(event, null);\n var y = date.getFullYear();\n var m = date.getMonth();\n var firstDay = new Date(y, m, 1);\n var lastDay = new Date(y, m + 1, 0);\n var firstMonth = new Date(y, 0, 1);\n var lastMonth = new Date(y, 11, 31);\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n if (!this.isMobile || this.isMobile && !this.endButton.element.classList.contains(ACTIVE)) {\n this.removeSelection();\n }\n }\n else if (this.isMobile && this.startButton.element.classList.contains(ACTIVE)) {\n this.removeSelection();\n }\n var ele = element || event.currentTarget;\n if (isNullOrUndefined(this.startValue)) {\n if (!isNullOrUndefined(this.previousStartValue)) {\n date.setHours(this.previousStartValue.getHours());\n date.setMinutes(this.previousStartValue.getMinutes());\n date.setSeconds(this.previousStartValue.getSeconds());\n }\n this.startValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? firstDay : firstMonth;\n this.endValue = null;\n this.setValue();\n addClass([ele], STARTDATE);\n this.addSelectedAttributes(ele, this.startValue, true);\n if (ele.classList.contains(OTHERMONTH)) {\n this.otherMonthSelect(ele, true);\n }\n this.checkMinMaxDays();\n this.applyButton.disabled = true;\n this.applyButton.element.disabled = true;\n if (this.isMobile) {\n this.endButton.element.classList.add(ACTIVE);\n this.startButton.element.classList.remove(ACTIVE);\n this.endButton.element.removeAttribute('disabled');\n this.selectableDates();\n }\n this.trigger('select', this.rangeArgs(event));\n }\n else {\n if (+date === +this.startValue || +date > +this.startValue) {\n if (+date === +this.startValue && !isNullOrUndefined(this.minDays) && this.minDays > 1) {\n return;\n }\n this.endValue = null;\n this.setValue();\n if (this.isMobile || element) {\n this.hoverSelection(event, element);\n }\n if (!isNullOrUndefined(this.previousEndValue)) {\n date.setHours(this.previousEndValue.getHours());\n date.setMinutes(this.previousEndValue.getMinutes());\n date.setSeconds(this.previousEndValue.getSeconds());\n }\n this.endValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? lastDay : lastMonth;\n this.setValue();\n var endEle = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n if (this.isMobile) {\n this.startButton.element.classList.remove(ACTIVE);\n this.endButton.element.classList.add(ACTIVE);\n for (var _i = 0, endEle_1 = endEle; _i < endEle_1.length; _i++) {\n var ele_1 = endEle_1[_i];\n ele_1.removeAttribute('aria-label');\n if (!ele_1.classList.contains(STARTDATE)) {\n ele_1.setAttribute('aria-selected', 'false');\n removeClass([ele_1], [ENDDATE, SELECTED]);\n }\n else {\n this.addSelectedAttributes(ele_1, this.startValue, true);\n removeClass([ele_1], [ENDDATE]);\n }\n }\n }\n addClass([ele], ENDDATE);\n if (+this.endValue === +this.startValue) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n else {\n this.addSelectedAttributes(ele, this.endValue, false);\n }\n if (ele.classList.contains(OTHERMONTH)) {\n if (+this.endValue === +this.startValue) {\n this.otherMonthSelect(ele, false, true);\n }\n else {\n this.otherMonthSelect(ele, false);\n }\n }\n endEle = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n for (var _a = 0, endEle_2 = endEle; _a < endEle_2.length; _a++) {\n var ele_2 = endEle_2[_a];\n if (ele_2.classList.contains(STARTDATE)) {\n removeClass([ele_2], [RANGEHOVER]);\n }\n }\n this.applyButton.disabled = false;\n this.applyButton.element.disabled = false;\n if (!this.isMobile) {\n this.removeClassDisabled();\n }\n if (!isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n this.trigger('select', this.rangeArgs(event));\n }\n else if (+date < +this.startValue) {\n this.removeClassDisabled();\n this.startValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? firstDay : firstMonth;\n this.setValue();\n this.removeSelectedAttributes();\n removeClass(this.popupObj.element.querySelectorAll('.' + STARTDATE), [STARTDATE, SELECTED]);\n addClass([ele], STARTDATE);\n this.addSelectedAttributes(ele, this.startValue, true);\n if (ele.classList.contains(OTHERMONTH)) {\n this.otherMonthSelect(ele, true);\n }\n this.checkMinMaxDays();\n }\n }\n if (event) {\n leftCalendar = closest(event.target, '.' + LEFTCALENDER);\n }\n if (event && isNullOrUndefined(leftCalendar)) {\n rightCalendar = event && closest(event.target, '.' + RIGHTCALENDER);\n }\n if (!isNullOrUndefined(leftCalendar) || !isNullOrUndefined(rightCalendar)) {\n this.inputWrapper.container.focus();\n }\n addClass([ele], SELECTED);\n this.calendarIconEvent();\n this.updateHeader();\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.selectableDates = function () {\n if (!isNullOrUndefined(this.startValue)) {\n var tdCells = this.calendarElement.querySelectorAll('.' + CALENDAR + ' td');\n var isStartDate = false;\n if (this.currentView() === this.depth) {\n for (var _i = 0, tdCells_4 = tdCells; _i < tdCells_4.length; _i++) {\n var ele = tdCells_4[_i];\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(WEEKNUMBER)) {\n if (!ele.classList.contains(DISABLED)) {\n var eleDate = this.getIdValue(null, ele);\n if (+eleDate < +this.startValue) {\n addClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n EventHandler.clearEvents(ele);\n continue;\n }\n else {\n break;\n }\n }\n }\n if (ele.classList.contains(STARTDATE) && !ele.classList.contains(OTHERMONTH)) {\n isStartDate = true;\n break;\n }\n }\n if (isStartDate) {\n if (!this.previousIcon.classList.contains(DISABLED)) {\n addClass([this.previousIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n }\n else {\n for (var _a = 0, tdCells_5 = tdCells; _a < tdCells_5.length; _a++) {\n var ele = tdCells_5[_a];\n var startMonth = this.startValue.getMonth();\n var startYear = this.startValue.getFullYear();\n var element = this.getIdValue(null, ele);\n if (!this.startButton.element.classList.contains(ACTIVE) && ((this.currentView() === 'Year' &&\n (element.getMonth() < startMonth) && (element.getFullYear() <= startYear))\n || (this.currentView() === 'Decade' && (element.getMonth() <= startMonth) &&\n (element.getFullYear() < startYear)))) {\n addClass([ele], [DISABLED]);\n }\n else {\n break;\n }\n }\n if (tdCells[0].classList.contains(DISABLED)) {\n this.previousIconHandler(true);\n }\n else if (tdCells[tdCells.length - 1].classList.contains(DISABLED)) {\n this.nextIconHandler(true);\n }\n }\n }\n };\n DateRangePicker.prototype.updateMinMaxDays = function (calendar) {\n if ((!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) ||\n (this.isMobile && this.endButton.element.classList.contains(ACTIVE))) {\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) || (!isNullOrUndefined(this.maxDays) && this.maxDays > 0)) {\n var startValueSelected = this.removeTimeValueFromDate(this.startValue);\n var minDate = new Date(new Date(+startValueSelected).setDate(startValueSelected.getDate() + (this.minDays - 1)));\n var maxDate = new Date(new Date(+startValueSelected).setDate(startValueSelected.getDate() + (this.maxDays - 1)));\n minDate = (!isNullOrUndefined(this.minDays) && this.minDays > 0) ? minDate : null;\n maxDate = (!isNullOrUndefined(this.maxDays) && this.maxDays > 0) ? maxDate : null;\n if (this.currentView() === 'Year') {\n minDate = isNullOrUndefined(minDate) ? null : new Date(minDate.getFullYear(), minDate.getMonth(), 0);\n maxDate = isNullOrUndefined(maxDate) ? null : new Date(maxDate.getFullYear(), maxDate.getMonth(), 1);\n }\n else if (this.currentView() === 'Decade') {\n minDate = isNullOrUndefined(minDate) ? null : new Date(minDate.getFullYear() - 1, 11, 1);\n maxDate = isNullOrUndefined(maxDate) ? null : new Date(maxDate.getFullYear(), 0, 1);\n }\n var tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n var maxEle = void 0;\n for (var _i = 0, tdCells_6 = tdCells; _i < tdCells_6.length; _i++) {\n var ele = tdCells_6[_i];\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(WEEKNUMBER)) {\n var eleDate = this.getIdValue(null, ele);\n eleDate = this.removeTimeValueFromDate(eleDate);\n if (!isNullOrUndefined(minDate) && +eleDate === +minDate && ele.classList.contains(DISABLED)) {\n minDate.setDate(minDate.getDate() + 1);\n }\n if (!ele.classList.contains(DISABLED)) {\n if (+eleDate <= +startValueSelected) {\n continue;\n }\n if (!isNullOrUndefined(minDate) && +eleDate < +minDate) {\n addClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n EventHandler.clearEvents(ele);\n }\n if (!isNullOrUndefined(maxDate) && +eleDate > +maxDate) {\n addClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n this.isMaxDaysClicked = true;\n EventHandler.clearEvents(ele);\n if (isNullOrUndefined(maxEle) && !ele.classList.contains(OTHERMONTH)) {\n maxEle = ele;\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(maxEle)) {\n if (this.isMobile) {\n if (!this.nextIcon.classList.contains(DISABLED)) {\n addClass([this.nextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n else {\n var calendar_1 = closest(maxEle, '.' + RIGHTCALENDER);\n calendar_1 = isNullOrUndefined(calendar_1) ? this.leftCalendar : calendar_1;\n var isLeftCalendar = calendar_1.classList.contains(LEFTCALENDER);\n if (!isLeftCalendar) {\n if (!this.rightCalNextIcon.classList.contains(DISABLED)) {\n addClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n else {\n if (!this.rightCalNextIcon.classList.contains(DISABLED)) {\n addClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (!this.leftCalNextIcon.classList.contains(DISABLED)) {\n addClass([this.leftCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (!this.rightCalPrevIcon.classList.contains(DISABLED)) {\n addClass([this.rightCalPrevIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n }\n }\n }\n }\n else {\n this.isMaxDaysClicked = false;\n }\n };\n DateRangePicker.prototype.removeTimeValueFromDate = function (value) {\n var dateValue = new Date(value.getFullYear(), value.getMonth(), value.getDate());\n return dateValue;\n };\n DateRangePicker.prototype.removeClassDisabled = function () {\n var tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td' + '.' + DATEDISABLED);\n for (var _i = 0, tdCells_7 = tdCells; _i < tdCells_7.length; _i++) {\n var ele = tdCells_7[_i];\n if (ele.classList.contains(DATEDISABLED)) {\n removeClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n EventHandler.add(ele, 'click', this.selectRange, this);\n if (!this.isMobile) {\n EventHandler.add(ele, 'mouseover', this.hoverSelection, this);\n }\n }\n }\n if (this.isMobile) {\n if (this.nextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.nextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (this.previousIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.previousIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n else {\n if (this.rightCalNextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (this.rightCalPrevIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.rightCalPrevIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (this.leftCalNextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.leftCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n };\n DateRangePicker.prototype.updateHeader = function () {\n var format = { type: 'date', skeleton: 'yMMMd' };\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n var range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if (!isNullOrUndefined(this.disabledDayCnt)) {\n range = range - this.disabledDayCnt;\n this.disabledDayCnt = null;\n }\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = range.toString() + ' ' + this.l10n.getConstant('days');\n }\n else {\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.globalize.formatDate(this.endValue, format);\n }\n else {\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.l10n.getConstant('endLabel');\n }\n if (!isNullOrUndefined(this.startValue)) {\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.globalize.formatDate(this.startValue, format);\n }\n else {\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.l10n.getConstant('startLabel');\n }\n }\n else {\n if (!isNullOrUndefined(this.startValue)) {\n this.startButton.element.textContent = this.globalize.formatDate(this.startValue, format);\n }\n else {\n this.startButton.element.textContent = this.l10n.getConstant('startLabel');\n }\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.endButton.element.textContent = this.globalize.formatDate(this.endValue, format);\n }\n else {\n this.endButton.element.textContent = this.l10n.getConstant('endLabel');\n }\n }\n if ((this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue)) ||\n ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue))\n && +this.startValue > +this.endValue))) {\n if (!this.isMobile) {\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.l10n.getConstant('startLabel');\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.l10n.getConstant('endLabel');\n }\n else {\n this.startButton.element.textContent = this.l10n.getConstant('startLabel');\n this.endButton.element.textContent = this.l10n.getConstant('endLabel');\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n }\n }\n if (this.popupObj.element.querySelector('#custom_range')) {\n this.popupObj.element.querySelector('#custom_range').textContent =\n this.l10n.getConstant('customRange') !== '' ? this.l10n.getConstant('customRange') : 'Custom Range';\n }\n };\n DateRangePicker.prototype.removeSelection = function () {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n this.removeSelectedAttributes();\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [STARTDATE, ENDDATE, SELECTED]);\n }\n if (this.popupObj.element.querySelectorAll('.' + FOCUSDATE).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + FOCUSDATE), FOCUSDATE);\n }\n if (this.popupObj.element.querySelectorAll('.' + RANGEHOVER).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + RANGEHOVER), [RANGEHOVER]);\n }\n }\n };\n DateRangePicker.prototype.addSelectedAttributes = function (ele, date, isStartDate, sameDate) {\n if (ele) {\n var title = this.globalize.formatDate(date, { type: 'date', skeleton: 'full' });\n if (!isNullOrUndefined(sameDate) && sameDate) {\n ele.setAttribute('aria-label', 'The current start and end date is ' + '' + title);\n }\n else {\n ele.setAttribute('aria-label', 'The current ' + (isStartDate ? 'start' : 'end') + ' date is ' + '' + title);\n }\n ele.setAttribute('aria-selected', 'true');\n }\n };\n DateRangePicker.prototype.removeSelectedAttributes = function () {\n if (this.popupObj) {\n var start = this.popupObj.element.querySelectorAll('.' + STARTDATE);\n for (var _i = 0, start_1 = start; _i < start_1.length; _i++) {\n var ele = start_1[_i];\n ele.setAttribute('aria-selected', 'false');\n ele.removeAttribute('aria-label');\n }\n var end = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n for (var _a = 0, end_1 = end; _a < end_1.length; _a++) {\n var ele = end_1[_a];\n ele.setAttribute('aria-selected', 'false');\n ele.removeAttribute('aria-label');\n }\n }\n };\n DateRangePicker.prototype.updateCalendarElement = function (calendar) {\n if (calendar.classList.contains(LEFTCALENDER)) {\n this.calendarElement = this.leftCalendar;\n this.currentDate = this.leftCalCurrentDate;\n this.previousIcon = this.leftCalPrevIcon;\n this.nextIcon = this.leftCalNextIcon;\n }\n else {\n this.calendarElement = this.rightCalendar;\n this.currentDate = this.rightCalCurrentDate;\n this.previousIcon = this.rightCalPrevIcon;\n this.nextIcon = this.rightCalNextIcon;\n }\n this.contentElement = calendar.querySelector('.' + CONTENT);\n this.tableBodyElement = select('.' + CONTENT + ' tbody', calendar);\n this.table = calendar.querySelector('.' + CONTENT).getElementsByTagName('table')[0];\n this.headerTitleElement = calendar.querySelector('.' + HEADER + ' .' + TITLE);\n this.headerElement = calendar.querySelector('.' + HEADER);\n };\n DateRangePicker.prototype.navPrevMonth = function (e) {\n e.preventDefault();\n var ele = closest(e.target, '.' + LEFTCALENDER);\n ele = isNullOrUndefined(ele) ? closest(e.target, '.' + RIGHTCALENDER) : ele;\n this.updateCalendarElement(ele);\n this.navigatePrevious(e);\n if (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.updateMinMaxDays(ele);\n }\n this.updateControl(ele);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.deviceNavigation = function (ele) {\n this.deviceCalendarEvent();\n this.updateRange([this.popupObj.element.querySelector('.' + CALENDAR)]);\n if (this.endButton.element.classList.contains(ACTIVE)) {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n }\n if (this.endButton.element.classList.contains(ACTIVE)) {\n this.selectableDates();\n }\n if (this.currentView() === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.updateControl = function (calendar, customDate) {\n if (customDate === void 0) { customDate = null; }\n if (calendar.classList.contains(RIGHTCALENDER)) {\n this.rightCalCurrentDate = new Date(+(customDate ? customDate : this.currentDate));\n }\n else {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n }\n this.calendarIconEvent();\n if ((((this.depth === 'Month')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-month')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-month'))\n || ((this.depth === 'Year')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-year')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-year'))\n || ((this.depth === 'Decade')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-decade')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-decade')))\n || this.isMobile) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n this.updateRange([calendar]);\n };\n DateRangePicker.prototype.navNextMonth = function (event) {\n event.preventDefault();\n var ele = closest(event.target, '.' + LEFTCALENDER);\n ele = isNullOrUndefined(ele) ? closest(event.target, '.' + RIGHTCALENDER) : ele;\n this.updateCalendarElement(ele);\n this.navigateNext(event);\n if (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.updateMinMaxDays(ele);\n }\n this.updateControl(ele);\n };\n DateRangePicker.prototype.isPopupOpen = function () {\n if (!isNullOrUndefined(this.popupObj) && this.popupObj.element.classList.contains(POPUP)) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.createRangeHeader = function () {\n var labelContainer = this.createElement('div', { className: STARTENDCONTAINER });\n if (!this.isMobile) {\n var startLabel = this.createElement('a', { className: STARTLABEL });\n var endLabel = this.createElement('a', { className: ENDLABEL });\n var changeIcon = this.createElement('span', { className: CHANGEICON });\n attributes(startLabel, { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'Start Date', 'role': 'button' });\n attributes(endLabel, { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'End Date', 'role': 'button' });\n labelContainer.appendChild(startLabel);\n labelContainer.appendChild(changeIcon);\n labelContainer.appendChild(endLabel);\n startLabel.textContent = this.l10n.getConstant('startLabel');\n endLabel.textContent = this.l10n.getConstant('endLabel');\n }\n else {\n var endBtn = this.createElement('button', { className: ENDBUTTON });\n var startBtn = this.createElement('button', { className: STARTBUTTON });\n this.startButton = new Button({ content: this.l10n.getConstant('startLabel') }, startBtn);\n this.endButton = new Button({ content: this.l10n.getConstant('endLabel') }, endBtn);\n labelContainer.appendChild(startBtn);\n labelContainer.appendChild(endBtn);\n }\n return labelContainer;\n };\n DateRangePicker.prototype.disableInput = function () {\n if (this.strictMode) {\n if (!isNullOrUndefined(this.previousStartValue) && !isNullOrUndefined(this.previousEndValue)) {\n this.startValue = this.previousStartValue;\n this.endValue = this.previousEndValue;\n this.setValue();\n this.updateInput();\n }\n }\n else {\n this.updateInput();\n this.clearRange();\n this.setProperties({ startDate: null }, true);\n this.setProperties({ endDate: null }, true);\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n this.errorClass();\n }\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n this.bindEvents();\n };\n DateRangePicker.prototype.validateMinMax = function () {\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)) {\n this.disableInput();\n return;\n }\n if (!isNullOrUndefined(this.minDays) && !isNullOrUndefined(this.maxDays)) {\n if (this.maxDays > 0 && this.minDays > 0 && (this.minDays > this.maxDays)) {\n this.maxDays = null;\n }\n }\n if (!isNullOrUndefined(this.minDays) && this.minDays < 0) {\n this.minDays = null;\n }\n if (!isNullOrUndefined(this.maxDays) && this.maxDays < 0) {\n this.maxDays = null;\n }\n };\n DateRangePicker.prototype.validateRangeStrict = function () {\n if (!isNullOrUndefined(this.startValue)) {\n if (+this.startValue <= +this.min) {\n this.startValue = this.min;\n this.setValue();\n }\n else if (+this.startValue >= +this.min && +this.startValue >= +this.max) {\n this.startValue = this.max;\n }\n }\n if (!isNullOrUndefined(this.endValue)) {\n if (+this.endValue > +this.max) {\n this.endValue = this.max;\n this.setValue();\n }\n else if (+this.endValue < +this.min) {\n this.endValue = this.min;\n this.setValue();\n }\n }\n this.validateMinMaxDays();\n };\n DateRangePicker.prototype.validateRange = function () {\n this.validateMinMaxDays();\n };\n DateRangePicker.prototype.validateMinMaxDays = function () {\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n var range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) && !(range >= this.minDays)) {\n if (this.strictMode) {\n var date = new Date(+this.startValue);\n date.setDate(date.getDate() + (this.minDays - 1));\n if (+date > +this.max) {\n this.endValue = this.max;\n this.setValue();\n }\n else {\n this.endValue = date;\n this.setValue();\n }\n }\n else {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n if ((!isNullOrUndefined(this.maxDays) && this.maxDays > 0) && !(range <= this.maxDays)) {\n if (this.strictMode) {\n this.endValue = new Date(+this.startValue);\n this.endValue.setDate(this.endValue.getDate() + (this.maxDays - 1));\n this.setValue();\n }\n else {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n };\n DateRangePicker.prototype.renderCalendar = function () {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(CALENDAR);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n attributes(this.calendarElement, { 'data-role': 'calendar' });\n _super.prototype.createHeader.call(this);\n _super.prototype.createContent.call(this);\n };\n DateRangePicker.prototype.isSameMonth = function (start, end) {\n if (start.getMonth() === end.getMonth() && start.getFullYear() === end.getFullYear()) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.isSameYear = function (start, end) {\n if (start.getFullYear() === end.getFullYear()) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.isSameDecade = function (start, end) {\n var startYear = start.getFullYear();\n var endYear = end.getFullYear();\n if ((startYear - (startYear % 10)) === (endYear - (endYear % 10))) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.startMonthCurrentDate = function () {\n if (this.isSameMonth(this.min, this.max) || +this.currentDate > +this.max || this.isSameMonth(this.currentDate, this.max)) {\n this.currentDate = new Date(+this.max);\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n }\n else if (this.currentDate < this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n };\n DateRangePicker.prototype.selectNextMonth = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameMonth(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() + 1);\n return;\n }\n if ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setDate(1);\n var month = this.currentDate.getMonth() + 1;\n this.currentDate.setMonth(month);\n }\n };\n DateRangePicker.prototype.selectNextYear = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameYear(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n this.currentDate.setMonth(0);\n var yr = this.currentDate.getFullYear() + 1;\n this.currentDate.setFullYear(yr);\n return;\n }\n if ((!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setMonth(0);\n this.currentDate.setFullYear(this.currentDate.getFullYear() + 1);\n }\n };\n DateRangePicker.prototype.selectNextDecade = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameDecade(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n var decyr = this.currentDate.getFullYear() + 10;\n this.currentDate.setFullYear(decyr);\n return;\n }\n if (((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setFullYear(this.currentDate.getFullYear() + 10);\n }\n };\n DateRangePicker.prototype.selectStartMonth = function () {\n if (!isNullOrUndefined(this.startValue)) {\n if (!isNullOrUndefined(this.max) && this.isSameMonth(this.startValue, this.max)) {\n this.currentDate = new Date(+this.max);\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n }\n else if (!(this.startValue >= this.min && this.startValue <= this.max)\n || this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n else {\n this.currentDate = new Date(+this.startValue);\n }\n }\n else {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.startMonthCurrentDate();\n }\n if ((!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.startMonthCurrentDate();\n };\n DateRangePicker.prototype.createCalendar = function () {\n var calendarContainer = this.createElement('div', { className: CALENDARCONTAINER });\n if (!this.isMobile) {\n this.selectStartMonth();\n this.renderCalendar();\n this.leftCalCurrentDate = new Date(+this.currentDate);\n this.calendarElement.classList.add(LEFTCALENDER);\n this.leftCalPrevIcon = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + PREVICON);\n this.leftCalNextIcon = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + NEXTICON);\n this.leftTitle = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + TITLE);\n remove(this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + ICONCONTAINER));\n this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER).appendChild(this.leftCalNextIcon);\n this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER).appendChild(this.leftCalPrevIcon);\n prepend([this.leftCalPrevIcon], this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER));\n this.leftCalendar = this.calendarElement;\n var leftContainer = this.createElement('div', { className: LEFTCONTAINER });\n var rightContainer = this.createElement('div', { className: RIGHTCONTAINER });\n leftContainer.appendChild(this.leftCalendar);\n calendarContainer.appendChild(leftContainer);\n if (!this.isMobile) {\n EventHandler.add(this.leftTitle, 'click', this.leftNavTitle, this);\n }\n if (this.start === 'Month') {\n this.selectNextMonth();\n }\n if (this.start === 'Year') {\n this.selectNextYear();\n }\n if (this.start === 'Decade') {\n this.selectNextDecade();\n }\n this.renderCalendar();\n this.rightCalCurrentDate = new Date(+this.currentDate);\n addClass([this.calendarElement], RIGHTCALENDER);\n this.rightCalendar = this.calendarElement;\n removeClass([this.leftCalendar && this.leftCalendar.querySelector('.e-content tbody')], 'e-zoomin');\n removeClass([this.rightCalendar && this.rightCalendar.querySelector('.e-content tbody')], 'e-zoomin');\n this.rightCalPrevIcon = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + PREVICON);\n this.rightCalNextIcon = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + NEXTICON);\n this.rightTitle = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + TITLE);\n remove(this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + ICONCONTAINER));\n this.calendarElement.querySelector('table').setAttribute('tabindex', '0');\n this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER).appendChild(this.rightCalNextIcon);\n this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER).appendChild(this.rightCalPrevIcon);\n prepend([this.rightCalPrevIcon], this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER));\n rightContainer.appendChild(this.rightCalendar);\n calendarContainer.appendChild(rightContainer);\n if (!this.isMobile) {\n EventHandler.add(this.rightTitle, 'click', this.rightNavTitle, this);\n }\n }\n else {\n if (!isNullOrUndefined(this.startValue)) {\n this.currentDate = new Date(+this.startValue);\n }\n _super.prototype.validateDate.call(this);\n _super.prototype.minMaxUpdate.call(this);\n _super.prototype.render.call(this);\n var prevIcon = this.calendarElement.querySelector('.' + CALENDAR + ' .' + PREVICON);\n var nextIcon = this.calendarElement.querySelector('.' + CALENDAR + ' .' + NEXTICON);\n remove(this.calendarElement.querySelector('.' + CALENDAR + ' .' + ICONCONTAINER));\n this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER).appendChild(nextIcon);\n this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER).appendChild(prevIcon);\n prepend([prevIcon], this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER));\n this.deviceCalendar = this.calendarElement;\n calendarContainer.appendChild(this.calendarElement);\n this.headerTitleElement = this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER + ' .' + TITLE);\n }\n return calendarContainer;\n };\n DateRangePicker.prototype.leftNavTitle = function (e) {\n if (this.isPopupOpen()) {\n this.calendarElement = this.leftCalendar;\n this.calendarNavigation(e, this.calendarElement);\n }\n };\n DateRangePicker.prototype.calendarNavigation = function (e, element) {\n this.table = element.querySelector('table');\n this.headerTitleElement = element.querySelector('.e-title');\n this.tableBodyElement = element.querySelector('tbody');\n this.tableHeadElement = element.querySelector('thead');\n this.contentElement = element.querySelector('.e-content');\n this.updateCalendarElement(element);\n _super.prototype.navigateTitle.call(this, e);\n this.updateNavIcons();\n };\n DateRangePicker.prototype.rightNavTitle = function (e) {\n if (this.isPopupOpen()) {\n this.calendarElement = this.rightCalendar;\n this.calendarNavigation(e, this.calendarElement);\n }\n };\n DateRangePicker.prototype.clickEventEmitter = function (e) {\n if (!this.isMobile) {\n if (closest(e.target, '.e-calendar.e-left-calendar')) {\n this.calendarElement = this.leftCalendar;\n this.updateCalendarElement(this.leftCalendar);\n }\n else {\n this.calendarElement = this.rightCalendar;\n this.updateCalendarElement(this.rightCalendar);\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n * @private\n * @hidden\n */\n DateRangePicker.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n DateRangePicker.prototype.getCalendarView = function (view) {\n if (view === 'Year') {\n return 'Year';\n }\n else if (view === 'Decade') {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n DateRangePicker.prototype.navigatedEvent = function (e) {\n this.trigger('navigated', this.navigatedArgs);\n if (!isNullOrUndefined(this.popupObj)) {\n var element = void 0;\n var view = this.getCalendarView(this.currentView());\n if (this.isMobile) {\n if (view === this.depth) {\n this.bindCalendarCellEvents();\n this.deviceNavigation();\n this.removeFocusedDate();\n this.checkMinMaxDays();\n }\n else {\n this.selectableDates();\n }\n }\n else {\n if (!this.isMobile && view === this.depth) {\n element = this.calendarElement.classList.contains('e-left-calendar') ? this.leftCalendar : this.rightCalendar;\n if (element === this.leftCalendar && ((e && !e.currentTarget.children[0].classList.contains('e-icons'))\n || (!isNullOrUndefined(this.controlDown)))) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n this.effect = '';\n this.currentDate = this.leftCalCurrentDate;\n this.updateCalendarElement(this.leftCalendar);\n this.updateControl(this.leftCalendar);\n this.updateCalendarElement(this.rightCalendar);\n _super.prototype.navigateTo.call(this, view, this.rightCalCurrentDate);\n var customDate = this.rightCalCurrentDate ? this.rightCalCurrentDate : this.currentDate;\n this.updateControl(this.rightCalendar, customDate);\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.controlDown = null;\n }\n else if (e && !e.currentTarget.children[0].classList.contains('e-icons')\n || (!isNullOrUndefined(this.controlDown))) {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n this.effect = '';\n this.currentDate = this.rightCalCurrentDate;\n this.updateCalendarElement(this.rightCalendar);\n this.updateControl(this.rightCalendar);\n this.updateCalendarElement(this.leftCalendar);\n if (this.startValue && isNullOrUndefined(this.endValue)) {\n if (view === 'Month' && this.startValue.getMonth() < this.rightCalCurrentDate.getMonth() &&\n this.startValue.getFullYear() <= this.rightCalCurrentDate.getFullYear()) {\n _super.prototype.navigateTo.call(this, view, new Date(+this.startValue));\n }\n else if (view === 'Year' && this.startValue.getFullYear() < this.rightCalCurrentDate.getFullYear()) {\n _super.prototype.navigateTo.call(this, view, new Date(+this.startValue));\n }\n else {\n _super.prototype.navigateTo.call(this, view, this.leftCalCurrentDate);\n }\n }\n else {\n _super.prototype.navigateTo.call(this, view, this.leftCalCurrentDate);\n }\n this.updateControl(this.leftCalendar);\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.controlDown = null;\n }\n this.checkMinMaxDays();\n }\n else {\n this.updateNavIcons();\n this.calendarIconEvent();\n }\n }\n }\n };\n DateRangePicker.prototype.createControl = function () {\n var controlContainer = this.createElement('div', { className: RANGECONTAINER });\n var headerContainer = this.createElement('div', { className: RANGEHEADER });\n if (this.isMobile && this.fullScreenMode) {\n var modelHeaderIconWrapper = this.createElement(\"div\", { className: \"e-model-header-wrapper\" });\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelRangeCloseHandler, this);\n var modelApplyButton = this.createElement(\"span\", { className: \"e-apply\" });\n EventHandler.add(modelApplyButton, 'mousedown touchstart', this.applyFunction, this);\n modelHeaderIconWrapper.appendChild(modelCloseIcon);\n modelHeaderIconWrapper.appendChild(modelApplyButton);\n headerContainer.appendChild(modelHeaderIconWrapper);\n }\n var labelContainer = this.createRangeHeader();\n headerContainer.appendChild(labelContainer);\n var daySpan = this.createElement('div', { className: DAYSPAN });\n attributes(daySpan, { 'aria-label': 'Selected Days' });\n daySpan.textContent = this.l10n.getConstant('selectedDays');\n headerContainer.appendChild(daySpan);\n var separator = this.createElement('div', { className: SEPARATOR });\n var calendarContainer = this.createCalendar();\n controlContainer.appendChild(headerContainer);\n controlContainer.appendChild(separator);\n controlContainer.appendChild(calendarContainer);\n var footerSection = this.createElement('div', { className: FOOTER });\n var cancelBtn = this.createElement('button', { className: CANCEL + ' ' + FLAT + ' ' + CSS });\n var applyBtn = this.createElement('button');\n addClass([applyBtn], [APPLY, FLAT, PRIMARY, CSS]);\n footerSection.appendChild(applyBtn);\n footerSection.appendChild(cancelBtn);\n var enable = !isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue);\n this.cancelButton = new Button({ content: this.l10n.getConstant('cancelText') }, cancelBtn);\n this.applyButton = new Button({ content: this.l10n.getConstant('applyText'), disabled: !enable }, applyBtn);\n EventHandler.add(applyBtn, 'click', this.applyFunction, this);\n EventHandler.add(cancelBtn, 'click', this.cancelFunction, this);\n this.popupWrapper.appendChild(controlContainer);\n if (!this.isMobile) {\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.createPresets();\n this.listRippleEffect();\n addClass([controlContainer], RANGEBORDER);\n addClass([this.popupWrapper], 'e-preset-wrapper');\n var presets = this.popupWrapper.querySelector('.' + PRESETS);\n presets.style.height = this.popupWrapper.querySelector('.' + RANGECONTAINER).getBoundingClientRect().height + 'px';\n }\n }\n this.popupWrapper.appendChild(footerSection);\n if (this.isMobile) {\n this.deviceHeaderUpdate();\n }\n this.renderPopup();\n };\n DateRangePicker.prototype.modelRangeCloseHandler = function (e) {\n this.hide();\n };\n DateRangePicker.prototype.cancelFunction = function (eve) {\n if (document.activeElement !== this.inputElement) {\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n eve.preventDefault();\n if (this.isKeyPopup) {\n this.inputElement.focus();\n this.isKeyPopup = false;\n }\n this.startValue = null;\n this.endValue = null;\n this.removeSelection();\n this.hide(eve);\n };\n DateRangePicker.prototype.deviceHeaderUpdate = function () {\n if (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.endButton.element.setAttribute('disabled', '');\n this.startButton.element.classList.add(ACTIVE);\n }\n else if (!isNullOrUndefined(this.startValue)) {\n this.startButton.element.classList.add(ACTIVE);\n }\n };\n DateRangePicker.prototype.applyFunction = function (eve) {\n var isValueChanged = false;\n if (eve.type !== 'touchstart') {\n eve.preventDefault();\n }\n if (this.closeEventArgs && this.closeEventArgs.cancel) {\n this.startValue = this.popupWrapper.querySelector('.e-start-date') &&\n this.getIdValue(null, this.popupWrapper.querySelector('.e-start-date'));\n this.endValue = this.popupWrapper.querySelector('.e-end-date') &&\n this.getIdValue(null, this.popupWrapper.querySelector('.e-end-date'));\n this.setValue();\n }\n if (document.activeElement !== this.inputElement) {\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n if (eve.type !== 'touchstart' &&\n this.closeEventArgs && !this.closeEventArgs.cancel) {\n eve.preventDefault();\n }\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.previousStartValue = new Date(+this.startValue);\n this.previousEndValue = new Date(+this.endValue);\n this.previousEleValue = this.inputElement.value;\n Input.setValue(this.rangeArgs(eve).text, this.inputElement, this.floatLabelType, this.showClearButton);\n if (+this.initStartDate !== +this.startValue || +this.initEndDate !== +this.endValue) {\n isValueChanged = true;\n }\n this.changeTrigger(eve);\n this.hide(eve ? eve : null);\n this.errorClass();\n isValueChanged = true;\n }\n else {\n this.hide(eve ? eve : null);\n }\n if (!(closest(eve.target, '.' + INPUTCONTAINER))\n && (!isValueChanged)) {\n this.focusOut();\n }\n if (!this.isMobile) {\n this.isKeyPopup = false;\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.children[1].focus();\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.popupKeyboardModule = new KeyboardEvents(this.inputWrapper.container.children[1], {\n eventName: 'keydown',\n keyConfigs: this.keyInputConfigs,\n keyAction: this.popupKeyActionHandle.bind(this)\n });\n }\n }\n };\n DateRangePicker.prototype.onMouseClick = function (event, item) {\n if (event.type === 'touchstart') {\n return;\n }\n var target = item || event.target;\n var li = closest(target, '.' + LISTCLASS);\n var isClick = li && li.classList.contains(ACTIVE);\n if (li && li.classList.contains(LISTCLASS)) {\n this.setListSelection(li, event);\n }\n this.preventFocus = true;\n this.inputElement.focus();\n if (!this.isMobile) {\n this.preventFocus = true;\n if (li && li.classList.contains(LISTCLASS) && li.getAttribute('id') === 'custom_range') {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (!isClick && event.type === 'keydown') {\n this.inputElement.focus();\n }\n }\n }\n };\n DateRangePicker.prototype.onMouseOver = function (event) {\n var li = closest(event.target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS) && !li.classList.contains(HOVER)) {\n addClass([li], HOVER);\n }\n };\n DateRangePicker.prototype.onMouseLeave = function (event) {\n var item = closest(event.target, '.' + HOVER);\n if (!isNullOrUndefined(item)) {\n removeClass([item], HOVER);\n }\n };\n DateRangePicker.prototype.setListSelection = function (li, event) {\n if (li && (!li.classList.contains(ACTIVE) || (this.isMobile && li.classList.contains(ACTIVE)))) {\n if (this.isMobile && li.classList.contains(ACTIVE)) {\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n var values_1 = this.presetsItem[this.activeIndex];\n if (values_1.id === 'custom_range') {\n this.renderCustomPopup();\n return;\n }\n return;\n }\n this.removeListSelection();\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n addClass([li], ACTIVE);\n li.setAttribute('aria-selected', 'true');\n var values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.renderCustomPopup();\n }\n else {\n this.applyPresetRange(values, event);\n }\n }\n };\n DateRangePicker.prototype.removeListSelection = function () {\n var item = this.presetElement.querySelector('.' + ACTIVE);\n if (!isNullOrUndefined(item)) {\n removeClass([item], ACTIVE);\n item.removeAttribute('aria-selected');\n }\n };\n DateRangePicker.prototype.setValue = function () {\n this.modelValue = [this.startValue, this.endValue];\n };\n DateRangePicker.prototype.applyPresetRange = function (values, e) {\n this.hide(null);\n this.presetsItem[this.presetsItem.length - 1].start = null;\n this.presetsItem[this.presetsItem.length - 1].end = null;\n this.startValue = values.start;\n this.endValue = values.end;\n this.setValue();\n this.refreshControl();\n this.trigger('select', this.rangeArgs(e));\n this.changeTrigger(e);\n this.previousEleValue = this.inputElement.value;\n this.isCustomRange = false;\n this.leftCalendar = this.rightCalendar = null;\n if (this.isKeyPopup) {\n this.isRangeIconClicked = false;\n this.inputElement.focus();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.showPopup = function (element, event) {\n this.presetHeight();\n if (this.zIndex === 1000) {\n this.popupObj.show(null, this.element);\n }\n else {\n this.popupObj.show(null, null);\n }\n if (this.isMobile) {\n this.popupObj.refreshPosition();\n }\n };\n DateRangePicker.prototype.renderCustomPopup = function () {\n this.isCustomWindow = true;\n this.popupObj.hide();\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: ROOT + ' ' + POPUP });\n this.renderControl();\n this.openEventArgs.appendTo.appendChild(this.popupWrapper);\n this.showPopup();\n this.isCustomRange = true;\n if (!this.isMobile) {\n this.calendarFocus();\n }\n };\n DateRangePicker.prototype.listRippleEffect = function () {\n for (var _i = 0, _a = this.liCollections; _i < _a.length; _i++) {\n var li = _a[_i];\n rippleEffect(li);\n }\n };\n DateRangePicker.prototype.createPresets = function () {\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.presetElement = this.createElement('div', { className: PRESETS, attrs: { 'tabindex': '0' } });\n var listTag = ListBase.createList(this.createElement, this.presetsItem, null, true);\n attributes(listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n this.presetElement.appendChild(listTag);\n this.popupWrapper.appendChild(this.presetElement);\n var customElement = this.presetElement.querySelector('#custom_range');\n if (!isNullOrUndefined(customElement)) {\n customElement.textContent = this.l10n.getConstant('customRange') !== '' ? this.l10n.getConstant('customRange')\n : 'Custom Range';\n }\n this.liCollections = this.presetElement.querySelectorAll('.' + LISTCLASS);\n this.wireListEvents();\n if (this.isMobile) {\n if (this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-range-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 Preset\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelRangeCloseHandler, this);\n var presetContent = this.presetElement;\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(presetContent);\n this.popupWrapper.insertBefore(modelWrapper, this.popupWrapper.firstElementChild);\n this.presetElement.style.width = '100%';\n }\n else {\n this.presetElement.style.width = this.inputWrapper.container.getBoundingClientRect().width + 'px';\n }\n }\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex > -1) {\n addClass([this.liCollections[this.activeIndex]], ACTIVE);\n }\n }\n };\n DateRangePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.presetElement, 'click', this.onMouseClick, this);\n if (!this.isMobile) {\n EventHandler.add(this.presetElement, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.presetElement, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateRangePicker.prototype.unWireListEvents = function () {\n if (!isNullOrUndefined(this.presetElement)) {\n EventHandler.remove(this.presetElement, 'click touchstart', this.onMouseClick);\n if (!this.isMobile) {\n EventHandler.remove(this.presetElement, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.presetElement, 'mouseout', this.onMouseLeave);\n }\n }\n };\n DateRangePicker.prototype.renderPopup = function () {\n var _this = this;\n this.popupWrapper.classList.add('e-control');\n var popupWidth = this.popupWrapper.getBoundingClientRect().width;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass.trim() !== '') {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (this.isMobile && this.isCustomWindow) {\n this.modal = this.createElement('div');\n document.body.appendChild(this.modal);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n relateTo: this.isMobile && this.isCustomWindow ? document.body :\n (!isNullOrUndefined(this.targetElement) ? this.targetElement : this.inputWrapper.container),\n position: (this.isMobile ?\n (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && !this.isCustomWindow ?\n { X: 'left', Y: 'bottom' } : { X: 'center', Y: 'center' }) :\n this.enableRtl ? { X: 'left', Y: 'bottom' } : { X: 'right', Y: 'bottom' }),\n offsetX: this.isMobile || this.enableRtl ? 0 : -popupWidth,\n offsetY: OFFSETVALUE,\n collision: this.isMobile ?\n (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && !this.isCustomWindow ?\n { X: 'fit' } : { X: 'fit', Y: 'fit' }) : { X: 'fit', Y: 'flip' },\n targetType: this.isMobile && this.isCustomWindow ? 'container' : 'relative',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n open: function () {\n if (_this.isMobile && _this.fullScreenMode) {\n _this.iconRangeRight = _this.calendarElement && window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).cssFloat;\n if (_this.iconRangeRight) {\n _this.touchRangeModule = new Touch(_this.calendarElement.querySelector(\".e-content.e-month\"), {\n swipe: _this.dateRangeSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector(\".e-content.e-month\"), \"touchstart\", _this.touchStartRangeHandler, _this);\n }\n }\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.inputElement.id + '_options' });\n if (_this.value) {\n attributes(_this.inputElement, { 'aria-activedescendant': _this.inputElement.id });\n }\n else {\n _this.inputElement.removeAttribute('aria-activedescendant');\n }\n addClass([_this.inputWrapper.buttons[0]], ACTIVE);\n if (!_this.isMobile) {\n if (_this.cancelButton) {\n _this.btnKeyboardModule = new KeyboardEvents(_this.cancelButton.element, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { tab: 'tab', altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n _this.btnKeyboardModule = new KeyboardEvents(_this.applyButton.element, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n }\n if (!isNullOrUndefined(_this.leftCalendar)) {\n if (!_this.isRangeIconClicked) {\n _this.calendarFocus();\n }\n }\n if (!isNullOrUndefined(_this.presetElement)) {\n _this.keyInputConfigs = extend(_this.keyInputConfigs, _this.keyConfigs);\n _this.presetKeyboardModule = new KeyboardEvents(_this.presetElement, {\n eventName: 'keydown',\n keyAction: _this.presetKeyActionHandler.bind(_this),\n keyConfigs: _this.keyInputConfigs\n });\n _this.presetKeyboardModule = new KeyboardEvents(_this.presetElement, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n if (isNullOrUndefined(_this.leftCalendar)) {\n _this.preventBlur = true;\n _this.presetElement.focus();\n }\n else {\n _this.presetElement.setAttribute('tabindex', '-1');\n }\n }\n _this.popupKeyBoardHandler();\n }\n if (_this.isMobile && !Browser.isDevice) {\n EventHandler.add(document, 'keydown', _this.popupCloseHandler, _this);\n }\n },\n close: function () {\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n removeClass([_this.inputWrapper.buttons[0]], ACTIVE);\n if (_this.isRangeIconClicked) {\n _this.inputWrapper.container.children[1].focus();\n }\n if (!isUndefined(_this.presets[0].start && _this.presets[0].end && _this.presets[0].label)) {\n _this.unWireListEvents();\n }\n if (!isNullOrUndefined(_this.popupObj)) {\n if (!isNullOrUndefined(_this.popupObj.element.parentElement)) {\n detach(_this.popupObj.element);\n }\n _this.popupObj.destroy();\n _this.popupObj = null;\n }\n if (_this.isMobile && !Browser.isDevice) {\n EventHandler.remove(document, 'keydown', _this.popupCloseHandler);\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (this.isMobile) {\n this.popupObj.element.classList.add(DEVICE);\n if (!this.isMobile) {\n this.popupObj.element.classList.add('e-bigger');\n }\n }\n if (this.isMobile && this.isCustomWindow) {\n addClass([this.modal], [DEVICE, ROOT, 'e-range-modal']);\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n }\n EventHandler.add(document, 'mousedown touchstart', this.documentHandler, this);\n };\n DateRangePicker.prototype.dateRangeSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRangeRight == 'left') {\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.touchRangeStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchRangeStart = false;\n }\n };\n DateRangePicker.prototype.touchStartRangeHandler = function (e) {\n this.touchRangeStart = true;\n };\n DateRangePicker.prototype.popupCloseHandler = function (e) {\n switch (e.keyCode) {\n case 27:\n this.hide(e);\n break;\n }\n };\n DateRangePicker.prototype.calendarFocus = function () {\n var startDate = this.popupObj && this.popupObj.element.querySelector('.' + STARTDATE);\n if (startDate) {\n var ele = closest(startDate, '.' + RIGHTCALENDER);\n ele = isNullOrUndefined(ele) ? this.leftCalendar : ele;\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.focus();\n }\n else {\n this.preventBlur = true;\n ele.children[1].firstElementChild.focus();\n }\n addClass([startDate], FOCUSDATE);\n }\n else {\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.focus();\n }\n else {\n this.preventBlur = true;\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n };\n DateRangePicker.prototype.presetHeight = function () {\n var presets = this.popupObj && this.popupObj.element.querySelector('.' + PRESETS);\n var rangeContainer = this.popupObj && this.popupObj.element.querySelector('.' + RANGECONTAINER);\n if (!isNullOrUndefined(presets) && !isNullOrUndefined(rangeContainer)) {\n presets.style.height = rangeContainer.getBoundingClientRect().height + 'px';\n }\n };\n DateRangePicker.prototype.presetKeyActionHandler = function (e) {\n switch (e.action) {\n case 'moveDown':\n this.listMoveDown(e);\n this.setScrollPosition();\n e.preventDefault();\n break;\n case 'moveUp':\n this.listMoveUp(e);\n this.setScrollPosition();\n e.preventDefault();\n break;\n case 'enter':\n {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(this.leftCalendar) && !isNullOrUndefined(actItem)) {\n if (isNullOrUndefined(hvrItem) || (!isNullOrUndefined(actItem) && actItem === hvrItem)) {\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(actItem);\n var values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.calendarFocus();\n actItem.classList.remove(HOVER);\n e.preventDefault();\n return;\n }\n }\n }\n if (!isNullOrUndefined(hvrItem) || !isNullOrUndefined(actItem)) {\n this.onMouseClick(e, hvrItem || actItem);\n }\n e.preventDefault();\n }\n break;\n case 'tab':\n if (this.leftCalendar) {\n var item = this.getHoverLI();\n if (!isNullOrUndefined(item)) {\n item.classList.remove(HOVER);\n }\n }\n else {\n this.hide(e);\n e.preventDefault();\n }\n break;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.listMoveDown = function (e) {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(hvrItem)) {\n var li = hvrItem.nextElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n removeClass([hvrItem], HOVER);\n addClass([li], HOVER);\n }\n }\n else if (!isNullOrUndefined(actItem)) {\n var li = actItem.nextElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n addClass([li], HOVER);\n }\n }\n else {\n addClass([this.liCollections[0]], HOVER);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.listMoveUp = function (e) {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(hvrItem)) {\n var li = hvrItem.previousElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n removeClass([hvrItem], HOVER);\n addClass([li], HOVER);\n }\n }\n else if (!isNullOrUndefined(actItem)) {\n var li = actItem.previousElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n addClass([li], HOVER);\n }\n }\n };\n DateRangePicker.prototype.getHoverLI = function () {\n var item = this.presetElement.querySelector('.' + HOVER);\n return item;\n };\n DateRangePicker.prototype.getActiveLI = function () {\n var item = this.presetElement.querySelector('.' + ACTIVE);\n return item;\n };\n DateRangePicker.prototype.popupKeyBoardHandler = function () {\n this.popupKeyboardModule = new KeyboardEvents(this.popupWrapper, {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: { escape: 'escape' }\n });\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.popupKeyboardModule = new KeyboardEvents(this.inputWrapper.container.children[1], {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n };\n DateRangePicker.prototype.setScrollPosition = function () {\n var listHeight = this.presetElement.getBoundingClientRect().height;\n var hover = this.presetElement.querySelector('.' + HOVER);\n var active = this.presetElement.querySelector('.' + ACTIVE);\n var element = !isNullOrUndefined(hover) ? hover : active;\n if (!isNullOrUndefined(element)) {\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.presetElement.scrollTop = nextEle ? (height - (listHeight / 2 + liHeight / 2)) : height;\n }\n else {\n this.presetElement.scrollTop = 0;\n }\n }\n };\n DateRangePicker.prototype.popupKeyActionHandle = function (e) {\n var presetElement = closest(e.target, '.' + PRESETS);\n switch (e.action) {\n case 'escape':\n if (this.isPopupOpen()) {\n if (this.isKeyPopup) {\n this.inputElement.focus();\n this.isKeyPopup = false;\n }\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[1].blur();\n }\n break;\n case 'enter':\n if (!this.isPopupOpen()) {\n this.show(null, e);\n }\n else {\n this.inputWrapper.container.children[1].focus();\n }\n break;\n case 'tab':\n this.hide(e);\n break;\n case 'altRightArrow':\n if (!isNullOrUndefined(presetElement)) {\n this.cancelButton.element.focus();\n }\n else {\n if (document.activeElement === this.cancelButton.element && this.applyButton.element.disabled !== true) {\n this.applyButton.element.focus();\n }\n else {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n e.preventDefault();\n break;\n case 'altLeftArrow':\n if (!isNullOrUndefined(presetElement)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (document.activeElement === this.applyButton.element && this.applyButton.element.disabled !== true) {\n this.cancelButton.element.focus();\n }\n else {\n if (!isNullOrUndefined(this.presetElement) && (document.activeElement === this.cancelButton.element)) {\n this.presetElement.focus();\n }\n else {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n }\n }\n e.preventDefault();\n break;\n }\n };\n DateRangePicker.prototype.documentHandler = function (e) {\n if (isNullOrUndefined(this.popupObj)) {\n return;\n }\n var target = e.target;\n if (!this.inputWrapper.container.contains(target) ||\n (!isNullOrUndefined(this.popupObj) && !closest(target, '[id=\"' + this.popupWrapper.id + '\"]') && e.type !== 'mousedown')) {\n if (e.type !== 'touchstart' && ((e.type === 'mousedown') ||\n this.closeEventArgs && !this.closeEventArgs.cancel)) {\n e.preventDefault();\n }\n }\n if ((isNullOrUndefined(this.targetElement) ||\n (!isNullOrUndefined(this.targetElement) && !(target === this.targetElement))) &&\n !(closest(target, '[id=\"' + this.popupWrapper.id + '\"]'))\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && !(closest(target, '.e-daterangepicker.e-popup') && (!target.classList.contains('e-day')))) {\n this.preventBlur = false;\n if (this.isPopupOpen() && document.body.contains(this.popupObj.element)) {\n this.applyFunction(e);\n if (!this.isMobile) {\n this.isRangeIconClicked = false;\n }\n }\n }\n };\n DateRangePicker.prototype.createInput = function () {\n if (this.fullScreenMode && this.isMobile) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n floatLabelType: this.floatLabelType,\n element: this.inputElement,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [DATERANGEICON]\n }, this.createElement);\n attributes(this.inputElement, {\n 'tabindex': '0', 'aria-expanded': 'false', 'role': 'combobox',\n 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n });\n Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);\n if (!isNullOrUndefined(this.placeholder) && this.placeholder.trim() !== '') {\n Input.addAttributes({ 'aria-placeholder': this.placeholder }, this.inputElement);\n }\n this.setEleWidth(this.width);\n addClass([this.inputWrapper.container], DATERANGEWRAPPER);\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.inputElement.type === 'hidden') {\n this.inputWrapper.container.style.display = 'none';\n }\n this.refreshControl();\n this.previousEleValue = this.inputElement.value;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.startCopy = this.startDate;\n this.endCopy = this.endDate;\n };\n DateRangePicker.prototype.setEleWidth = function (width) {\n if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (this.width);\n }\n else if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n DateRangePicker.prototype.adjustLongHeaderWidth = function () {\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.popupWrapper], DAYHEADERLONG);\n }\n };\n DateRangePicker.prototype.refreshControl = function () {\n this.validateMinMax();\n if (this.strictMode) {\n this.validateRangeStrict();\n }\n var isDisabled = this.disabledDates();\n if (this.strictMode && (isDisabled)) {\n this.startValue = this.previousStartValue;\n this.setProperties({ startDate: this.startValue }, true);\n this.endValue = this.previousEndValue;\n this.setProperties({ endDate: this.endValue }, true);\n this.setValue();\n }\n this.updateInput();\n if (!this.strictMode) {\n this.validateRange();\n }\n if (!this.strictMode && (isDisabled)) {\n this.clearRange();\n }\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) &&\n !isDisabled && !isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n this.errorClass();\n this.previousStartValue = isNullOrUndefined(this.startValue) || isNaN(+this.startValue) ? null : new Date(+this.startValue);\n this.previousEndValue = isNullOrUndefined(this.endValue) || isNaN(+this.endValue) ? null : new Date(+this.endValue);\n };\n DateRangePicker.prototype.updateInput = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n var formatOption = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n var startDate = this.globalize.formatDate(this.startValue, formatOption);\n var endDate = this.globalize.formatDate(this.endValue, formatOption);\n Input.setValue(startDate + ' ' + this.separator + ' ' + endDate, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousStartValue = new Date(+this.startValue);\n this.previousEndValue = new Date(+this.endValue);\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n Input.setValue(this.invalidValueString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n DateRangePicker.prototype.checkInvalidRange = function (value) {\n if (!isNullOrUndefined(value)) {\n var invalid = false;\n var startinvalue = void 0;\n var endinvalue = void 0;\n var startString = null;\n var endString = null;\n var valueString = null;\n var startObject = false;\n var endObject = false;\n var invalidobject = false;\n if (typeof (value) === 'string') {\n var range = value.split(' ' + this.separator + ' ');\n if (range.length === 2) {\n startString = range[0];\n endString = range[1];\n }\n else {\n invalid = true;\n valueString = value;\n }\n }\n else {\n if (value.length > 0) {\n startinvalue = value[0];\n endinvalue = value[1];\n }\n else {\n startinvalue = value.start;\n endinvalue = value.end;\n }\n if (!(startinvalue instanceof Date) && typeof (startinvalue) !== 'object') {\n startString = this.getstringvalue(startinvalue);\n }\n else if (startinvalue instanceof Date) {\n startObject = true;\n }\n else if (!isNullOrUndefined(startinvalue)) {\n invalidobject = true;\n }\n if (!(endinvalue instanceof Date) && typeof (endinvalue) !== 'object') {\n endString = this.getstringvalue(endinvalue);\n }\n else if (endinvalue instanceof Date) {\n endObject = true;\n }\n else if (!isNullOrUndefined(endinvalue)) {\n invalidobject = true;\n }\n }\n if ((isNullOrUndefined(startString) && !startObject && !isNullOrUndefined(endString)) ||\n (!isNullOrUndefined(startString) && !endObject && isNullOrUndefined(endString))) {\n invalid = true;\n }\n if (invalidobject) {\n startString = endString = valueString = null;\n invalid = true;\n }\n if (startString) {\n invalid = invalid || this.checkInvalidValue(startString);\n }\n if (endString) {\n invalid = invalid || this.checkInvalidValue(endString);\n }\n if (invalid) {\n if (startObject && !invalidobject) {\n startString = startinvalue.toLocaleDateString();\n }\n if (endObject && !invalidobject) {\n endString = endinvalue.toLocaleDateString();\n }\n if (!isNullOrUndefined(startString) && !isNullOrUndefined(endString)) {\n valueString = startString + ' ' + this.separator + ' ' + endString;\n }\n else if (!isNullOrUndefined(startString)) {\n valueString = startString;\n }\n else if (!isNullOrUndefined(endString)) {\n valueString = endString;\n }\n this.invalidValueString = valueString;\n this.setProperties({ value: null }, true);\n this.setProperties({ startValue: null }, true);\n this.setProperties({ endValue: null }, true);\n this.startDate = null;\n this.endDate = null;\n }\n }\n };\n DateRangePicker.prototype.getstringvalue = function (value) {\n var stringValue = null;\n if (!isNullOrUndefined(value) && (typeof value === 'number')) {\n stringValue = (value).toString();\n }\n else if (!isNullOrUndefined(value) && (typeof value === 'string')) {\n stringValue = '' + value;\n }\n return stringValue;\n };\n DateRangePicker.prototype.checkInvalidValue = function (value) {\n var valueString = value;\n var invalid = false;\n var formatOpt = null;\n formatOpt = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n if (typeof valueString !== 'string') {\n invalid = true;\n }\n else {\n var globalize = new Internationalization(this.locale);\n if (!this.checkDateValue(globalize.parseDate(valueString, formatOpt))) {\n var extISOStr = null;\n var basISOString = null;\n // eslint-disable-next-line\n extISOStr = /^\\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 basISOString = /^\\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 ((!extISOStr.test(valueString) && !basISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n }\n }\n return invalid;\n };\n DateRangePicker.prototype.isDateDisabled = function (date) {\n if (isNullOrUndefined(date)) {\n return false;\n }\n var value = new Date(+date);\n if (+value < +this.min || +value > +this.max) {\n return true;\n }\n this.virtualRenderCellArgs = {\n date: value,\n isDisabled: false\n };\n var args = this.virtualRenderCellArgs;\n this.virtualRenderCellEvent(args);\n if (args.isDisabled) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.disabledDateRender = function () {\n this.disabledDays = [];\n this.disabledDayCnt = null;\n var localDate = new Date(+this.startValue);\n var count = 0;\n while (+localDate <= +this.endValue && +this.endValue <= +this.max) {\n this.virtualRenderCellArgs = {\n date: localDate,\n isDisabled: false\n };\n var args = this.virtualRenderCellArgs;\n this.virtualRenderCellEvent(args);\n if (args.isDisabled) {\n this.disabledDays.push(new Date(+args.date));\n if (+localDate > +this.startValue && +localDate < +this.endValue) {\n count++;\n }\n }\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n this.disabledDayCnt = count;\n };\n DateRangePicker.prototype.virtualRenderCellEvent = function (args) {\n extend(this.virtualRenderCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n DateRangePicker.prototype.disabledDates = function () {\n var isStartDisabled = false;\n var isEndDisabled = false;\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n isStartDisabled = this.isDateDisabled(this.startValue);\n isEndDisabled = this.isDateDisabled(this.endValue);\n if (!this.isPopupOpen()) {\n this.currentDate = null;\n }\n this.setValue();\n }\n return (isStartDisabled || isEndDisabled);\n };\n DateRangePicker.prototype.setModelValue = function () {\n if (!this.value && this.startDate === null && this.endDate === null) {\n this.setProperties({ value: null }, true);\n }\n else if (this.value === null || this.value.start === null) {\n if (this.value === null) {\n this.setProperties({ value: [this.startDate, this.endDate] }, true);\n }\n else if (this.value.start === null) {\n this.setProperties({ value: { start: this.startDate, end: this.endDate } }, true);\n }\n }\n else {\n if ((this.value && this.value.length > 0) ||\n this.valueType && this.valueType.length > 0) {\n if (+this.startDate !== +this.value[0] || +this.endDate !== +this.value[1]) {\n this.setProperties({ value: [this.startDate, this.endDate] }, true);\n }\n if (this.value && this.value[0] == null && this.value[1] == null) {\n this.setProperties({ value: null }, true);\n }\n }\n else {\n if ((this.value && this.value.start)) {\n this.setProperties({ value: { start: this.startDate, end: this.endDate } }, true);\n }\n }\n }\n this.createHiddenInput();\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 DateRangePicker.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n this.firstHiddenChild.dispatchEvent(evt);\n };\n DateRangePicker.prototype.changeTrigger = function (e) {\n if (+this.initStartDate !== +this.startValue || +this.initEndDate !== +this.endValue) {\n this.setProperties({ endDate: this.checkDateValue(this.endValue) }, true);\n this.setProperties({ startDate: this.checkDateValue(this.startValue) }, true);\n this.setModelValue();\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.rangeArgs(e));\n }\n }\n this.previousEleValue = this.inputElement.value;\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\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 * @returns {void}\n * @hidden\n */\n DateRangePicker.prototype.navigateTo = function (view, date) {\n if (this.isPopupOpen()) {\n if (view.toLowerCase() === 'month') {\n view = 'Month';\n }\n else if (view.toLowerCase() === 'year') {\n view = 'Year';\n }\n else if (view.toLowerCase() === 'decade') {\n view = 'Decade';\n }\n else {\n return;\n }\n if (this.getViewNumber(view) < this.getViewNumber(this.depth)) {\n view = this.depth;\n }\n if (this.isMobile) {\n _super.prototype.navigateTo.call(this, view, date);\n }\n else {\n if (date < this.min) {\n date = new Date(+this.min);\n }\n else if (date >= this.max) {\n date = new Date(+this.max);\n }\n if (view === 'Month' && this.isSameMonth(date, this.max)) {\n date = new Date(this.max.getFullYear(), this.max.getMonth() - 1, this.min.getDate());\n }\n else if (view === 'Year' && this.isSameYear(date, this.max)) {\n date = new Date((this.max.getFullYear() - 1), this.max.getMonth(), this.max.getDate());\n }\n else if (view === 'Decade' && this.isSameDecade(date, this.max)) {\n date = new Date((this.max.getFullYear() - 10), this.max.getMonth(), this.max.getDate());\n }\n this.leftCalCurrentDate = date;\n this.navigate(this.leftCalendar, this.leftCalCurrentDate, view);\n if (view === 'Month') {\n date = new Date(this.currentDate.setMonth(this.currentDate.getMonth() + 1));\n }\n else if (view === 'Year') {\n date = new Date(this.currentDate.setFullYear(this.currentDate.getFullYear() + 1));\n }\n else {\n date = new Date(this.currentDate.setFullYear(this.currentDate.getFullYear() + 10));\n }\n this.rightCalCurrentDate = date;\n this.navigate(this.rightCalendar, this.rightCalCurrentDate, view);\n this.leftKeyboardModule = this.rightKeyboardModule = null;\n this.updateNavIcons();\n }\n if (this.currentView() === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n }\n };\n DateRangePicker.prototype.navigate = function (calendar, date, view) {\n this.calendarElement = calendar;\n this.table = calendar.querySelector('table');\n this.tableBodyElement = calendar.querySelector('tbody');\n this.headerTitleElement = calendar.querySelector('.e-title');\n this.tableHeadElement = calendar.querySelector('thead');\n this.contentElement = calendar.querySelector('.e-content');\n this.previousIcon = calendar.querySelector('.e-prev');\n this.nextIcon = calendar.querySelector('.e-next');\n this.effect = ZOOMIN;\n _super.prototype.navigateTo.call(this, view, date);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\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 DateRangePicker.prototype.focusOut = function () {\n var isBlur = this.preventBlur;\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.preventBlur = false;\n this.inputElement.blur();\n this.preventBlur = isBlur;\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.destroy = function () {\n this.unBindEvents();\n this.hide(null);\n var ariaAttrs = {\n 'tabindex': '0', 'aria-expanded': 'false', 'role': 'combobox',\n 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'aria-invalid': 'false', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n removeClass([this.inputElement], [ROOT]);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n Input.removeAttributes(ariaAttrs, this.inputElement);\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.inputElement.classList.remove('e-input');\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n detach(this.inputWrapper.container);\n }\n }\n if (!isNullOrUndefined(this.inputKeyboardModule) && !this.isMobile) {\n this.inputKeyboardModule.destroy();\n }\n if (this.popupObj) {\n if (!this.isMobile) {\n this.clearCalendarEvents();\n }\n }\n _super.prototype.destroy.call(this);\n this.inputWrapper = this.popupWrapper = this.popupObj = this.cloneElement = this.presetElement = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n if ((!isNullOrUndefined(this.firstHiddenChild))\n && (!isNullOrUndefined(this.secondHiddenChild))) {\n detach(this.firstHiddenChild);\n detach(this.secondHiddenChild);\n this.firstHiddenChild = this.secondHiddenChild = null;\n this.inputElement.setAttribute('name', this.element.getAttribute('data-name'));\n this.inputElement.removeAttribute('data-name');\n }\n this.closeEventArgs = null;\n this.leftCalendar = null;\n this.rightTitle = null;\n this.leftTitle = null;\n this.openEventArgs = null;\n this.leftCalNextIcon = null;\n this.rightCalendar = null;\n this.closeEventArgs = null;\n this.rightCalPrevIcon = null;\n this.leftCalPrevIcon = null;\n this.popupKeyboardModule = null;\n this.cancelButton = null;\n this.applyButton = null;\n this.calendarElement = null;\n this.leftKeyboardModule = null;\n this.rightCalNextIcon = null;\n this.leftCalNextIcon = null;\n this.btnKeyboardModule = null;\n this.rightKeyboardModule = null;\n this.leftKeyboardModule = null;\n this.presetKeyboardModule = null;\n this.liCollections = null;\n this.popupObj = null;\n this.popupWrapper = null;\n };\n DateRangePicker.prototype.ensureInputAttribute = function () {\n var attr = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n attr[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < attr.length; i++) {\n if (isNullOrUndefined(this.cloneElement.getAttribute(attr[i]))) {\n if (attr[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(attr[i]);\n }\n else {\n if (attr[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(attr[i]);\n }\n this.inputElement.setAttribute(attr[i], this.cloneElement.getAttribute(attr[i]));\n }\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateRangePicker.prototype.getModuleName = function () {\n return 'daterangepicker';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Return the properties that are maintained upon browser refresh.\n *\n * @returns {string}\n */\n DateRangePicker.prototype.getPersistData = function () {\n var keyEntity = ['startDate', 'endDate', 'value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Return the selected range and day span in the DateRangePicker.\n *\n * @returns {Object}\n */\n DateRangePicker.prototype.getSelectedRange = function () {\n var range;\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if (!isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n if (!isNullOrUndefined(this.disabledDayCnt)) {\n range = range - this.disabledDayCnt;\n this.disabledDayCnt = null;\n }\n }\n else {\n range = 0;\n }\n return { startDate: this.startValue, endDate: this.endValue, daySpan: range };\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * To open the Popup container in the DateRangePicker component.\n *\n * @param {HTMLElement} element - Specifies element.\n * @returns {void}\n */\n DateRangePicker.prototype.show = function (element, event) {\n var _this = this;\n if (this.isMobile && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n if (!this.isPopupOpen()) {\n if (element) {\n this.targetElement = element;\n }\n this.createPopup();\n if (this.isMobile || Browser.isDevice) {\n this.mobileRangePopupWrap = this.createElement('div', { className: 'e-daterangepick-mob-popup-wrap' });\n document.body.appendChild(this.mobileRangePopupWrap);\n }\n this.openEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n date: this.inputElement.value,\n model: this,\n event: event ? event : null,\n appendTo: this.isMobile || Browser.isDevice ? this.mobileRangePopupWrap : document.body\n };\n var eventArgs = this.openEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openEventArgs = eventArgs;\n if (!_this.openEventArgs.cancel) {\n _this.openEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.showPopup(element, event);\n var isPreset = (!_this.isCustomRange || (_this.isMobile && _this.isCustomRange));\n if (!isUndefined(_this.presets[0].start && _this.presets[0].end && _this.presets[0].label) && isPreset) {\n _this.setScrollPosition();\n }\n _this.checkMinMaxDays();\n if ((_this.isMobile) && (!isNullOrUndefined(_this.startDate)) && (isNullOrUndefined(_this.endDate))) {\n _this.endButton.element.classList.add(ACTIVE);\n _this.startButton.element.classList.remove(ACTIVE);\n _this.endButton.element.removeAttribute('disabled');\n _this.selectableDates();\n }\n _super.prototype.setOverlayIndex.call(_this, _this.mobileRangePopupWrap, _this.popupObj.element, _this.modal, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.isMobile || Browser.isDevice);\n }\n });\n }\n }\n };\n /**\n * To close the Popup container in the DateRangePicker component.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.hide = function (event) {\n var _this = this;\n if (this.popupObj) {\n if (isNullOrUndefined(this.previousEndValue) && isNullOrUndefined(this.previousStartValue)) {\n this.clearRange();\n }\n else {\n if (!isNullOrUndefined(this.previousStartValue)) {\n this.startValue = new Date(this.checkValue(this.previousStartValue));\n this.setValue();\n this.currentDate = new Date(this.checkValue(this.startValue));\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (!isNullOrUndefined(this.previousEndValue)) {\n this.endValue = new Date(this.checkValue(this.previousEndValue));\n this.setValue();\n }\n else {\n this.endValue = null;\n this.setValue();\n }\n }\n if (this.isPopupOpen()) {\n this.closeEventArgs = {\n cancel: false,\n popup: this.popupObj,\n date: this.inputElement.value,\n model: this,\n event: event ? event : null\n };\n var eventArgs = this.closeEventArgs;\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventArgs = eventArgs;\n if (!_this.closeEventArgs.cancel) {\n if (_this.isMobile) {\n if (!isNullOrUndefined(_this.startButton) && !isNullOrUndefined(_this.endButton)) {\n EventHandler.remove(_this.startButton.element, 'click touchstart', _this.deviceHeaderClick);\n EventHandler.remove(_this.endButton.element, 'click touchstart', _this.deviceHeaderClick);\n }\n }\n if (_this.popupObj) {\n _this.popupObj.hide();\n if (_this.preventBlur) {\n _this.inputElement.focus();\n addClass([_this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n if (!_this.isMobile) {\n if (!isNullOrUndefined(_this.leftKeyboardModule) && !isNullOrUndefined(_this.rightKeyboardModule)) {\n _this.leftKeyboardModule.destroy();\n _this.rightKeyboardModule.destroy();\n }\n if (!isNullOrUndefined(_this.presetElement)) {\n _this.presetKeyboardModule.destroy();\n }\n if (!isNullOrUndefined(_this.cancelButton)) {\n _this.btnKeyboardModule.destroy();\n }\n }\n _this.targetElement = null;\n removeClass([document.body], OVERFLOW);\n EventHandler.remove(document, 'mousedown touchstart', _this.documentHandler);\n if (_this.isMobile && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (_this.isMobile || Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileRangePopupWrap)) {\n _this.mobileRangePopupWrap.remove();\n _this.mobileRangePopupWrap = null;\n }\n }\n _this.isKeyPopup = _this.dateDisabled = false;\n }\n else {\n removeClass([_this.inputWrapper.buttons[0]], ACTIVE);\n }\n _this.updateClearIconState();\n _this.updateHiddenInput();\n if (_this.isMobile && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n }\n else {\n this.updateClearIconState();\n this.updateHiddenInput();\n if (this.isMobile && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DateRangePicker.prototype.setLocale = function () {\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.updateInput();\n this.updateHiddenInput();\n this.changeTrigger();\n };\n DateRangePicker.prototype.refreshChange = function () {\n this.checkView();\n this.refreshControl();\n this.changeTrigger();\n };\n DateRangePicker.prototype.setDate = function () {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.refreshChange();\n };\n DateRangePicker.prototype.enableInput = function () {\n if (+this.min <= +this.max) {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.element.hasAttribute('disabled')) {\n this.bindEvents();\n }\n }\n };\n DateRangePicker.prototype.clearModelvalue = function (newProp, oldProp) {\n this.setProperties({ startDate: null }, true);\n this.setProperties({ endDate: null }, true);\n if (oldProp.value && oldProp.value.length > 0) {\n this.setProperties({ value: null }, true);\n }\n else if (oldProp.value && oldProp.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n else if (oldProp.value && !oldProp.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n this.updateValue();\n this.setDate();\n };\n DateRangePicker.prototype.createHiddenInput = function () {\n if (isNullOrUndefined(this.firstHiddenChild) && isNullOrUndefined(this.secondHiddenChild)) {\n this.firstHiddenChild = this.createElement('input');\n this.secondHiddenChild = this.createElement('input');\n }\n if (!isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n this.inputElement.setAttribute('data-name', this.inputElement.getAttribute('name'));\n this.inputElement.removeAttribute('name');\n }\n attributes(this.firstHiddenChild, {\n 'type': 'text', 'name': this.inputElement.getAttribute('data-name'), 'class': HIDDENELEMENT\n });\n attributes(this.secondHiddenChild, {\n 'type': 'text', 'name': this.inputElement.getAttribute('data-name'), 'class': HIDDENELEMENT\n });\n var format = { type: 'datetime', skeleton: 'yMd' };\n this.firstHiddenChild.value = this.startDate && this.globalize.formatDate(this.startDate, format);\n this.secondHiddenChild.value = this.endDate && this.globalize.formatDate(this.endDate, format);\n this.inputElement.parentElement.appendChild(this.firstHiddenChild);\n this.inputElement.parentElement.appendChild(this.secondHiddenChild);\n };\n DateRangePicker.prototype.setMinMaxDays = function () {\n if (this.isPopupOpen()) {\n this.removeClassDisabled();\n this.checkMinMaxDays();\n if (this.isMobile) {\n this.selectableDates();\n }\n if (!this.strictMode && (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue))) {\n this.removeSelection();\n }\n else {\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n }\n this.updateHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n DateRangePicker.prototype.getStartEndValue = function (date, isEnd) {\n if (this.depth === 'Month') {\n return this.checkDateValue(new Date(this.checkValue(date)));\n }\n else if (this.depth === 'Year') {\n return new Date(date.getFullYear(), date.getMonth() + (isEnd ? 1 : 0), isEnd ? 0 : 1);\n }\n else {\n return new Date(date.getFullYear(), isEnd ? 11 : 0, isEnd ? 31 : 1);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateRangePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateRangePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var format = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var openPopup = ['maxDays', 'minDays', 'value'];\n if (openPopup.indexOf(prop) < 0) {\n this.hide(null);\n }\n switch (prop) {\n case 'width':\n this.setEleWidth(this.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 'separator':\n this.previousEleValue = this.inputElement.value;\n this.setProperties({ separator: newProp.separator }, true);\n this.updateInput();\n this.changeTrigger();\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.setProperties({ placeholder: newProp.placeholder }, true);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n this.setRangeAllowEdit();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\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 'allowEdit':\n this.setRangeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.updateInput();\n this.changeTrigger();\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.setLocale();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.setDataAttribute(true);\n this.checkHtmlAttributes(true);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'startDate':\n if (typeof newProp.startDate === 'string') {\n newProp.startDate = this.globalize.parseDate(newProp.startDate, format);\n }\n if (+this.initStartDate !== +newProp.startDate) {\n this.startValue = this.getStartEndValue(newProp.startDate, false);\n this.setDate();\n this.setValue();\n }\n break;\n case 'endDate':\n if (typeof newProp.endDate === 'string') {\n newProp.endDate = this.globalize.parseDate(newProp.endDate, format);\n }\n if (+this.initEndDate !== +newProp.endDate) {\n this.endValue = this.getStartEndValue(newProp.endDate, true);\n this.setDate();\n this.setValue();\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidRange(newProp.value);\n if (typeof (newProp.value) === 'string') {\n if (!this.invalidValueString) {\n var rangeArray = newProp.value.split(' ' + this.separator + ' ');\n this.value = [new Date(rangeArray[0]), new Date(rangeArray[1])];\n this.updateValue();\n this.setDate();\n }\n else {\n this.clearModelvalue(newProp, oldProp);\n }\n }\n else {\n if ((!isNullOrUndefined(newProp.value) && newProp.value.length > 0)\n || !isNullOrUndefined(newProp.value) && newProp.value.start) {\n this.valueType = newProp.value;\n if (newProp.value[0] === null || (newProp.value.start === null)) {\n if (newProp.value.length === 1 || (newProp.value.start)) {\n this.clearModelvalue(newProp, oldProp);\n }\n else if (newProp.value[1] === null ||\n (newProp.value.start === null)) {\n this.clearModelvalue(newProp, oldProp);\n }\n }\n else if ((+this.initStartDate !== +newProp.value[0]\n || +this.initEndDate !== +newProp.value[1]) ||\n (+this.initStartDate !== +(newProp.value.start\n || +this.initEndDate !== +newProp.value.start))) {\n if (newProp.value.length === 1) {\n this.modelValue = newProp.value;\n }\n else if (newProp.value.start) {\n this.modelValue = newProp.value;\n }\n this.updateValue();\n this.setDate();\n }\n }\n else {\n if (isNullOrUndefined(this.value)\n || newProp.value.start == null) {\n this.valueType = newProp.value;\n this.startValue = null;\n this.endValue = null;\n this.clearModelvalue(newProp, oldProp);\n }\n }\n }\n if (this.isPopupOpen()) {\n if (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.removeSelection();\n if (this.isMobile) {\n this.deviceHeaderUpdate();\n }\n return;\n }\n if (this.isMobile) {\n this.navigate(this.deviceCalendar, this.startValue, this.currentView());\n this.deviceHeaderUpdate();\n }\n else {\n this.navigate(this.leftCalendar, this.startValue, this.currentView());\n this.updateControl(this.leftCalendar);\n this.navigate(this.rightCalendar, this.endValue, this.currentView());\n this.updateControl(this.rightCalendar);\n }\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n this.updateHeader();\n this.applyButton.disabled = this.applyButton.element.disabled = false;\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'minDays':\n this.setProperties({ minDays: newProp.minDays }, true);\n this.refreshChange();\n this.setMinMaxDays();\n break;\n case 'maxDays':\n this.setProperties({ maxDays: newProp.maxDays }, true);\n this.refreshChange();\n this.setMinMaxDays();\n break;\n case 'min':\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n this.previousEleValue = this.inputElement.value;\n this.enableInput();\n this.refreshChange();\n break;\n case 'max':\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n this.enableInput();\n this.refreshChange();\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.refreshChange();\n break;\n case 'presets':\n this.setProperties({ presets: newProp.presets }, true);\n this.processPresets();\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 'start':\n this.setProperties({ start: newProp.start }, true);\n this.refreshChange();\n break;\n case 'depth':\n this.setProperties({ depth: newProp.depth }, true);\n this.refreshChange();\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateRangePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateRangePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"locale\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateRangePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"renderDayCell\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"startDate\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"endDate\", void 0);\n __decorate([\n Collection([{}], Presets)\n ], DateRangePicker.prototype, \"presets\", void 0);\n __decorate([\n Property('')\n ], DateRangePicker.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], DateRangePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Month')\n ], DateRangePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateRangePicker.prototype, \"depth\", void 0);\n __decorate([\n Property('')\n ], DateRangePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property('-')\n ], DateRangePicker.prototype, \"separator\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"minDays\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"maxDays\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property('Never')\n ], DateRangePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], DateRangePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"blur\", void 0);\n DateRangePicker = __decorate([\n NotifyPropertyChanges\n ], DateRangePicker);\n return DateRangePicker;\n}(CalendarBase));\nexport { DateRangePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * React Component Base\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { extend, isNullOrUndefined, setValue, getValue, isObject } from '@syncfusion/ej2-base';\nvar defaulthtmlkeys = ['alt', 'className', 'disabled', 'form', 'id',\n 'readOnly', 'style', 'tabIndex', 'title', 'type', 'name',\n 'onClick', 'onFocus', 'onBlur'];\nvar delayUpdate = ['accordion', 'tab', 'splitter'];\nvar reactUid = 0;\nvar isColEName = new RegExp('\\]');\n// tslint:disable\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar ComponentBase = /** @class */ (function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.mountingState = false;\n _this.attrKeys = [];\n _this.cachedTimeOut = 0;\n _this.isAppendCalled = false;\n _this.initRenderCalled = false;\n _this.isReactForeceUpdate = false;\n _this.isReact = true;\n _this.isshouldComponentUpdateCalled = false;\n _this.isCreated = false;\n return _this;\n }\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentWillMount\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.componentDidMount = function () {\n this.refreshChild(true);\n this.canDelayUpdate = delayUpdate.indexOf(this.getModuleName()) !== -1;\n // Used timeout to resolve template binding\n // Reference link: https://github.com/facebook/react/issues/10309#issuecomment-318433235\n // tslint:disable-next-line:no-any\n this.renderReactComponent();\n if (this.portals && this.portals.length) {\n this.mountingState = true;\n this.renderReactTemplates();\n this.mountingState = false;\n }\n };\n ComponentBase.prototype.componentDidUpdate = function (prev) {\n if (!this.isshouldComponentUpdateCalled && this.initRenderCalled && !this.isReactForeceUpdate) {\n if (prev !== this.props) {\n this.isshouldComponentUpdateCalled = true;\n this.refreshProperties(this.props, this.props);\n }\n }\n };\n ComponentBase.prototype.renderReactComponent = function () {\n var ele = this.reactElement;\n if (ele && !this.isAppendCalled) {\n this.isAppendCalled = true;\n this.appendTo(ele);\n }\n };\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops\n // tslint:disable-next-line:no-any\n /**\n * @private\n */\n ComponentBase.prototype.shouldComponentUpdate = function (nextProps) {\n this.isshouldComponentUpdateCalled = true;\n if (!this.initRenderCalled) {\n this.updateProperties(nextProps, true);\n return true;\n }\n if (!this.isAppendCalled) {\n clearTimeout(this.cachedTimeOut);\n this.isAppendCalled = true;\n this.appendTo(this.reactElement);\n }\n this.updateProperties(nextProps);\n return true;\n };\n /**\n * @private\n */\n ComponentBase.prototype.updateProperties = function (nextProps, silent) {\n var _this = this;\n var dProps = extend({}, nextProps);\n var keys = Object.keys(nextProps);\n // The statelessTemplates props value is taken from sample level property or default component property.\n var statelessTemplates = !isNullOrUndefined(this.props['statelessTemplates']) ? this.props['statelessTemplates'] :\n (!isNullOrUndefined(this['statelessTemplateProps']) ? this['statelessTemplateProps'] : []);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var propkey = keys_1[_i];\n var isClassName = propkey === 'className';\n if (propkey === 'children') {\n continue;\n }\n if (!isClassName && !isNullOrUndefined(this.htmlattributes[\"\" + propkey]) &&\n this.htmlattributes[\"\" + propkey] !== dProps[\"\" + propkey]) {\n this.htmlattributes[\"\" + propkey] = dProps[\"\" + propkey];\n }\n if (this.compareValues(this.props[\"\" + propkey], nextProps[\"\" + propkey])) {\n delete dProps[\"\" + propkey];\n }\n else if (this.attrKeys.indexOf(propkey) !== -1) {\n if (isClassName) {\n this.clsName = true;\n var propsClsName = this.props[\"\" + propkey].split(' ');\n for (var i = 0; i < propsClsName.length; i++) {\n this.element.classList.remove(propsClsName[parseInt(i.toString(), 10)]);\n }\n var dpropsClsName = dProps[\"\" + propkey].split(' ');\n for (var j = 0; j < dpropsClsName.length; j++) {\n this.element.classList.add(dpropsClsName[parseInt(j.toString(), 10)]);\n }\n }\n else if (propkey !== 'disabled' && !this.properties.hasOwnProperty(propkey)) {\n delete dProps[\"\" + propkey];\n }\n }\n else if (propkey === 'value' && nextProps[\"\" + propkey] === this[\"\" + propkey]) {\n delete dProps[\"\" + propkey];\n }\n else if (statelessTemplates.indexOf(propkey) > -1 && ((propkey === 'content' && typeof dProps[\"\" + propkey] === 'function') || (nextProps[\"\" + propkey].toString() === this[\"\" + propkey].toString()))) {\n delete dProps[\"\" + propkey];\n }\n }\n if (dProps['children']) {\n delete dProps['children'];\n }\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && (this.canDelayUpdate || this.props.delayUpdate)) {\n setTimeout(function () {\n _this.refreshProperties(dProps, nextProps, silent);\n });\n }\n else {\n this.refreshProperties(dProps, nextProps, silent);\n }\n };\n ComponentBase.prototype.refreshProperties = function (dProps, nextProps, silent) {\n var statelessTemplates = !isNullOrUndefined(this.props['statelessTemplates']) ? this.props['statelessTemplates'] : [];\n if (Object.keys(dProps).length) {\n if (!silent) {\n // tslint:disable-next-line:no-any\n this.processComplexTemplate(dProps, this);\n }\n this.setProperties(dProps, silent);\n }\n if (statelessTemplates.indexOf('directiveTemplates') === -1) {\n this.refreshChild(silent, nextProps);\n }\n };\n ComponentBase.prototype.processComplexTemplate = function (curObject, context) {\n var compTemplate = context.complexTemplate;\n if (compTemplate) {\n for (var prop in compTemplate) {\n var PropVal = compTemplate[\"\" + prop];\n if (curObject[\"\" + prop]) {\n setValue(PropVal, getValue(prop, curObject), curObject);\n }\n }\n }\n };\n ComponentBase.prototype.getDefaultAttributes = function () {\n var _this = this;\n this.isReact = true;\n var propKeys = Object.keys(this.props);\n var stringValue = ['autocomplete', 'dropdownlist', 'combobox'];\n // if ((stringValue.indexOf(this.getModuleName()) !== -1) && (!isNullOrUndefined(this.props[\"value\"]))) {\n // this.value = (<{ [key: string]: Object }>this.props)[\"value\"];\n // }\n if (!this.htmlattributes) {\n this.htmlattributes = {};\n }\n this.attrKeys = defaulthtmlkeys.concat(this.controlAttributes || []);\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var prop = propKeys_1[_i];\n if (prop.indexOf('data-') !== -1 || prop.indexOf('aria-') !== -1 || this.attrKeys.indexOf(prop) !== -1) {\n if (this.htmlattributes[\"\" + prop] !== this.props[\"\" + prop]) {\n this.htmlattributes[\"\" + prop] = this.props[\"\" + prop];\n }\n }\n }\n if (!this.htmlattributes.ref) {\n /* tslint:disable:no-any */\n this.htmlattributes.ref = function (ele) {\n _this.reactElement = ele;\n };\n var keycompoentns = ['autocomplete', 'combobox', 'dropdownlist', 'dropdowntree', 'multiselect',\n 'listbox', 'colorpicker', 'numerictextbox', 'textbox',\n 'uploader', 'maskedtextbox', 'slider', 'datepicker', 'datetimepicker', 'daterangepicker', 'timepicker', 'checkbox', 'switch', 'radio'];\n if (keycompoentns.indexOf(this.getModuleName()) !== -1) {\n this.htmlattributes.key = '' + ComponentBase.reactUid;\n ComponentBase.reactUid++;\n }\n }\n if (this.clsName) {\n var clsList = this.element.classList;\n var className = this.htmlattributes['className'];\n for (var i = 0; i < clsList.length; i++) {\n if ((className.indexOf(clsList[parseInt(i.toString(), 10)]) === -1)) {\n this.htmlattributes['className'] = this.htmlattributes['className'] + ' ' + clsList[parseInt(i.toString(), 10)];\n }\n }\n this.clsName = false;\n }\n return this.htmlattributes;\n };\n /* tslint:disable:no-any */\n ComponentBase.prototype.trigger = function (eventName, eventProp, successHandler) {\n var _this = this;\n if (this.isDestroyed !== true && this.modelObserver) {\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n if ((eventName === 'change' || eventName === 'input')) {\n if (this.props.onChange && eventProp.event) {\n this.props.onChange.call(undefined, {\n syntheticEvent: eventProp.event,\n nativeEvent: { text: eventProp.value },\n value: eventProp.value,\n target: this\n });\n }\n }\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventName === 'created') {\n setTimeout(function () {\n _this.isCreated = true;\n if (!_this.isDestroyed) {\n _this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n }, 10);\n }\n else {\n this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n this.isProtectedOnChange = prevDetection;\n }\n };\n ComponentBase.prototype.compareValues = function (value1, value2) {\n var typeVal = typeof value1;\n var typeVal2 = typeof value2;\n if (typeVal === typeVal2) {\n if (value1 === value2) {\n return true;\n }\n if ((!isNullOrUndefined(value1) && value1.constructor) !== (!isNullOrUndefined(value2) && value2.constructor)) {\n return false;\n }\n if (value1 instanceof Date ||\n value1 instanceof RegExp ||\n value1 instanceof String ||\n value1 instanceof Number) {\n return value1.toString() === value2.toString();\n }\n if (isObject(value1) || Array.isArray(value1)) {\n var tempVal = value1;\n var tempVal2 = value2;\n if (isObject(tempVal)) {\n tempVal = [value1];\n tempVal2 = [value2];\n }\n return this.compareObjects(tempVal, tempVal2).status;\n }\n if (value1.constructor &&\n value1.constructor.name === value2.constructor.name &&\n (value1.constructor.name === 'Query' ||\n value1.constructor.name === 'DataManager')) {\n if (JSON.stringify(value1) === JSON.stringify(value2)) {\n return true;\n }\n }\n }\n return false;\n };\n ComponentBase.prototype.compareObjects = function (oldProps, newProps, propName) {\n var status = true;\n var lenSimilarity = (oldProps.length === newProps.length);\n var diffArray = [];\n var templateProps = !isNullOrUndefined(this['templateProps']) ? this['templateProps'] : [];\n if (lenSimilarity) {\n for (var i = 0, len = newProps.length; i < len; i++) {\n var curObj = {};\n var oldProp = oldProps[parseInt(i.toString(), 10)];\n var newProp = newProps[parseInt(i.toString(), 10)];\n var keys = Object.keys(newProp);\n if (keys.length !== 0) {\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var oldValue = oldProp[\"\" + key];\n var newValue = newProp[\"\" + key];\n if (key === 'items') {\n for (var _j = 0; _j < newValue.length; _j++) {\n if (this.getModuleName() === 'richtexteditor' && typeof (newValue[parseInt(_j.toString(), 10)]) === 'object') {\n return { status: true };\n }\n }\n }\n if (this.getModuleName() === 'grid' && key === 'field') {\n curObj[\"\" + key] = newValue;\n }\n if (!oldProp.hasOwnProperty(key) || !((templateProps.length > 0 && templateProps.indexOf(\"\" + key) === -1 && typeof (newValue) === 'function') ? this.compareValues(oldValue.toString(), newValue.toString()) : this.compareValues(oldValue, newValue))) {\n if (!propName) {\n return { status: false };\n }\n status = false;\n curObj[\"\" + key] = newValue;\n }\n }\n }\n else if (newProps[parseInt(i.toString(), 10)] === oldProps[parseInt(i.toString(), 10)]) {\n status = true;\n }\n else {\n if (!propName) {\n return { status: false };\n }\n status = false;\n }\n if (this.getModuleName() === 'grid' && propName === 'columns' && isNullOrUndefined(curObj['field'])) {\n curObj['field'] = undefined;\n }\n if (Object.keys(curObj).length) {\n diffArray.push({ index: i, value: curObj, key: propName });\n }\n }\n }\n else {\n status = false;\n }\n return { status: status, changedProperties: diffArray };\n };\n ComponentBase.prototype.refreshChild = function (silent, props) {\n if (this.checkInjectedModules) {\n var prevModule = this.getInjectedModules() || [];\n var curModule = this.getInjectedServices() || [];\n for (var _i = 0, curModule_1 = curModule; _i < curModule_1.length; _i++) {\n var mod = curModule_1[_i];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.injectedModules = prevModule;\n }\n if (this.directivekeys) {\n var changedProps = [];\n var directiveValue = this.validateChildren({}, this.directivekeys, (props || this.props));\n if (directiveValue && Object.keys(directiveValue).length) {\n if (!silent && this.skipRefresh) {\n for (var _a = 0, _b = this.skipRefresh; _a < _b.length; _a++) {\n var fields = _b[_a];\n delete directiveValue[\"\" + fields];\n }\n }\n if (this.prevProperties) {\n var dKeys = Object.keys(this.prevProperties);\n for (var i = 0; i < dKeys.length; i++) {\n var key = dKeys[parseInt(i.toString(), 10)];\n if (!directiveValue.hasOwnProperty(key)) {\n continue;\n }\n var compareOutput = this.compareObjects(this.prevProperties[\"\" + key], directiveValue[\"\" + key], key);\n if (compareOutput.status) {\n delete directiveValue[\"\" + key];\n }\n else {\n if (compareOutput.changedProperties.length) {\n changedProps = changedProps.concat(compareOutput.changedProperties);\n }\n var obj = {};\n obj[\"\" + key] = directiveValue[\"\" + key];\n this.prevProperties = extend(this.prevProperties, obj);\n }\n }\n }\n else {\n this.prevProperties = extend({}, directiveValue, {}, true);\n }\n if (changedProps.length) {\n if (this.getModuleName() === 'grid' && key === 'columns') {\n for (var _c1 = 0, allColumns = this.columns; _c1 < allColumns.length; _c1++) {\n var compareField1 = getValue('field', allColumns[parseInt(_c1.toString(), 10)]);\n var compareField2 = getValue(_c1 + '.value.field', changedProps);\n if (compareField1 === compareField2) {\n var propInstance = getValue(changedProps[parseInt(_c1.toString(), 10)].key + '.' + changedProps[parseInt(_c1.toString(), 10)].index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changedProps[parseInt(_c1.toString(), 10)].value);\n }\n else {\n extend(propInstance, changedProps[parseInt(_c1.toString(), 10)].value);\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n else {\n for (var _c = 0, changedProps_1 = changedProps; _c < changedProps_1.length; _c++) {\n var changes = changedProps_1[_c];\n var propInstance_1 = getValue(changes.key + '.' + changes.index, this);\n if (propInstance_1 && propInstance_1.setProperties) {\n propInstance_1.setProperties(changes.value);\n }\n else {\n extend(propInstance_1, changes.value);\n }\n }\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n };\n ComponentBase.prototype.componentWillUnmount = function () {\n clearTimeout(this.cachedTimeOut);\n var modulesName = ['dropdowntree', 'checkbox'];\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && this.isAppendCalled && this.element && ((!modulesName.indexOf(this.getModuleName())) ? document.body.contains(this.element) : true) && !this.isDestroyed && this.isCreated) {\n this.destroy();\n }\n };\n // tslint:disable:no-any\n ComponentBase.prototype.appendReactElement = function (element, container) {\n var portal = ReactDOM.createPortal(element, container);\n if (!this.portals) {\n this.portals = [portal];\n }\n else {\n this.portals.push(portal);\n }\n };\n // tslint:disable:no-any\n ComponentBase.prototype.renderReactTemplates = function (callback) {\n this.isReactForeceUpdate = true;\n if (callback) {\n this.forceUpdate(callback);\n }\n else {\n this.forceUpdate();\n }\n this.isReactForeceUpdate = false;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.clearTemplate = function (templateNames, index, callback) {\n var _this = this;\n var tempPortal = [];\n if (templateNames && templateNames.length) {\n Array.prototype.forEach.call(templateNames, function (propName) {\n var indexCount = 0;\n var propIndexCount = 0;\n _this.portals.forEach(function (portal) {\n if (portal.propName === propName) {\n tempPortal.push(propIndexCount);\n propIndexCount++;\n }\n });\n if (!isNullOrUndefined(index) && _this.portals[index] && _this.portals[index].propName === propName) {\n _this.portals.splice(index, 1);\n indexCount++;\n }\n else {\n for (var i = 0; i < _this.portals.length; i++) {\n if (_this.portals[parseInt(i.toString(), 10)].propName === propName) {\n _this.portals.splice(i, 1);\n i--;\n }\n }\n }\n });\n }\n else {\n this.portals = [];\n }\n this.renderReactTemplates(callback);\n };\n /* tslint:disable:no-any */\n ComponentBase.prototype.validateChildren = function (childCache, mapper, props) {\n var flag = false;\n var childs = React.Children.toArray(props.children);\n for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) {\n var child = childs_1[_i];\n var ifield = this.getChildType(child);\n var key = mapper[\"\" + ifield];\n if (ifield && mapper) {\n // tslint:disable\n var childProps = this.getChildProps(React.Children.toArray(child.props.children), key);\n if (childProps.length) {\n flag = true;\n // tslint:disable\n childCache[child.type.propertyName || ifield] = childProps;\n }\n }\n }\n if (flag) {\n return childCache;\n }\n return null;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getChildType = function (child) {\n if (child.type && child.type.isDirective) {\n return child.type.moduleName || '';\n }\n return '';\n };\n ComponentBase.prototype.getChildProps = function (subChild, matcher) {\n var ret = [];\n for (var _i = 0, subChild_1 = subChild; _i < subChild_1.length; _i++) {\n var child = subChild_1[_i];\n var accessProp = false;\n var key = void 0;\n if (typeof matcher === 'string') {\n accessProp = true;\n key = matcher;\n }\n else {\n key = Object.keys(matcher)[0];\n }\n var prop = child.props;\n // tslint:disable-next-line:no-any\n var field = this.getChildType(child);\n if (field === key) {\n if (accessProp || !prop.children) {\n // tslint:disable\n var cacheVal = extend({}, prop, {}, true);\n // tslint:disable\n this.processComplexTemplate(cacheVal, child.type);\n ret.push(cacheVal);\n }\n else {\n var cachedValue = this.validateChildren(extend({}, prop), matcher[\"\" + key], prop) || prop;\n if (cachedValue['children']) {\n delete cachedValue['children'];\n }\n // tslint:disable\n this.processComplexTemplate(cachedValue, child.type);\n ret.push(cachedValue);\n }\n }\n }\n return ret;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getInjectedServices = function () {\n var childs = React.Children.toArray(this.props.children);\n for (var _i = 0, childs_2 = childs; _i < childs_2.length; _i++) {\n var child = childs_2[_i];\n /* tslint:disable:no-any */\n if (child.type.isService) {\n return child.props.services;\n }\n }\n return [];\n };\n /**\n * @private\n */\n ComponentBase.reactUid = 1;\n return ComponentBase;\n}(React.Component));\nexport { ComponentBase };\n/* tslint:enable:no-any */\n","// eslint-disable-next-line\nexport function applyMixins(derivedClass, baseClass) {\n // tslint:disable:typedef\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (name !== 'isMounted' && name !== 'replaceState') {\n derivedClass.prototype[\"\" + name] = baseClass.prototype[\"\" + name];\n }\n });\n });\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * Directory base\n */\nvar ComplexBase = /** @class */ (function (_super) {\n __extends(ComplexBase, _super);\n function ComplexBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComplexBase.prototype.render = function () {\n return null;\n };\n ComplexBase.isDirective = true;\n return ComplexBase;\n}(React.PureComponent));\nexport { ComplexBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Dependency injection\n */\nimport * as React from 'react';\nvar Inject = /** @class */ (function (_super) {\n __extends(Inject, _super);\n function Inject() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // eslint-disable-next-line\n Inject.prototype.render = function () {\n return null;\n };\n Inject.isService = true;\n return Inject;\n}(React.PureComponent));\nexport { Inject };\n","/**\n * Template compiler for react\n */\nimport { setTemplateEngine, getTemplateEngine, extend } from '@syncfusion/ej2-base';\nimport * as ReactDOM from 'react-dom';\nimport * as React from 'react';\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar stringCompiler = getTemplateEngine();\n// eslint-disable-next-line\nexport function compile(templateElement, helper) {\n if (typeof templateElement === 'string' || (templateElement.prototype && templateElement.prototype.CSPTemplate && typeof templateElement === 'function')) {\n return stringCompiler(templateElement, helper);\n }\n else {\n return function (data, component, prop, element) {\n var actTemplate = templateElement;\n var actData = data;\n if (typeof actTemplate === 'object') {\n actTemplate = templateElement.template;\n actData = extend({}, data, templateElement.data || {});\n }\n var cEle;\n if (element) {\n cEle = element;\n }\n else {\n cEle = document.createElement('div');\n }\n var rele = React.createElement(actTemplate, actData);\n var portal = ReactDOM.createPortal(rele, cEle);\n portal.propName = prop;\n if (!component.portals) {\n component.portals = [portal];\n }\n else {\n component.portals.push(portal);\n }\n if (!element) {\n return [cEle];\n }\n };\n }\n}\nsetTemplateEngine({ compile: compile });\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { DateRangePicker } from '@syncfusion/ej2-calendars';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the Essential JS 2 React DateRangePicker Component.\n * ```ts\n * \n * ```\n */\nvar DateRangePickerComponent = /** @class */ (function (_super) {\n __extends(DateRangePickerComponent, _super);\n function DateRangePickerComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'presets': 'preset' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n DateRangePickerComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return DateRangePickerComponent;\n}(DateRangePicker));\nexport { DateRangePickerComponent };\napplyMixins(DateRangePickerComponent, [ComponentBase, React.Component]);\n","import { isNullOrUndefined, classList, createElement, Browser } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_MAT3_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_FLUENT_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar DEFT_BOOT5_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_MATERIAL3SPIN = 'e-spin-material3';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_FLUENTSPIN = 'e-spin-fluent';\nvar CLS_TAILWINDSPIN = 'e-spin-tailwind';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_BOOT5SPIN = 'e-spin-bootstrap5';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\nvar spinTemplate = null;\nvar spinCSSClass = null;\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @param {string} action - specifies the string\n * @param {CreateArgs} options - specifies the args\n * @param {string} target - specifies the target\n * @param {string} type - specifes the type\n * @returns {void}\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\n var element = document.querySelector(options.target);\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n /* eslint-enable */\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n // eslint-disable-next-line\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n *\n * @param {SpinnerArgs} args - specifies the args\n * @param {CreateElementArgs} internalCreateElement - specifis the element args\n * @returns {void}\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n var _a;\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n // eslint-disable-next-line\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n var classNames = args.cssClass.split(' ').filter(function (className) { return className.trim() !== ''; });\n (_a = container.wrap.classList).add.apply(_a, classNames);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} label - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.innerHTML = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterial3Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material3', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIAL3SPIN);\n mat_calculate_attributes(radius, container, 'Material3', CLS_MATERIAL3SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap5Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap5', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT5SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap5', CLS_BOOT5SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} uniqueID - specifies the id.\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[\"\" + uniqueID].timeOut = 0;\n globalObject[\"\" + uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n // eslint-disable-next-line\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluentSinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FLUENTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Tailwind', radius: radius };\n create_fabric_element(container, uniqueID, CLS_TAILWINDSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_TAILWINDSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @returns {string} - returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n *\n * @param {string} theme - specifies the theme\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Material3':\n createMaterial3Spinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent':\n createFluentSinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap5':\n createBootstrap5Spinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the id\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var x = 0;\n var y = 0;\n var rad = 24;\n svg.style.width = svg.style.height = radius + 'px';\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n *\n * @param {number} begin - specifies the number\n * @param {number} stop - specifirs the number\n * @returns {number[]} - returns the array of number\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n // eslint-disable-next-line\n var increment = false, count = 1;\n formSeries(start);\n /**\n *\n * @param {number} i - specifies the number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n *\n * @param {SVGCircleElement} circle - specifies the circl element\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {number} series - specifies the series\n * @param {string} id - specifies the id\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n // eslint-disable-next-line\n function boot_animate(radius) {\n if (globalTimeOut[\"\" + id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n // eslint-disable-next-line\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} template - specifies the template\n * @param {string} cssClass - specifies the css class.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n *\n * @param {string} width - specifies the width\n * @param {string} theme - specifies the string\n * @returns {number} - returns the number\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Material3':\n defaultSize = DEFT_MAT3_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Fluent':\n defaultSize = DEFT_FLUENT_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n case 'Bootstrap5':\n defaultSize = DEFT_BOOT5_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n *\n * @param {string} id - specifies the id\n * @param {number} radius - specifies the radius\n * @param {number} count - specifies the number count\n * @param {number} previousId - specifies the previous id\n * @returns {GlobalVariables} - returns the variables\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - returns the string\n */\n// eslint-disable-next-line\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n *\n * @param {HTMLElement} innerCon - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {string} themeClass - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {createElementParams} makeElement - specifies the element\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n var spinnerInnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n 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 * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(function () {\n queryString = '';\n }, 1000);\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n }\n index = index + 1;\n return matches[index] ? matches[index] : matches[0];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n return matches[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var text = void 0;\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n /* eslint-disable security/detect-object-injection */\n if (type === 'object' && (!data.isHeader && checkField_1.textContent.toString().indexOf(data[value]) !== -1) && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n text = dataSource && filterValue ? (ignoreCase ? filterValue.toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n /* eslint-disable security/detect-non-literal-regexp */\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, \"g\").test(text))) {\n itemData.item = item;\n itemData.index = i;\n return { value: { item: item, index: i } };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return itemData;\n /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/* eslint-enable security/detect-object-injection */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (typeof baseTemplate !== 'function' && baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (typeof template !== 'function' && tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataElement = void 0;\n if ((this.isReact) && typeof template === 'function') {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null);\n }\n else {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n }\n if (noDataElement && noDataElement.length > 0) {\n for (var i = 0; i < noDataElement.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataElement[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataElement[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataElement[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataElement[i]);\n }\n }\n else {\n ele.appendChild(noDataElement[i]);\n }\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n if (!this.isRequesting) {\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isRequesting = true;\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n _this.isRequesting = false;\n var listItems = e.result;\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n ulElement = _this.renderItems(listItems, fields);\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n var dataManager = new DataManager(eventArgs.data);\n var listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (!localDataArgs.cancel) {\n _this.isRequesting = false;\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n }\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == \"\") {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (typeof this.groupTemplate !== 'function' && groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n for (var i = topIndex; i > -1; i--) {\n if (!isNullOrUndefined(liCollections[i]) && liCollections[i].classList.contains(dropDownBaseClasses.group)) {\n var currentLi = liCollections[i];\n this.fixedHeaderElement.innerHTML = currentLi.innerHTML;\n this.fixedHeaderElement.style.top = target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n break;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n }\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n }\n else {\n ulElement = this.createListItems(listData, fields);\n }\n return ulElement;\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (typeof this.itemTemplate !== 'function' && itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n if (element) {\n element.dispatchEvent(evt);\n }\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query, e) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if (isFiltering && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props) {\n this.resetList(this.dataSource);\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n }\n else {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content });\n }\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = typeof this.itemTemplate !== 'function' &&\n itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.isAddNewItemTemplate = true;\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden'\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if (this.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) &&\n this.actionCompleteData.list.length > 0) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.inputElement)) {\n this.inputElement.value = '';\n }\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'aria-label') {\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.windowResize = function () {\n if (this.isPopupOpen) {\n this.popupObj.refreshPosition(this.inputWrapper.container);\n }\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n this.renderList();\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n this.renderList(e);\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e) {\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n }\n else {\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.getPageCount = function () {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n };\n DropDownList.prototype.pageUpSelection = function (steps, event) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.pageDownSelection = function (steps, event) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n this.isInteracted = false;\n this.hidePopup(e);\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = li.getAttribute('data-value') !== \"null\" ? this.getFormattedValue(li.getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (this.itemData != selectedData) {\n this.previousValue = (!isNullOrUndefined(this.itemData)) ? typeof this.itemData == \"object\" ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if (this.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n if (this.targetElement()) {\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id !== '' ? this.inputElement.id : this.element.id });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (typeof dropdownTemplate !== 'function' && dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.valueTempElement.innerHTML = '';\n }\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(this.itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, this.valueTempElement);\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = (!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') ?\n false : true;\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n this.resetList(dataSource, fields, query);\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.isNotSearchList) {\n this.isNotSearchList = false;\n return;\n }\n if (this.isActive || !isNullOrUndefined(ulElement)) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n this.list.scrollTop = 0;\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === _this.value : x[checkField_1] === _this.value;\n });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\n else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n this.addNewItem(list, selectedItem);\n if (!isNullOrUndefined(this.itemData)) {\n this.focusIndexItem();\n }\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_1 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_1) ||\n (getValue(_this.fields.value, data) === value_1));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n this.removeFocus();\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n var searchBox = _this.setSearchBox(popupEle);\n _this.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container)) {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listHeight = (parseInt(_this.listHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.getFocusElement();\n _this.createPopup(popupEle, offsetValue, left);\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_options' });\n _this.inputElement.setAttribute('aria-expanded', 'true');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left,\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n this.hidePopup();\n }\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n DropDownList.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.actionCompleteData.ulElement = this.ulElement.cloneNode(true);\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'combobox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n this.initValue();\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n append(footerCompTemp, this.footer);\n }\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n append(headerCompTemp, this.header);\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n this.itemData = null;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || !(props.dataSource === [])) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource': break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var item = this_1.getElementByValue(newProp.value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) && this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n if (!this_1.inputWrapper.clearButton) {\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n this.renderList(e);\n }\n this.invokeRenderPopup(e);\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) ||\n this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var element = this.findListElement(this.ulElement, 'li', 'data-value', this.value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n this.isTyped = true;\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType === 'Auto' && this.inputElement.value === '') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.popupObj = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.inputWrapper = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\n if (this.isAngular) {\n this.inputElement = null;\n }\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * The DropDownList component contains a list of predefined values, from which the user can choose a single value.\n * ```\n * \n * ```\n */\nvar DropDownListComponent = /** @class */ (function (_super) {\n __extends(DropDownListComponent, _super);\n function DropDownListComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = [\"headerTemplate\", \"valueTemplate\", \"itemTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n DropDownListComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return DropDownListComponent;\n}(DropDownList));\nexport { DropDownListComponent };\napplyMixins(DropDownListComponent, [ComponentBase, React.Component]);\n","function _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); }\nimport PropTypes from 'prop-types';\n\n// https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/js/src/modal.js#L436-L443\nexport function getScrollbarWidth() {\n var scrollDiv = document.createElement('div');\n // .modal-scrollbar-measure styles // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/scss/_modal.scss#L106-L113\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n}\nexport function setScrollbarWidth(padding) {\n document.body.style.paddingRight = padding > 0 ? \"\".concat(padding, \"px\") : null;\n}\nexport function isBodyOverflowing() {\n return document.body.clientWidth < window.innerWidth;\n}\nexport function getOriginalBodyPadding() {\n var style = window.getComputedStyle(document.body, null);\n return parseInt(style && style.getPropertyValue('padding-right') || 0, 10);\n}\nexport function conditionallyUpdateScrollbar() {\n var scrollbarWidth = getScrollbarWidth();\n // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.6/js/src/modal.js#L433\n var fixedContent = document.querySelectorAll('.fixed-top, .fixed-bottom, .is-fixed, .sticky-top')[0];\n var bodyPadding = fixedContent ? parseInt(fixedContent.style.paddingRight || 0, 10) : 0;\n if (isBodyOverflowing()) {\n setScrollbarWidth(bodyPadding + scrollbarWidth);\n }\n}\nvar globalCssModule;\nexport function setGlobalCssModule(cssModule) {\n globalCssModule = cssModule;\n}\nexport function mapToCssModules() {\n var className = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var cssModule = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalCssModule;\n if (!cssModule) return className;\n return className.split(' ').map(function (c) {\n return cssModule[c] || c;\n }).join(' ');\n}\n\n/**\n * Returns a new object with the key/value pairs from `obj` that are not in the array `omitKeys`.\n */\nexport function omit(obj, omitKeys) {\n var result = {};\n Object.keys(obj).forEach(function (key) {\n if (omitKeys.indexOf(key) === -1) {\n result[key] = obj[key];\n }\n });\n return result;\n}\n\n/**\n * Returns a filtered copy of an object with only the specified keys.\n */\nexport function pick(obj, keys) {\n var pickKeys = Array.isArray(keys) ? keys : [keys];\n var length = pickKeys.length;\n var key;\n var result = {};\n while (length > 0) {\n length -= 1;\n key = pickKeys[length];\n result[key] = obj[key];\n }\n return result;\n}\nvar warned = {};\nexport function warnOnce(message) {\n if (!warned[message]) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined') {\n console.error(message); // eslint-disable-line no-console\n }\n\n warned[message] = true;\n }\n}\nexport function deprecated(propType, explanation) {\n return function validate(props, propName, componentName) {\n if (props[propName] !== null && typeof props[propName] !== 'undefined') {\n warnOnce(\"\\\"\".concat(propName, \"\\\" property of \\\"\").concat(componentName, \"\\\" has been deprecated.\\n\").concat(explanation));\n }\n for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n rest[_key - 3] = arguments[_key];\n }\n return propType.apply(void 0, [props, propName, componentName].concat(rest));\n };\n}\n\n// Shim Element if needed (e.g. in Node environment)\nvar Element = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === 'object' && window.Element || function () {};\nexport function DOMElement(props, propName, componentName) {\n if (!(props[propName] instanceof Element)) {\n return new Error('Invalid prop `' + propName + '` supplied to `' + componentName + '`. Expected prop to be an instance of Element. Validation failed.');\n }\n}\nexport var targetPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, DOMElement, PropTypes.shape({\n current: PropTypes.any\n})]);\nexport var tagPropType = PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n}), PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n})]))]);\n\n// These are all setup to match what is in the bootstrap _variables.scss\n// https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss\nexport var TransitionTimeouts = {\n Fade: 150,\n // $transition-fade\n Collapse: 350,\n // $transition-collapse\n Modal: 300,\n // $modal-transition\n Carousel: 600,\n // $carousel-transition\n Offcanvas: 300 // $offcanvas-transition\n};\n\n// Duplicated Transition.propType keys to ensure that Reactstrap builds\n// for distribution properly exclude these keys for nested child HTML attributes\n// since `react-transition-group` removes propTypes in production builds.\nexport var TransitionPropTypeKeys = ['in', 'mountOnEnter', 'unmountOnExit', 'appear', 'enter', 'exit', 'timeout', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'];\nexport var TransitionStatuses = {\n ENTERING: 'entering',\n ENTERED: 'entered',\n EXITING: 'exiting',\n EXITED: 'exited'\n};\nexport var keyCodes = {\n esc: 27,\n space: 32,\n enter: 13,\n tab: 9,\n up: 38,\n down: 40,\n home: 36,\n end: 35,\n n: 78,\n p: 80\n};\nexport var PopperPlacements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\nexport var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport function isReactRefObj(target) {\n if (target && _typeof(target) === 'object') {\n return 'current' in target;\n }\n return false;\n}\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n return Object.prototype.toString.call(value);\n}\nexport function isObject(value) {\n var type = _typeof(value);\n return value != null && (type === 'object' || type === 'function');\n}\nexport function toNumber(value) {\n var type = _typeof(value);\n var NAN = 0 / 0;\n if (type === 'number') {\n return value;\n }\n if (type === 'symbol' || type === 'object' && getTag(value) === '[object Symbol]') {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf === 'function' ? value.valueOf() : value;\n value = isObject(other) ? \"\".concat(other) : other;\n }\n if (type !== 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(/^\\s+|\\s+$/g, '');\n var isBinary = /^0b[01]+$/i.test(value);\n return isBinary || /^0o[0-7]+$/i.test(value) ? parseInt(value.slice(2), isBinary ? 2 : 8) : /^[-+]0x[0-9a-f]+$/i.test(value) ? NAN : +value;\n}\nexport function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n var tag = getTag(value);\n return tag === '[object Function]' || tag === '[object AsyncFunction]' || tag === '[object GeneratorFunction]' || tag === '[object Proxy]';\n}\nexport function findDOMElements(target) {\n if (isReactRefObj(target)) {\n return target.current;\n }\n if (isFunction(target)) {\n return target();\n }\n if (typeof target === 'string' && canUseDOM) {\n var selection = document.querySelectorAll(target);\n if (!selection.length) {\n selection = document.querySelectorAll(\"#\".concat(target));\n }\n if (!selection.length) {\n throw new Error(\"The target '\".concat(target, \"' could not be identified in the dom, tip: check spelling\"));\n }\n return selection;\n }\n return target;\n}\nexport function isArrayOrNodeList(els) {\n if (els === null) {\n return false;\n }\n return Array.isArray(els) || canUseDOM && typeof els.length === 'number';\n}\nexport function getTarget(target, allElements) {\n var els = findDOMElements(target);\n if (allElements) {\n if (isArrayOrNodeList(els)) {\n return els;\n }\n if (els === null) {\n return [];\n }\n return [els];\n }\n if (isArrayOrNodeList(els)) {\n return els[0];\n }\n return els;\n}\nexport var defaultToggleEvents = ['touchstart', 'click'];\nexport function addMultipleEventListeners(_els, handler, _events, useCapture) {\n var els = _els;\n if (!isArrayOrNodeList(els)) {\n els = [els];\n }\n var events = _events;\n if (typeof events === 'string') {\n events = events.split(/\\s+/);\n }\n if (!isArrayOrNodeList(els) || typeof handler !== 'function' || !Array.isArray(events)) {\n throw new Error(\"\\n The first argument of this function must be DOM node or an array on DOM nodes or NodeList.\\n The second must be a function.\\n The third is a string or an array of strings that represents DOM events\\n \");\n }\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.addEventListener(event, handler, useCapture);\n });\n });\n return function removeEvents() {\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.removeEventListener(event, handler, useCapture);\n });\n });\n };\n}\nexport var focusableElements = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'object', 'embed', '[tabindex]:not(.modal):not(.offcanvas)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'];","var _excluded = [\"className\", \"cssModule\", \"noGutters\", \"tag\", \"widths\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, deprecated } from './utils';\nvar rowColWidths = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\nvar rowColsPropType = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar propTypes = {\n tag: tagPropType,\n noGutters: deprecated(PropTypes.bool, 'Please use Bootstrap 5 gutter utility classes. https://getbootstrap.com/docs/5.0/layout/gutters/'),\n className: PropTypes.string,\n cssModule: PropTypes.object,\n xs: rowColsPropType,\n sm: rowColsPropType,\n md: rowColsPropType,\n lg: rowColsPropType,\n xl: rowColsPropType,\n xxl: rowColsPropType,\n widths: PropTypes.array\n};\nfunction Row(props) {\n var className = props.className,\n cssModule = props.cssModule,\n noGutters = props.noGutters,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n _props$widths = props.widths,\n widths = _props$widths === void 0 ? rowColWidths : _props$widths,\n attributes = _objectWithoutProperties(props, _excluded);\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var colSize = props[colWidth];\n delete attributes[colWidth];\n if (!colSize) {\n return;\n }\n var isXs = !i;\n colClasses.push(isXs ? \"row-cols-\".concat(colSize) : \"row-cols-\".concat(colWidth, \"-\").concat(colSize));\n });\n var classes = mapToCssModules(classNames(className, noGutters ? 'gx-0' : null, 'row', colClasses), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nRow.propTypes = propTypes;\nexport default Row;","var _excluded = [\"className\", \"cssModule\", \"widths\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, isObject } from './utils';\nvar colWidths = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\nvar stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar columnProps = PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string, PropTypes.shape({\n size: PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string]),\n order: stringOrNumberProp,\n offset: stringOrNumberProp\n})]);\nvar propTypes = {\n tag: tagPropType,\n xs: columnProps,\n sm: columnProps,\n md: columnProps,\n lg: columnProps,\n xl: columnProps,\n xxl: columnProps,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n widths: PropTypes.array\n};\nvar getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {\n if (colSize === true || colSize === '') {\n return isXs ? 'col' : \"col-\".concat(colWidth);\n }\n if (colSize === 'auto') {\n return isXs ? 'col-auto' : \"col-\".concat(colWidth, \"-auto\");\n }\n return isXs ? \"col-\".concat(colSize) : \"col-\".concat(colWidth, \"-\").concat(colSize);\n};\nexport var getColumnClasses = function getColumnClasses(attributes, cssModule) {\n var widths = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : colWidths;\n var modifiedAttributes = attributes;\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var columnProp = modifiedAttributes[colWidth];\n delete modifiedAttributes[colWidth];\n if (!columnProp && columnProp !== '') {\n return;\n }\n var isXs = !i;\n if (isObject(columnProp)) {\n var _classNames;\n var colSizeInterfix = isXs ? '-' : \"-\".concat(colWidth, \"-\");\n var colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);\n colClasses.push(mapToCssModules(classNames((_classNames = {}, _defineProperty(_classNames, colClass, columnProp.size || columnProp.size === ''), _defineProperty(_classNames, \"order\".concat(colSizeInterfix).concat(columnProp.order), columnProp.order || columnProp.order === 0), _defineProperty(_classNames, \"offset\".concat(colSizeInterfix).concat(columnProp.offset), columnProp.offset || columnProp.offset === 0), _classNames)), cssModule));\n } else {\n var _colClass = getColumnSizeClass(isXs, colWidth, columnProp);\n colClasses.push(_colClass);\n }\n });\n return {\n colClasses: colClasses,\n modifiedAttributes: modifiedAttributes\n };\n};\nfunction Col(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$widths = props.widths,\n widths = _props$widths === void 0 ? colWidths : _props$widths,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var _getColumnClasses = getColumnClasses(attributes, cssModule, widths),\n modifiedAttributes = _getColumnClasses.modifiedAttributes,\n colClasses = _getColumnClasses.colClasses;\n if (!colClasses.length) {\n colClasses.push('col');\n }\n var classes = mapToCssModules(classNames(className, colClasses), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, modifiedAttributes, {\n className: classes\n }));\n}\nCol.propTypes = propTypes;\nexport default Col;","var _excluded = [\"className\", \"cssModule\", \"variant\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\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; }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules } from './utils';\nvar propTypes = {\n /** Disable the button if needed */\n active: PropTypes.bool,\n /** Aria label */\n 'aria-label': PropTypes.string,\n /** Function to be triggered on click */\n onClick: PropTypes.func,\n /** Change the variant to white */\n variant: PropTypes.oneOf(['white']),\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n};\nfunction CloseButton(props) {\n var className = props.className,\n cssModule = props.cssModule,\n variant = props.variant,\n innerRef = props.innerRef,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'btn-close', variant && \"btn-close-\".concat(variant)));\n return /*#__PURE__*/React.createElement(\"button\", _extends({\n ref: innerRef,\n type: \"button\",\n className: classes\n }, _objectSpread({\n 'aria-label': 'close'\n }, attributes)));\n}\nCloseButton.propTypes = propTypes;\nexport default CloseButton;","var _excluded = [\"active\", \"aria-label\", \"block\", \"className\", \"close\", \"cssModule\", \"color\", \"outline\", \"size\", \"tag\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nimport CloseButton from './CloseButton';\nvar propTypes = {\n /** Manually set the visual state of the button to active */\n active: PropTypes.bool,\n /** Aria label */\n 'aria-label': PropTypes.string,\n block: PropTypes.bool,\n /** Pass children so this component can wrap them */\n children: PropTypes.node,\n /** Add custom class */\n className: PropTypes.string,\n /** Change existing className with a new className */\n cssModule: PropTypes.object,\n /** Use the button as a close button */\n close: PropTypes.bool,\n /** Change color of Button to one of the available colors */\n color: PropTypes.string,\n /** Disables the button */\n disabled: PropTypes.bool,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n /** Function to be triggered on click */\n onClick: PropTypes.func,\n /** Adds outline to the button */\n outline: PropTypes.bool,\n /** Make the button bigger or smaller */\n size: PropTypes.string,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction Button(props) {\n var onClick = useCallback(function (e) {\n if (props.disabled) {\n e.preventDefault();\n return;\n }\n if (props.onClick) {\n return props.onClick(e);\n }\n }, [props.onClick, props.disabled]);\n var active = props.active,\n ariaLabel = props['aria-label'],\n block = props.block,\n className = props.className,\n close = props.close,\n cssModule = props.cssModule,\n _props$color = props.color,\n color = _props$color === void 0 ? 'secondary' : _props$color,\n outline = props.outline,\n size = props.size,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'button' : _props$tag,\n innerRef = props.innerRef,\n attributes = _objectWithoutProperties(props, _excluded);\n if (close) {\n return /*#__PURE__*/React.createElement(CloseButton, attributes);\n }\n var btnOutlineColor = \"btn\".concat(outline ? '-outline' : '', \"-\").concat(color);\n var classes = mapToCssModules(classNames(className, 'btn', btnOutlineColor, size ? \"btn-\".concat(size) : false, block ? 'd-block w-100' : false, {\n active: active,\n disabled: props.disabled\n }), cssModule);\n if (attributes.href && Tag === 'button') {\n Tag = 'a';\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({\n type: Tag === 'button' && attributes.onClick ? 'button' : undefined\n }, attributes, {\n className: classes,\n ref: innerRef,\n onClick: onClick,\n \"aria-label\": ariaLabel\n }));\n}\nButton.propTypes = propTypes;\nexport default Button;","var _excluded = [\"className\", \"cssModule\", \"hidden\", \"widths\", \"tag\", \"check\", \"size\", \"for\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, isObject } from './utils';\nvar colWidths = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\nvar stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar columnProps = PropTypes.oneOfType([PropTypes.bool, PropTypes.string, PropTypes.number, PropTypes.shape({\n size: stringOrNumberProp,\n order: stringOrNumberProp,\n offset: stringOrNumberProp\n})]);\nvar propTypes = {\n children: PropTypes.node,\n hidden: PropTypes.bool,\n check: PropTypes.bool,\n size: PropTypes.string,\n \"for\": PropTypes.string,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n xs: columnProps,\n sm: columnProps,\n md: columnProps,\n lg: columnProps,\n xl: columnProps,\n xxl: columnProps,\n widths: PropTypes.array\n};\nvar getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {\n if (colSize === true || colSize === '') {\n return isXs ? 'col' : \"col-\".concat(colWidth);\n }\n if (colSize === 'auto') {\n return isXs ? 'col-auto' : \"col-\".concat(colWidth, \"-auto\");\n }\n return isXs ? \"col-\".concat(colSize) : \"col-\".concat(colWidth, \"-\").concat(colSize);\n};\nfunction Label(props) {\n var className = props.className,\n cssModule = props.cssModule,\n hidden = props.hidden,\n _props$widths = props.widths,\n widths = _props$widths === void 0 ? colWidths : _props$widths,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'label' : _props$tag,\n check = props.check,\n size = props.size,\n htmlFor = props[\"for\"],\n attributes = _objectWithoutProperties(props, _excluded);\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var columnProp = props[colWidth];\n delete attributes[colWidth];\n if (!columnProp && columnProp !== '') {\n return;\n }\n var isXs = !i;\n var colClass;\n if (isObject(columnProp)) {\n var _classNames;\n var colSizeInterfix = isXs ? '-' : \"-\".concat(colWidth, \"-\");\n colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);\n colClasses.push(mapToCssModules(classNames((_classNames = {}, _defineProperty(_classNames, colClass, columnProp.size || columnProp.size === ''), _defineProperty(_classNames, \"order\".concat(colSizeInterfix).concat(columnProp.order), columnProp.order || columnProp.order === 0), _defineProperty(_classNames, \"offset\".concat(colSizeInterfix).concat(columnProp.offset), columnProp.offset || columnProp.offset === 0), _classNames))), cssModule);\n } else {\n colClass = getColumnSizeClass(isXs, colWidth, columnProp);\n colClasses.push(colClass);\n }\n });\n var colFormLabel = size || colClasses.length;\n var formLabel = !(check || colFormLabel);\n var classes = mapToCssModules(classNames(className, hidden ? 'visually-hidden' : false, check ? 'form-check-label' : false, size ? \"col-form-label-\".concat(size) : false, colClasses, colFormLabel ? 'col-form-label' : false, formLabel ? 'form-label' : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n htmlFor: htmlFor\n }, attributes, {\n className: classes\n }));\n}\nLabel.propTypes = propTypes;\nexport default Label;","export const getAuthToken = () => {\r\n if (window.localStorage.getItem(\"AuthToken\") != null) {\r\n var data = JSON.parse(window.localStorage.getItem(\"AuthToken\"));\r\n //todo: check expiry\r\n return data.authToken;\r\n }\r\n else\r\n return null;\r\n};\r\n\r\nexport const setAuthToken = (token, expiry) => {\r\n const data = { authToken: token, authExpires: expiry }\r\n try {\r\n window.localStorage.setItem(\"AuthToken\", JSON.stringify(data));\r\n return true;\r\n } catch (e) {\r\n console.error(e)\r\n return false;\r\n }\r\n};\r\n\r\nexport const getUserDetails = () => {\r\n if (window.localStorage.getItem(\"CurrentUser\") != null)\r\n return JSON.parse(window.localStorage.getItem(\"CurrentUser\"));\r\n else\r\n return null;\r\n};\r\n\r\nexport const setUserDetails = (props) => {\r\n try {\r\n window.localStorage.setItem(\"CurrentUser\", JSON.stringify(props));\r\n return true;\r\n } catch (e) {\r\n console.error(e)\r\n return false;\r\n }\r\n\r\n};\r\n\r\nexport const getUserLevel = () => {\r\n if (window.localStorage.getItem(\"AuthLevel\") != null)\r\n return window.localStorage.getItem(\"AuthLevel\");\r\n else\r\n return null;\r\n};\r\n\r\nexport const setUserLevel = (level) => {\r\n try {\r\n window.localStorage.setItem(\"AuthLevel\", level);\r\n return true;\r\n } catch (e) {\r\n console.error(e)\r\n return false;\r\n }\r\n};\r\n\r\nexport const clearUserDetails = () => {\r\n try {\r\n //window.localStorage.removeItem(\"CurrentUser\");\r\n //window.localStorage.removeItem(\"AuthToken\");\r\n //window.localStorage.removeItem(\"AuthLevel\");\r\n window.localStorage.clear();\r\n window.sessionStorage.clear();\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n\r\n};\r\n\r\nexport const GetUserHubConnection = () => {\r\n try {\r\n return JSON.parse(window.sessionStorage.getItem(\"HubConnection\"));\r\n } catch (e) {\r\n console.error(JSON.parse(e));\r\n }\r\n}\r\n\r\nexport const setUserHubConnection = (connection) => {\r\n try {\r\n window.sessionStorage.setItem(\"HubConnection\", JSON.stringify(connection));\r\n } catch (e) {\r\n console.error(JSON.parse(e));\r\n }\r\n}\r\n\r\nexport const IsUserAuthorized = async () => {\r\n if (getAuthToken()) {\r\n let bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/userlogin/IsUserAuthorized', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n \"Content-Type\": \"application/json\"\r\n }\r\n });\r\n\r\n if (response.ok) {\r\n const status = await response.json();\r\n return status;\r\n }\r\n else {\r\n return false;\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nexport const IsUserAdmin = async () => {\r\n let bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/userlogin/IsAdmin', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const isAdmin = await response.json();\r\n return isAdmin;\r\n }\r\n else {\r\n return false;\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n return false;\r\n }\r\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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, Animation, createElement } from '@syncfusion/ej2-base';\nimport { Browser, isNullOrUndefined as isNOU, getUniqueID, formatUnit, EventHandler } from '@syncfusion/ej2-base';\nimport { Collection, Complex, setStyleAttribute, Event, detach, L10n } from '@syncfusion/ej2-base';\nimport { attributes, extend, closest, compile as templateCompiler, classList, isUndefined } from '@syncfusion/ej2-base';\nimport { Touch, isBlazor, SanitizeHtmlHelper, removeClass } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-toast';\nvar CONTAINER = 'e-toast-container';\nvar TITLE = 'e-toast-title';\nvar WIDTHFULL = 'e-toast-full-width';\nvar CONTENT = 'e-toast-content';\nvar MESSAGE = 'e-toast-message';\nvar ICON = 'e-toast-icon';\nvar PROGRESS = 'e-toast-progress';\nvar ACTIOBUTTONS = 'e-toast-actions';\nvar CLOSEBTN = 'e-toast-close-icon';\nvar RTL = 'e-rtl';\n// eslint-disable-next-line\nvar TOAST_REF_ELEMENT = 'e-toast-ref-element';\nvar TOAST_BLAZOR_HIDDEN = 'e-blazor-toast-hidden';\n/**\n * An object that is used to configure the Toast X Y positions.\n */\nvar ToastPosition = /** @class */ (function (_super) {\n __extends(ToastPosition, _super);\n function ToastPosition() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Left')\n ], ToastPosition.prototype, \"X\", void 0);\n __decorate([\n Property('Top')\n ], ToastPosition.prototype, \"Y\", void 0);\n return ToastPosition;\n}(ChildProperty));\nexport { ToastPosition };\n/**\n * An object that is used to configure the action button model properties and event.\n */\nvar ButtonModelProps = /** @class */ (function (_super) {\n __extends(ButtonModelProps, _super);\n function ButtonModelProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ButtonModelProps.prototype, \"model\", void 0);\n __decorate([\n Property(null)\n ], ButtonModelProps.prototype, \"click\", void 0);\n return ButtonModelProps;\n}(ChildProperty));\nexport { ButtonModelProps };\n/**\n * An object that is used to configure the animation object of Toast.\n */\nvar ToastAnimations = /** @class */ (function (_super) {\n __extends(ToastAnimations, _super);\n function ToastAnimations() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('FadeIn')\n ], ToastAnimations.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], ToastAnimations.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], ToastAnimations.prototype, \"easing\", void 0);\n return ToastAnimations;\n}(ChildProperty));\nexport { ToastAnimations };\n/**\n * An object that is used to configure the show/hide animation settings of Toast.\n */\nvar ToastAnimationSettings = /** @class */ (function (_super) {\n __extends(ToastAnimationSettings, _super);\n function ToastAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'FadeIn', duration: 600, easing: 'ease' }, ToastAnimations)\n ], ToastAnimationSettings.prototype, \"show\", void 0);\n __decorate([\n Complex({ effect: 'FadeOut', duration: 600, easing: 'ease' }, ToastAnimations)\n ], ToastAnimationSettings.prototype, \"hide\", void 0);\n return ToastAnimationSettings;\n}(ChildProperty));\nexport { ToastAnimationSettings };\n/**\n * The Toast is a notification pop-up that showing on desired position which can provide an information to the user.\n * ```html\n *
\n * \n * ```\n */\nvar Toast = /** @class */ (function (_super) {\n __extends(Toast, _super);\n /**\n * Initializes a new instance of the Toast class.\n *\n * @param {ToastModel} options - Specifies Toast model properties as options.\n * @param {HTMLElement} element - Specifies the element that is rendered as a Toast.\n */\n function Toast(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.toastCollection = [];\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets the Component module name.\n *\n * @returns {string} - returns the string\n * @private\n */\n Toast.prototype.getModuleName = function () {\n return 'toast';\n };\n /**\n * Gets the persisted state properties of the Component.\n *\n * @returns {string} - returns the string\n */\n Toast.prototype.getPersistData = function () {\n return this.addOnPersist([]);\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 Toast.prototype.destroy = function () {\n this.hide('All');\n this.element.classList.remove(CONTAINER);\n setStyleAttribute(this.element, { 'position': '', 'z-index': '' });\n if (!isNOU(this.refElement) && !isNOU(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore(this.element, this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (!this.isBlazorServer()) {\n _super.prototype.destroy.call(this);\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Toast.prototype.preRender = function () {\n //There is no event handler\n this.isDevice = Browser.isDevice;\n if (this.width === '300px') {\n this.width = (this.isDevice && screen.width < 768) ? '100%' : '300px';\n }\n if (isNOU(this.target)) {\n this.target = document.body;\n }\n if (this.enableRtl && !this.isBlazorServer()) {\n this.element.classList.add(RTL);\n }\n };\n /**\n * Initialize the component rendering\n *\n * @returns {void}\n * @private\n */\n Toast.prototype.render = function () {\n this.progressObj = [];\n this.intervalId = [];\n this.contentTemplate = null;\n this.toastTemplate = null;\n this.renderComplete();\n this.initRenderClass = this.element.className;\n };\n /**\n * To show Toast element on a document with the relative position.\n *\n * @param {ToastModel} toastObj - To show Toast element on screen.\n * @returns {void}\n\n */\n Toast.prototype.show = function (toastObj) {\n var collectionObj;\n if (!isNOU(toastObj)) {\n this.templateChanges(toastObj);\n collectionObj = JSON.parse(JSON.stringify(toastObj));\n extend(this, this, toastObj);\n }\n if (isNOU(this.toastContainer)) {\n this.toastContainer = this.getContainer();\n var target = typeof (this.target) === 'string' ? document.querySelector(this.target) :\n (typeof (this.target) === 'object' ? this.target : document.body);\n if (isNOU(target)) {\n return;\n }\n if (target.tagName === 'BODY') {\n this.toastContainer.style.position = 'fixed';\n }\n else {\n this.toastContainer.style.position = 'absolute';\n target.style.position = 'relative';\n }\n this.setPositioning(this.position);\n target.appendChild(this.toastContainer);\n }\n if (this.isBlazorServer() && this.element.classList.contains('e-control')) {\n this.isToastModel(toastObj);\n return;\n }\n this.toastEle = this.createElement('div', { className: ROOT, id: getUniqueID('toast') });\n this.setWidthHeight();\n this.setCSSClass(this.cssClass);\n // eslint-disable-next-line\n (isNOU(this.template) || this.template === '') ? this.personalizeToast() : this.templateRendering();\n this.setProgress();\n this.setCloseButton();\n this.setAria();\n this.appendToTarget(toastObj);\n if (this.isDevice && screen.width < 768) {\n new Touch(this.toastEle, { swipe: this.swipeHandler.bind(this) });\n }\n if (!isNOU(collectionObj)) {\n extend(collectionObj, { element: [this.toastEle] }, true);\n this.toastCollection.push(collectionObj);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * @param {string} id - specifies the id\n * @param {ToastModel} toastObj - specifies the model\n * @returns {void}\n * @hidden\n\n * This method applicable for blazor alone.\n */\n Toast.prototype.showToast = function (id, toastObj) {\n this.toastEle = this.element.querySelector('#' + id);\n this.show(toastObj);\n };\n Toast.prototype.isToastModel = function (toastObj) {\n this.toastContainer = this.element;\n this.setPositioning(this.position);\n // eslint-disable-next-line\n var proxy = this;\n if (!isNOU(proxy.element.lastElementChild)) {\n this.setProgress();\n }\n this.setAria();\n this.appendToTarget(toastObj);\n };\n Toast.prototype.swipeHandler = function (e) {\n var toastEle = closest(e.originalEvent.target, '.' + ROOT + ':not(.' + CONTAINER + ')');\n var hideAnimation = this.animation.hide.effect;\n if (!isNOU(toastEle)) {\n if (e.swipeDirection === 'Right') {\n this.animation.hide.effect = 'SlideRightOut';\n this.hideToast('swipe', toastEle);\n }\n else if (e.swipeDirection === 'Left') {\n this.animation.hide.effect = 'SlideLeftOut';\n this.hideToast('swipe', toastEle);\n }\n this.animation.hide.effect = hideAnimation;\n }\n };\n Toast.prototype.templateChanges = function (toastObj) {\n if (!isUndefined(toastObj.content) && !isNOU(this.contentTemplate) && this.content !== toastObj.content) {\n this.clearContentTemplate();\n }\n if (!isUndefined(toastObj.template) && !isNOU(this.toastTemplate) && this.template !== toastObj.template) {\n this.clearToastTemplate();\n }\n };\n Toast.prototype.setCSSClass = function (cssClass) {\n if (cssClass) {\n var split = cssClass.indexOf(',') !== -1 ? ',' : ' ';\n classList(this.toastEle, cssClass.split(split), []);\n if (this.toastContainer) {\n classList(this.toastContainer, cssClass.split(split), []);\n }\n }\n };\n Toast.prototype.setWidthHeight = function () {\n if (this.width === '300px') {\n this.toastEle.style.width = formatUnit(this.width);\n }\n else if (this.width === '100%') {\n this.toastContainer.classList.add(WIDTHFULL);\n }\n else {\n this.toastEle.style.width = formatUnit(this.width);\n this.toastContainer.classList.remove(WIDTHFULL);\n }\n this.toastEle.style.height = formatUnit(this.height);\n };\n Toast.prototype.templateRendering = function () {\n this.fetchEle(this.toastEle, this.template, 'template');\n };\n /**\n * @param {string} value - specifies the string value.\n * @returns {string} - returns the string\n * @hidden\n */\n Toast.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 && !isNOU(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n /**\n * To Hide Toast element on a document.\n * To Hide all toast element when passing 'All'.\n *\n * @param {HTMLElement} element - To Hide Toast element on screen.\n * @returns {void}\n */\n Toast.prototype.hide = function (element) {\n this.hideToast('', element);\n };\n Toast.prototype.hideToast = function (interactionType, element) {\n if (isNOU(this.toastContainer) || this.toastContainer.childElementCount === 0) {\n return;\n }\n if (typeof element === 'string' && element === 'All') {\n for (var i = 0; i < this.toastContainer.childElementCount; i++) {\n this.destroyToast(this.toastContainer.children[i], interactionType);\n }\n return;\n }\n if (isNOU(element)) {\n element = (this.newestOnTop ? this.toastContainer.lastElementChild : this.toastContainer.firstElementChild);\n }\n this.destroyToast(element, interactionType);\n };\n Toast.prototype.fetchEle = function (ele, value, prob) {\n value = typeof (value) === 'string' ? this.sanitizeHelper(value) : value;\n // eslint-disable-next-line\n var templateFn;\n var tempVar;\n var tmpArray;\n var templateProps;\n if (ele.classList.contains(TITLE)) {\n templateProps = this.element.id + 'title';\n }\n else if (ele.classList.contains(CONTENT)) {\n templateProps = this.element.id + 'content';\n }\n else {\n templateProps = this.element.id + 'template';\n }\n // eslint-disable-next-line\n prob === 'content' ? tempVar = this.contentTemplate : tempVar = this.toastTemplate;\n if (!isNOU(tempVar)) {\n ele.appendChild(tempVar.cloneNode(true));\n return ele;\n }\n try {\n if (typeof value !== 'function' && document.querySelectorAll(value).length > 0) {\n var elem = null;\n if (prob !== 'title') {\n elem = document.querySelector(value);\n ele.appendChild(elem);\n elem.style.display = '';\n }\n var clo = isNOU(elem) ? tempVar : elem.cloneNode(true);\n // eslint-disable-next-line\n prob === 'content' ? this.contentTemplate = clo : this.toastTemplate = clo;\n }\n else {\n templateFn = templateCompiler(value);\n }\n }\n catch (e) {\n templateFn = templateCompiler(value);\n // eslint-disable-next-line\n var templateValue = value;\n }\n if (!isNOU(templateFn)) {\n if (!this.isBlazorServer()) {\n tmpArray = templateFn({}, this, prob, null, true);\n }\n else {\n var isString = true;\n tmpArray = templateFn({}, this, prob, templateProps, isString);\n }\n }\n if (!isNOU(tmpArray) && tmpArray.length > 0 && !(isNOU(tmpArray[0].tagName) && tmpArray.length === 1)) {\n [].slice.call(tmpArray).forEach(function (el) {\n if (!isNOU(el.tagName)) {\n el.style.display = '';\n }\n ele.appendChild(el);\n });\n }\n else if (typeof value !== 'function' && ele.childElementCount === 0) {\n ele.innerHTML = value;\n }\n return ele;\n };\n Toast.prototype.clearProgress = function (intervalId) {\n if (!isNOU(this.intervalId[intervalId])) {\n clearInterval(this.intervalId[intervalId]);\n delete this.intervalId[intervalId];\n }\n if (!isNOU(this.progressObj[intervalId])) {\n clearInterval(this.progressObj[intervalId].intervalId);\n delete this.progressObj[intervalId];\n }\n };\n Toast.prototype.removeToastContainer = function (isClosed) {\n if (isClosed && this.toastContainer.classList.contains('e-toast-util')) {\n detach(this.toastContainer);\n }\n };\n Toast.prototype.clearContainerPos = function (isClosed) {\n var _this = this;\n if (this.isBlazorServer()) {\n this.toastContainer = null;\n return;\n }\n if (this.customPosition) {\n setStyleAttribute(this.toastContainer, { 'left': '', 'top': '' });\n this.removeToastContainer(isClosed);\n this.toastContainer = null;\n this.customPosition = false;\n }\n else {\n [ROOT + '-top-left',\n ROOT + '-top-right',\n ROOT + '-bottom-left',\n ROOT + '-bottom-right',\n ROOT + '-bottom-center',\n ROOT + '-top-center',\n ROOT + '-full-width'].forEach(function (pos) {\n if (!isNOU(_this.toastContainer) && _this.toastContainer.classList.contains(pos)) {\n _this.toastContainer.classList.remove(pos);\n }\n });\n this.removeToastContainer(isClosed);\n this.toastContainer = null;\n }\n if (!isNOU(this.contentTemplate)) {\n this.clearContentTemplate();\n }\n if (!isNOU(this.toastTemplate)) {\n this.clearToastTemplate();\n }\n };\n Toast.prototype.clearContentTemplate = function () {\n this.contentTemplate.style.display = 'none';\n document.body.appendChild(this.contentTemplate);\n this.contentTemplate = null;\n };\n Toast.prototype.clearToastTemplate = function () {\n this.toastTemplate.style.display = 'none';\n document.body.appendChild(this.toastTemplate);\n this.toastTemplate = null;\n };\n Toast.prototype.isBlazorServer = function () {\n return (isBlazor() && this.isServerRendered);\n };\n Toast.prototype.destroyToast = function (toastEle, interactionType) {\n var _this = this;\n var toastObj;\n for (var i = 0; i < this.toastCollection.length; i++) {\n if (this.toastCollection[i].element[0] === toastEle) {\n toastObj = this.toastCollection[i];\n this.toastCollection.splice(i, 1);\n }\n }\n var toastBeforeClose = {\n options: this,\n cancel: false,\n type: interactionType,\n element: toastEle,\n toastContainer: this.toastContainer\n };\n var hideAnimate = this.animation.hide;\n var animate = {\n duration: hideAnimate.duration, name: hideAnimate.effect, timingFunction: hideAnimate.easing\n };\n var intervalId = parseInt(toastEle.id.split('toast_')[1], 10);\n var toastClose = this.isBlazorServer() ? {\n options: toastObj,\n toastContainer: this.toastContainer\n } : {\n options: toastObj,\n toastContainer: this.toastContainer,\n toastObj: this\n };\n this.trigger('beforeClose', toastBeforeClose, function (toastBeforeCloseArgs) {\n if (!toastBeforeCloseArgs.cancel) {\n if (!isNOU(_this.progressObj[intervalId]) && !isNOU(toastEle.querySelector('.' + PROGRESS))) {\n _this.progressObj[intervalId].progressEle.style.width = '0%';\n }\n animate.end = function () {\n _this.clearProgress(intervalId);\n if (!_this.isBlazorServer() || isNOU(toastObj)) {\n detach(toastEle);\n }\n _this.trigger('close', toastClose);\n if (_this.toastContainer.childElementCount === 0) {\n _this.clearContainerPos(true);\n }\n hideAnimate = null;\n animate = null;\n };\n new Animation(animate).animate(toastEle);\n }\n });\n };\n Toast.prototype.personalizeToast = function () {\n this.setIcon();\n this.setTitle();\n this.setContent();\n this.actionButtons();\n };\n Toast.prototype.setAria = function () {\n attributes(this.toastEle, { 'role': 'alert' });\n };\n Toast.prototype.setPositioning = function (pos) {\n if (this.isBlazorServer()) {\n return;\n }\n if (!isNaN(parseFloat(pos.X)) || !isNaN(parseFloat(pos.Y))) {\n this.customPosition = true;\n setStyleAttribute(this.toastContainer, { 'left': formatUnit(pos.X), 'top': formatUnit(pos.Y) });\n }\n else {\n this.toastContainer.classList.add(ROOT + '-' + pos.Y.toString().toLowerCase() + '-' + pos.X.toString().toLowerCase());\n }\n };\n Toast.prototype.setCloseButton = function () {\n if (!this.showCloseButton) {\n return;\n }\n // eslint-disable-next-line\n var localeText = { close: 'Close' };\n this.l10n = new L10n('toast', localeText, this.locale);\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n var closeBtn = this.createElement('div', { className: CLOSEBTN + ' e-icons ', attrs: { tabindex: '0', 'aria-label': closeIconTitle, 'role': 'button' } });\n this.toastEle.classList.add('e-toast-header-close-icon');\n this.toastEle.appendChild(closeBtn);\n };\n Toast.prototype.setProgress = function () {\n if (this.timeOut > 0) {\n var id = parseInt(this.toastEle.id.split('toast_')[1], 10);\n this.intervalId[id] = window.setTimeout(this.destroyToast.bind(this, this.toastEle), this.timeOut);\n this.progressObj[id] = { hideEta: null, intervalId: null, maxHideTime: null,\n element: null, timeOutId: null, progressEle: null };\n this.progressObj[id].maxHideTime = parseFloat(this.timeOut + '');\n this.progressObj[id].hideEta = new Date().getTime() + this.progressObj[id].maxHideTime;\n this.progressObj[id].element = this.toastEle;\n if (this.extendedTimeout > 0) {\n EventHandler.add(this.toastEle, 'mouseover', this.toastHoverAction.bind(this, id));\n EventHandler.add(this.toastEle, 'mouseleave', this.delayedToastProgress.bind(this, id));\n this.progressObj[id].timeOutId = this.intervalId[id];\n }\n if (this.showProgressBar) {\n this.progressBarEle = this.createElement('div', { className: PROGRESS });\n this.toastEle.insertBefore(this.progressBarEle, this.toastEle.children[0]);\n // eslint-disable-next-line max-len\n this.progressObj[id].intervalId = setInterval(this.updateProgressBar.bind(this, this.progressObj[id]), 10);\n this.progressObj[id].progressEle = this.progressBarEle;\n }\n }\n };\n Toast.prototype.toastHoverAction = function (id) {\n clearTimeout(this.progressObj[id].timeOutId);\n clearInterval(this.progressObj[id].intervalId);\n this.progressObj[id].hideEta = 0;\n var toastEle = this.progressObj[id].element;\n if (!isNOU(toastEle.querySelector('.' + PROGRESS))) {\n this.progressObj[id].progressEle.style.width = '0%';\n }\n };\n Toast.prototype.delayedToastProgress = function (id) {\n var progress = this.progressObj[id];\n var toastEle = progress.element;\n progress.timeOutId = window.setTimeout(this.destroyToast.bind(this, toastEle), this.extendedTimeout);\n progress.maxHideTime = parseFloat(this.extendedTimeout + '');\n progress.hideEta = new Date().getTime() + progress.maxHideTime;\n if (!isNOU(toastEle.querySelector('.' + PROGRESS))) {\n progress.intervalId = setInterval(this.updateProgressBar.bind(this, progress), 10);\n }\n };\n Toast.prototype.updateProgressBar = function (progressObj) {\n var percentage = ((progressObj.hideEta - (new Date().getTime())) / progressObj.maxHideTime) * 100;\n percentage = this.progressDirection === 'Ltr' ? 100 - percentage : percentage;\n progressObj.progressEle.style.width = percentage + '%';\n };\n Toast.prototype.setIcon = function () {\n if (isNOU(this.icon) || this.icon.length === 0) {\n return;\n }\n var iconEle = this.createElement('div', { className: ICON + ' e-icons ' + this.icon });\n this.toastEle.classList.add('e-toast-header-icon');\n this.toastEle.appendChild(iconEle);\n };\n Toast.prototype.setTitle = function () {\n if (isNOU(this.title)) {\n return;\n }\n var titleEle = this.createElement('div', { className: TITLE });\n titleEle = this.fetchEle(titleEle, this.title, 'title');\n var msgContainer = this.createElement('div', { className: MESSAGE });\n msgContainer.appendChild(titleEle);\n this.toastEle.appendChild(msgContainer);\n };\n Toast.prototype.setContent = function () {\n var contentEle = this.createElement('div', { className: CONTENT });\n var ele = this.element;\n if (isNOU(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s/g, '') !== '';\n if ((ele.children.length > 0 || isContent) && !(ele.firstElementChild && ele.firstElementChild.classList.contains(ROOT))) {\n this.innerEle = document.createDocumentFragment();\n var tempEle_1 = this.createElement('div');\n while (ele.childNodes.length !== 0) {\n this.innerEle.appendChild(this.element.childNodes[0]);\n }\n contentEle.appendChild(this.innerEle);\n [].slice.call(contentEle.children).forEach(function (ele) {\n tempEle_1.appendChild(ele.cloneNode(true));\n });\n this.content = tempEle_1;\n this.appendMessageContainer(contentEle);\n }\n }\n else {\n if (typeof (this.content) === 'object' && !isNOU(this.content.tagName)) {\n contentEle.appendChild(this.content);\n this.content = this.content.cloneNode(true);\n this.appendMessageContainer(contentEle);\n }\n else {\n contentEle = this.fetchEle(contentEle, this.content, 'content');\n this.appendMessageContainer(contentEle);\n }\n }\n };\n Toast.prototype.appendMessageContainer = function (element) {\n if (this.toastEle.querySelectorAll('.' + MESSAGE).length > 0) {\n this.toastEle.querySelector('.' + MESSAGE).appendChild(element);\n }\n else {\n var msgContainer = this.createElement('div', { className: MESSAGE });\n msgContainer.appendChild(element);\n this.toastEle.appendChild(msgContainer);\n }\n };\n Toast.prototype.actionButtons = function () {\n var _this = this;\n var actionBtnContainer = this.createElement('div', { className: ACTIOBUTTONS });\n [].slice.call(this.buttons).forEach(function (actionBtn) {\n if (isNOU(actionBtn.model)) {\n return;\n }\n var btnDom = _this.createElement('button');\n btnDom.setAttribute('type', 'button');\n if (isNOU(actionBtn.model.cssClass) || actionBtn.model.cssClass.length === 0) {\n actionBtn.model.cssClass = 'e-primary' + ' ' + _this.cssClass;\n }\n btnDom.classList.add('e-small');\n new Button(actionBtn.model, btnDom);\n if (!isNOU(actionBtn.click) && typeof (actionBtn.click) === 'function') {\n EventHandler.add(btnDom, 'click', actionBtn.click);\n }\n actionBtnContainer.appendChild(btnDom);\n });\n if (actionBtnContainer.childElementCount > 0) {\n this.appendMessageContainer(actionBtnContainer);\n }\n };\n Toast.prototype.appendToTarget = function (toastObj) {\n var _this = this;\n var toastBeforeOpen = this.isBlazorServer() ? {\n options: toastObj,\n element: this.toastEle,\n cancel: false\n } : {\n options: toastObj,\n toastObj: this,\n element: this.toastEle,\n cancel: false\n };\n this.trigger('beforeOpen', toastBeforeOpen, function (toastBeforeOpenArgs) {\n if (!toastBeforeOpenArgs.cancel) {\n if (!_this.isBlazorServer()) {\n _this.toastEle.style.display = 'none';\n }\n if (_this.newestOnTop && _this.toastContainer.childElementCount !== 0) {\n _this.toastContainer.insertBefore(_this.toastEle, _this.toastContainer.children[0]);\n }\n else if (!_this.isBlazorServer()) {\n _this.toastContainer.appendChild(_this.toastEle);\n }\n removeClass([_this.toastEle], TOAST_BLAZOR_HIDDEN);\n EventHandler.add(_this.toastEle, 'click', _this.clickHandler, _this);\n EventHandler.add(_this.toastEle, 'keydown', _this.keyDownHandler, _this);\n _this.toastContainer.style.zIndex = getZindexPartial(_this.toastContainer) + '';\n _this.displayToast(_this.toastEle, toastObj);\n }\n else if (_this.isBlazorServer()) {\n var intervalId = parseInt(_this.toastEle.id.split('toast_')[1], 10);\n _this.clearProgress(intervalId);\n detach(_this.toastEle);\n if (_this.toastContainer.childElementCount === 0) {\n _this.clearContainerPos();\n }\n }\n });\n };\n Toast.prototype.clickHandler = function (e) {\n var _this = this;\n if (!this.isBlazorServer()) {\n e.stopPropagation();\n }\n var target = e.target;\n var toastEle = closest(target, '.' + ROOT);\n var clickArgs = this.isBlazorServer() ? {\n element: toastEle, cancel: false, clickToClose: false, originalEvent: e\n } : {\n element: toastEle, cancel: false, clickToClose: false, originalEvent: e, toastObj: this\n };\n var isCloseIcon = target.classList.contains(CLOSEBTN);\n this.trigger('click', clickArgs, function (toastClickArgs) {\n if ((isCloseIcon && !toastClickArgs.cancel) || toastClickArgs.clickToClose) {\n _this.destroyToast(toastEle, 'click');\n }\n });\n };\n Toast.prototype.keyDownHandler = function (e) {\n if (e.target.classList.contains(CLOSEBTN) &&\n (e.keyCode === 13 || e.keyCode === 32)) {\n var target = e.target;\n var toastEle = closest(target, '.' + ROOT);\n this.destroyToast(toastEle, 'key');\n }\n };\n Toast.prototype.displayToast = function (toastEle, toastObj) {\n var _this = this;\n var showAnimate = this.animation.show;\n var animate = {\n duration: showAnimate.duration, name: showAnimate.effect, timingFunction: showAnimate.easing\n };\n var toastOpen = this.isBlazorServer() ? {\n options: toastObj,\n element: this.toastEle\n } : {\n options: toastObj,\n toastObj: this,\n element: this.toastEle\n };\n animate.begin = function () {\n toastEle.style.display = '';\n };\n animate.end = function () {\n _this.trigger('open', toastOpen);\n };\n new Animation(animate).animate(toastEle);\n };\n Toast.prototype.getContainer = function () {\n this.element.classList.add(CONTAINER);\n return this.element;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ToastModel} newProp - specifies the new property\n * @param {ToastModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n Toast.prototype.onPropertyChanged = function (newProp, oldProp) {\n var container = this.element;\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 // eslint-disable-next-line\n newProp.enableRtl ? container.classList.add(RTL) : container.classList.remove(RTL);\n break;\n }\n }\n };\n __decorate([\n Property('300px')\n ], Toast.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toast.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"title\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Toast.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"icon\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Toast.prototype, \"newestOnTop\", void 0);\n __decorate([\n Property(false)\n ], Toast.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property(false)\n ], Toast.prototype, \"showProgressBar\", void 0);\n __decorate([\n Property(5000)\n ], Toast.prototype, \"timeOut\", void 0);\n __decorate([\n Property('Rtl')\n ], Toast.prototype, \"progressDirection\", void 0);\n __decorate([\n Property(1000)\n ], Toast.prototype, \"extendedTimeout\", void 0);\n __decorate([\n Complex({}, ToastAnimationSettings)\n ], Toast.prototype, \"animation\", void 0);\n __decorate([\n Complex({}, ToastPosition)\n ], Toast.prototype, \"position\", void 0);\n __decorate([\n Collection([{}], ButtonModelProps)\n ], Toast.prototype, \"buttons\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"click\", void 0);\n Toast = __decorate([\n NotifyPropertyChanges\n ], Toast);\n return Toast;\n}(Component));\nexport { Toast };\n/**\n * Base for creating Toast through utility method.\n */\n// eslint-disable-next-line\nexport var ToastUtility;\n(function (ToastUtility) {\n /**\n * To display a simple toast using the 'ToastUtility' with 'ToastModal' or\n * as string with toast content, type, timeOut.\n * ```\n * Eg : ToastUtility.show('Toast Content Message', 'Information', 7000);\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param { ToastModel | string } content - Specifies the toast modal or the content of the Toast.\n * @param {string} type - Specifies the type of toast.\n * @param { number } timeOut - Specifies the timeOut of the toast.\n * @returns {Toast} - returns the element\n */\n function show(content, type, timeOut) {\n var toastContainerElement;\n if (document.querySelector('.' + CONTAINER)) {\n toastContainerElement = document.querySelector('.' + CONTAINER);\n }\n else {\n toastContainerElement = createElement('div', { 'className': ROOT + ' ' + CONTAINER + ' e-toast-util' });\n document.body.appendChild(toastContainerElement);\n }\n var untilToastsModel;\n if (typeof (content) === 'string') {\n var cssClass = void 0;\n var icon = void 0;\n if (!isNOU(type)) {\n switch (type) {\n case 'Warning':\n cssClass = 'e-toast-warning';\n icon = 'e-toast-warning-icon';\n break;\n case 'Success':\n cssClass = 'e-toast-success';\n icon = 'e-toast-success-icon';\n break;\n case 'Error':\n cssClass = 'e-toast-danger';\n icon = 'e-toast-error-icon';\n break;\n case 'Information':\n cssClass = 'e-toast-info';\n icon = 'e-toast-info-icon';\n break;\n }\n }\n else {\n cssClass = '';\n icon = '';\n }\n untilToastsModel = {\n content: content,\n cssClass: cssClass,\n icon: icon,\n timeOut: !isNOU(timeOut) ? timeOut : 5000\n };\n }\n else {\n untilToastsModel = content;\n }\n var toastObj = new Toast(untilToastsModel);\n toastObj.appendTo(toastContainerElement);\n toastObj.show();\n return toastObj;\n }\n ToastUtility.show = show;\n})(ToastUtility || (ToastUtility = {}));\n","import moment from \"moment\"\r\nimport ExcelJS from 'exceljs'\r\nimport { saveAs } from 'file-saver';\r\n\r\nexport const toIsoDateTime = (value) => {\r\n if (value && value !== \"\") {\r\n let converted;\r\n if (value.match(/(\\d\\d)\\/(\\d\\d)\\/(\\d\\d\\d\\d) (\\d\\d):(\\d\\d)/g))\r\n converted = moment(value, \"DD/MM/YYYY HH:mm\").format('YYYY-MM-DDTHH:mm:ssZ');\r\n else\r\n converted = moment(value, \"YYYY-MM-DDTHH:mm:ssZ\").format(\"YYYY-MM-DDTHH:mm:ssZ\");\r\n return converted;\r\n }\r\n else return \"\";\r\n}\r\n\r\nexport const ChangeFormat = (value, format) => {\r\n if (!value || value === \"\")\r\n return \"\";\r\n else\r\n return moment(value).format(format);\r\n}\r\n\r\nexport const getImage = (Content) => {\r\n return \"data:image/png;base64,\" + Content;\r\n}\r\n\r\nexport const ArraysHaveCommonItems = (Arr1, Arr2) => {\r\n const CommonItems = Arr1.filter(item => Arr2.includes(item));\r\n return CommonItems.length > 0;\r\n}\r\n\r\nexport const capitalizeObjectKeys = (obj) => {\r\n const newObj = {};\r\n\r\n for (const key in obj) {\r\n if (Object.hasOwnProperty.call(obj, key)) {\r\n const capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);\r\n newObj[capitalizedKey] = obj[key];\r\n }\r\n }\r\n\r\n return newObj;\r\n}\r\n\r\nexport function handleExportClick(title, subcategories, brands) {\r\n\r\n let newSub = subcategories.map(item => (item.title + \" - \" + item.id)).sort((a, b) => {\r\n if (a > b) {\r\n return 1\r\n } else {\r\n return -1\r\n }\r\n });\r\n let newBrands = brands.map(item => (item.title + \" - \" + item.id)).sort((a, b) => {\r\n if (a > b) {\r\n return 1\r\n } else {\r\n return -1\r\n }\r\n });\r\n //console.log(newSub, newBrands)\r\n const workbook = new ExcelJS.Workbook()\r\n const worksheet = workbook.addWorksheet('Sheet1')\r\n worksheet.columns = [\r\n { header: 'Title *', key: 'Title', width: 40 },\r\n { header: 'Slug *', key: 'Slug', width: 20 },\r\n { header: 'SKU *', key: 'SKU', width: 20 },\r\n { header: 'Brand *', key: 'Brand', width: 20 },\r\n { header: 'GTIN', key: 'GTIN', width: 20 },\r\n { header: 'Subcategories', key: 'Subcategories', width: 20 },\r\n { header: 'ShortDescription', key: 'ShortDescription', width: 30 },\r\n { header: 'Weight *', key: 'Weight', width: 10 },\r\n { header: 'Height *', key: 'Height', width: 10 },\r\n { header: 'Length *', key: 'Length', width: 10 },\r\n { header: 'Width *', key: 'Width', width: 10 },\r\n { header: 'Price *', key: 'Price', width: 15 },\r\n { header: 'Stock *', key: 'Stock', width: 15 },\r\n { header: 'StockCount *', key: 'StockCount', width: 15 },\r\n { header: 'LowStockAmount', key: 'LowStockAmount', width: 15 },\r\n { header: 'SPrice', key: 'SPrice', width: 15 },\r\n { header: 'DateSPriceStarts', key: 'DateSPriceStarts', width: 15 },\r\n { header: 'DateSPriceEnds', key: 'DateSPriceEnds', width: 15 },\r\n { header: 'OutOfStock', key: 'OutOfStock', width: 15 },\r\n { header: 'Ongoing', key: 'Ongoing', width: 15 },\r\n { header: 'About', key: 'About', width: 30 },\r\n { header: 'AdditionalInfo', key: 'AdditionalInfo', width: 30 },\r\n { header: 'Images', key: 'Images', width: 50 },\r\n { header: 'Tags', key: 'Tags', width: 100 },\r\n ];\r\n\r\n for (let i = 2; i <= 500; i++) {\r\n worksheet.getCell(`D${i}`).dataValidation = {\r\n type: 'list',\r\n allowBlank: true,\r\n formulae: [`=Lists!$A$2:$A$${newBrands.length + 1}`]\r\n }\r\n\r\n worksheet.getCell(`F${i}`).dataValidation = {\r\n type: 'list',\r\n allowBlank: true,\r\n formulae: [`=Lists!$B$2:$B$${newSub.length + 1}`]\r\n }\r\n\r\n };\r\n\r\n const listsWorksheet = workbook.addWorksheet('Lists');\r\n listsWorksheet.columns = [\r\n { header: 'Brand Name', key: 'BrandName', width: 20 },\r\n { header: 'Subcategory Name', key: 'SubcategoryName', width: 20 },\r\n ];\r\n const arr = []\r\n if (newBrands.length > newSub.length) {\r\n for (let i = 0; i <= newBrands.length; i++) {\r\n arr.push({ BrandName: newBrands[i], SubcategoryName: newSub[i] ? newSub[i] : null })\r\n }\r\n } else {\r\n for (let i = 0; i <= newSub.length; i++) {\r\n arr.push({ BrandName: newBrands[i] ? newBrands[i] : null, SubcategoryName: newSub[i] })\r\n }\r\n }\r\n\r\n arr.forEach(item => {\r\n listsWorksheet.addRow(item);\r\n });\r\n\r\n workbook.xlsx.writeBuffer().then((buffer) => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n })\r\n saveAs(blob, `${title} (${new Date().toISOString().split(\"T\")[0]}).xlsx`);\r\n\r\n })\r\n}\r\n\r\nexport function exportProducts(title, data) {\r\n //console.log(newSub, newBrands)\r\n const workbook = new ExcelJS.Workbook()\r\n const worksheet = workbook.addWorksheet('Products')\r\n worksheet.columns = [\r\n { header: 'Title', key: 'title', width: 40 },\r\n { header: 'Slug', key: 'slug', width: 20 },\r\n { header: 'SKU', key: 'sku', width: 20 },\r\n { header: 'Brand', key: 'productBrandId', width: 20 },\r\n { header: 'GTIN', key: 'gtin', width: 20 },\r\n { header: 'Subcategories', key: 'selectedCategories', width: 20 },\r\n { header: 'ShortDescription', key: 'shortDescription', width: 30 },\r\n { header: 'Weight', key: 'weight', width: 10 },\r\n { header: 'Height', key: 'height', width: 10 },\r\n { header: 'Length', key: 'length', width: 10 },\r\n { header: 'Width', key: 'width', width: 10 },\r\n { header: 'Price', key: 'price', width: 15 },\r\n { header: 'Stock', key: 'stock', width: 15 },\r\n { header: 'StockCount', key: 'stockCount', width: 15 },\r\n { header: 'LowStockAmount', key: 'lowStockAmount', width: 15 },\r\n { header: 'SPrice', key: 'sPrice', width: 15 },\r\n { header: 'DateSPriceStarts', key: 'dateSPriceStarts', width: 15 },\r\n { header: 'DateSPriceEnds', key: 'dateSPriceEnds', width: 15 },\r\n { header: 'OutOfStock', key: 'outOfStock', width: 15 },\r\n { header: 'Ongoing', key: 'ongoing', width: 15 },\r\n { header: 'About', key: 'about', width: 30 },\r\n { header: 'AdditionalInfo', key: 'additionalInfo', width: 30 },\r\n { header: 'Images', key: 'images', width: 50 },\r\n { header: 'Tags', key: 'tags', width: 100 },\r\n { header: 'Status', key: 'status', width: 20 },\r\n { header: 'Reviews', key: 'reviews', width: 30 },\r\n { header: 'AvgRating', key: 'avgRating', width: 30 },\r\n { header: 'AddedBy', key: 'addedBy', width: 30 },\r\n { header: 'ModifiedBy', key: 'modifiedBy', width: 30 },\r\n { header: 'DateModified', key: 'dateAdded', width: 50 },\r\n { header: 'DateModified', key: 'dateModified', width: 50 },\r\n ];\r\n\r\n worksheet.addRows(data)\r\n\r\n workbook.xlsx.writeBuffer().then((buffer) => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n })\r\n saveAs(blob, `${title} (${new Date().toISOString().split(\"T\")[0]}).xlsx`);\r\n\r\n })\r\n}\r\n\r\nexport const getProductPrice = (SaleStart, SaleEnd, SalePrice, NormalPrice) => {\r\n if (SaleStart && SaleEnd && SalePrice > 0) {\r\n //return SalePrice;\r\n const today = moment().startOf('day'); // Get the current date (without time)\r\n const saleStartDate = moment(SaleStart).startOf('day'); // Get the SaleStart date (without time)\r\n const saleEndDate = moment(SaleEnd).endOf('day'); // Get the SaleEnd date (including entire day)\r\n\r\n // Check if today is between the sale start and end dates\r\n if (today.isBetween(saleStartDate, saleEndDate, null, '[]')) {\r\n return SalePrice;\r\n } else {\r\n return NormalPrice;\r\n }\r\n } else {\r\n return NormalPrice;\r\n }\r\n}\r\n\r\nexport const ConfirmDialogStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n}\r\n\r\nexport const CommandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n];\r\n\r\nexport const SearchGridToolbar = ['Search'];\r\n\r\nexport const FullToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', 'StrikeThrough',\r\n 'FontName', 'FontSize', 'FontColor', 'BackgroundColor',\r\n 'LowerCase', 'UpperCase', '|', 'Formats', 'Alignments', 'OrderedList', 'UnorderedList',\r\n 'Outdent', 'Indent', '|', 'CreateLink', 'Image', '|', 'ClearFormat',\r\n 'SourceCode', 'FullScreen', '|', 'Undo', 'Redo'\r\n ],\r\n type: 'Expand'\r\n};\r\n\r\nexport const SimpleToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', '|', 'ClearFormat', 'Undo', 'Redo', '|', 'SourceCode'],\r\n type: 'Expand'\r\n};\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable no-unused-vars */\r\n/* eslint-disable eqeqeq */\r\n/* eslint-disable array-callback-return */\r\nimport { useEffect } from \"react\";\r\nimport { createContext, useState } from \"react\";\r\nimport { useLocation, useNavigate } from \"react-router-dom\";\r\nimport { getAuthToken, getUserDetails } from \"./authentication\";\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { ArraysHaveCommonItems, capitalizeObjectKeys } from \"./Global\";\r\nimport { CanAddActivity, setAddingActivity } from \"./Lookup\";\r\nimport ReactGA from \"react-ga4\";\r\n\r\nexport const Context = createContext();\r\n\r\nconst AppContext = ({ children }) => {\r\n const userId = getUserDetails()?.id;\r\n //console.log(getUserDetails())\r\n const CartObject = {\r\n id: 0,\r\n userId: userId ? userId : 0,\r\n cartId: \"\",\r\n orderType: 0,\r\n dateStarted: new Date(),\r\n dateSubmitted: null,\r\n dateComplete: null,\r\n numItems: 0,\r\n orderId: 0,\r\n amount: 0,\r\n deliveryFee: 0,\r\n vat: 0,\r\n promoCode: 0,\r\n useCredit: true,\r\n stockCheck: true,\r\n status: 0,\r\n deliveryAddressId: 0,\r\n instructions: \"\",\r\n statusMessage: \"\",\r\n paymentMessage: \"\",\r\n paymentMeta: \"\",\r\n deliveryMessage: \"\",\r\n deliveryMeta: \"\",\r\n cartItems: []\r\n }\r\n //const [categories, setCategories] = useState();\r\n const [products, setProducts] = useState([]);\r\n const [allProducts, setAllProducts] = useState([]);\r\n const [categories, setCategories] = useState([]);\r\n const [subcategories, setSubcategories] = useState([]);\r\n const [brands, setBrands] = useState([]);\r\n const [orders, setOrders] = useState([]);\r\n const [oldItems, setOldItems] = useState([]);\r\n const [userAddress, setUserAddress] = useState([]);\r\n const [userAddresses, setUserAddresses] = useState([]);\r\n const [currentPromotions, setCurrentPromotions] = useState([]);\r\n const [heroData, setHeroData] = useState([]);\r\n const [reviews, setReviews] = useState([]);\r\n const [promoCode, setPromoCode] = useState([]);\r\n const [showCart, setShowCart] = useState(false);\r\n const [appliedCoupon, setAppliedCoupon] = useState(JSON.parse(localStorage.getItem('coupon')) || null);\r\n const [couponError, setCouponError] = useState('');\r\n const [adminAppliedCoupon, setAdminAppliedCoupon] = useState(null);\r\n const [adminCouponError, setAdminCouponError] = useState('');\r\n const [cart, setCart] = useState(JSON.parse(localStorage.getItem('cart')) || CartObject);\r\n const [cartItems, setCartItems] = useState(CartObject.cartItems);\r\n const [cartCount, setCartCount] = useState(0);\r\n const [cartSubTotal, setCartSubTotal] = useState(0);\r\n const [cartTotal, setCartTotal] = useState(0);\r\n const [discountAmount, setDiscountAmount] = useState(0);\r\n const [wishlistItems, setWishlistItems] = useState(JSON.parse(localStorage.getItem('wishlist')) || []);\r\n const [selectedBrands, setSelectedBrands] = useState(JSON.parse(localStorage.getItem('selectedBrands1')) || []);\r\n const [wishCount, setWishCount] = useState(0);\r\n const location = useLocation();\r\n const navigate = useNavigate();\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, [location]);\r\n\r\n useEffect(() => {\r\n const storedCart = JSON.parse(localStorage.getItem('cart'));\r\n if (storedCart) {\r\n setCartItems(storedCart.cartItems);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n let count = 0;\r\n cartItems?.filter(p => p.product).map((item) => (count += item.quantity));\r\n setCartCount(count);\r\n\r\n setWishCount(wishlistItems.length);\r\n\r\n let subTotal = 0;\r\n cartItems && cartItems.map(\r\n (item) =>\r\n (subTotal += item.price * item.quantity)\r\n );\r\n //const total = subTotal - discountAmount;\r\n setCartSubTotal(subTotal);\r\n }, [cartItems]);\r\n\r\n const applyDiscount = (subTotal, discountAmount) => {\r\n return (subTotal - discountAmount);\r\n };\r\n\r\n const getProducts = async () => {\r\n try {\r\n const response = await fetch('api/products/getallproducts', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n let data = await response.json();\r\n data = data?.map(item => ({ ...item, filterName: `${item.title} (${item.sku})` }));\r\n setProducts(data);\r\n return data;\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n console.log(response.status)\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const getAllProducts = async () => {\r\n var bearer = 'Bearer ' + getAuthToken();\r\n const userId = getUserDetails()\r\n try {\r\n const response = await fetch('api/products', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n setAllProducts(data);\r\n return data;\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n console.log(response.status)\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const AddProductActivity = async (ProductId, Type) => {\r\n try {\r\n if (CanAddActivity()) {\r\n setAddingActivity(1);\r\n\r\n const data = {\r\n ActivityBy: getUserDetails()?.id,\r\n ProductId,\r\n Type\r\n }\r\n\r\n const response = await fetch(`api/productactivities`, {\r\n method: \"POST\",\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n\r\n if (response.ok) {\r\n console.log(\"Product activity successfully added!\");\r\n setTimeout(() => {\r\n setAddingActivity(0);\r\n }, 10000)\r\n }\r\n else {\r\n console.log(response.status + \":\", response.statusText);\r\n setTimeout(() => {\r\n setAddingActivity(0);\r\n }, 10000)\r\n }\r\n\r\n setTimeout(() => {\r\n setAddingActivity(0);\r\n }, 10000)\r\n\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n setTimeout(() => {\r\n setAddingActivity(0);\r\n }, 10000)\r\n }\r\n }\r\n\r\n const getUserAddress = async (id) => {\r\n var bearer = 'Bearer ' + getAuthToken();\r\n const userId = getUserDetails()\r\n try {\r\n const response = await fetch('api/useraddress/getallforuser/' + userId.id, {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n const address = data.find(item => item.id === parseInt(id, 10));\r\n console.log(data);\r\n console.log(address);\r\n setUserAddress(address);\r\n setUserAddresses(data);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n console.log(response.status)\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const getUserAddressAdmin = async (id) => {\r\n var bearer = 'Bearer ' + getAuthToken();\r\n const userId = getUserDetails()\r\n try {\r\n const response = await fetch('api/useraddress/' + id, {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n //console.log(data, userId.oldId, userId.id)\r\n //const newData = data.filter(item => userId.oldId && item.oldId == userId.oldId || item.userId == userId.id)\r\n //const address = data.find(item => item.id == id)\r\n //setUserAddress(address);\r\n //setUserAddresses(newData);\r\n //setUserAddresses(data);\r\n return data\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n console.log(response.status)\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const getUpcomingPromotions = async () => {\r\n let date = new Date().toISOString();\r\n try {\r\n const response = await fetch('api/promotions/getallupcoming/' + date, {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n setCurrentPromotions(data);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n console.log(response.status)\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const getHomeBanners = async () => {\r\n try {\r\n const response = await fetch('api/banners/gethomebanners', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n setHeroData(data);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n console.log(response.status)\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const getAllOrders = async (customerId) => {\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/cart/getallorders/' + customerId, {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n setOrders(data);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n navigate(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const getOldCartItems = async (cartId, callback) => {\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/cartitems/getallolditems/' + cartId, {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n //console.log(data)\r\n setOldItems(data);\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n navigate(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const processPayment = async (cartId, addressId = 0, instructions) => {\r\n var bearer = 'Bearer ' + getAuthToken();\r\n if (appliedCoupon && appliedCoupon?.id) {\r\n cart.promoCode = appliedCoupon.id;\r\n await postToCart(cart);\r\n }\r\n if (!instructions) instructions = null;\r\n try {\r\n const response = await fetch(`api/cart/ProcessPayment/${cartId}/${getUserDetails()?.id}/${addressId}/${instructions}`, {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n sendCustomEvent(\"Payment\", \"Initialising Payment\", `${getUserDetails().emailAddress}`)\r\n ResetUserCart();\r\n window.location.href = data.redirect;\r\n //console.log(\"you did it too\");\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n navigate(\"/login\");\r\n else {\r\n ToastUtility.show({\r\n title: 'COMPLETE ORDER', content: 'There was an error completing your order. Please try again later!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const getPromoCode = async () => {\r\n try {\r\n const response = await fetch('api/promocodes/getpromocode', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n setPromoCode(data);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n navigate(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const getCartItems = async (cartId) => {\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/cartItems', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n });\r\n if (response.ok) {\r\n let data = await response.json();\r\n let productData = await getProducts();\r\n const filteredCartItems = data.filter(item => item.cartId === cartId)\r\n if (filteredCartItems.length) {\r\n const updatedCartItems = filteredCartItems.map(cartItem => {\r\n const matchingProduct = productData.find(product => product.id === cartItem.productId);\r\n return {\r\n ...cartItem,\r\n product: matchingProduct,\r\n price: cartItem.totalCharged,\r\n quantity: cartItem.qty,\r\n img: cartItem.img,\r\n };\r\n });\r\n\r\n setCartItems(cart.cartItems ? [...cart.cartItems, ...updatedCartItems] : updatedCartItems);\r\n return cart.cartItems ? [...cart.cartItems, ...updatedCartItems] : updatedCartItems;\r\n }\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n navigate(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const getCart = async (id) => {\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/cart/getusercart/' + id, {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n });\r\n if (response.ok) {\r\n let data = await response.json();\r\n if (data) {\r\n const newCartItems = await getCartItems(data.id)\r\n console.log(newCartItems)\r\n setCart({ ...data, cartItems: newCartItems ? newCartItems : [] });\r\n\r\n return { ...data, cartItems: newCartItems ? newCartItems : [] }\r\n }\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n navigate(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const UpdateCartDetails = async (info) => {\r\n\r\n const { cartItems, ...newCartObject } = info;\r\n\r\n\r\n console.log(\"Ner:\", cartItems, newCartObject);\r\n const bearer = \"Bearer \" + getAuthToken();\r\n try {\r\n const response = await fetch('api/cart/UpdateCart/' + getUserDetails().id, {\r\n method: 'POST',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(capitalizeObjectKeys(newCartObject)),\r\n });\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n\r\n setCart(JSON.stringify(data));\r\n window.localStorage.setItem(\"cart\", JSON.stringify(data));\r\n\r\n if (data.id > 0)\r\n UpdateCartItems(data.id, cartItems);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const UpdateCartItems = async (CartId, CartItems) => {\r\n\r\n const bearer = \"Bearer \" + getAuthToken();\r\n const ItemObj = CartItems.map(item => capitalizeObjectKeys(item));\r\n try {\r\n const response = await fetch(\"api/cartitems/UpdateCartItems/\" + CartId, {\r\n method: \"PUT\",\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(ItemObj)\r\n });\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n //console.log(data);\r\n setCartItems(data);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const postToCart = async (info) => {\r\n const { cartItems, ...newCartObject } = info;\r\n const cartItemsData = cartItems;\r\n\r\n //console.log(data, newCartObject)\r\n const updatedItems = [];\r\n const updatedCartItems = [];\r\n let currentCart;\r\n var bearer = 'Bearer ' + getAuthToken();\r\n\r\n //console.log(\"Consol:\", newCartObject, cartItemsData, ...cartItems);\r\n try {\r\n const response = await fetch('api/cart', {\r\n method: newCartObject.id === 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(capitalizeObjectKeys(newCartObject)),\r\n });\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n if (newCartObject.id === 0) {\r\n const updatedCart = { ...newCartObject, id: data.item1, cartId: data.item2, cartItems };\r\n //console.log(\"this one \",updatedCart, data)\r\n setCart(updatedCart);\r\n //localStorage.setItem('cart', JSON.stringify(updatedCart));\r\n\r\n updatedCartItems.push(cartItemsData.map(item => ({\r\n ...item,\r\n cartId: data.item1,\r\n id: item.id ? item.id : 0,\r\n })))\r\n currentCart = { ...updatedCart };\r\n setCartItems(updatedCartItems);\r\n //console.log(updatedCartItems, [...updatedCartItems.flat()])\r\n localStorage.setItem('cart', JSON.stringify({ ...updatedCart, cartItems: [...updatedCartItems.flat()] }));\r\n } else {\r\n if (newCartObject.cartId === \"\") {\r\n const updatedCart = { ...newCartObject, cartId: data.item2, cartItems };\r\n setCart(updatedCart);\r\n currentCart = { ...updatedCart };\r\n localStorage.setItem('cart', JSON.stringify(updatedCart));\r\n };\r\n ////console.log(\"Before\", updatedCartItems);\r\n //updatedCartItems.push(...cartItemsData.map(item => ({\r\n // ...item,\r\n // cartId: data.item1,\r\n // id: item.id ? item.id : 0,\r\n //})))\r\n //console.log(\"Afrer:\", ...updatedCartItems)\r\n //setCartItems(updatedCartItems);\r\n //localStorage.setItem('cart', JSON.stringify({ ...cart, cartItems: updatedCartItems }));\r\n }\r\n //let newItem = cartItemsData[index];\r\n //console.log(data.item1)\r\n if (data.item1) {\r\n const localCartItems = JSON.parse(localStorage.getItem('cart')).cartItems.flat();\r\n for (let index = 0; index <= localCartItems.length - 1; index++) {\r\n const item = localCartItems[index];\r\n try {\r\n const responseCartItem = await fetch('api/cartItems', {\r\n method: item.id === 0 || !item.id ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n ...item,\r\n cartId: data.item1,\r\n id: item.id || 0,\r\n BuyType: 0,\r\n Qty: item.quantity,\r\n PriceCharged: item.price,\r\n TotalCharged: Math.abs(item.price * item.quantity),\r\n Status: 0,\r\n ProductImage: item.img,\r\n }),\r\n });\r\n\r\n if (responseCartItem.ok) {\r\n const responseData = await responseCartItem.json();\r\n const updatedItem = {\r\n ...item,\r\n id: responseData,\r\n };\r\n updatedItems.push(updatedItem);\r\n\r\n if (localCartItems.length - 1 === index) {\r\n setCartItems(updatedItems);\r\n //console.log(data, cart, currentCart, newCartObject)\r\n let result = currentCart ? currentCart : newCartObject;\r\n localStorage.setItem('cart', JSON.stringify({ ...result, cartItems: [...updatedItems] }));\r\n }\r\n } else {\r\n console.log(responseCartItem.status + \": \" + responseCartItem.statusText);\r\n if (responseCartItem.status === 401) {\r\n navigate(\"/login\");\r\n }\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n return item;\r\n }\r\n }\r\n\r\n }\r\n } else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401) {\r\n navigate(\"/login\");\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const adminPostToCart = async (info) => {\r\n const { cartItems, ...newCartObject } = info;\r\n const cartItemsData = cartItems;\r\n\r\n //console.log(data, newCartObject)\r\n const updatedItems = [];\r\n const updatedCartItems = [];\r\n let currentCart;\r\n var bearer = 'Bearer ' + getAuthToken();\r\n\r\n console.log(\"Consol:\", newCartObject, cartItemsData, ...cartItems);\r\n try {\r\n const response = await fetch('api/cart', {\r\n method: newCartObject.id === 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(capitalizeObjectKeys(newCartObject)),\r\n });\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n if (newCartObject.id === 0) {\r\n const updatedCart = { ...newCartObject, id: data.item1, cartId: data.item2, cartItems };\r\n //console.log(\"this one \",updatedCart, data)\r\n //setCart(updatedCart);\r\n //localStorage.setItem('cart', JSON.stringify(updatedCart));\r\n\r\n updatedCartItems.push(cartItemsData.map(item => ({\r\n ...item,\r\n cartId: data.item1,\r\n id: item.id ? item.id : 0,\r\n })))\r\n currentCart = { ...updatedCart };\r\n //setCartItems(updatedCartItems);\r\n //console.log(updatedCartItems, [...updatedCartItems.flat()])\r\n //localStorage.setItem('cart', JSON.stringify({ ...updatedCart, cartItems: [...updatedCartItems.flat()] }));\r\n } else {\r\n if (newCartObject.cartId === \"\") {\r\n const updatedCart = { ...newCartObject, cartId: data.item2, cartItems };\r\n //setCart(updatedCart);\r\n currentCart = { ...updatedCart };\r\n //localStorage.setItem('cart', JSON.stringify(updatedCart));\r\n } else {\r\n const updatedCart = { ...newCartObject, cartItems };\r\n\r\n currentCart = { ...updatedCart };\r\n }\r\n }\r\n //let newItem = cartItemsData[index];\r\n //console.log(data.item1)\r\n if (data.item1) {\r\n const localCartItems = currentCart.cartItems.flat();\r\n for (let index = 0; index <= localCartItems.length - 1; index++) {\r\n const item = localCartItems[index];\r\n try {\r\n const responseCartItem = await fetch('api/cartItems', {\r\n method: item.id === 0 || !item.id ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n ...item,\r\n cartId: data.item1,\r\n id: item.id || 0,\r\n BuyType: 0,\r\n Qty: item.quantity,\r\n PriceCharged: item.price,\r\n TotalCharged: Math.abs(item.price * item.quantity),\r\n Status: 0,\r\n ProductImage: item.img,\r\n }),\r\n });\r\n\r\n if (responseCartItem.ok) {\r\n const responseData = await responseCartItem.json();\r\n const updatedItem = {\r\n ...item,\r\n id: responseData,\r\n };\r\n updatedItems.push(updatedItem);\r\n\r\n if (localCartItems.length - 1 === index) {\r\n //setCartItems(updatedItems);\r\n //console.log(data, cart, currentCart, newCartObject)\r\n let result = currentCart ? currentCart : newCartObject;\r\n //localStorage.setItem('cart', JSON.stringify({ ...result, cartItems: [...updatedItems] }));\r\n }\r\n } else {\r\n console.log(responseCartItem.status + \": \" + responseCartItem.statusText);\r\n if (responseCartItem.status === 401) {\r\n navigate(\"/login\");\r\n }\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n return item;\r\n }\r\n }\r\n\r\n }\r\n } else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401) {\r\n navigate(\"/login\");\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const deleteFromCart = async (data, remove, removeId = 0) => {\r\n const { cartItems, ...newCartObject } = data;\r\n var bearer = 'Bearer ' + getAuthToken();\r\n\r\n //console.log(\"Consol:\", newCartObject);\r\n try {\r\n const response = await fetch('api/cart', {\r\n method: 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(newCartObject),\r\n });\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n\r\n if (remove && removeId) {\r\n try {\r\n const response = await fetch('api/cartItems/' + removeId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n navigate(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n } else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401) {\r\n navigate(\"/login\");\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const CheckPaymentStatus = async () => {\r\n const bearer = \"Bearer \" + getAuthToken();\r\n try {\r\n const response = await fetch(\"api/cart/CheckPaymentStatus/\" + getUserDetails()?.id, {\r\n method: \"GET\",\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n\r\n if (response.ok)\r\n return \"success\";\r\n else\r\n return \"failed\";\r\n } catch (e) {\r\n console.error(e);\r\n return \"failed\";\r\n }\r\n }\r\n\r\n const ResetUserCart = () => {\r\n\r\n setCart(CartObject);\r\n localStorage.setItem('cart', JSON.stringify(CartObject));\r\n setCartItems([]);\r\n }\r\n\r\n const postNewAddress = async (data) => {\r\n const formData = {\r\n Address: data.address,\r\n Apartment: data.apartment || '',\r\n City: data.city || '',\r\n Company: data.company || '',\r\n Country: data.country || '',\r\n Id: 0,\r\n MobileNumber: data.mobileNumber || '',\r\n PostalCode: data.postalCode || '',\r\n Province: data.province || '',\r\n Suburb: data.suburb || '',\r\n\r\n DateAdded: new Date(),\r\n DateModified: new Date(),\r\n OldId: getUserDetails().oldId,\r\n Status: 1,\r\n UserId: getUserDetails().id,\r\n }\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n const response = await fetch('/api/useraddress', {\r\n method: formData.Id == 0 ? 'POST' : 'PUT',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(formData),\r\n });\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n ToastUtility.show({\r\n title: 'User Address', content: 'Address saved successfully', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n return data;\r\n } else {\r\n ToastUtility.show({\r\n title: 'User Address', content: 'There was an error saving address', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n };\r\n\r\n const getReviews = async (product) => {\r\n try {\r\n const response = await fetch('api/reviews/getallreviews/' + product, {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n setReviews(data);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n navigate(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const getCategories = async () => {\r\n try {\r\n const response = await fetch('api/productcategories/getallcategories', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n setCategories(data);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n navigate(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const getSubcategories = async () => {\r\n try {\r\n const response = await fetch('api/productsubcategories/getallsubcategories', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n setSubcategories(data);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n navigate(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const getBrands = async () => {\r\n try {\r\n const response = await fetch('api/productbrands/getallbrands', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n setBrands(data);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n navigate(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n const GetFilterRelatedProducts = (ProductData, Products) => {\r\n let ProductTags = [], ProductCats = [], FilteredProducts = [];\r\n try {\r\n ProductTags = ProductData.tags !== \"\" ? ProductData.tags.replace(/\\s/g, \"\").split(\",\") : [];\r\n } catch (e) { }\r\n\r\n try { ProductCats = JSON.parse(ProductData.selectedCategories); } catch (e) { }\r\n if (FilteredProducts.length < 4) {\r\n FilteredProducts = Products.filter(item => {\r\n let ItemTags = [], ItemCats = [];\r\n try {\r\n ItemCats = JSON.parse(item.selectedCategories);\r\n } catch (e) { }\r\n try {\r\n ItemTags = item.tags !== \"\" ? item.tags.replace(/\\s/g, \"\").split(\",\") : [];\r\n } catch (e) { }\r\n\r\n return item.id !== ProductData.id && (ProductCats.length > 0 ? ArraysHaveCommonItems(ProductTags, ItemTags) && ArraysHaveCommonItems(ProductCats, ItemCats) : ArraysHaveCommonItems(ProductTags, ItemTags));\r\n })\r\n }\r\n\r\n if (FilteredProducts.length < 4) {\r\n products.filter(item => item.productBrandId === ProductData.productBrandId).map(item => FilteredProducts.push(item))\r\n }\r\n\r\n return FilteredProducts;\r\n }\r\n\r\n const getRandomObjectsFromArray = (arr, numObjects, productData) => {\r\n if (productData) {\r\n arr = GetFilterRelatedProducts(productData, arr);\r\n }\r\n\r\n if (numObjects >= arr.length) {\r\n return arr.slice();\r\n }\r\n\r\n const randomObjects = [];\r\n const usedIndices = new Set();\r\n\r\n while (randomObjects.length < numObjects) {\r\n const randomIndex = Math.floor(Math.random() * arr.length);\r\n\r\n if (!usedIndices.has(randomIndex)) {\r\n usedIndices.add(randomIndex);\r\n randomObjects.push(arr[randomIndex]);\r\n }\r\n }\r\n\r\n return randomObjects;\r\n }\r\n\r\n const handleAddToCart = (product, quantity) => {\r\n let items = [];\r\n\r\n if (cartItems)\r\n items = [...cartItems];\r\n\r\n let addedItem = items?.find((p) => p.productId == product?.productId);\r\n let index = items?.findIndex((p) => p.productId === product?.productId);\r\n if (index !== -1) {\r\n items[index].quantity += quantity;\r\n } else {\r\n product.quantity = quantity;\r\n items = [...items, product];\r\n }\r\n\r\n const updatedCart = { ...cart, cartItems: items };\r\n const updatedNumItems = items.reduce((total, item) => total + item.quantity, 0);\r\n const updatedAmount = items.reduce((total, item) => total + (item.price * item.quantity), 0);\r\n\r\n const update = {\r\n ...updatedCart,\r\n amount: updatedAmount,\r\n numItems: updatedNumItems\r\n };\r\n setCartItems(items);\r\n setCart(update);\r\n //setCart(prevCart => ({ ...prevCart, amount: updatedAmount, numItems: updatedNumItems }));\r\n localStorage.setItem('cart', JSON.stringify(update));\r\n ToastUtility.show({\r\n title: 'Cart',\r\n content: 'The item was successfully added to cart!',\r\n timeOut: 2000,\r\n position: { X: 'Right', Y: 'Top' },\r\n showCloseButton: true,\r\n cssClass: 'toast-success'\r\n });\r\n setCartCount(updatedNumItems)\r\n sendCustomEvent(\"Cart\", \"Added Item To Cart\", `${product.title}`)\r\n if (getAuthToken()) {\r\n update.userId = getUserDetails().id;\r\n postToCart(update);\r\n }\r\n // localStorage.setItem('cart', JSON.stringify(updatedCart));\r\n // UpdateCartDetails(update);\r\n };\r\n\r\n const handleRemoveFromCart = (product) => {\r\n let items = [...cartItems];\r\n let removedItem = items?.find((p) => p.productId == product?.productId);\r\n items = items?.filter((p) => p.productId !== product?.productId);\r\n\r\n setCartItems(items);\r\n const updatedCart = { ...cart, cartItems: items };\r\n setCart(updatedCart);\r\n const updatedAmount = items.reduce((total, item) => total + (item.price * item.quantity), 0);\r\n const updatedNumItems = items.reduce((total, item) => total + item.quantity, 0);\r\n\r\n const update = {\r\n ...updatedCart,\r\n amount: updatedAmount,\r\n numItems: updatedNumItems\r\n };\r\n setCart(prevCart => ({ ...prevCart, amount: updatedAmount, numItems: cartCount }));\r\n\r\n setCartCount(updatedNumItems)\r\n localStorage.setItem('cart', JSON.stringify(updatedCart));\r\n if (getAuthToken())\r\n deleteFromCart(update, true, removedItem.id);\r\n ToastUtility.show({\r\n title: 'Cart',\r\n content: 'The item was successfully removed from cart!',\r\n timeOut: 2000,\r\n position: { X: 'Right', Y: 'Top' },\r\n showCloseButton: true,\r\n cssClass: 'toast-success'\r\n });\r\n sendCustomEvent(\"Cart\", \"Removed Item From Cart\", `${product.title}`)\r\n };\r\n\r\n const handleCartProductQuantity = (type, product) => {\r\n setCart(prevCart => {\r\n const updatedCart = { ...prevCart };\r\n const index = updatedCart.cartItems.findIndex(item => item.productId === product.productId);\r\n\r\n if (index !== -1) {\r\n let qty = parseInt(updatedCart.cartItems[index].quantity, 10);\r\n const stock = parseInt(updatedCart.cartItems[index].product.stock, 10);\r\n if (type === \"inc\") {\r\n\r\n if (qty < stock)\r\n qty += 1;\r\n else\r\n qty = stock;\r\n } else if (type === \"dec\" && qty > 1) {\r\n qty -= 1;\r\n }\r\n updatedCart.cartItems[index].quantity = qty\r\n updatedCart.numItems = updatedCart.cartItems.reduce((total, item) => total + item.quantity, 0);\r\n updatedCart.amount = updatedCart.cartItems.reduce((total, item) => total + (item.price * item.quantity), 0);\r\n setCartCount(updatedCart.numItems)\r\n localStorage.setItem('cart', JSON.stringify(updatedCart));\r\n }\r\n if (getAuthToken())\r\n postToCart(updatedCart);\r\n return updatedCart;\r\n });\r\n\r\n setCartItems(prevCartItems => {\r\n const updatedItems = prevCartItems.map(item => {\r\n if (item.productId === product.productId) {\r\n if (type === \"inc\") {\r\n item.quantity += 1;\r\n } else if (type === \"dec\" && item.quantity > 1) {\r\n item.quantity -= 1;\r\n }\r\n }\r\n return item;\r\n });\r\n return updatedItems;\r\n });\r\n };\r\n\r\n const applyCoupon = async (couponCode) => {\r\n var bearer = 'Bearer ' + getAuthToken();\r\n if (couponCode) {\r\n try {\r\n const response = await fetch(`api/promocodes/validatecoupon/${couponCode}/${getUserDetails()?.id}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n setAppliedCoupon(data);\r\n localStorage.setItem('coupon', JSON.stringify(data));\r\n const discount = applyDiscount(cartTotal, data.amount);\r\n sendCustomEvent(\"Coupon Code\", \"Applied Coupon code\", `${couponCode}`)\r\n setDiscountAmount(discount);\r\n if (data.id > 0)\r\n setCouponError('');\r\n else\r\n setCouponError(data.message);\r\n } else {\r\n setAppliedCoupon(null);\r\n setCouponError('Invalid coupon code');\r\n }\r\n } catch (error) {\r\n console.error('Error applying coupon:', error);\r\n setCouponError('An error occurred while applying the coupon');\r\n }\r\n }\r\n };\r\n\r\n const applyAdminCoupon = async (couponCode, userId) => {\r\n var bearer = 'Bearer ' + getAuthToken();\r\n if (couponCode) {\r\n try {\r\n const response = await fetch(`api/promocodes/validatecoupon/${couponCode}/${userId}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n setAdminAppliedCoupon(data);\r\n if (data.id > 0)\r\n sendCustomEvent(\"Admin Coupon Code\", \"Admin applied Coupon code\", `${couponCode}`);\r\n if (data.id > 0)\r\n setAdminCouponError('');\r\n else\r\n setAdminCouponError(data.message);\r\n } else {\r\n setAdminAppliedCoupon(null);\r\n setAdminCouponError('Invalid coupon code');\r\n }\r\n } catch (error) {\r\n console.error('Error applying coupon:', error);\r\n setAdminCouponError('An error occurred while applying the coupon');\r\n }\r\n }\r\n };\r\n\r\n const handleAddToWishlist = (item) => {\r\n\r\n if (wishlistItems.some((wishItem) => wishItem.productId === item.productId)) {\r\n return;\r\n }\r\n\r\n const updatedWishlist = [...wishlistItems, item];\r\n setWishlistItems(updatedWishlist);\r\n setWishCount(updatedWishlist.length);\r\n\r\n localStorage.setItem('wishlist', JSON.stringify(updatedWishlist));\r\n ToastUtility.show({\r\n title: 'Wish List',\r\n content: 'The item was successfully added to list!',\r\n timeOut: 2000,\r\n position: { X: 'Right', Y: 'Top' },\r\n showCloseButton: true,\r\n cssClass: 'toast-success'\r\n });\r\n\r\n sendCustomEvent(\"Wish List\", \"Added Item To Wish List\", `${item.title}`)\r\n };\r\n\r\n const handleRemoveFromWishlist = (itemId) => {\r\n\r\n const updatedWishlist = wishlistItems.filter((item) => item.productId !== itemId);\r\n setWishlistItems(updatedWishlist);\r\n setWishCount(updatedWishlist.length);\r\n\r\n localStorage.setItem('wishlist', JSON.stringify(updatedWishlist));\r\n ToastUtility.show({\r\n title: 'Wish List',\r\n content: 'The item was successfully removed from list!',\r\n timeOut: 2000,\r\n position: { X: 'Right', Y: 'Top' },\r\n showCloseButton: true,\r\n cssClass: 'toast-success'\r\n });\r\n };\r\n\r\n const isItemInWishlist = (itemId) => {\r\n const storedWishlist = localStorage.getItem('wishlist');\r\n if (storedWishlist) {\r\n const wishlistItems = JSON.parse(storedWishlist);\r\n return wishlistItems.some((item) => item.productId === itemId);\r\n }\r\n return false;\r\n };\r\n\r\n const handleNavigate = (route) => {\r\n navigate(route);\r\n }\r\n\r\n const sendCustomEvent = (category, action, label) => {\r\n ReactGA.event({\r\n category: category,\r\n action: action,\r\n label: label, // optional\r\n //value: value, // optional, must be a number\r\n //nonInteraction: true, // optional, true/false\r\n //transport: 'xhr', // optional, beacon/xhr/image\r\n });\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default AppContext;","var _excluded = [\"className\", \"cssModule\", \"size\", \"bordered\", \"borderless\", \"striped\", \"dark\", \"hover\", \"responsive\", \"tag\", \"responsiveTag\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Adds border to all sides of table */\n bordered: PropTypes.bool,\n /** Removes all borders */\n borderless: PropTypes.bool,\n /** Adds custom class name to component */\n className: PropTypes.string,\n /** */\n cssModule: PropTypes.object,\n /** Makes the table dark */\n dark: PropTypes.bool,\n /** Enables a hover state on the rows within `` */\n hover: PropTypes.bool,\n innerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.object]),\n /** Responsive tables allow tables to be scrolled horizontally with ease */\n responsive: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n responsiveTag: tagPropType,\n /** Make tables more compact by cutting cell padding in half when setting size as sm. */\n size: PropTypes.string,\n /** Adds zebra-striping to any table row within the `` */\n striped: PropTypes.bool,\n /** Add custom tag to the component */\n tag: tagPropType\n};\nfunction Table(props) {\n var className = props.className,\n cssModule = props.cssModule,\n size = props.size,\n bordered = props.bordered,\n borderless = props.borderless,\n striped = props.striped,\n dark = props.dark,\n hover = props.hover,\n responsive = props.responsive,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'table' : _props$tag,\n _props$responsiveTag = props.responsiveTag,\n ResponsiveTag = _props$responsiveTag === void 0 ? 'div' : _props$responsiveTag,\n innerRef = props.innerRef,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'table', size ? 'table-' + size : false, bordered ? 'table-bordered' : false, borderless ? 'table-borderless' : false, striped ? 'table-striped' : false, dark ? 'table-dark' : false, hover ? 'table-hover' : false), cssModule);\n var table = /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n className: classes\n }));\n if (responsive) {\n var responsiveClassName = mapToCssModules(responsive === true ? 'table-responsive' : \"table-responsive-\".concat(responsive), cssModule);\n return /*#__PURE__*/React.createElement(ResponsiveTag, {\n className: responsiveClassName\n }, table);\n }\n return table;\n}\nTable.propTypes = propTypes;\nexport default Table;","var _excluded = [\"className\", \"listClassName\", \"cssModule\", \"size\", \"tag\", \"listTag\", \"aria-label\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n /** Add custom class */\n className: PropTypes.string,\n /** Add custom class for list */\n listClassName: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Make the Pagination bigger or smaller */\n size: PropTypes.string,\n /** Set a custom element for this component */\n tag: tagPropType,\n /** Set a custom element for list component */\n listTag: tagPropType,\n 'aria-label': PropTypes.string\n};\nfunction Pagination(props) {\n var className = props.className,\n listClassName = props.listClassName,\n cssModule = props.cssModule,\n size = props.size,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'nav' : _props$tag,\n _props$listTag = props.listTag,\n ListTag = _props$listTag === void 0 ? 'ul' : _props$listTag,\n _props$ariaLabel = props['aria-label'],\n label = _props$ariaLabel === void 0 ? 'pagination' : _props$ariaLabel,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className), cssModule);\n var listClasses = mapToCssModules(classNames(listClassName, 'pagination', _defineProperty({}, \"pagination-\".concat(size), !!size)), cssModule);\n return /*#__PURE__*/React.createElement(Tag, {\n className: classes,\n \"aria-label\": label\n }, /*#__PURE__*/React.createElement(ListTag, _extends({}, attributes, {\n className: listClasses\n })));\n}\nPagination.propTypes = propTypes;\nexport default Pagination;","var _excluded = [\"active\", \"className\", \"cssModule\", \"disabled\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Set item as active */\n active: PropTypes.bool,\n children: PropTypes.node,\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set item as disabled */\n disabled: PropTypes.bool,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction PaginationItem(props) {\n var active = props.active,\n className = props.className,\n cssModule = props.cssModule,\n disabled = props.disabled,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'li' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'page-item', {\n active: active,\n disabled: disabled\n }), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nPaginationItem.propTypes = propTypes;\nexport default PaginationItem;","var _excluded = [\"className\", \"cssModule\", \"next\", \"previous\", \"first\", \"last\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n 'aria-label': PropTypes.string,\n children: PropTypes.node,\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Add to next button to add default aria label and icon */\n next: PropTypes.bool,\n /** Add to previous button to add default aria label and icon */\n previous: PropTypes.bool,\n /** Add to first button to add default aria label and icon */\n first: PropTypes.bool,\n /** Add to last button to add default aria label and icon */\n last: PropTypes.bool,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction PaginationLink(props) {\n var className = props.className,\n cssModule = props.cssModule,\n next = props.next,\n previous = props.previous,\n first = props.first,\n last = props.last,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'a' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'page-link'), cssModule);\n var defaultAriaLabel;\n if (previous) {\n defaultAriaLabel = 'Previous';\n } else if (next) {\n defaultAriaLabel = 'Next';\n } else if (first) {\n defaultAriaLabel = 'First';\n } else if (last) {\n defaultAriaLabel = 'Last';\n }\n var ariaLabel = props['aria-label'] || defaultAriaLabel;\n var defaultCaret;\n if (previous) {\n defaultCaret = \"\\u2039\";\n } else if (next) {\n defaultCaret = \"\\u203A\";\n } else if (first) {\n defaultCaret = \"\\xAB\";\n } else if (last) {\n defaultCaret = \"\\xBB\";\n }\n var children = props.children;\n if (children && Array.isArray(children) && children.length === 0) {\n children = null;\n }\n if (!attributes.href && Tag === 'a') {\n Tag = 'button';\n }\n if (previous || next || first || last) {\n children = [/*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\",\n key: \"caret\"\n }, children || defaultCaret), /*#__PURE__*/React.createElement(\"span\", {\n className: \"visually-hidden\",\n key: \"ariaLabel\"\n }, ariaLabel)];\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n \"aria-label\": ariaLabel\n }), children);\n}\nPaginationLink.propTypes = propTypes;\nexport default PaginationLink;","import React, { Component } from 'react'\r\nimport { Pagination, PaginationItem, PaginationLink, Table } from 'reactstrap';\r\n\r\nexport default class RevenueSources extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n data: this.props.RevenueData,\r\n currentPage: 1,\r\n itemsPerPage: 10,\r\n }\r\n }\r\n\r\n handlePageChange = (pageNumber) => {\r\n this.setState({ currentPage: pageNumber });\r\n };\r\n\r\n render() {\r\n\r\n const { data, currentPage, itemsPerPage } = this.state;\r\n const indexOfLastItem = currentPage * itemsPerPage;\r\n const indexOfFirstItem = indexOfLastItem - itemsPerPage;\r\n const currentItems = data.slice(indexOfFirstItem, indexOfLastItem);\r\n const totalPages = Math.ceil(data.length / itemsPerPage);\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 {currentItems.map((item, idx) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
ProductQuantityPurchasesProduct Revenue
{item.product}{item.quantity}{item.purchases}R{item.productRevenue.toFixed(2)}
\r\n
\r\n
Items: {currentItems.length}/{data.length}
\r\n \r\n {Array.from({ length: totalPages }).map((_, index) => (\r\n \r\n this.handlePageChange(index + 1)}>\r\n {index + 1}\r\n \r\n \r\n ))}\r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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, Collection, Browser } from '@syncfusion/ej2-base';\n/**\n * Defines the appearance of the connectors\n */\nvar Connector = /** @class */ (function (_super) {\n __extends(Connector, _super);\n function Connector() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Line')\n ], Connector.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Connector.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Connector.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Connector.prototype, \"length\", void 0);\n __decorate([\n Property('')\n ], Connector.prototype, \"dashArray\", void 0);\n return Connector;\n}(ChildProperty));\nexport { Connector };\n/**\n * Configures the fonts in charts.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('16px')\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property('Center')\n ], Font.prototype, \"textAlignment\", void 0);\n __decorate([\n Property('Segoe UI')\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n __decorate([\n Property('Wrap')\n ], Font.prototype, \"textOverflow\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Configures the borders in the chart.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Configures the marker position in the chart.\n */\nvar Offset = /** @class */ (function (_super) {\n __extends(Offset, _super);\n function Offset() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Offset.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Offset.prototype, \"y\", void 0);\n return Offset;\n}(ChildProperty));\nexport { Offset };\n/**\n * Configures the chart area.\n */\nvar ChartArea = /** @class */ (function (_super) {\n __extends(ChartArea, _super);\n function ChartArea() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Border)\n ], ChartArea.prototype, \"border\", void 0);\n __decorate([\n Property('transparent')\n ], ChartArea.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], ChartArea.prototype, \"opacity\", void 0);\n __decorate([\n Property(null)\n ], ChartArea.prototype, \"backgroundImage\", void 0);\n __decorate([\n Property(null)\n ], ChartArea.prototype, \"width\", void 0);\n return ChartArea;\n}(ChildProperty));\nexport { ChartArea };\n/**\n * Configures the chart margins.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Configures the chart Legend Container Padding.\n */\nvar ContainerPadding = /** @class */ (function (_super) {\n __extends(ContainerPadding, _super);\n function ContainerPadding() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"right\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"top\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"bottom\", void 0);\n return ContainerPadding;\n}(ChildProperty));\nexport { ContainerPadding };\n/**\n * Configures the animation behavior for chart series.\n */\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(true)\n ], Animation.prototype, \"enable\", void 0);\n __decorate([\n Property(1000)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Series and point index\n *\n * @public\n */\nvar Indexes = /** @class */ (function (_super) {\n __extends(Indexes, _super);\n function Indexes() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Indexes.prototype, \"series\", void 0);\n __decorate([\n Property(0)\n ], Indexes.prototype, \"point\", void 0);\n return Indexes;\n}(ChildProperty));\nexport { Indexes };\n/**\n * Column series rounded corner options\n */\nvar CornerRadius = /** @class */ (function (_super) {\n __extends(CornerRadius, _super);\n function CornerRadius() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topRight\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomRight\", void 0);\n return CornerRadius;\n}(ChildProperty));\nexport { CornerRadius };\n/**\n * @private\n */\nvar Index = /** @class */ (function () {\n function Index(seriesIndex, pointIndex) {\n this.series = seriesIndex;\n this.point = pointIndex;\n }\n return Index;\n}());\nexport { Index };\n/**\n * Configures the Empty Points of series\n */\nvar EmptyPointSettings = /** @class */ (function (_super) {\n __extends(EmptyPointSettings, _super);\n function EmptyPointSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], EmptyPointSettings.prototype, \"fill\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], EmptyPointSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Gap')\n ], EmptyPointSettings.prototype, \"mode\", void 0);\n return EmptyPointSettings;\n}(ChildProperty));\nexport { EmptyPointSettings };\n/**\n * Configures the drag settings of series\n */\nvar DragSettings = /** @class */ (function (_super) {\n __extends(DragSettings, _super);\n function DragSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DragSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"minY\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"maxY\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"fill\", void 0);\n return DragSettings;\n}(ChildProperty));\nexport { DragSettings };\n/**\n * Options to customize the center label of the pie and doughnut chart.\n *\n * @default {}\n */\nvar CenterLabel = /** @class */ (function (_super) {\n __extends(CenterLabel, _super);\n function CenterLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], CenterLabel.prototype, \"text\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"16px\", fontStyle: 'Normal', fontWeight: '600', color: null }, Font)\n ], CenterLabel.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], CenterLabel.prototype, \"hoverTextFormat\", void 0);\n return CenterLabel;\n}(ChildProperty));\nexport { CenterLabel };\n/**\n * Configures the ToolTips in the chart.\n *\n * @public\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(false)\n ], TooltipSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableMarker\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"shared\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], TooltipSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(1000)\n ], TooltipSettings.prototype, \"fadeOutDuration\", void 0);\n __decorate([\n Property('Move')\n ], TooltipSettings.prototype, \"fadeOutMode\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"enableTextWrap\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"showNearestPoint\", void 0);\n __decorate([\n Complex({ color: null, width: null }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\nvar StockTooltipSettings = /** @class */ (function (_super) {\n __extends(StockTooltipSettings, _super);\n function StockTooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], StockTooltipSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], StockTooltipSettings.prototype, \"enableMarker\", void 0);\n __decorate([\n Property(false)\n ], StockTooltipSettings.prototype, \"shared\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], StockTooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], StockTooltipSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], StockTooltipSettings.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], StockTooltipSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(1000)\n ], StockTooltipSettings.prototype, \"fadeOutDuration\", void 0);\n __decorate([\n Property('Move')\n ], StockTooltipSettings.prototype, \"fadeOutMode\", void 0);\n __decorate([\n Property(false)\n ], StockTooltipSettings.prototype, \"enableTextWrap\", void 0);\n __decorate([\n Property(true)\n ], StockTooltipSettings.prototype, \"showNearestPoint\", void 0);\n __decorate([\n Complex({ color: null, width: null }, Border)\n ], StockTooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Fixed')\n ], StockTooltipSettings.prototype, \"position\", void 0);\n return StockTooltipSettings;\n}(ChildProperty));\nexport { StockTooltipSettings };\n/**\n * button settings in period selector\n */\nvar Periods = /** @class */ (function (_super) {\n __extends(Periods, _super);\n function Periods() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Years')\n ], Periods.prototype, \"intervalType\", void 0);\n __decorate([\n Property(1)\n ], Periods.prototype, \"interval\", void 0);\n __decorate([\n Property(null)\n ], Periods.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], Periods.prototype, \"selected\", void 0);\n return Periods;\n}(ChildProperty));\nexport { Periods };\n/**\n * Period Selector Settings\n */\nvar PeriodSelectorSettings = /** @class */ (function (_super) {\n __extends(PeriodSelectorSettings, _super);\n function PeriodSelectorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(43)\n ], PeriodSelectorSettings.prototype, \"height\", void 0);\n __decorate([\n Property('Bottom')\n ], PeriodSelectorSettings.prototype, \"position\", void 0);\n __decorate([\n Collection([], Periods)\n ], PeriodSelectorSettings.prototype, \"periods\", void 0);\n return PeriodSelectorSettings;\n}(ChildProperty));\nexport { PeriodSelectorSettings };\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 });\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 });\n break;\n case 'HorizontalLine':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY;\n merge(options, { 'd': path });\n break;\n case 'VerticalLine':\n path = 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' + (locY + (-height / 2));\n merge(options, { 'd': path });\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 parent.appendChild(htmlObject);\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 } 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 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 (this.header !== '') {\n this.elementSize.height += this.marginY;\n }\n 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 font.fontWeight = '600';\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 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 font.fontWeight = '600';\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 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 var options = new TextOption(this.element.id + '_text', this.marginX * 2, (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);\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, '
').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) ? '600' : line.indexOf('') > -1 || line.indexOf('') > -1 ? 'bold' : this.textStyle.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 templateElement[0].outerHTML += '
' + sharedTemplateElement[0].outerHTML;\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 + bounds.width) - (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 > 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,\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 }\n else {\n tooltipDiv.style.left = (x + currenDiff * (rect.x - x)) + 'px';\n tooltipDiv.style.top = (y + currenDiff * (rect.y - y)) + 'px';\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 }\n else {\n tooltipDiv.style.left = x + 'px';\n tooltipDiv.style.top = y + 'px';\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 && 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: '400', 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(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","/** @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","/* eslint-disable jsdoc/require-returns */\n/**\n * Numeric Range.\n *\n * @private\n */\nvar DoubleRange = /** @class */ (function () {\n function DoubleRange(start, end) {\n /*\n if (!isNaN(start) && !isNaN(end)) {\n this.mIsEmpty = true;\n } else {\n this.mIsEmpty = false;\n }*/\n if (start < end) {\n this.mStart = start;\n this.mEnd = end;\n }\n else {\n this.mStart = end;\n this.mEnd = start;\n }\n }\n Object.defineProperty(DoubleRange.prototype, \"start\", {\n //private mIsEmpty: boolean;\n /** @private */\n get: function () {\n return this.mStart;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"end\", {\n /** @private */\n get: function () {\n return this.mEnd;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"delta\", {\n /*\n get isEmpty(): boolean {\n return this.mIsEmpty;\n }*/\n /** @private */\n get: function () {\n return (this.mEnd - this.mStart);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"median\", {\n /** @private */\n get: function () {\n return this.mStart + (this.mEnd - this.mStart) / 2;\n },\n enumerable: true,\n configurable: true\n });\n return DoubleRange;\n}());\nexport { DoubleRange };\n","import { getMinPointsDelta, getActualDesiredIntervalsCount, setRange, triggerLabelRender } from '../../common/utils/helper';\nimport { DoubleRange } from '../utils/double-range';\nimport { withIn, logBase } from '../../common/utils/helper';\nimport { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\n/**\n * Numeric module is used to render numeric axis.\n */\nvar Double = /** @class */ (function () {\n /**\n * Constructor for the dateTime module.\n *\n * @private\n */\n function Double(chart) {\n this.isColumn = 0;\n this.isStacking = false;\n this.chart = chart;\n }\n /**\n * Numeric Nice Interval for the axis.\n *\n * @private\n */\n Double.prototype.calculateNumericNiceInterval = function (axis, delta, size) {\n var actualDesiredIntervalsCount = getActualDesiredIntervalsCount(size, axis);\n var niceInterval = delta / actualDesiredIntervalsCount;\n if (!isNullOrUndefined(axis.desiredIntervals)) {\n if (this.isAutoIntervalOnBothAxis(axis)) {\n return niceInterval;\n }\n }\n var minInterval = Math.pow(10, Math.floor(logBase(niceInterval, 10)));\n for (var _i = 0, _a = axis.intervalDivs; _i < _a.length; _i++) {\n var interval = _a[_i];\n var currentInterval = minInterval * interval;\n if (actualDesiredIntervalsCount < (delta / currentInterval)) {\n break;\n }\n niceInterval = currentInterval;\n }\n return niceInterval;\n };\n /**\n * Actual Range for the axis.\n *\n * @private\n */\n Double.prototype.isAutoIntervalOnBothAxis = function (axis) {\n if (((axis.zoomFactor < 1 || axis.zoomPosition > 0) && axis.enableAutoIntervalOnZooming)) {\n return false;\n }\n else {\n return true;\n }\n };\n Double.prototype.getActualRange = function (axis, size) {\n this.initializeDoubleRange(axis);\n if ((!axis.startFromZero) && (this.isColumn > 0)) {\n axis.actualRange.interval = axis.interval || this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n axis.actualRange.max = axis.doubleRange.end + axis.actualRange.interval;\n if ((axis.doubleRange.start - axis.actualRange.interval < 0 && axis.doubleRange.start > 0)) {\n axis.actualRange.min = 0;\n }\n else {\n axis.actualRange.min = axis.doubleRange.start - (this.isStacking ? 0 : axis.actualRange.interval);\n }\n }\n else {\n axis.actualRange.interval = axis.interval || this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n axis.actualRange.min = axis.doubleRange.start;\n axis.actualRange.max = axis.doubleRange.end;\n }\n };\n /**\n * Range for the axis.\n *\n * @private\n */\n Double.prototype.initializeDoubleRange = function (axis) {\n //Axis Min\n if (axis.minimum !== null) {\n this.min = axis.minimum;\n }\n else if (this.min === null || this.min === Number.POSITIVE_INFINITY) {\n this.min = 0;\n }\n // Axis Max\n if (axis.maximum !== null) {\n this.max = axis.maximum;\n }\n else if (this.max === null || this.max === Number.NEGATIVE_INFINITY) {\n this.max = 5;\n }\n if (this.min === this.max) {\n this.max = axis.valueType.indexOf('Category') > -1 ? this.max : this.min + 1;\n }\n axis.doubleRange = new DoubleRange(this.min, this.max);\n axis.actualRange = {};\n };\n /**\n * The function to calculate the range and labels for the axis.\n *\n * @returns {void}\n * @private\n */\n Double.prototype.calculateRangeAndInterval = function (size, axis) {\n this.calculateRange(axis);\n this.getActualRange(axis, size);\n this.applyRangePadding(axis, size);\n this.calculateVisibleLabels(axis, this.chart);\n };\n /**\n * Calculate Range for the axis.\n *\n * @private\n */\n Double.prototype.calculateRange = function (axis) {\n /*! Generate axis range */\n this.min = null;\n this.max = null;\n if (!setRange(axis)) {\n for (var _i = 0, _a = axis.series; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.visible) {\n continue;\n }\n this.paddingInterval = 0;\n if (!isNullOrUndefined(series.points)) {\n axis.maxPointLength = series.points.length;\n }\n axis.maxPointLength = series.points.length;\n if (((series.type.indexOf('Column') > -1 || series.type.indexOf('Histogram') > -1) && axis.orientation === 'Horizontal')\n || (series.type.indexOf('Bar') > -1 && axis.orientation === 'Vertical')) {\n if ((series.xAxis.valueType === 'Double' || series.xAxis.valueType === 'DateTime')\n && series.xAxis.rangePadding === 'Auto') {\n this.paddingInterval = getMinPointsDelta(series.xAxis, axis.series) * 0.5;\n }\n }\n //For xRange\n if (axis.orientation === 'Horizontal') {\n if (this.chart.requireInvertedAxis) {\n this.yAxisRange(axis, series);\n }\n else {\n this.findMinMax(series.xMin - this.paddingInterval, series.xMax + this.paddingInterval);\n }\n }\n // For yRange\n if (axis.orientation === 'Vertical') {\n this.isColumn += (series.type.indexOf('Column') !== -1 || series.type.indexOf('Bar') !== -1 || series.drawType === 'Column') ? 1 : 0;\n this.isStacking = series.type.indexOf('Stacking') !== -1;\n if (this.chart.requireInvertedAxis) {\n this.findMinMax(series.xMin - this.paddingInterval, series.xMax + this.paddingInterval);\n }\n else {\n this.yAxisRange(axis, series);\n }\n }\n }\n }\n };\n Double.prototype.yAxisRange = function (axis, series) {\n if (series.dragSettings.enable && this.chart.dragY) {\n if (this.chart.dragY >= axis.visibleRange.max) {\n series.yMax = this.chart.dragY + axis.visibleRange.interval;\n }\n if (this.chart.dragY <= axis.visibleRange.min) {\n series.yMin = this.chart.dragY - axis.visibleRange.interval;\n }\n }\n this.findMinMax(series.yMin, series.yMax);\n };\n Double.prototype.findMinMax = function (min, max) {\n if (this.min === null || this.min > min) {\n this.min = min;\n }\n if (this.max === null || this.max < max) {\n this.max = max;\n }\n if ((this.max === this.min) && this.max < 0 && this.min < 0) { // max == min\n this.max = 0;\n }\n };\n /**\n * Apply padding for the range.\n *\n * @private\n */\n Double.prototype.applyRangePadding = function (axis, size) {\n var start = axis.actualRange.min;\n var end = axis.actualRange.max;\n if (!setRange(axis)) {\n var interval = axis.actualRange.interval;\n var padding = axis.getRangePadding(this.chart);\n if (padding === 'Additional' || padding === 'Round') {\n this.findAdditional(axis, start, end, interval, size);\n }\n else if (padding === 'Normal') {\n this.findNormal(axis, start, end, interval, size);\n }\n else {\n this.updateActualRange(axis, start, end, interval);\n }\n }\n axis.actualRange.delta = axis.actualRange.max - axis.actualRange.min;\n this.calculateVisibleRange(size, axis);\n };\n Double.prototype.updateActualRange = function (axis, minimum, maximum, interval) {\n axis.actualRange = {\n min: axis.minimum != null ? axis.minimum : minimum,\n max: axis.maximum != null ? axis.maximum : maximum,\n interval: axis.interval != null ? axis.interval : interval,\n delta: axis.actualRange.delta\n };\n };\n Double.prototype.findAdditional = function (axis, start, end, interval, size) {\n var minimum;\n var maximum;\n minimum = Math.floor(start / interval) * interval;\n maximum = Math.ceil(end / interval) * interval;\n if (axis.rangePadding === 'Additional') {\n minimum -= interval;\n maximum += interval;\n }\n if (!isNullOrUndefined(axis.desiredIntervals)) {\n var delta = maximum - minimum;\n interval = this.calculateNumericNiceInterval(axis, delta, size);\n }\n this.updateActualRange(axis, minimum, maximum, interval);\n };\n Double.prototype.findNormal = function (axis, start, end, interval, size) {\n var remaining;\n var minimum;\n var maximum;\n var startValue = start;\n if (start < 0) {\n startValue = 0;\n minimum = start + (start * 0.05);\n remaining = interval + (minimum % interval);\n if ((0.365 * interval) >= remaining) {\n minimum -= interval;\n }\n if (minimum % interval < 0) {\n minimum = (minimum - interval) - (minimum % interval);\n }\n }\n else {\n minimum = start < ((5.0 / 6.0) * end) ? 0 : (start - (end - start) * 0.5);\n if (minimum % interval > 0) {\n minimum -= (minimum % interval);\n }\n }\n maximum = (end > 0) ? (end + (end - startValue) * 0.05) : (end - (end - startValue) * 0.05);\n remaining = interval - (maximum % interval);\n if ((0.365 * interval) >= remaining) {\n maximum += interval;\n }\n if (maximum % interval > 0) {\n maximum = (maximum + interval) - (maximum % interval);\n }\n axis.doubleRange = new DoubleRange(minimum, maximum);\n if (minimum === 0 || (minimum < 0 && maximum < 0)) {\n interval = this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n maximum = Math.ceil(maximum / interval) * interval;\n }\n this.updateActualRange(axis, minimum, maximum, interval);\n };\n /**\n * Calculate visible range for axis.\n *\n * @private\n */\n Double.prototype.calculateVisibleRange = function (size, axis) {\n axis.visibleRange = {\n max: axis.actualRange.max, min: axis.actualRange.min,\n delta: axis.actualRange.delta, interval: axis.actualRange.interval\n };\n if (this.chart.chartAreaType === 'Cartesian') {\n var isLazyLoad = isNullOrUndefined(axis.zoomingScrollBar) ? false : axis.zoomingScrollBar.isLazyLoad;\n if ((axis.zoomFactor < 1 || axis.zoomPosition > 0) && !isLazyLoad) {\n axis.calculateVisibleRangeOnZooming(size);\n axis.visibleRange.interval = (axis.enableAutoIntervalOnZooming) ?\n this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size)\n : axis.visibleRange.interval;\n }\n }\n if (axis.maximum && axis.orientation === 'Vertical' && axis.rangePadding === 'Auto') {\n var duplicateTempInterval = void 0;\n var tempInterval = axis.visibleRange.min;\n for (; (tempInterval <= axis.visibleRange.max) && (duplicateTempInterval !== tempInterval); tempInterval += axis.visibleRange.interval) {\n duplicateTempInterval = tempInterval;\n }\n if (duplicateTempInterval < axis.visibleRange.max) {\n axis.visibleRange.max = duplicateTempInterval + axis.visibleRange.interval;\n }\n }\n axis.triggerRangeRender(this.chart, axis.visibleRange.min, axis.visibleRange.max, axis.visibleRange.interval);\n };\n /**\n * Calculate label for the axis.\n *\n * @private\n */\n Double.prototype.calculateVisibleLabels = function (axis, chart) {\n /*! Generate axis labels */\n axis.visibleLabels = [];\n var tempInterval = axis.visibleRange.min;\n var labelStyle;\n var controlName = chart.getModuleName();\n var isPolarRadar = controlName === 'chart' && chart.chartAreaType === 'PolarRadar';\n if (!isPolarRadar && (axis.zoomFactor < 1 || axis.zoomPosition > 0 || this.paddingInterval)) {\n tempInterval = axis.visibleRange.min - (axis.visibleRange.min % axis.visibleRange.interval);\n }\n var format = this.getFormat(axis);\n var isCustom = format.match('{value}') !== null;\n var intervalDigits = 0;\n var formatDigits = 0;\n if (axis.labelFormat && axis.labelFormat.indexOf('n') > -1) {\n formatDigits = parseInt(axis.labelFormat.substring(1, axis.labelFormat.length), 10);\n }\n axis.format = chart.intl.getNumberFormat({\n format: isCustom ? '' : format,\n useGrouping: chart.useGroupingSeparator\n });\n axis.startLabel = axis.format(axis.visibleRange.min);\n axis.endLabel = axis.format(axis.visibleRange.max);\n if (axis.visibleRange.interval && (axis.visibleRange.interval + '').indexOf('.') >= 0) {\n intervalDigits = (axis.visibleRange.interval + '').split('.')[1].length;\n }\n var duplicateTempInterval;\n for (; (tempInterval <= axis.visibleRange.max) && (duplicateTempInterval !== tempInterval); tempInterval += axis.visibleRange.interval) {\n duplicateTempInterval = tempInterval;\n labelStyle = (extend({}, getValue('properties', axis.labelStyle), null, true));\n if (withIn(tempInterval, axis.visibleRange)) {\n triggerLabelRender(chart, tempInterval, this.formatValue(axis, isCustom, format, tempInterval), labelStyle, axis);\n }\n }\n if (tempInterval && (tempInterval + '').indexOf('.') >= 0 && (tempInterval + '').split('.')[1].length > 10) {\n tempInterval = (tempInterval + '').split('.')[1].length > (formatDigits || intervalDigits) ?\n +tempInterval.toFixed(formatDigits || intervalDigits) : tempInterval;\n if (tempInterval <= axis.visibleRange.max) {\n triggerLabelRender(chart, tempInterval, this.formatValue(axis, isCustom, format, tempInterval), labelStyle, axis);\n }\n }\n if (axis.getMaxLabelWidth) {\n axis.getMaxLabelWidth(this.chart);\n }\n };\n /**\n * Format of the axis label.\n *\n * @private\n */\n Double.prototype.getFormat = function (axis) {\n if (axis.labelFormat) {\n if (axis.labelFormat.indexOf('p') === 0 && axis.labelFormat.indexOf('{value}') === -1 && axis.isStack100) {\n return '{value}%';\n }\n return axis.labelFormat;\n }\n return axis.isStack100 ? '{value}%' : '';\n };\n /**\n * Formatted the axis label.\n *\n * @private\n */\n Double.prototype.formatValue = function (axis, isCustom, format, tempInterval) {\n var labelValue = !(tempInterval % 1) ? tempInterval : Number(tempInterval.toLocaleString().replace(',', ''));\n return isCustom ? format.replace('{value}', axis.format(labelValue))\n : format ? axis.format(tempInterval) : axis.format(labelValue);\n };\n return Double;\n}());\nexport { Double };\n","/**\n * Specifies the chart constant value\n */\n/** @private */\nexport var loaded = 'loaded';\n/** @private */\nexport var legendClick = 'legendClick';\n/** @private */\nexport var load = 'load';\n/** @private */\nexport var animationComplete = 'animationComplete';\n/** @private */\nexport var legendRender = 'legendRender';\n/** @private */\nexport var textRender = 'textRender';\n/** @private */\nexport var pointRender = 'pointRender';\n/** @private */\nexport var sharedTooltipRender = 'sharedTooltipRender';\n/** @private */\nexport var seriesRender = 'seriesRender';\n/** @private */\nexport var axisLabelRender = 'axisLabelRender';\n/** @private */\nexport var axisLabelClick = 'axisLabelClick';\n/** @private */\nexport var axisRangeCalculated = 'axisRangeCalculated';\n/** @private */\nexport var axisMultiLabelRender = 'axisMultiLabelRender';\n/** @private */\nexport var tooltipRender = 'tooltipRender';\n/** @private */\nexport var chartMouseMove = 'chartMouseMove';\n/** @private */\nexport var chartMouseClick = 'chartMouseClick';\n/** @private */\nexport var chartDoubleClick = 'chartDoubleClick';\n/** @private */\nexport var pointClick = 'pointClick';\n/** @private */\nexport var pointDoubleClick = 'pointDoubleClick';\n/** @private */\nexport var pointMove = 'pointMove';\n/** @private */\nexport var chartMouseLeave = 'chartMouseLeave';\n/** @private */\nexport var chartMouseDown = 'chartMouseDown';\n/** @private */\nexport var chartMouseUp = 'chartMouseUp';\n/** @private */\nexport var zoomComplete = 'zoomComplete';\n/** @private */\nexport var dragComplete = 'dragComplete';\n/** @private */\nexport var selectionComplete = 'selectionComplete';\n/** @private */\nexport var resized = 'resized';\n/** @private */\nexport var beforeResize = 'beforeResize';\n/** @private */\nexport var beforePrint = 'beforePrint';\n/** @private */\nexport var annotationRender = 'annotationRender';\n/** @private */\nexport var scrollStart = 'scrollStart';\n/** @private */\nexport var scrollEnd = 'scrollEnd';\n/** @private */\nexport var scrollChanged = 'scrollChanged';\n/** @private */\nexport var stockEventRender = 'stockEventRender';\n/** @private */\nexport var multiLevelLabelClick = 'multiLevelLabelClick';\n/** @private */\nexport var dragStart = 'dragStart';\n/** @private */\nexport var drag = 'drag';\n/** @private */\nexport var dragEnd = 'dragEnd';\n/*** @private*/\nexport var regSub = /~\\d+~/g;\n/*** @private*/\nexport var regSup = /\\^\\d+\\^/g;\n/** @private */\nexport var beforeExport = 'beforeExport';\n/** @private */\nexport var afterExport = 'afterExport';\n/** @private */\nexport var bulletChartMouseClick = 'bulletChartMouseClick';\n/** @private */\nexport var onZooming = 'onZooming';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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, Complex, Collection } from '@syncfusion/ej2-base';\nimport { Font, Border } from '../../common/model/base';\n/**\n * Configures the Annotation for chart.\n */\nvar ChartAnnotationSettings = /** @class */ (function (_super) {\n __extends(ChartAnnotationSettings, _super);\n function ChartAnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('0')\n ], ChartAnnotationSettings.prototype, \"x\", void 0);\n __decorate([\n Property('0')\n ], ChartAnnotationSettings.prototype, \"y\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"content\", void 0);\n __decorate([\n Property('Center')\n ], ChartAnnotationSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Pixel')\n ], ChartAnnotationSettings.prototype, \"coordinateUnits\", void 0);\n __decorate([\n Property('Chart')\n ], ChartAnnotationSettings.prototype, \"region\", void 0);\n __decorate([\n Property('Middle')\n ], ChartAnnotationSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"xAxisName\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"yAxisName\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"description\", void 0);\n return ChartAnnotationSettings;\n}(ChildProperty));\nexport { ChartAnnotationSettings };\n/**\n * label border properties.\n */\nvar LabelBorder = /** @class */ (function (_super) {\n __extends(LabelBorder, _super);\n function LabelBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], LabelBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], LabelBorder.prototype, \"width\", void 0);\n __decorate([\n Property('Rectangle')\n ], LabelBorder.prototype, \"type\", void 0);\n return LabelBorder;\n}(ChildProperty));\nexport { LabelBorder };\n/**\n * categories for multi level labels\n */\nvar MultiLevelCategories = /** @class */ (function (_super) {\n __extends(MultiLevelCategories, _super);\n function MultiLevelCategories() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"end\", void 0);\n __decorate([\n Property('')\n ], MultiLevelCategories.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"maximumTextWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], MultiLevelCategories.prototype, \"type\", void 0);\n return MultiLevelCategories;\n}(ChildProperty));\nexport { MultiLevelCategories };\n/**\n * Strip line properties\n */\nvar StripLineSettings = /** @class */ (function (_super) {\n __extends(StripLineSettings, _super);\n function StripLineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], StripLineSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"startFromAxis\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"end\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"size\", void 0);\n __decorate([\n Property('#808080')\n ], StripLineSettings.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Property('Auto')\n ], StripLineSettings.prototype, \"sizeType\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isRepeat\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatEvery\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatUntil\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isSegmented\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentStart\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentEnd\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentAxisName\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 1 }, Border)\n ], StripLineSettings.prototype, \"border\", void 0);\n __decorate([\n Property('')\n ], StripLineSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"rotation\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Complex({ size: '12px', color: null, fontStyle: 'Normal', fontWeight: '400', fontFamily: null }, Font)\n ], StripLineSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Behind')\n ], StripLineSettings.prototype, \"zIndex\", void 0);\n __decorate([\n Property(1)\n ], StripLineSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('')\n ], StripLineSettings.prototype, \"imageUrl\", void 0);\n return StripLineSettings;\n}(ChildProperty));\nexport { StripLineSettings };\n/**\n * MultiLevelLabels properties\n */\nvar MultiLevelLabels = /** @class */ (function (_super) {\n __extends(MultiLevelLabels, _super);\n function MultiLevelLabels() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Center')\n ], MultiLevelLabels.prototype, \"alignment\", void 0);\n __decorate([\n Property('Wrap')\n ], MultiLevelLabels.prototype, \"overflow\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], MultiLevelLabels.prototype, \"textStyle\", void 0);\n __decorate([\n Complex({ color: null, width: 1, type: 'Rectangle' }, LabelBorder)\n ], MultiLevelLabels.prototype, \"border\", void 0);\n __decorate([\n Collection([], MultiLevelCategories)\n ], MultiLevelLabels.prototype, \"categories\", void 0);\n return MultiLevelLabels;\n}(ChildProperty));\nexport { MultiLevelLabels };\n/**\n * Specifies range for scrollbarSettings property\n *\n * @public\n */\nvar ScrollbarSettingsRange = /** @class */ (function (_super) {\n __extends(ScrollbarSettingsRange, _super);\n function ScrollbarSettingsRange() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ScrollbarSettingsRange.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettingsRange.prototype, \"maximum\", void 0);\n return ScrollbarSettingsRange;\n}(ChildProperty));\nexport { ScrollbarSettingsRange };\n/**\n * Scrollbar Settings Properties for Lazy Loading\n */\nvar ScrollbarSettings = /** @class */ (function (_super) {\n __extends(ScrollbarSettings, _super);\n function ScrollbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ScrollbarSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"pointsLength\", void 0);\n __decorate([\n Complex({}, ScrollbarSettingsRange)\n ], ScrollbarSettings.prototype, \"range\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"trackColor\", void 0);\n __decorate([\n Property(0)\n ], ScrollbarSettings.prototype, \"scrollbarRadius\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"scrollbarColor\", void 0);\n __decorate([\n Property(0)\n ], ScrollbarSettings.prototype, \"trackRadius\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"gripColor\", void 0);\n __decorate([\n Property(16)\n ], ScrollbarSettings.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], ScrollbarSettings.prototype, \"enableZoom\", void 0);\n return ScrollbarSettings;\n}(ChildProperty));\nexport { ScrollbarSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { Property, Complex, ChildProperty, Collection, extend, Browser } from '@syncfusion/ej2-base';\nimport { Font, Border } from '../../common/model/base';\nimport { rotateTextSize, firstToLowerCase, valueToCoefficient, inside, isBreakLabel, isZoomSet, getTitle } from '../../common/utils/helper';\nimport { Size, Rect, measureText } from '@syncfusion/ej2-svg-base';\nimport { DoubleRange } from '../utils/double-range';\nimport { Double } from '../axis/double-axis';\nimport { axisRangeCalculated } from '../../common/model/constants';\nimport { StripLineSettings, MultiLevelLabels, LabelBorder, ScrollbarSettings } from '../model/chart-base';\nimport { textWrap } from '../../common/utils/helper';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Configures the `rows` of the chart.\n */\nvar Row = /** @class */ (function (_super) {\n __extends(Row, _super);\n function Row() {\n /**\n * The height of the row as a string accept input both as '100px' and '100%'.\n * If specified as '100%, row renders to the full height of its chart.\n *\n * @default '100%'\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.axes = [];\n /** @private */\n _this.nearSizes = [];\n /** @private */\n _this.farSizes = [];\n /** @private */\n _this.insideFarSizes = [];\n /** @private */\n _this.insideNearSizes = [];\n return _this;\n }\n /**\n * Measure the row size\n *\n * @returns {void}\n * @private\n */\n Row.prototype.computeSize = function (axis, scrollBarHeight, definition, chart) {\n var width = 0;\n var innerPadding = (axis.labelPosition === 'Inside' && (chart.axes.indexOf(axis) > -1)) ? -5 : 5;\n if (axis.visible && axis.internalVisibility) {\n width += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding, definition, chart) + axis.lineStyle.width * 0.5);\n }\n if (axis.isAxisOpposedPosition) {\n this.farSizes.push(width);\n }\n else {\n this.nearSizes.push(width);\n }\n };\n __decorate([\n Property('100%')\n ], Row.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], Row.prototype, \"border\", void 0);\n return Row;\n}(ChildProperty));\nexport { Row };\n/**\n * Configures the `columns` of the chart.\n */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n /**\n * The width of the column as a string accepts input both as like '100px' or '100%'.\n * If specified as '100%, column renders to the full width of its chart.\n *\n * @default '100%'\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.axes = [];\n /** @private */\n _this.nearSizes = [];\n /** @private */\n _this.farSizes = [];\n /** @private */\n _this.insideFarSizes = [];\n /** @private */\n _this.insideNearSizes = [];\n /** @private */\n _this.padding = 0;\n return _this;\n }\n /**\n * Measure the column size\n *\n * @returns {void}\n * @private\n */\n Column.prototype.computeSize = function (axis, scrollBarHeight, definition, chart) {\n var height = 0;\n var innerPadding = 5;\n if (axis.visible && axis.internalVisibility) {\n height += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding, definition, chart) + axis.lineStyle.width * 0.5);\n }\n if (axis.isAxisOpposedPosition) {\n this.farSizes.push(height);\n }\n else {\n this.nearSizes.push(height);\n }\n };\n __decorate([\n Property('100%')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Complex({}, Border)\n ], Column.prototype, \"border\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n/**\n * Configures the major grid lines in the `axis`.\n */\nvar MajorGridLines = /** @class */ (function (_super) {\n __extends(MajorGridLines, _super);\n function MajorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MajorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MajorGridLines.prototype, \"color\", void 0);\n return MajorGridLines;\n}(ChildProperty));\nexport { MajorGridLines };\n/**\n * Configures the minor grid lines in the `axis`.\n */\nvar MinorGridLines = /** @class */ (function (_super) {\n __extends(MinorGridLines, _super);\n function MinorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MinorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MinorGridLines.prototype, \"color\", void 0);\n return MinorGridLines;\n}(ChildProperty));\nexport { MinorGridLines };\n/**\n * Configures the axis line of a chart.\n */\nvar AxisLine = /** @class */ (function (_super) {\n __extends(AxisLine, _super);\n function AxisLine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], AxisLine.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], AxisLine.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], AxisLine.prototype, \"color\", void 0);\n return AxisLine;\n}(ChildProperty));\nexport { AxisLine };\n/**\n * Configures the major tick lines.\n */\nvar MajorTickLines = /** @class */ (function (_super) {\n __extends(MajorTickLines, _super);\n function MajorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MajorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MajorTickLines.prototype, \"color\", void 0);\n return MajorTickLines;\n}(ChildProperty));\nexport { MajorTickLines };\n/**\n * Configures the minor tick lines.\n */\nvar MinorTickLines = /** @class */ (function (_super) {\n __extends(MinorTickLines, _super);\n function MinorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MinorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MinorTickLines.prototype, \"color\", void 0);\n return MinorTickLines;\n}(ChildProperty));\nexport { MinorTickLines };\n/**\n * Configures the crosshair ToolTip.\n */\nvar CrosshairTooltip = /** @class */ (function (_super) {\n __extends(CrosshairTooltip, _super);\n function CrosshairTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairTooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], CrosshairTooltip.prototype, \"fill\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], CrosshairTooltip.prototype, \"textStyle\", void 0);\n return CrosshairTooltip;\n}(ChildProperty));\nexport { CrosshairTooltip };\n/**\n * Configures the axes in the chart.\n *\n * @public\n */\nvar Axis = /** @class */ (function (_super) {\n __extends(Axis, _super);\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n function Axis(parent, propName, defaultValue, isArray) {\n var _this = _super.call(this, parent, propName, defaultValue, isArray) || this;\n /** @private */\n _this.visibleLabels = [];\n /** @private */\n _this.series = [];\n /** @private */\n _this.rect = new Rect(undefined, undefined, 0, 0);\n /** @private */\n _this.axisBottomLine = null;\n /** @private */\n _this.intervalDivs = [10, 5, 2, 1];\n /** @private */\n _this.isStack100 = false;\n /** @private */\n _this.crossAt = null;\n /** @private */\n _this.updatedRect = null;\n /** @private */\n _this.multiLevelLabelHeight = 0;\n /** @private */\n _this.isChart = true;\n /** @private */\n _this.isIntervalInDecimal = true;\n /** @private */\n _this.titleCollection = [];\n /** @private */\n _this.titleSize = new Size(0, 0);\n /**\n * Task: BLAZ-2044\n * This property used to hide the axis when series hide from legend click\n *\n * @private\n */\n _this.internalVisibility = true;\n /**\n * This property is used to place the vertical axis in opposed position and horizontal axis in inversed\n * when RTL is enabled in chart\n *\n * @private */\n _this.isRTLEnabled = false;\n _this.angle = _this.labelRotation;\n return _this;\n }\n /**\n * The function used to find tick size.\n *\n * @returns {number} tick line size\n * @private\n */\n Axis.prototype.findTickSize = function (crossAxis) {\n if (this.tickPosition === 'Inside') {\n return 0;\n }\n if (crossAxis && (!crossAxis.visibleRange || this.isInside(crossAxis.visibleRange))) {\n return 0;\n }\n return this.majorTickLines.height;\n };\n /**\n * The function used to find axis position.\n *\n * @returns {number}\n * @private\n */\n Axis.prototype.isInside = function (range) {\n return (inside(this.crossAt, range) ||\n (!this.isAxisOpposedPosition && this.crossAt >= range.max) || (this.isAxisOpposedPosition && this.crossAt <= range.min));\n };\n /**\n * The function used to find label Size.\n *\n * @returns {number} labelSize\n * @private\n */\n Axis.prototype.findLabelSize = function (crossAxis, innerPadding, definition, chart) {\n var titleSize = 0;\n var isHorizontal = this.orientation === 'Horizontal';\n if (this.title) {\n var angle = this.titleRotation;\n if ((isNullOrUndefined(angle))) {\n this.titleSize = measureText(this.title, this.titleStyle, chart.themeStyle.axisTitleFont);\n titleSize = this.titleSize.height + innerPadding;\n }\n else {\n this.titleSize = rotateTextSize(this.titleStyle, this.title, angle, chart);\n titleSize = (this.orientation === 'Vertical' ? this.titleSize.width : this.titleSize.height) + innerPadding;\n }\n if (this.rect.width || this.rect.height) {\n var length_1 = isHorizontal ? this.rect.width : this.rect.height;\n this.titleCollection = getTitle(this.title, this.titleStyle, length_1, chart.themeStyle.legendLabelFont);\n titleSize = (titleSize * this.titleCollection.length);\n }\n }\n var diff;\n var value;\n var labelSize = titleSize + innerPadding + this.titlePadding + this.labelPadding +\n ((this.orientation === 'Vertical') ? this.maxLabelSize.width : this.maxLabelSize.height) + this.multiLevelLabelHeight;\n if (crossAxis && this.placeNextToAxisLine) {\n var range = crossAxis.visibleRange;\n var size = (crossAxis.orientation === 'Horizontal') ? crossAxis.rect.width : crossAxis.rect.height;\n if (!range || !size) {\n return 0;\n }\n else if (this.isInside(range)) {\n value = this.findDifference(crossAxis);\n diff = (value) * (size / range.delta);\n diff = (value) * ((size - (diff < labelSize ? (labelSize - diff) : 0)) / range.delta);\n labelSize = (diff < labelSize) ? (labelSize - diff) : 0;\n }\n }\n if (this.isAxisOpposedPosition) {\n definition.insideFarSizes.push(labelSize);\n }\n else {\n definition.insideNearSizes.push(labelSize);\n }\n if (this.labelPosition === 'Inside') {\n return titleSize + innerPadding;\n }\n return labelSize;\n };\n /**\n * The function used to find axis position.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.updateCrossValue = function () {\n var value = this.crossAt;\n if (value === null || !this.isInside(this.crossInAxis.visibleRange)) {\n this.updatedRect = this.rect;\n return null;\n }\n var range = this.crossInAxis.visibleRange;\n if (!this.isAxisOpposedPosition) {\n if (this.crossAt > range.max) {\n value = range.max;\n }\n }\n else {\n if (this.crossAt < range.min) {\n value = range.min;\n }\n }\n this.updatedRect = extend({}, this.rect, null, true);\n if (this.orientation === 'Horizontal') {\n value = this.crossInAxis.rect.height - (valueToCoefficient(value, this.crossInAxis) * this.crossInAxis.rect.height);\n this.updatedRect.y = this.crossInAxis.rect.y + value;\n }\n else {\n value = valueToCoefficient(value, this.crossInAxis) * this.crossInAxis.rect.width;\n this.updatedRect.x = this.crossInAxis.rect.x + value;\n }\n };\n Axis.prototype.findDifference = function (crossAxis) {\n var value = 0;\n if (this.isAxisOpposedPosition) {\n value = crossAxis.isAxisInverse ? crossAxis.visibleRange.min : crossAxis.visibleRange.max;\n }\n else {\n value = crossAxis.isAxisInverse ? crossAxis.visibleRange.max : crossAxis.visibleRange.min;\n }\n return Math.abs(this.crossAt - value);\n };\n /**\n * Calculate visible range for axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.calculateVisibleRangeOnZooming = function (size) {\n if (isZoomSet(this)) {\n var baseRange = this.actualRange;\n var start = void 0;\n var end = void 0;\n if (!this.isAxisInverse) {\n start = this.actualRange.min + this.zoomPosition * this.actualRange.delta;\n end = start + this.zoomFactor * this.actualRange.delta;\n }\n else {\n start = this.actualRange.max - (this.zoomPosition * this.actualRange.delta);\n end = start - (this.zoomFactor * this.actualRange.delta);\n }\n if (start < baseRange.min) {\n end = end + (baseRange.min - start);\n start = baseRange.min;\n }\n if (end > baseRange.max) {\n start = start - (end - baseRange.max);\n end = baseRange.max;\n }\n this.doubleRange = new DoubleRange(start, end);\n this.visibleRange = { min: this.doubleRange.start, max: this.doubleRange.end,\n delta: this.doubleRange.delta, interval: this.visibleRange.interval };\n }\n };\n /**\n * Triggers the event.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.triggerRangeRender = function (chart, minimum, maximum, interval) {\n var argsData = {\n cancel: false, name: axisRangeCalculated, axis: this,\n minimum: minimum, maximum: maximum, interval: interval\n };\n chart.trigger(axisRangeCalculated, argsData);\n if (!argsData.cancel) {\n this.visibleRange = { min: argsData.minimum, max: argsData.maximum, interval: argsData.interval,\n delta: argsData.maximum - argsData.minimum };\n }\n };\n /**\n * Calculate padding for the axis.\n *\n * @returns {string}\n * @private\n */\n Axis.prototype.getRangePadding = function (chart) {\n var padding = this.rangePadding;\n if (padding !== 'Auto') {\n return padding;\n }\n switch (this.orientation) {\n case 'Horizontal':\n if (chart.requireInvertedAxis) {\n padding = (this.isStack100 || this.baseModule.chart.stockChart ? 'Round' : 'Normal');\n }\n else {\n padding = 'None';\n }\n break;\n case 'Vertical':\n if (!chart.requireInvertedAxis) {\n padding = (this.isStack100 || this.baseModule.chart.stockChart ? 'Round' : 'Normal');\n }\n else {\n padding = 'None';\n }\n break;\n }\n return padding;\n };\n /**\n * Calculate maximum label width for the axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.getMaxLabelWidth = function (chart) {\n var pointX;\n var previousEnd = 0;\n var isIntersect = false;\n var isAxisLabelBreak;\n this.angle = this.labelRotation;\n this.maxLabelSize = new Size(0, 0);\n var action = this.labelIntersectAction;\n var label;\n for (var i = 0, len = this.visibleLabels.length; i < len; i++) {\n label = this.visibleLabels[i];\n isAxisLabelBreak = isBreakLabel(label.originalText);\n if (isAxisLabelBreak) {\n label.size = measureText(label.originalText.replace(/
/g, ' '), this.labelStyle, chart.themeStyle.axisLabelFont);\n label.breakLabelSize = measureText(this.enableTrim ? label.text.join('
') : label.originalText, this.labelStyle, chart.themeStyle.axisLabelFont);\n }\n else {\n label.size = measureText(label.text, this.labelStyle, chart.themeStyle.axisLabelFont);\n }\n var width = isAxisLabelBreak ? label.breakLabelSize.width : label.size.width;\n if (width > this.maxLabelSize.width) {\n this.maxLabelSize.width = width;\n this.rotatedLabel = label.text;\n }\n var height = isAxisLabelBreak ? label.breakLabelSize.height : label.size.height;\n if (height > this.maxLabelSize.height) {\n this.maxLabelSize.height = height;\n }\n if (isAxisLabelBreak) {\n label.text = this.enableTrim ? label.text : label.originalText.split('
');\n }\n if (action === 'None' || action === 'Hide' || action === 'Trim') {\n continue;\n }\n if ((action !== 'None' || this.angle % 360 === 0) && this.orientation === 'Horizontal' &&\n this.rect.width > 0 && !isIntersect) {\n var width1 = isAxisLabelBreak ? label.breakLabelSize.width : label.size.width;\n pointX = (valueToCoefficient(label.value, this) * this.rect.width) + this.rect.x;\n pointX -= width1 / 2;\n if (this.edgeLabelPlacement === 'Shift') {\n if (i === 0 && pointX < this.rect.x) {\n pointX = this.rect.x;\n }\n if (i === this.visibleLabels.length - 1 && ((pointX + width1) > (this.rect.x + this.rect.width))) {\n pointX = this.rect.x + this.rect.width - width1;\n }\n }\n switch (action) {\n case 'MultipleRows':\n if (i > 0) {\n this.findMultiRows(i, pointX, label, isAxisLabelBreak);\n }\n break;\n case 'Rotate45':\n case 'Rotate90':\n if (i > 0 && (!this.isAxisInverse ? pointX <= previousEnd : pointX + width1 >= previousEnd)) {\n this.angle = (action === 'Rotate45') ? 45 : 90;\n isIntersect = true;\n }\n break;\n default:\n if (isAxisLabelBreak) {\n var result = void 0;\n var result1 = [];\n var str = void 0;\n for (var index = 0; index < label.text.length; index++) {\n result = textWrap(label.text[index], this.rect.width / this.visibleLabels.length, this.labelStyle, null, null, chart.themeStyle.axisLabelFont);\n if (result.length > 1) {\n for (var j = 0; j < result.length; j++) {\n str = result[j];\n result1.push(str);\n }\n }\n else {\n result1.push(result[0]);\n }\n }\n label.text = result1;\n }\n else {\n label.text = textWrap(label.text, this.rect.width / this.visibleLabels.length, this.labelStyle, null, null, chart.themeStyle.axisLabelFont);\n }\n // eslint-disable-next-line no-case-declarations\n var height_1 = (label.size.height * label.text.length);\n if (height_1 > this.maxLabelSize.height) {\n this.maxLabelSize.height = height_1;\n }\n break;\n }\n previousEnd = this.isAxisInverse ? pointX : pointX + width1;\n }\n }\n if (this.angle !== 0 && this.orientation === 'Horizontal') {\n //I264474: Fix for datasource bind im mounted console error ocurred\n this.rotatedLabel = isNullOrUndefined(this.rotatedLabel) ? '' : this.rotatedLabel;\n var isHorizontalAngle = this.angle === -360 || this.angle === 0 || this.angle === -180 ||\n this.angle === 180 || this.angle === 360;\n // To avoid overlap axis label with chart title or chart legend when it is outside.\n if (this.labelPosition === 'Outside' && !isHorizontalAngle && isBreakLabel(this.rotatedLabel)) {\n this.maxLabelSize = new Size(this.maxLabelSize.height, this.maxLabelSize.width);\n }\n else if (!chart.stockChart) {\n this.maxLabelSize = rotateTextSize(this.labelStyle, this.rotatedLabel, this.angle, chart);\n }\n }\n else if (this.angle !== 0 && this.orientation === 'Vertical') {\n //I264474: Fix for datasource bind im mounted console error ocurred\n this.rotatedLabel = isNullOrUndefined(this.rotatedLabel) ? '' : this.rotatedLabel;\n var isHorizontalAngle = this.angle === -360 || this.angle === 0 || this.angle === -180 ||\n this.angle === 180 || this.angle === 360;\n // To avoid overlap axis label with chart title or chart legend when it is outside.\n if (this.labelPosition === 'Outside' && !isHorizontalAngle && isBreakLabel(this.rotatedLabel)) {\n this.maxLabelSize = new Size(this.maxLabelSize.height, this.maxLabelSize.width);\n }\n else if (!chart.stockChart) {\n this.maxLabelSize = rotateTextSize(this.labelStyle, this.rotatedLabel, this.angle, chart);\n }\n }\n if (chart.multiLevelLabelModule && this.multiLevelLabels.length > 0) {\n chart.multiLevelLabelModule.getMultilevelLabelsHeight(this);\n }\n };\n /**\n * Finds the multiple rows for axis.\n *\n * @returns {void}\n */\n Axis.prototype.findMultiRows = function (length, currentX, currentLabel, isBreakLabels) {\n var label;\n var pointX;\n var width2;\n var store = [];\n var isMultiRows;\n for (var i = length - 1; i >= 0; i--) {\n label = this.visibleLabels[i];\n width2 = isBreakLabels ? label.breakLabelSize.width : label.size.width;\n pointX = (valueToCoefficient(label.value, this) * this.rect.width) + this.rect.x;\n isMultiRows = !this.isAxisInverse ? currentX < (pointX + width2 * 0.5) :\n currentX + currentLabel.size.width > (pointX - width2 * 0.5);\n if (isMultiRows) {\n store.push(label.index);\n currentLabel.index = (currentLabel.index > label.index) ? currentLabel.index : label.index + 1;\n }\n else {\n currentLabel.index = store.indexOf(label.index) > -1 ? currentLabel.index : label.index;\n }\n }\n var height = ((isBreakLabels ? currentLabel.breakLabelSize.height : currentLabel.size.height) * currentLabel.index) +\n (5 * (currentLabel.index - 1));\n if (height > this.maxLabelSize.height) {\n this.maxLabelSize.height = height;\n }\n };\n /**\n * Finds the default module for axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.getModule = function (chart) {\n if (this.valueType === 'Double') {\n this.baseModule = new Double(chart);\n }\n else {\n this.baseModule = chart[firstToLowerCase(this.valueType) + 'Module'];\n }\n };\n /**\n * Set the axis `opposedPosition` and `isInversed` properties.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.setIsInversedAndOpposedPosition = function (isPolar) {\n if (isPolar === void 0) { isPolar = false; }\n this.isAxisOpposedPosition = this.opposedPosition || (!isPolar && this.isRTLEnabled && this.orientation === 'Vertical');\n this.isAxisInverse = this.isInversed || (this.isRTLEnabled && this.orientation === 'Horizontal');\n };\n __decorate([\n Complex({ fontFamily: null, size: \"12px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], Axis.prototype, \"labelStyle\", void 0);\n __decorate([\n Complex({}, CrosshairTooltip)\n ], Axis.prototype, \"crosshairTooltip\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"title\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"14px\", fontStyle: 'Normal', fontWeight: '600', color: null }, Font)\n ], Axis.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"skeleton\", void 0);\n __decorate([\n Property('DateTime')\n ], Axis.prototype, \"skeletonType\", void 0);\n __decorate([\n Property('Center')\n ], Axis.prototype, \"lineBreakAlignment\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"plotOffset\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetLeft\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetTop\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetRight\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetBottom\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"isIndexed\", void 0);\n __decorate([\n Property(10)\n ], Axis.prototype, \"logBase\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"columnIndex\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"rowIndex\", void 0);\n __decorate([\n Property(1)\n ], Axis.prototype, \"span\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"desiredIntervals\", void 0);\n __decorate([\n Property(3)\n ], Axis.prototype, \"maximumLabels\", void 0);\n __decorate([\n Property(1)\n ], Axis.prototype, \"zoomFactor\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"zoomPosition\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"enableScrollbarOnZooming\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"opposedPosition\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"enableAutoIntervalOnZooming\", void 0);\n __decorate([\n Property('Auto')\n ], Axis.prototype, \"rangePadding\", void 0);\n __decorate([\n Property('Double')\n ], Axis.prototype, \"valueType\", void 0);\n __decorate([\n Property('None')\n ], Axis.prototype, \"edgeLabelPlacement\", void 0);\n __decorate([\n Property('Auto')\n ], Axis.prototype, \"intervalType\", void 0);\n __decorate([\n Property('BetweenTicks')\n ], Axis.prototype, \"labelPlacement\", void 0);\n __decorate([\n Property('Outside')\n ], Axis.prototype, \"tickPosition\", void 0);\n __decorate([\n Property('Outside')\n ], Axis.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"name\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"visible\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"minorTicksPerInterval\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"labelRotation\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"titleRotation\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"crossesAt\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"placeNextToAxisLine\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"crossesInAxis\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"maximum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"interval\", void 0);\n __decorate([\n Property(34)\n ], Axis.prototype, \"maximumLabelWidth\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"enableTrim\", void 0);\n __decorate([\n Property(5)\n ], Axis.prototype, \"labelPadding\", void 0);\n __decorate([\n Property(5)\n ], Axis.prototype, \"titlePadding\", void 0);\n __decorate([\n Complex({}, MajorTickLines)\n ], Axis.prototype, \"majorTickLines\", void 0);\n __decorate([\n Complex({}, MinorTickLines)\n ], Axis.prototype, \"minorTickLines\", void 0);\n __decorate([\n Complex({}, MajorGridLines)\n ], Axis.prototype, \"majorGridLines\", void 0);\n __decorate([\n Complex({}, MinorGridLines)\n ], Axis.prototype, \"minorGridLines\", void 0);\n __decorate([\n Complex({}, AxisLine)\n ], Axis.prototype, \"lineStyle\", void 0);\n __decorate([\n Property(Browser.isDevice ? 'Rotate45' : 'Trim')\n ], Axis.prototype, \"labelIntersectAction\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"isInversed\", void 0);\n __decorate([\n Property(100)\n ], Axis.prototype, \"coefficient\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"startAngle\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"startFromZero\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"description\", void 0);\n __decorate([\n Property(2)\n ], Axis.prototype, \"tabIndex\", void 0);\n __decorate([\n Collection([], StripLineSettings)\n ], Axis.prototype, \"stripLines\", void 0);\n __decorate([\n Collection([], MultiLevelLabels)\n ], Axis.prototype, \"multiLevelLabels\", void 0);\n __decorate([\n Complex({ color: null, width: 0, type: 'Rectangle' }, LabelBorder)\n ], Axis.prototype, \"border\", void 0);\n __decorate([\n Complex({}, ScrollbarSettings)\n ], Axis.prototype, \"scrollbarSettings\", void 0);\n return Axis;\n}(ChildProperty));\nexport { Axis };\n/** @private */\nvar VisibleLabels = /** @class */ (function () {\n function VisibleLabels(text, value, labelStyle, originalText, size, breakLabelSize, index) {\n if (size === void 0) { size = new Size(0, 0); }\n if (breakLabelSize === void 0) { breakLabelSize = new Size(0, 0); }\n if (index === void 0) { index = 1; }\n this.text = text;\n this.originalText = originalText;\n this.value = value;\n this.labelStyle = labelStyle;\n this.size = size;\n this.breakLabelSize = breakLabelSize;\n this.index = index;\n }\n return VisibleLabels;\n}());\nexport { VisibleLabels };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\nimport { Animation, compile as templateComplier, Browser } from '@syncfusion/ej2-base';\nimport { merge, extend, isNullOrUndefined, resetBlazorTemplate } from '@syncfusion/ej2-base';\nimport { createElement, remove } from '@syncfusion/ej2-base';\nimport { Index } from '../../common/model/base';\nimport { VisibleLabels } from '../../chart/axis/axis';\nimport { axisLabelRender, regSub } from '../model/constants';\nimport { measureText, Rect, TextOption, Size, PathOption, SvgRenderer, CanvasRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Function to sort the dataSource, by default it sort the data in ascending order.\n *\n * @param {Object} data chart data\n * @param {string} fields date fields\n * @param {boolean} isDescending boolean values of descending\n * @returns {Object[]} It returns chart data which be sorted.\n */\nexport function sort(data, fields, isDescending) {\n var sortData = extend([], data, null);\n for (var i = 0; i < sortData.length; i++) {\n for (var j = 0; j < fields.length; j++) {\n if (sortData[i][fields[j]] instanceof Date) {\n sortData[i][fields[j]] = sortData[i][fields[j]].getTime();\n }\n }\n }\n sortData.sort(function (a, b) {\n var first = 0;\n var second = 0;\n for (var i = 0; i < fields.length; i++) {\n first += a[fields[i]];\n second += b[fields[i]];\n }\n if ((!isDescending && first < second) || (isDescending && first > second)) {\n return -1;\n }\n else if (first === second) {\n return 0;\n }\n return 1;\n });\n return sortData;\n}\n/** @private */\nexport function isBreakLabel(label) {\n return label.indexOf('
') !== -1;\n}\n/** @private */\nexport function getVisiblePoints(series) {\n var points = extend([], series.points, null, true);\n var tempPoints = [];\n var tempPoint;\n var pointIndex = 0;\n for (var i = 0; i < points.length; i++) {\n tempPoint = points[i];\n if (isNullOrUndefined(tempPoint.x)) {\n continue;\n }\n else {\n tempPoint.index = pointIndex++;\n tempPoints.push(tempPoint);\n }\n }\n return tempPoints;\n}\n/** @private */\nexport function rotateTextSize(font, text, angle, chart) {\n var renderer = new SvgRenderer(chart.element.id);\n var labelText;\n var textCollection = [];\n var height;\n var dy;\n var label;\n var tspanElement;\n var options = {\n id: 'rotate_text',\n x: chart.initialClipRect.x,\n y: chart.initialClipRect.y,\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'transform': 'rotate(' + angle + ', 0, 0)',\n 'text-anchor': 'middle'\n };\n if (isBreakLabel(text)) {\n textCollection = text.split('
');\n labelText = textCollection[0];\n }\n else {\n labelText = text;\n }\n var htmlObject = renderer.createText(options, labelText);\n if (!chart.delayRedraw && !chart.redraw) {\n chart.element.appendChild(chart.svgObject);\n }\n // for line break label\n if (typeof textCollection !== 'string' && textCollection.length > 1) {\n for (var i = 1, len = textCollection.length; i < len; i++) {\n height = (measureText(textCollection[i], font, chart.themeStyle.axisLabelFont).height);\n dy = (options.y) + ((i * height));\n label = textCollection[i];\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': dy\n }, label);\n htmlObject.appendChild(tspanElement);\n }\n }\n chart.svgObject.appendChild(htmlObject);\n var box = htmlObject.getBoundingClientRect();\n remove(htmlObject);\n if (!chart.delayRedraw && !chart.redraw) {\n remove(chart.svgObject);\n }\n if (chart.enableCanvas) {\n var textWidth = measureText(text, font, chart.themeStyle.axisLabelFont).width;\n var textHeight = measureText(text, font, chart.themeStyle.axisLabelFont).height;\n var angleInRadians = (angle * Math.PI) / 180; // Convert the rotation angle to radians\n var rotatedTextWidth = Math.abs(Math.cos(angleInRadians) * textWidth) + Math.abs(Math.sin(angleInRadians) * textHeight);\n var rotatedTextHeight = Math.abs(Math.sin(angleInRadians) * textWidth) + Math.abs(Math.cos(angleInRadians) * textHeight);\n return new Size(rotatedTextWidth, rotatedTextHeight);\n }\n return new Size((box.right - box.left), (box.bottom - box.top));\n}\n/** @private */\nexport function removeElement(id) {\n if (!id) {\n return null;\n }\n var element = typeof id === 'string' ? getElement(id) : id;\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function logBase(value, base) {\n return Math.log(value) / Math.log(base);\n}\n/** @private */\nexport function showTooltip(text, x, y, areaWidth, id, element, isTouch, isTitleOrLegendEnabled) {\n //let id1: string = 'EJ2_legend_tooltip';\n var tooltip = document.getElementById(id);\n var size = measureText(text, {\n fontFamily: 'Segoe UI', size: '12px',\n fontStyle: 'Normal', fontWeight: 'Regular'\n });\n var width = size.width + 5;\n x = (x + width > areaWidth) ? x - (width + 15) : x;\n y = isTitleOrLegendEnabled ? (y - size.height / 2) : y + 15;\n if (!tooltip) {\n tooltip = createElement('div', {\n id: id,\n styles: 'top:' + (y).toString() + 'px;left:' + (x + 15).toString() +\n 'px;background-color: rgb(255, 255, 255) !important; color:black !important; ' +\n 'position:absolute;border:1px solid rgb(112, 112, 112); padding-left : 3px; padding-right : 2px;' +\n 'padding-bottom : 2px; padding-top : 2px; font-size:12px; font-family: \"Segoe UI\"'\n });\n tooltip.innerText = text;\n element.appendChild(tooltip);\n var left = parseInt(tooltip.style.left.replace('px', ''), 10);\n if (left < 0) {\n tooltip.style.left = '0px';\n }\n }\n else {\n tooltip.innerText = text;\n tooltip.style.top = (y).toString() + 'px';\n tooltip.style.left = (x + 15).toString() + 'px';\n }\n if (isTouch) {\n setTimeout(function () { removeElement(id); }, 1500);\n }\n}\n/** @private */\nexport function inside(value, range) {\n return (value < range.max) && (value > range.min);\n}\n/** @private */\nexport function withIn(value, range) {\n return (value <= range.max) && (value >= range.min);\n}\n/** @private */\nexport function logWithIn(value, axis) {\n return axis.valueType === 'Logarithmic' ? logBase(value, axis.logBase) : value;\n}\n/** @private */\nexport function withInRange(previousPoint, currentPoint, nextPoint, series) {\n var mX2 = logWithIn(currentPoint.xValue, series.xAxis);\n var mX1 = previousPoint ? logWithIn(previousPoint.xValue, series.xAxis) : mX2;\n var mX3 = nextPoint ? logWithIn(nextPoint.xValue, series.xAxis) : mX2;\n var xStart = Math.floor(series.xAxis.visibleRange.min);\n var xEnd = Math.ceil(series.xAxis.visibleRange.max);\n return ((mX1 >= xStart && mX1 <= xEnd) || (mX2 >= xStart && mX2 <= xEnd) ||\n (mX3 >= xStart && mX3 <= xEnd) || (xStart >= mX1 && xStart <= mX3));\n}\n/** @private */\nexport function sum(values) {\n var sum = 0;\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var value = values_1[_i];\n sum += value;\n }\n return sum;\n}\n/** @private */\nexport function subArraySum(values, first, last, index, series) {\n var sum = 0;\n if (index !== null) {\n for (var i = (first + 1); i < last; i++) {\n if (index.indexOf(i) === -1) {\n sum += values[i][series.yName];\n }\n }\n }\n else {\n for (var i = (first + 1); i < last; i++) {\n if (!isNullOrUndefined(values[i][series.yName])) {\n sum += values[i][series.yName];\n }\n }\n }\n return sum;\n}\n/** @private */\nexport function subtractThickness(rect, thickness) {\n rect.x += thickness.left;\n rect.y += thickness.top;\n rect.width -= thickness.left + thickness.right;\n rect.height -= thickness.top + thickness.bottom;\n return rect;\n}\n/** @private */\nexport function subtractRect(rect, thickness) {\n rect.x += thickness.x;\n rect.y += thickness.y;\n rect.width -= thickness.x + thickness.width;\n rect.height -= thickness.y + thickness.height;\n return rect;\n}\n/** @private */\nexport function degreeToLocation(degree, radius, center) {\n var radian = (degree * Math.PI) / 180;\n return new ChartLocation(Math.cos(radian) * radius + center.x, Math.sin(radian) * radius + center.y);\n}\n/** @private */\nexport function degreeToRadian(degree) {\n return degree * (Math.PI / 180);\n}\n/** @private */\nexport function getRotatedRectangleCoordinates(actualPoints, centerX, centerY, angle) {\n var coordinatesAfterRotation = [];\n for (var i = 0; i < 4; i++) {\n var point = actualPoints[i];\n // translate point to origin\n var tempX = point.x - centerX;\n var tempY = point.y - centerY;\n // now apply rotation\n var rotatedX = tempX * Math.cos(degreeToRadian(angle)) - tempY * Math.sin(degreeToRadian(angle));\n var rotatedY = tempX * Math.sin(degreeToRadian(angle)) + tempY * Math.cos(degreeToRadian(angle));\n // translate back\n point.x = rotatedX + centerX;\n point.y = rotatedY + centerY;\n coordinatesAfterRotation.push(new ChartLocation(point.x, point.y));\n }\n return coordinatesAfterRotation;\n}\n/**\n * Helper function to determine whether there is an intersection between the two polygons described\n * by the lists of vertices. Uses the Separating Axis Theorem\n *\n * @param {ChartLocation[]} a an array of connected points [{x:, y:}, {x:, y:},...] that form a closed polygon\n * @param {ChartLocation[]} b an array of connected points [{x:, y:}, {x:, y:},...] that form a closed polygon\n * @returns {boolean} if there is any intersection between the 2 polygons, false otherwise\n */\nexport function isRotatedRectIntersect(a, b) {\n var polygons = [a, b];\n var minA;\n var maxA;\n var projected;\n var i;\n var i1;\n var j;\n var minB;\n var maxB;\n for (i = 0; i < polygons.length; i++) {\n // for each polygon, look at each edge of the polygon, and determine if it separates\n // the two shapes\n var polygon = polygons[i];\n for (i1 = 0; i1 < polygon.length; i1++) {\n // grab 2 vertices to create an edge\n var i2 = (i1 + 1) % polygon.length;\n var p1 = polygon[i1];\n var p2 = polygon[i2];\n // find the line perpendicular to this edge\n var normal = new ChartLocation(p2.y - p1.y, p1.x - p2.x);\n minA = maxA = undefined;\n // for each vertex in the first shape, project it onto the line perpendicular to the edge\n // and keep track of the min and max of these values\n for (j = 0; j < a.length; j++) {\n projected = normal.x * a[j].x + normal.y * a[j].y;\n if (isNullOrUndefined(minA) || projected < minA) {\n minA = projected;\n }\n if (isNullOrUndefined(maxA) || projected > maxA) {\n maxA = projected;\n }\n }\n // for each vertex in the second shape, project it onto the line perpendicular to the edge\n // and keep track of the min and max of these values\n minB = maxB = undefined;\n for (j = 0; j < b.length; j++) {\n projected = normal.x * b[j].x + normal.y * b[j].y;\n if (isNullOrUndefined(minB) || projected < minB) {\n minB = projected;\n }\n if (isNullOrUndefined(maxB) || projected > maxB) {\n maxB = projected;\n }\n }\n // if there is no overlap between the projects, the edge we are looking at separates the two\n // polygons, and we know there is no overlap\n if (maxA < minB || maxB < minA) {\n return false;\n }\n }\n }\n return true;\n}\n/** @private */\nfunction getAccumulationLegend(locX, locY, r, height, width, mode) {\n var cartesianlarge = degreeToLocation(270, r, new ChartLocation(locX, locY));\n var cartesiansmall = degreeToLocation(270, r, new ChartLocation(locX + (width / 10), locY));\n return 'M' + ' ' + locX + ' ' + locY + ' ' + 'L' + ' ' + (locX + r) + ' ' + (locY) + ' ' + 'A' + ' ' + (r) + ' ' + (r) +\n ' ' + 0 + ' ' + 1 + ' ' + 1 + ' ' + cartesianlarge.x + ' ' + cartesianlarge.y + ' ' + 'Z' + ' ' + 'M' + ' ' + (locX +\n (width / 10)) + ' ' + (locY - (height / 10)) + ' ' + 'L' + (locX + (r)) + ' ' + (locY - height / 10) + ' ' + 'A' + ' '\n + (r) + ' ' + (r) + ' ' + 0 + ' ' + 0 + ' ' + 0 + ' ' + cartesiansmall.x + ' ' + cartesiansmall.y + ' ' + 'Z';\n}\n/** @private */\nexport function getAngle(center, point) {\n var angle = Math.atan2((point.y - center.y), (point.x - center.x));\n angle = angle < 0 ? (6.283 + angle) : angle;\n return angle * (180 / Math.PI);\n}\n/** @private */\nexport function subArray(values, index) {\n var subArray = [];\n for (var i = 0; i <= index - 1; i++) {\n subArray.push(values[i]);\n }\n return subArray;\n}\n/** @private */\nexport function valueToCoefficient(value, axis) {\n var range = axis.visibleRange;\n var result = (value - range.min) / (range.delta);\n var isInverse = axis.isChart ? axis.isAxisInverse : axis.isInversed;\n return isInverse ? (1 - result) : result;\n}\n/** @private */\nexport function TransformToVisible(x, y, xAxis, yAxis, isInverted, series) {\n x = (xAxis.valueType === 'Logarithmic' ? logBase(x > 1 ? x : 1, xAxis.logBase) : x);\n y = (yAxis.valueType === 'Logarithmic' ?\n logBase(y > 1 ? y : 1, yAxis.logBase) : y);\n x += xAxis.valueType === 'Category' && xAxis.labelPlacement === 'BetweenTicks' && series.type !== 'Radar' ? 0.5 : 0;\n var radius = series.chart.radius * valueToCoefficient(y, yAxis);\n var point = CoefficientToVector(valueToPolarCoefficient(x, xAxis), series.chart.primaryXAxis.startAngle);\n return {\n x: (series.clipRect.width / 2 + series.clipRect.x) + radius * point.x,\n y: (series.clipRect.height / 2 + series.clipRect.y) + radius * point.y\n };\n}\n/**\n * method to find series, point index by element id\n *\n * @private\n */\nexport function indexFinder(id, isPoint) {\n if (isPoint === void 0) { isPoint = false; }\n var ids = ['NaN', 'NaN'];\n if (id.indexOf('_Point_') > -1) {\n ids = id.split('_Series_')[1].split('_Point_');\n }\n else if (id.indexOf('_shape_') > -1 && (!isPoint || (isPoint && id.indexOf('_legend_') === -1))) {\n ids = id.split('_shape_');\n ids[0] = '0';\n }\n else if (id.indexOf('_text_') > -1 && (!isPoint || (isPoint && id.indexOf('_legend_') === -1))) {\n ids = id.split('_text_');\n ids[0] = '0';\n }\n return new Index(parseInt(ids[0], 10), parseInt(ids[1], 10));\n}\n/** @private */\nexport function CoefficientToVector(coefficient, startAngle) {\n startAngle = startAngle < 0 ? startAngle + 360 : startAngle;\n var angle = Math.PI * (1.5 - 2 * coefficient);\n angle = angle + (startAngle * Math.PI) / 180;\n return { x: Math.cos(angle), y: Math.sin(angle) };\n}\n/** @private */\nexport function valueToPolarCoefficient(value, axis) {\n var range = axis.visibleRange;\n var delta;\n var length;\n if (axis.valueType !== 'Category') {\n delta = (range.max - (axis.valueType === 'DateTime' ? axis.dateTimeInterval : range.interval)) - range.min;\n length = axis.visibleLabels.length - 1;\n delta = delta === 0 ? 1 : delta;\n }\n else {\n // To split an interval equally based on visible labels count\n delta = axis.visibleLabels.length === 1 ? 1 :\n (axis.visibleLabels[axis.visibleLabels.length - 1].value - axis.visibleLabels[0].value);\n length = axis.visibleLabels.length;\n }\n return axis.isAxisInverse ? ((value - range.min) / delta) * (1 - 1 / (length)) :\n 1 - ((value - range.min) / delta) * (1 - 1 / (length));\n}\n/** @private */\nvar Mean = /** @class */ (function () {\n function Mean(verticalStandardMean, verticalSquareRoot, horizontalStandardMean, horizontalSquareRoot, verticalMean, horizontalMean) {\n this.verticalStandardMean = verticalStandardMean;\n this.horizontalStandardMean = horizontalStandardMean;\n this.verticalSquareRoot = verticalSquareRoot;\n this.horizontalSquareRoot = horizontalSquareRoot;\n this.verticalMean = verticalMean;\n this.horizontalMean = horizontalMean;\n }\n return Mean;\n}());\nexport { Mean };\n/** @private */\nvar PolarArc = /** @class */ (function () {\n function PolarArc(startAngle, endAngle, innerRadius, radius, currentXPosition) {\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.currentXPosition = currentXPosition;\n }\n return PolarArc;\n}());\nexport { PolarArc };\n/** @private */\nexport function createTooltip(id, text, top, left, fontSize) {\n var tooltip = getElement(id);\n var style = 'top:' + top.toString() + 'px;' +\n 'left:' + left.toString() + 'px;' +\n 'color:black !important; ' +\n 'background:#FFFFFF !important; ' +\n 'position:absolute;border:1px solid #707070;font-size:' + fontSize + ';border-radius:2px; z-index:1';\n if (!tooltip) {\n tooltip = createElement('div', {\n id: id, innerHTML: ' ' + text + ' ', styles: style\n });\n document.body.appendChild(tooltip);\n }\n else {\n tooltip.setAttribute('innerHTML', ' ' + text + ' ');\n tooltip.setAttribute('styles', style);\n }\n}\n/** @private */\nexport function createZoomingLabels(chart, axis, parent, index, isVertical, rect) {\n var margin = 5;\n var opposedPosition = axis.isAxisOpposedPosition;\n var anchor = isVertical ? 'start' : 'auto';\n var size;\n var chartRect = chart.availableSize.width;\n var pathElement;\n var x;\n var y;\n var rx = 3;\n var arrowLocation;\n var direction;\n var scrollBarHeight = axis.scrollbarSettings.enable || (axis.zoomingScrollBar && axis.zoomingScrollBar.svgObject)\n ? axis.scrollBarHeight : 0;\n for (var i = 0; i < 2; i++) {\n size = measureText(i ? axis.endLabel : axis.startLabel, axis.labelStyle, chart.themeStyle.axisLabelFont);\n if (isVertical) {\n arrowLocation = i ? new ChartLocation(rect.x - scrollBarHeight, rect.y + rx) :\n new ChartLocation(axis.rect.x - scrollBarHeight, (rect.y + rect.height - rx));\n x = (rect.x + (opposedPosition ? (rect.width + margin + scrollBarHeight) : -(size.width + margin + margin + scrollBarHeight)));\n y = (rect.y + (i ? 0 : rect.height - size.height - margin));\n x += (x < 0 || ((chartRect) < (x + size.width + margin))) ? (opposedPosition ? -(size.width / 2) : size.width / 2) : 0;\n direction = findCrosshairDirection(rx, rx, new Rect(x, y, size.width + margin, size.height + margin), arrowLocation, margin, false, false, !opposedPosition, arrowLocation.x, arrowLocation.y + (i ? -rx : rx));\n }\n else {\n arrowLocation = i ? new ChartLocation((rect.x + rect.width - rx), (rect.y + rect.height + scrollBarHeight)) :\n new ChartLocation(rect.x + rx, (rect.y + rect.height + scrollBarHeight));\n x = (rect.x + (i ? (rect.width - size.width - margin) : 0));\n y = (opposedPosition ? (rect.y - size.height - 10 - scrollBarHeight) : (rect.y + rect.height + margin + scrollBarHeight));\n direction = findCrosshairDirection(rx, rx, new Rect(x, y, size.width + margin, size.height + margin), arrowLocation, margin, opposedPosition, !opposedPosition, false, arrowLocation.x + (i ? rx : -rx), arrowLocation.y);\n }\n x = x + (margin / 2);\n y = y + (3 * (size.height / 4)) + (margin / 2);\n pathElement = chart.renderer.drawPath({\n 'id': chart.element.id + '_Zoom_' + index + '_AxisLabel_Shape_' + i,\n 'fill': chart.themeStyle.crosshairFill, 'width': 2, 'color': chart.themeStyle.crosshairFill,\n 'opacity': 1, 'stroke-dasharray': null, 'd': direction\n }, null);\n parent.appendChild(pathElement);\n if (chart.theme === 'Fluent' || chart.theme === 'FluentDark') {\n var shadowId = chart.element.id + '_shadow';\n pathElement.setAttribute('filter', Browser.isIE ? '' : 'url(#' + shadowId + ')');\n var shadow = '';\n shadow += '';\n shadow += '';\n var defElement = chart.renderer.createDefs();\n defElement.setAttribute('id', chart.element.id + 'SVG_tooltip_definition');\n parent.appendChild(defElement);\n defElement.innerHTML = shadow;\n pathElement.setAttribute('stroke', '#cccccc');\n pathElement.setAttribute('stroke-width', '0.5');\n }\n textElement(chart.renderer, new TextOption(chart.element.id + '_Zoom_' + index + '_AxisLabel_' + i, x, y, anchor, i ? axis.endLabel : axis.startLabel), { color: chart.themeStyle.crosshairLabelFont.color, fontFamily: 'Segoe UI', fontWeight: 'Regular', size: '11px' }, chart.themeStyle.crosshairLabelFont.color, parent, null, null, null, null, null, null, null, null, null, null, chart.themeStyle.crosshairLabelFont);\n }\n return parent;\n}\n/** @private */\nexport function findCrosshairDirection(rX, rY, rect, arrowLocation, arrowPadding, top, bottom, left, tipX, tipY) {\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 direction = direction.concat(' 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 direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding / 2) + ' ' + height);\n }\n if ((arrowLocation.x - arrowPadding / 2) > 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 / 2) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (arrowLocation.y));\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (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 direction = direction.concat(' 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) + ' ' + (startY + rY) + ' L' + ' ' + (width) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + (tipY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y + arrowPadding / 2));\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) + ' ' + (startY + rY) + ' L' + ' ' + (startX) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + (tipY));\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y + arrowPadding / 2));\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 direction = direction.concat(' L' + ' ' + (width) + ' ' + (startY + rY) + ' Q ' + width + ' '\n + (startY) + ' ' + (width - rX) + ' ' + (startY) + ' z');\n }\n return direction;\n}\n//Within bounds\n/** @private */\nexport function withInBounds(x, y, bounds, width, height) {\n if (width === void 0) { width = 0; }\n if (height === void 0) { height = 0; }\n return (x >= bounds.x - width && x <= bounds.x + bounds.width + width && y >= bounds.y - height\n && y <= bounds.y + bounds.height + height);\n}\n/** @private */\nexport function getValueXByPoint(value, size, axis) {\n var actualValue = !axis.isAxisInverse ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/** @private */\nexport function getValueYByPoint(value, size, axis) {\n var actualValue = axis.isAxisInverse ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/** @private */\nexport function findClipRect(series, isCanvas) {\n if (isCanvas === void 0) { isCanvas = false; }\n var rect = series.clipRect;\n if (isCanvas && (series.type === 'Polar' || series.type === 'Radar')) {\n if (series.drawType === 'Scatter') {\n rect.x = series.xAxis.rect.x;\n rect.y = series.yAxis.rect.y;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n else {\n rect.x = series.xAxis.rect.x / 2;\n rect.y = series.yAxis.rect.y / 2;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n }\n else {\n if (series.chart.requireInvertedAxis) {\n rect.x = series.yAxis.rect.x;\n rect.y = series.xAxis.rect.y;\n rect.width = series.yAxis.rect.width;\n rect.height = series.xAxis.rect.height;\n }\n else {\n rect.x = series.xAxis.rect.x;\n rect.y = series.yAxis.rect.y;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n }\n}\n/** @private */\nexport function firstToLowerCase(str) {\n return str.substr(0, 1).toLowerCase() + str.substr(1);\n}\n/** @private */\nexport function getTransform(xAxis, yAxis, invertedAxis) {\n var x;\n var y;\n var width;\n var height;\n if (invertedAxis) {\n x = yAxis.rect.x;\n y = xAxis.rect.y;\n width = yAxis.rect.width;\n height = xAxis.rect.height;\n }\n else {\n x = xAxis.rect.x;\n y = yAxis.rect.y;\n width = xAxis.rect.width;\n height = yAxis.rect.height;\n }\n return new Rect(x, y, width, height);\n}\n/** @private */\nexport function getMinPointsDelta(axis, seriesCollection) {\n var minDelta = Number.MAX_VALUE;\n var xValues;\n var minVal;\n var seriesMin;\n for (var index = 0; index < seriesCollection.length; index++) {\n var series = seriesCollection[index];\n xValues = [];\n if (series.visible &&\n (axis.name === series.xAxisName || (axis.name === 'primaryXAxis' && series.xAxisName === null)\n || (axis.name === series.chart.primaryXAxis.name && !series.xAxisName))) {\n xValues = series.points.map(function (point) {\n return point.xValue;\n });\n xValues.sort(function (first, second) { return first - second; });\n if (xValues.length === 1) {\n seriesMin = (axis.valueType === 'DateTime' && series.xMin === series.xMax) ? (series.xMin - 25920000) : series.xMin;\n minVal = xValues[0] - (!isNullOrUndefined(seriesMin) ?\n seriesMin : axis.visibleRange.min);\n if (minVal !== 0) {\n minDelta = Math.min(minDelta, minVal);\n }\n }\n else {\n for (var index_1 = 0; index_1 < xValues.length; index_1++) {\n var value = xValues[index_1];\n if (index_1 > 0 && value) {\n minVal = value - xValues[index_1 - 1];\n if (minVal !== 0) {\n minDelta = Math.min(minDelta, minVal);\n }\n }\n }\n }\n }\n }\n if (minDelta === Number.MAX_VALUE) {\n minDelta = 1;\n }\n return minDelta;\n}\n/** @private */\nexport function getAnimationFunction(effect) {\n var functionName;\n switch (effect) {\n case 'Linear':\n functionName = linear;\n break;\n }\n return functionName;\n}\n/**\n * Animation Effect Calculation Started Here\n *\n * @param {number} currentTime currentTime\n * @param {number} startValue startValue of the animation\n * @param {number} endValue endValue of the animation\n * @param {number} duration duration of the animation\n * @private\n */\nexport function linear(currentTime, startValue, endValue, duration) {\n return -endValue * Math.cos(currentTime / duration * (Math.PI / 2)) + endValue + startValue;\n}\n/**\n * Animation Effect Calculation End\n *\n * @private\n */\nexport function markerAnimate(element, delay, duration, series, pointIndex, point, isLabel) {\n var centerX = point.x;\n var centerY = point.y;\n var height = 0;\n element.style.visibility = 'hidden';\n new Animation({}).animate(element, {\n duration: duration,\n delay: delay,\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n args.element.style.visibility = 'visible';\n height = ((args.timeStamp - args.delay) / args.duration);\n element.setAttribute('transform', 'translate(' + centerX\n + ' ' + centerY + ') scale(' + height + ') translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n },\n end: function () {\n element.style.visibility = '';\n if ((series.type === 'Scatter' || series.type === 'Bubble') && !isLabel && (pointIndex === series.points.length - 1)) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n }\n });\n}\n/**\n * Animate the rect element.\n */\nexport function animateRectElement(element, delay, duration, currentRect, previousRect) {\n var setStyle = function (rect) {\n element.setAttribute('x', rect.x + '');\n element.setAttribute('y', rect.y + '');\n element.setAttribute('width', rect.width + '');\n element.setAttribute('height', rect.height + '');\n };\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n delay: delay,\n //name: name,\n progress: function (args) {\n setStyle(new Rect(linear(args.timeStamp, previousRect.x, currentRect.x - previousRect.x, args.duration), linear(args.timeStamp, previousRect.y, currentRect.y - previousRect.y, args.duration), linear(args.timeStamp, previousRect.width, currentRect.width - previousRect.width, args.duration), linear(args.timeStamp, previousRect.height, currentRect.height - previousRect.height, args.duration)));\n },\n end: function () {\n setStyle(currentRect);\n }\n });\n}\n/**\n * Animation after legend click a path.\n *\n * @param {Element} element element to be animated\n * @param {string} direction current direction of the path\n * @param {boolean} redraw chart redraw\n * @param {string} previousDirection previous direction of the path\n * @param {number} animateDuration animateDuration of the path\n */\nexport function pathAnimation(element, direction, redraw, previousDirection, animateDuration) {\n if (!redraw || (!previousDirection && !element)) {\n return null;\n }\n var duration = 300;\n if (animateDuration) {\n duration = animateDuration;\n }\n var startDirections = previousDirection || element.getAttribute('d');\n var splitDirections = startDirections.split(/(?=[LMCZAQ])/);\n var endDirections = direction.split(/(?=[LMCZAQ])/);\n var currentDireciton;\n var startPath = [];\n var endPath = [];\n var c;\n var end;\n element.setAttribute('d', startDirections);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n currentDireciton = '';\n splitDirections.map(function (directions, index) {\n startPath = directions.split(' ');\n endPath = endDirections[index] ? endDirections[index].split(' ') : startPath;\n if (startPath[0] === 'Z') {\n currentDireciton += 'Z' + ' ';\n }\n else if (startPath[0] === '') {\n currentDireciton = '';\n }\n else {\n currentDireciton += startPath[0] + ' ' +\n linear(args.timeStamp, +startPath[1], (+endPath[1] - +startPath[1]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[2], (+endPath[2] - +startPath[2]), args.duration) + ' ';\n }\n if (startPath[0] === 'C' || startPath[0] === 'Q') {\n c = 3;\n end = startPath[0] === 'Q' ? 4 : 6;\n while (c < end) {\n currentDireciton += linear(args.timeStamp, +startPath[c], (+endPath[c] - +startPath[c]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[++c], (+endPath[c] - +startPath[c]), args.duration) + ' ';\n ++c;\n }\n }\n if (startPath[0] === 'A') {\n currentDireciton += 0 + ' ' + 0 + ' ' + 1 + ' ' +\n linear(args.timeStamp, +startPath[6], (+endPath[6] - +startPath[6]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[7], (+endPath[7] - +startPath[7]), args.duration) + ' ';\n }\n });\n element.setAttribute('d', currentDireciton);\n },\n end: function () {\n element.setAttribute('d', direction);\n }\n });\n}\n/**\n * To append the clip rect element.\n *\n * @param {boolean} redraw chart redraw value\n * @param {BaseAttibutes} options element options\n * @param {SvgRenderer} renderer svg renderer values\n * @param {string} clipPath clipPath of the element\n */\nexport function appendClipElement(redraw, options, renderer, clipPath) {\n if (clipPath === void 0) { clipPath = 'drawClipPath'; }\n var clipElement = redrawElement(redraw, options.id, options, renderer);\n if (clipElement) {\n var def = renderer.createDefs();\n def.appendChild(clipElement);\n return def;\n }\n else {\n return renderer[clipPath](options);\n }\n}\n/**\n * Triggers the event.\n *\n * @returns {void}\n * @private\n */\nexport function triggerLabelRender(chart, tempInterval, text, labelStyle, axis) {\n var argsData = {\n cancel: false, name: axisLabelRender, axis: axis,\n text: text, value: tempInterval, labelStyle: labelStyle\n };\n chart.trigger(axisLabelRender, argsData);\n if (!argsData.cancel) {\n var isLineBreakLabels = argsData.text.indexOf('
') !== -1;\n var text_1 = (axis.enableTrim) ? (isLineBreakLabels ?\n lineBreakLabelTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle, chart.themeStyle.axisLabelFont) :\n textTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle, chart.themeStyle.axisLabelFont)) : argsData.text;\n axis.visibleLabels.push(new VisibleLabels(text_1, argsData.value, argsData.labelStyle, argsData.text));\n }\n}\n/**\n * The function used to find whether the range is set.\n *\n * @returns {boolean} It returns true if the axis range is set otherwise false.\n * @private\n */\nexport function setRange(axis) {\n return (axis.minimum != null && axis.maximum != null);\n}\n/**\n * To check whether the axis is zoomed or not.\n *\n * @param {Axis} axis axis model\n */\nexport function isZoomSet(axis) {\n return (axis.zoomFactor < 1 && axis.zoomPosition >= 0);\n}\n/**\n * Calculate desired interval for the axis.\n *\n * @returns {void} It returns desired interval count.\n * @private\n */\nexport function getActualDesiredIntervalsCount(availableSize, axis) {\n var size = axis.orientation === 'Horizontal' ? availableSize.width : availableSize.height;\n if (isNullOrUndefined(axis.desiredIntervals)) {\n var desiredIntervalsCount = (axis.orientation === 'Horizontal' ? 0.533 : 1) * axis.maximumLabels;\n desiredIntervalsCount = Math.max((size * (desiredIntervalsCount / 100)), 1);\n return desiredIntervalsCount;\n }\n else {\n return axis.desiredIntervals;\n }\n}\n/**\n * Animation for template\n *\n * @private\n */\nexport function templateAnimate(element, delay, duration, name, isRemove) {\n new Animation({}).animate(element, {\n duration: duration,\n delay: delay,\n name: name,\n progress: function (args) {\n args.element.style.visibility = 'visible';\n },\n end: function (args) {\n if (isRemove) {\n remove(args.element);\n }\n else {\n args.element.style.visibility = 'visible';\n }\n }\n });\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, label, renderer, clipRect, isChartControl, control) {\n var chartRenderer = renderer ? renderer : new SvgRenderer('');\n var shapeOption = calculateShapes(location, size, shape, options, url, isChartControl, control);\n var drawElement = chartRenderer['draw' + shapeOption.functionName](shapeOption.renderOption, clipRect ? new Int32Array([clipRect.x, clipRect.y]) : null);\n //drawElement.setAttribute('aria-label', label);\n return drawElement;\n}\n/** @private */\nexport function calculateShapes(location, size, shape, options, url, isChart, control) {\n var dir;\n var functionName = 'Path';\n var isBulletChart = isChart;\n var width = (isBulletChart && shape === 'Circle') ? (size.width - 2) : size.width;\n var height = (isBulletChart && shape === 'Circle') ? (size.height - 2) : size.height;\n var sizeBullet = (isBulletChart) ? control.targetWidth : 0;\n var lx = location.x;\n var ly = location.y;\n var y = location.y + (-height / 2);\n var x = location.x + (-width / 2);\n var eq = 72;\n var xVal;\n var yVal;\n switch (shape) {\n case 'Bubble':\n case 'Circle':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': lx, 'cy': ly });\n break;\n case 'Plus':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + ly + ' ' +\n 'M' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + lx + ' ' +\n (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Cross':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'M' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Multiply':\n dir = 'M ' + (lx - sizeBullet) + ' ' + (ly - sizeBullet) + ' L ' +\n (lx + sizeBullet) + ' ' + (ly + sizeBullet) + ' M ' +\n (lx - sizeBullet) + ' ' + (ly + sizeBullet) + ' L ' + (lx + sizeBullet) + ' ' + (ly - sizeBullet);\n merge(options, { 'd': dir, stroke: options.fill });\n break;\n case 'HorizontalLine':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + ly;\n merge(options, { 'd': dir });\n break;\n case 'VerticalLine':\n dir = 'M' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + lx + ' ' + (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Diamond':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + ly + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + ly + ' z';\n merge(options, { 'd': dir });\n break;\n case 'ActualRect':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 8)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet)) + ' ' + (ly + (-height / 8)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet)) + ' ' + (ly + (height / 8)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 8)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (-height / 8)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'TargetRect':\n dir = 'M' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet / 2)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (-height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Rectangle':\n case 'Hilo':\n case 'HiloOpenClose':\n case 'Candle':\n case 'Waterfall':\n case 'BoxAndWhisker':\n case 'StepArea':\n case 'RangeStepArea':\n case 'StackingStepArea':\n case 'Square':\n case 'Flag':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (-height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Pyramid':\n case 'Triangle':\n dir = 'M' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Funnel':\n case 'InvertedTriangle':\n dir = 'M' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx - (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Pentagon':\n for (var i = 0; i <= 5; i++) {\n xVal = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yVal = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n dir = 'M' + ' ' + (lx + xVal) + ' ' + (ly + yVal) + ' ';\n }\n else {\n dir = dir.concat('L' + ' ' + (lx + xVal) + ' ' + (ly + yVal) + ' ');\n }\n }\n dir = dir.concat('Z');\n merge(options, { 'd': dir });\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 options = calculateLegendShapes(location, new Size(width, height), shape, options).renderOption;\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nexport function getRectLocation(startLocation, endLocation, outerRect) {\n var x = (endLocation.x < outerRect.x) ? outerRect.x :\n (endLocation.x > (outerRect.x + outerRect.width)) ? outerRect.x + outerRect.width : endLocation.x;\n var y = (endLocation.y < outerRect.y) ? outerRect.y :\n (endLocation.y > (outerRect.y + outerRect.height)) ? outerRect.y + outerRect.height : endLocation.y;\n return new Rect((x > startLocation.x ? startLocation.x : x), (y > startLocation.y ? startLocation.y : y), Math.abs(x - startLocation.x), Math.abs(y - startLocation.y));\n}\n/** @private */\nexport function minMax(value, min, max) {\n return value > max ? max : (value < min ? min : value);\n}\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = templateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n templateFn = templateComplier(template);\n }\n }\n catch (e) {\n templateFn = templateComplier(template);\n }\n return templateFn;\n}\n/** @private */\nexport function accReactTemplate(childElement, chart, isTemplate, points, argsData, point, datalabelGroup, id, dataLabel, redraw) {\n var clientRect = childElement.getBoundingClientRect();\n chart.accumulationDataLabelModule.calculateLabelSize(isTemplate, childElement, point, points, argsData, datalabelGroup, id, dataLabel, redraw, clientRect, true);\n}\n/** @private */\nexport function chartReactTemplate(childElement, chart, point, series, labelIndex, redraw) {\n var parentElement = document.getElementById(chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) + '_DataLabelCollections');\n if (parentElement) {\n if (point.index === 0) {\n chart.dataLabelCollections = []; // clear old datalabel bounds for react callback\n }\n chart.dataLabelModule.calculateTemplateLabelSize(parentElement, childElement, point, series, series.marker.dataLabel, labelIndex, series.clipRect, redraw, true);\n }\n}\n/** @private */\nexport function createTemplate(childElement, pointIndex, content, chart, point, series, dataLabelId, labelIndex, argsData, isTemplate, points, datalabelGroup, id, dataLabel, redraw) {\n var templateFn = getTemplateFunction(content);\n var templateElement;\n try {\n var blazor = 'Blazor';\n var tempObject = window[blazor] ? (dataLabelId ? point : { point: point }) :\n { chart: chart, series: series, point: point };\n var templateId = dataLabelId ? dataLabelId + '_template' : 'template';\n var elementData = templateFn ? templateFn(tempObject, chart, templateId, dataLabelId ||\n childElement.id.replace(/[^a-zA-Z0-9]/g, '')) : [];\n if (elementData.length) {\n templateElement = Array.prototype.slice.call(elementData);\n var len = templateElement.length;\n for (var i = 0; i < len; i++) {\n childElement.appendChild(templateElement[i]);\n }\n }\n var reactCallback = void 0;\n if (chart.getModuleName() === 'accumulationchart') {\n reactCallback = accReactTemplate.bind(this, childElement, chart, isTemplate, points, argsData, points[pointIndex], datalabelGroup, id, dataLabel, redraw);\n // tslint:disable-next-line:no-any\n if (chart.isReact) {\n chart.renderReactTemplates(reactCallback);\n }\n }\n else if (chart.getModuleName() === 'chart') {\n reactCallback = (point && series) ? chartReactTemplate.bind(this, childElement, chart, point, series, labelIndex, redraw) : reactCallback;\n // tslint:disable-next-line:no-any\n if (chart.isReact) {\n chart.renderReactTemplates(reactCallback);\n }\n }\n }\n catch (e) {\n return childElement;\n }\n return childElement;\n}\n/** @private */\nexport function getFontStyle(font) {\n var style = '';\n style = 'font-size:' + font.size +\n '; font-style:' + font.fontStyle + '; font-weight:' + font.fontWeight +\n '; font-family:' + font.fontFamily + ';opacity:' + font.opacity +\n '; color:' + font.color + ';';\n return style;\n}\n/** @private */\nexport function measureElementRect(element, redraw, isReactCallback) {\n if (redraw === void 0) { redraw = false; }\n if (!isReactCallback) { // If the element is already in DOM, no need to append in the body.\n document.body.appendChild(element);\n }\n var bounds = element.getBoundingClientRect();\n if (redraw) {\n remove(element);\n }\n else if (!isReactCallback) { // for react chart data label template - (callback function)\n removeElement(element.id);\n }\n return bounds;\n}\n/** @private */\nexport function findlElement(elements, id) {\n var element;\n for (var i = 0, length_1 = elements.length; i < length_1; i++) {\n if (elements[i].id.indexOf(id) > -1) {\n element = elements[i];\n continue;\n }\n }\n return element;\n}\n/** @private */\nexport function getPoint(x, y, xAxis, yAxis, isInverted) {\n x = ((xAxis.valueType === 'Logarithmic') ?\n logBase(((x > 0) ? x : Math.pow(xAxis.logBase, xAxis.visibleRange.min)), xAxis.logBase) : x);\n y = ((yAxis.valueType === 'Logarithmic') ?\n logBase(((y > 0) ? y : Math.pow(yAxis.logBase, yAxis.visibleRange.min)), yAxis.logBase) : y);\n x = valueToCoefficient(x, xAxis);\n y = valueToCoefficient(y, yAxis);\n var xLength = (isInverted ? xAxis.rect.height : xAxis.rect.width);\n var yLength = (isInverted ? yAxis.rect.width : yAxis.rect.height);\n var locationX = isInverted ? y * (yLength) : x * (xLength);\n var locationY = isInverted ? (1 - x) * (xLength) : (1 - y) * (yLength);\n return new ChartLocation(locationX, locationY);\n}\n/** @private */\nexport function appendElement(child, parent, redraw, animate, x, y) {\n if (redraw === void 0) { redraw = false; }\n if (animate === void 0) { animate = false; }\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (child && child.hasChildNodes() && parent) {\n appendChildElement(false, parent, child, redraw, animate, x, y);\n }\n else {\n return null;\n }\n}\n/**\n * Method to append child element.\n *\n * @param {boolean} isCanvas canvas mode value\n * @param {Element} parent parent element\n * @param {Element} childElement childElement element\n * @param {boolean} redraw chart redraw value\n * @param {boolean} isAnimate animation value\n * @param {string} x x position\n * @param {string} y y position\n * @param {ChartLocation} start start location value\n * @param {string} direction direction of the element\n * @param {boolean} forceAnimate forceAnimate\n * @param {boolean} isRect isRect\n * @param {Rect} previousRect previousRect\n * @param {number} animateDuration duration of the animation\n */\nexport function appendChildElement(isCanvas, parent, childElement, redraw, isAnimate, x, y, start, direction, forceAnimate, isRect, previousRect, animateDuration) {\n if (isAnimate === void 0) { isAnimate = false; }\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (forceAnimate === void 0) { forceAnimate = false; }\n if (isRect === void 0) { isRect = false; }\n if (previousRect === void 0) { previousRect = null; }\n if (isCanvas) {\n return null;\n }\n var existChild = parent.querySelector('#' + childElement.id);\n var element = (existChild || getElement(childElement.id));\n var child = childElement;\n var duration = animateDuration ? animateDuration : 300;\n if (redraw && isAnimate && element) {\n start = start || (element.tagName === 'DIV' ?\n new ChartLocation(+(element.style[x].split('px')[0]), +(element.style[y].split('px')[0])) :\n new ChartLocation(+element.getAttribute(x), +element.getAttribute(y)));\n if (direction && direction !== 'undefined') {\n pathAnimation(childElement, childElement.getAttribute('d'), redraw, direction, duration);\n }\n else if (isRect && previousRect) {\n animateRectElement(child, 0, duration, new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')), previousRect);\n }\n else {\n var end = child.tagName === 'DIV' ?\n new ChartLocation(+(child.style[x].split('px')[0]), +(child.style[y].split('px')[0])) :\n new ChartLocation(+child.getAttribute(x), +child.getAttribute(y));\n animateRedrawElement(child, duration, start, end, x, y);\n }\n }\n else if (redraw && isAnimate && !element && forceAnimate) {\n templateAnimate(child, 0, 600, 'FadeIn');\n }\n if (existChild) {\n parent.replaceChild(child, element);\n }\n else {\n parent.appendChild(child);\n }\n}\n/** @private */\nexport function getDraggedRectLocation(x1, y1, x2, y2, outerRect) {\n var width = Math.abs(x1 - x2);\n var height = Math.abs(y1 - y2);\n var x = Math.max(checkBounds(Math.min(x1, x2), width, outerRect.x, outerRect.width), outerRect.x);\n var y = Math.max(checkBounds(Math.min(y1, y2), height, outerRect.y, outerRect.height), outerRect.y);\n return new Rect(x, y, Math.min(width, outerRect.width), Math.min(height, outerRect.height));\n}\n/** @private */\nexport function checkBounds(start, size, min, max) {\n if (start < min) {\n start = min;\n }\n else if ((start + size) > (max + min)) {\n start = (max + min) - size;\n }\n return start;\n}\n/** @private */\nexport function getLabelText(currentPoint, series, chart) {\n var labelFormat = series.marker.dataLabel.format ? series.marker.dataLabel.format : series.yAxis.labelFormat;\n var text = [];\n var customLabelFormat = labelFormat.match('{value}') !== null;\n switch (series.seriesType) {\n case 'XY':\n /**\n * I255790\n * For Polar radar series, the dataLabel appears out of range when axis range is given for yaxis\n * Cause: Since symbol location for the points which did not lies in within range, lies outside of seriesRect.\n * Fix: DataLabel rendered after checking WithIn for the points\n */\n if (series.chart.chartAreaType === 'PolarRadar') {\n if (series.drawType.indexOf('Stacking') !== -1) {\n if ((series.yAxis.valueType === 'Logarithmic' &&\n logWithIn(series.stackedValues.endValues[currentPoint.index], series.yAxis)) ||\n withIn(series.stackedValues.endValues[currentPoint.index], series.yAxis.visibleRange)) {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n }\n else {\n if ((series.yAxis.valueType === 'Logarithmic' && logWithIn(currentPoint.yValue, series.yAxis)) ||\n withIn(currentPoint.yValue, series.yAxis.visibleRange)) {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n }\n }\n else {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n break;\n case 'HighLow':\n text.push(currentPoint.text || Math.max(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.min(currentPoint.high, currentPoint.low).toString());\n break;\n case 'HighLowOpenClose':\n text.push(currentPoint.text || Math.max(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.min(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.max(currentPoint.open, currentPoint.close).toString());\n text.push(currentPoint.text || Math.min(currentPoint.open, currentPoint.close).toString());\n break;\n case 'BoxPlot':\n text.push(currentPoint.text || currentPoint.median.toString());\n text.push(currentPoint.text || currentPoint.maximum.toString());\n text.push(currentPoint.text || currentPoint.minimum.toString());\n text.push(currentPoint.text || currentPoint.upperQuartile.toString());\n text.push(currentPoint.text || currentPoint.lowerQuartile.toString());\n for (var _i = 0, _a = currentPoint.outliers; _i < _a.length; _i++) {\n var liers = _a[_i];\n text.push(currentPoint.text || liers.toString());\n }\n break;\n }\n if ((labelFormat || chart.useGroupingSeparator) && !currentPoint.text) {\n series.yAxis.format = chart.intl.getNumberFormat({\n format: customLabelFormat ? '' : labelFormat,\n useGrouping: chart.useGroupingSeparator\n });\n for (var i = 0; i < text.length; i++) {\n text[i] = customLabelFormat ? labelFormat.replace('{value}', series.yAxis.format(parseFloat(text[i]))) :\n series.yAxis.format(parseFloat(text[i]));\n }\n }\n return text;\n}\n/** @private */\nexport function stopTimer(timer) {\n window.clearInterval(timer);\n}\n/** @private */\nexport function isCollide(rect, collections, clipRect) {\n var currentRect = new Rect(rect.x + clipRect.x, rect.y + clipRect.y, rect.width, rect.height);\n var isCollide = collections.some(function (rect) {\n return (currentRect.x < rect.x + rect.width && currentRect.x + currentRect.width > rect.x &&\n currentRect.y < rect.y + rect.height && currentRect.height + currentRect.y > rect.y);\n });\n return isCollide;\n}\n/** @private */\nexport function isOverlap(currentRect, rect) {\n return (currentRect.x < rect.x + rect.width && currentRect.x + currentRect.width > rect.x &&\n currentRect.y < rect.y + rect.height && currentRect.height + currentRect.y > rect.y);\n}\n/** @private */\nexport function containsRect(currentRect, rect) {\n return (currentRect.x <= rect.x && currentRect.x + currentRect.width >= rect.x + rect.width &&\n currentRect.y <= rect.y && currentRect.height + currentRect.y >= rect.y + rect.height);\n}\n/** @private */\nexport function calculateRect(location, textSize, margin) {\n return new Rect((location.x - (textSize.width / 2) - margin.left), (location.y - (textSize.height / 2) - margin.top), textSize.width + margin.left + margin.right, textSize.height + margin.top + margin.bottom);\n}\n/** @private */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/** @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/** @private */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/** @private */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n document.body.appendChild(createElement('text', { id: 'chartmeasuretext' }));\n var element = document.getElementById('chartmeasuretext');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n remove(element);\n // eslint-disable-next-line security/detect-unsafe-regex\n var exp = /^(rgb|hsl)(a?)[(]\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*(?:,\\s*([\\d.]+)\\s*)?[)]$/;\n var isRGBValue = exp.exec(color);\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[3], 10), parseInt(isRGBValue[4], 10), parseInt(isRGBValue[5], 10)));\n}\n/** @private */\nexport function getSaturationColor(color, factor) {\n color = colorNameToHex(color);\n color = color.replace(/[^0-9a-f]/gi, '');\n if (color.length < 6) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n factor = factor || 0;\n // convert to decimal and change luminosity\n var rgb = '#';\n var colorCode;\n for (var i = 0; i < 3; i++) {\n colorCode = parseInt(color.substr(i * 2, 2), 16);\n colorCode = Math.round(Math.min(Math.max(0, colorCode + (colorCode * factor)), 255));\n rgb += ('00' + colorCode.toString(16)).substr(colorCode.toString(16).length);\n }\n return rgb;\n}\n/** @private */\nexport function getMedian(values) {\n var half = Math.floor(values.length / 2);\n return values.length % 2 ? values[half] : ((values[half - 1] + values[half]) / 2.0);\n}\n/** @private */\nexport function calculateLegendShapes(location, size, shape, options) {\n var padding = 10;\n var dir = '';\n var space = 2;\n var height = size.height;\n var width = size.width;\n var lx = location.x;\n var ly = location.y;\n switch (shape) {\n case 'MultiColoredLine':\n case 'Line':\n case 'StackingLine':\n case 'StackingLine100':\n dir = 'M' + ' ' + (lx + (-width * (3 / 4))) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + (width * (3 / 4))) + ' ' + (ly);\n merge(options, { 'd': dir });\n break;\n case 'StepLine':\n options.fill = 'transparent';\n dir = 'M' + ' ' + (lx + (-width / 2) - (padding / 4)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx +\n (-width / 2) + (width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (-width / 2) + (width / 10))\n + ' ' + (ly) + ' ' + 'L' + ' ' + (lx + (-width / 10)) + ' ' + (ly) + ' ' + 'L' + ' ' + (lx + (-width / 10))\n + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'L' +\n ' ' + (lx + (width / 5)) + ' ' + (ly + (-height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly +\n (-height / 2)) + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + '' + (lx + (width / 2)\n + (padding / 4)) + ' ' + (ly + (height / 2));\n merge(options, { 'd': dir });\n break;\n case 'UpArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) +\n 'L' + ' ' + (lx + (width / 2) - space) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly - (height / 2) + (2 * space)) +\n 'L' + (lx - (width / 2) + space) + ' ' + (ly + (height / 2)) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'DownArrow':\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) +\n 'L' + ' ' + (lx + (width / 2) - space) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly + (height / 2) - (2 * space)) +\n 'L' + (lx - (width / 2) + space) + ' ' + (ly - (height / 2)) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'RightArrow':\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly) + ' ' + 'L' + ' ' +\n (lx + (-width / 2)) + ' ' + (ly + (height / 2)) + ' L' + ' ' + (lx + (-width / 2)) + ' ' +\n (ly + (height / 2) - space) + ' ' + 'L' + ' ' + (lx + (width / 2) - (2 * space)) + ' ' + (ly) +\n ' L' + (lx + (-width / 2)) + ' ' + (ly - (height / 2) + space) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'LeftArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n dir = 'M' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (-width / 2)) + ' ' + (ly) + ' ' + 'L' + ' ' +\n (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' +\n (lx + (width / 2)) + ' ' + (ly + (height / 2) - space) + ' L' + ' ' + (lx + (-width / 2) + (2 * space))\n + ' ' + (ly) + ' L' + (lx + (width / 2)) + ' ' + (ly - (height / 2) + space) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'Column':\n case 'Pareto':\n case 'StackingColumn':\n case 'StackingColumn100':\n case 'RangeColumn':\n case 'Histogram':\n dir = 'M' + ' ' + (lx - 3 * (width / 5)) + ' ' + (ly - (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (-width / 10)) + ' ' + (ly - (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (-width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx - 3 *\n (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'Z' + ' ' + 'M' + ' ' +\n (lx + (-width / 10) - (width / 20)) + ' ' + (ly - (height / 4) - (padding / 2))\n + ' ' + 'L' + ' ' + (lx + (width / 10) + (width / 20)) + ' ' + (ly - (height / 4) -\n (padding / 2)) + ' ' + 'L' + ' ' + (lx + (width / 10) + (width / 20)) + ' ' + (ly\n + (height / 2)) + ' ' + 'L' + ' ' + (lx + (-width / 10) - (width / 20)) + ' ' + (ly +\n (height / 2)) + ' ' + 'Z' + ' ' + 'M' + ' ' + (lx + 3 * (width / 10)) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + 3 * (width / 5)) + ' ' + (ly) + ' ' + 'L' + ' '\n + (lx + 3 * (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' '\n + (lx + 3 * (width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'Bar':\n case 'StackingBar':\n case 'StackingBar100':\n dir = 'M' + ' ' + (lx + (-width / 2) + (-padding / 4)) + ' ' + (ly - 3 * (height / 5)) + ' '\n + 'L' + ' ' + (lx + 3 * (width / 10)) + ' ' + (ly - 3 * (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (width / 10)) + ' ' + (ly - 3 * (height / 10)) + ' ' + 'L' + ' ' +\n (lx - (width / 2) + (-padding / 4)) + ' ' + (ly - 3 * (height / 10)) + ' ' + 'Z' + ' '\n + 'M' + ' ' + (lx + (-width / 2) + (-padding / 4)) + ' ' + (ly - (height / 5)\n + (padding / 20)) + ' ' + 'L' + ' ' + (lx + (width / 2) + (padding / 4)) + ' ' + (ly\n - (height / 5) + (padding / 20)) + ' ' + 'L' + ' ' + (lx + (width / 2) + (padding / 4))\n + ' ' + (ly + (height / 10) + (padding / 20)) + ' ' + 'L' + ' ' + (lx - (width / 2)\n + (-padding / 4)) + ' ' + (ly + (height / 10) + (padding / 20)) + ' ' + 'Z' + ' ' + 'M'\n + ' ' + (lx - (width / 2) + (-padding / 4)) + ' ' + (ly + (height / 5)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx + (-width / 4)) + ' ' + (ly + (height / 5)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx + (-width / 4)) + ' ' + (ly + (height / 2)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx - (width / 2) + (-padding / 4))\n + ' ' + (ly + (height / 2) + (padding / 10)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'Spline':\n options.fill = 'transparent';\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' '\n + lx + ' ' + (ly - height) + ' ' + lx + ' ' + (ly + (height / 5))\n + ' ' + 'M' + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + (lx\n + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + (lx + (width / 2)) + ' '\n + (ly - (height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Area':\n case 'MultiColoredArea':\n case 'RangeArea':\n case 'StackingArea':\n case 'StackingArea100':\n dir = 'M' + ' ' + (lx - (width / 2) - (padding / 4)) + ' ' + (ly + (height / 2))\n + ' ' + 'L' + ' ' + (lx + (-width / 4) + (-padding / 8)) + ' ' + (ly - (height / 2))\n + ' ' + 'L' + ' ' + (lx) + ' ' + (ly + (height / 4)) + ' ' + 'L' + ' ' + (lx\n + (width / 4) + (padding / 8)) + ' ' + (ly + (-height / 2) + (height / 4)) + ' '\n + 'L' + ' ' + (lx + (height / 2) + (padding / 4)) + ' ' + (ly + (height / 2)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'SplineArea':\n case 'SplineRangeArea':\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + lx\n + ' ' + (ly - height) + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Z' + ' ' + 'M'\n + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + (lx + (width / 2)) + ' '\n + (ly + (height / 2)) + ' ' + (lx + (width / 2)) + ' '\n + (ly - (height / 2)) + ' ' + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'Pie':\n case 'Doughnut':\n options.stroke = 'transparent';\n // eslint-disable-next-line no-case-declarations\n var r = Math.min(height, width) / 2;\n dir = getAccumulationLegend(lx, ly, r, height, width, shape);\n merge(options, { 'd': dir });\n break;\n }\n return { renderOption: options };\n}\n/** @private */\nexport function textTrim(maxWidth, text, font, themeFontStyle) {\n var label = text;\n var size = measureText(text, font, themeFontStyle).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font, themeFontStyle).width;\n if (size <= maxWidth) {\n return label;\n }\n }\n }\n return label;\n}\n/** @private */\nexport function lineBreakLabelTrim(maxWidth, text, font, themeFontStyle) {\n var labelCollection = [];\n var breakLabels = text.split('
');\n for (var i = 0; i < breakLabels.length; i++) {\n text = breakLabels[i];\n var size = measureText(text, font, themeFontStyle).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i_1 = textLength - 1; i_1 >= 0; --i_1) {\n text = text.substring(0, i_1) + '...';\n size = measureText(text, font, themeFontStyle).width;\n if (size <= maxWidth) {\n labelCollection.push(text);\n break;\n }\n }\n }\n else {\n labelCollection.push(text);\n }\n }\n return labelCollection;\n}\n/** @private */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/** @private */\nexport function redrawElement(redraw, id, options, renderer) {\n if (!redraw) {\n return null;\n }\n var element = getElement(id);\n if (element && options) {\n renderer.setElementAttributes(options, element.tagName === 'clipPath' ? element.childNodes[0] : element);\n }\n return element;\n}\n/** @private */\nexport function animateRedrawElement(element, duration, start, end, x, y) {\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n var isDiv = element.tagName === 'DIV';\n var setStyle = function (xValue, yValue) {\n if (isDiv) {\n element.style[x] = xValue + 'px';\n element.style[y] = yValue + 'px';\n }\n else {\n element.setAttribute(x, xValue + '');\n element.setAttribute(y, yValue + '');\n }\n };\n setStyle(start.x, start.y);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n setStyle(linear(args.timeStamp, start.x, end.x - start.x, args.duration), linear(args.timeStamp, start.y, end.y - start.y, args.duration));\n },\n end: function () {\n setStyle(end.x, end.y);\n }\n });\n}\n/** @private */\nexport function textElement(renderer, option, font, color, parent, isMinus, redraw, isAnimate, forceAnimate, animateDuration, seriesClipRect, labelSize, isRotatedLabelIntersect, isCanvas, isDataLabelWrap, themeFontStyle) {\n if (isMinus === void 0) { isMinus = false; }\n if (forceAnimate === void 0) { forceAnimate = false; }\n var renderOptions = {};\n var tspanElement;\n //let renderer: SvgRenderer = new SvgRenderer('');\n var height;\n var dy;\n var label;\n var width = 0;\n var dx;\n var maxWidth = 0;\n if (option.text.length > 1 && isDataLabelWrap) {\n for (var i = 0, len = option.text.length; i < len; i++) {\n maxWidth = Math.max(maxWidth, measureText(option.text[i], font, themeFontStyle).width);\n }\n width = measureText(option.text[0], font, themeFontStyle).width;\n }\n dx = (option.text.length > 1 && isDataLabelWrap) ? (option.x + maxWidth / 2 - width / 2) : option.x;\n renderOptions = {\n 'id': option.id,\n 'x': dx,\n 'y': option.y,\n 'fill': color ? color : 'black',\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily || themeFontStyle.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': option.anchor,\n 'labelRotation': option.labelRotation,\n 'transform': option.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': option.baseLine\n };\n var text = typeof option.text === 'string' ? option.text : isMinus ? option.text[option.text.length - 1] : option.text[0];\n var transX = seriesClipRect ? seriesClipRect.x : 0;\n var transY = seriesClipRect ? seriesClipRect.y : 0;\n var htmlObject = renderer.createText(renderOptions, text, transX, transY);\n if (typeof option.text !== 'string' && option.text.length > 1) {\n for (var i = 1, len = option.text.length; i < len; i++) {\n height = (measureText(option.text[i], font, themeFontStyle).height);\n width = measureText(option.text[i], font, themeFontStyle).width;\n dy = (option.y) + ((isMinus) ? -(i * height) : (i * height));\n dx = isDataLabelWrap ? (option.x + maxWidth / 2 - width / 2) : option.x;\n label = isMinus ? option.text[option.text.length - (i + 1)] : option.text[i];\n if (isCanvas) {\n tspanElement = renderer.createText(renderOptions, label, null, null, dy, true);\n }\n else {\n tspanElement = renderer.createTSpan({\n 'x': dx, 'id': option.id,\n 'y': dy\n }, label);\n htmlObject.appendChild(tspanElement);\n }\n }\n }\n if (!isRotatedLabelIntersect) {\n appendChildElement(renderer instanceof CanvasRenderer, parent, htmlObject, redraw, isAnimate, 'x', 'y', null, null, forceAnimate, false, null, animateDuration);\n }\n return htmlObject;\n}\n/**\n * Method to calculate the width and height of the chart.\n */\nexport function calculateSize(chart) {\n // fix for Chart rendered with default width in IE issue\n var containerWidth = chart.element.clientWidth || chart.element.offsetWidth;\n var containerHeight = chart.element.clientHeight;\n if (chart.stockChart) {\n containerWidth = chart.stockChart.availableSize.width;\n containerHeight = chart.stockChart.availableSize.height;\n }\n var height = 450;\n var marginHeight;\n if (chart.getModuleName() === 'rangeNavigator') {\n var range = chart;\n var tooltipSpace = range.tooltip.enable ? 35 : 0;\n var periodHeight = range.periodSelectorSettings.periods.length ?\n range.periodSelectorSettings.height : 0;\n marginHeight = range.margin.top + range.margin.bottom + tooltipSpace;\n var labelSize = measureText('tempString', range.labelStyle, range.themeStyle.axisLabelFont).height;\n var labelPadding = 15;\n height = (chart.series.length ? (Browser.isDevice ? 80 : 120) : ((range.enableGrouping ? (40 + labelPadding + labelSize) : 40)\n + marginHeight)) + periodHeight;\n if (range.disableRangeSelector) {\n height = periodHeight;\n }\n }\n chart.availableSize = new Size(stringToNumber(chart.width, containerWidth) || containerWidth || 600, stringToNumber(chart.height, containerHeight || height) || containerHeight || height);\n if (chart.getModuleName() === 'chart') {\n var scaleX = 1;\n var scaleY = 1;\n if (chart.width === '' || chart.width === null || chart.width === '100%') {\n scaleX = chart.element.getBoundingClientRect().width > 0 ?\n chart.element.getBoundingClientRect().width / chart.availableSize.width : 1;\n scaleY = chart.element.getBoundingClientRect().height > 0 ?\n chart.element.getBoundingClientRect().height / chart.availableSize.height : 1;\n var transformValue = chart.element.style.transform;\n if (transformValue) {\n var scaleValue = parseFloat(transformValue.match(/scale\\((.*?)\\)/)[1]);\n scaleX = scaleValue ? scaleX / scaleValue : scaleX;\n scaleY = scaleValue ? scaleY / scaleValue : scaleY;\n }\n chart.availableSize.width = chart.availableSize.width * scaleX;\n chart.availableSize.height = chart.availableSize.height * scaleY;\n chart.scaleX = scaleX;\n chart.scaleY = scaleY;\n }\n }\n}\n/**\n * To create svg element.\n *\n * @param {Chart} chart chart instance\n */\nexport function createSvg(chart) {\n chart.canvasRender = new CanvasRenderer(chart.element.id);\n chart.renderer = chart.enableCanvas ? chart.canvasRender : new SvgRenderer(chart.element.id);\n calculateSize(chart);\n if (chart.stockChart && chart.getModuleName() === 'chart') {\n chart.svgObject = chart.stockChart.chartObject;\n }\n else if (chart.stockChart && chart.getModuleName() === 'rangeNavigator') {\n chart.svgObject = chart.stockChart.selectorObject;\n }\n else {\n if (chart.enableCanvas) {\n chart.svgObject = chart.renderer.createCanvas({\n id: chart.element.id + '_canvas',\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n }\n else {\n chart.svgObject = chart.renderer.createSvg({\n id: chart.element.id + '_svg',\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n }\n }\n if (chart.enableCanvas) {\n chart.renderer.ctx.direction = chart.enableRtl ? 'rtl' : 'ltr';\n }\n}\n/**\n * To calculate chart title and height.\n *\n * @param {string} title text of the title\n * @param {FontModel} style style of the title\n * @param {number} width width of the title\n */\nexport function getTitle(title, style, width, themeFontStyle) {\n var titleCollection = [];\n switch (style.textOverflow) {\n case 'Wrap':\n titleCollection = textWrap(title, width, style, null, null, themeFontStyle);\n break;\n case 'Trim':\n titleCollection.push(textTrim(width, title, style, themeFontStyle));\n break;\n default:\n titleCollection.push(title);\n break;\n }\n return titleCollection;\n}\n/**\n * Method to calculate x position of title.\n */\nexport function titlePositionX(rect, titleStyle) {\n var positionX;\n if (titleStyle.textAlignment === 'Near') {\n positionX = rect.x;\n }\n else if (titleStyle.textAlignment === 'Center') {\n positionX = rect.x + rect.width / 2;\n }\n else {\n positionX = rect.x + rect.width;\n }\n return positionX;\n}\n/**\n * Method to find new text and element size based on textOverflow.\n */\nexport function textWrap(currentLabel, maximumWidth, font, wrapAnyWhere, clip, themeFontStyle) {\n if (wrapAnyWhere) {\n return (textWrapAnyWhere(currentLabel, maximumWidth, font, themeFontStyle));\n }\n else {\n var textCollection = currentLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text = void 0;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(label === '' ? '' : ' ' + text), font, themeFontStyle).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(clip ? label : textTrim(maximumWidth, label, font, themeFontStyle));\n label = text;\n }\n else {\n labelCollection.push(clip ? text : textTrim(maximumWidth, text, font, themeFontStyle));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(clip ? label : textTrim(maximumWidth, label, font, themeFontStyle));\n }\n }\n return labelCollection;\n }\n}\n/**\n * Method to find new text and element size based on textWrap.\n */\nexport function textWrapAnyWhere(currentLabel, maximumWidth, font, themeFontStyle) {\n var size = measureText(currentLabel, font, themeFontStyle).width;\n var labelCollection = [];\n if (size > maximumWidth) {\n var label = '';\n var startIndex = 0;\n var labelIndex = 1;\n while (labelIndex < currentLabel.length) {\n label = currentLabel.substring(startIndex, labelIndex);\n size = measureText(label, font, themeFontStyle).width;\n if (size < maximumWidth) {\n labelIndex++;\n }\n else if (size === maximumWidth) {\n startIndex = labelIndex;\n labelCollection.push(label);\n labelIndex++;\n label = '';\n }\n else if (size > maximumWidth) {\n label = label.slice(0, -1);\n startIndex = labelIndex - 1;\n labelCollection.push(label);\n label = '';\n }\n }\n if (label.length > 0) {\n labelCollection.push(label);\n }\n }\n else {\n labelCollection.push(currentLabel);\n }\n return labelCollection;\n}\n/**\n * Method to support the subscript and superscript value to text.\n */\nexport function getUnicodeText(text, regexp) {\n var title = text.replace(regexp, ' ');\n var digit = text.match(regexp);\n var digitSpecific = ' ';\n var convertedText = ' ';\n var k = 0;\n var unicodeSub = {\n '0': '\\u2080', '1': '\\u2081', '2': '\\u2082', '3': '\\u2083', '4': '\\u2084',\n '5': '\\u2085', '6': '\\u2086', '7': '\\u2087', '8': '\\u2088', '9': '\\u2089'\n };\n var unicodeSup = {\n '0': '\\u2070', '1': '\\u00B9', '2': '\\u00B2', '3': '\\u00B3', '4': '\\u2074',\n '5': '\\u2075', '6': '\\u2076', '7': '\\u2077', '8': '\\u2078', '9': '\\u2079'\n };\n for (var i = 0; i <= title.length - 1; i++) {\n if (title[i] === ' ') {\n digitSpecific = (regexp === regSub) ? digit[k].replace(/~/g, '') : digit[k].replace(/\\^/g, '');\n for (var j = 0; j < digitSpecific.length; j++) {\n convertedText += (regexp === regSub) ? unicodeSub[digitSpecific[j]] : unicodeSup[digitSpecific[j]];\n }\n k++;\n }\n else {\n convertedText += title[i];\n }\n }\n return convertedText.trim();\n}\n/**\n * Method to reset the blazor templates.\n */\nexport function blazorTemplatesReset(control) {\n for (var i = 0; i < control.annotations.length; i++) {\n resetBlazorTemplate((control.element.id + '_Annotation_' + i).replace(/[^a-zA-Z0-9]/g, ''), 'ContentTemplate');\n }\n //This reset the tooltip templates\n resetBlazorTemplate(control.element.id + '_tooltipparent_template' + '_blazorTemplate', 'Template');\n //Datalabel templates reset\n resetBlazorTemplate(control.element.id + '_DataLabel');\n}\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar StackValues = /** @class */ (function () {\n function StackValues(startValue, endValue) {\n this.startValues = startValue;\n this.endValues = endValue;\n }\n return StackValues;\n}());\nexport { StackValues };\n/** @private */\nvar RectOption = /** @class */ (function (_super) {\n __extends(RectOption, _super);\n function RectOption(id, fill, border, opacity, rect, rx, ry, transform, dashArray) {\n var _this = _super.call(this, id, fill, border.width, border.color, opacity, dashArray) || this;\n _this.y = rect.y;\n _this.x = rect.x;\n _this.height = rect.height;\n _this.width = rect.width;\n _this.rx = rx ? rx : 0;\n _this.ry = ry ? ry : 0;\n _this.transform = transform ? transform : '';\n _this.stroke = (border.width !== 0 && _this.stroke !== '') ? border.color === null ? '' : border.color : 'transparent';\n return _this;\n }\n return RectOption;\n}(PathOption));\nexport { RectOption };\n/** @private */\nvar ImageOption = /** @class */ (function () {\n function ImageOption(height, width, href, x, y, id, visibility, preserveAspectRatio) {\n this.height = height;\n this.width = width;\n this.href = href;\n this.x = x;\n this.y = y;\n this.id = id;\n this.visibility = visibility;\n this.preserveAspectRatio = preserveAspectRatio;\n }\n return ImageOption;\n}());\nexport { ImageOption };\n/** @private */\nvar CircleOption = /** @class */ (function (_super) {\n __extends(CircleOption, _super);\n function CircleOption(id, fill, border, opacity, cx, cy, r) {\n var _this = _super.call(this, id, fill, border.width, border.color, opacity) || this;\n _this.cy = cy;\n _this.cx = cx;\n _this.r = r;\n return _this;\n }\n return CircleOption;\n}(PathOption));\nexport { CircleOption };\n/** @private */\nvar PolygonOption = /** @class */ (function () {\n function PolygonOption(id, points, fill) {\n this.id = id;\n this.points = points;\n this.fill = fill;\n }\n return PolygonOption;\n}());\nexport { PolygonOption };\n/** @private */\nvar ChartLocation = /** @class */ (function () {\n function ChartLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return ChartLocation;\n}());\nexport { ChartLocation };\n/** @private */\nvar LabelLocation = /** @class */ (function () {\n function LabelLocation(x, y) {\n this.x = 0;\n this.y = 0;\n this.x = x;\n this.y = y;\n }\n return LabelLocation;\n}());\nexport { LabelLocation };\n/** @private */\nvar Thickness = /** @class */ (function () {\n function Thickness(left, right, top, bottom) {\n this.left = left;\n this.right = right;\n this.top = top;\n this.bottom = bottom;\n }\n return Thickness;\n}());\nexport { Thickness };\n/** @private */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/** @private */\nvar PointData = /** @class */ (function () {\n function PointData(point, series, index) {\n if (index === void 0) { index = 0; }\n this.point = point;\n this.series = series;\n this.lierIndex = index;\n }\n return PointData;\n}());\nexport { PointData };\n/** @private */\nvar AccPointData = /** @class */ (function () {\n function AccPointData(point, series, index) {\n if (index === void 0) { index = 0; }\n this.point = point;\n this.series = series;\n this.index = index;\n }\n return AccPointData;\n}());\nexport { AccPointData };\n/** @private */\nvar ControlPoints = /** @class */ (function () {\n function ControlPoints(controlPoint1, controlPoint2) {\n this.controlPoint1 = controlPoint1;\n this.controlPoint2 = controlPoint2;\n }\n return ControlPoints;\n}());\nexport { ControlPoints };\n/** @private */\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbgColorValue;\n if (Number(value) === colorMap.start) {\n color = colorMap.colors[0];\n }\n else if (Number(value) === colorMap.end) {\n color = colorMap.colors[colorMap.colors.length - 1];\n }\n else {\n rbgColorValue = getGradientColor(Number(value), colorMap);\n color = convertToHexCode(rbgColorValue);\n }\n return color;\n}\n/** @private */\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.start;\n var nextOffset = colorMap.end;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.colors.length <= 2) {\n previousColor = colorMap.colors[0].charAt(0) === '#' ? colorMap.colors[0] : colorNameToHex(colorMap.colors[0]);\n nextColor = colorMap.colors[colorMap.colors.length - 1].charAt(0) === '#' ?\n colorMap.colors[colorMap.colors.length - 1] : colorNameToHex(colorMap.colors[colorMap.colors.length - 1]);\n }\n else {\n previousColor = colorMap.colors[0].charAt(0) === '#' ? colorMap.colors[0] : colorNameToHex(colorMap.colors[0]);\n nextColor = colorMap.colors[colorMap.colors.length - 1].charAt(0) === '#' ?\n colorMap.colors[colorMap.colors.length - 1] : colorNameToHex(colorMap.colors[colorMap.colors.length - 1]);\n var a = full / (colorMap.colors.length - 1);\n var b = void 0;\n var c = void 0;\n var length_2 = colorMap.colors.length - 1;\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_2; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.colors[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value <= splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/** @private */\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/** @private */\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n/** @private */\nexport function getTextAnchor(alignment, enableRTL) {\n switch (alignment) {\n case 'Near':\n return enableRTL ? 'end' : 'start';\n case 'Far':\n return enableRTL ? 'start' : 'end';\n default:\n return 'middle';\n }\n}\n","import { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies Chart Themes\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /** @private */\n Theme.stockEventFont = {\n size: '13px',\n fontWeight: '400',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n})(Theme || (Theme = {}));\n/** @private */\nexport function getSeriesColor(theme) {\n var palette;\n switch (theme) {\n case 'Fabric':\n palette = ['#4472c4', '#ed7d31', '#ffc000', '#70ad47', '#5b9bd5',\n '#c1c1c1', '#6f6fe2', '#e269ae', '#9e480e', '#997300'];\n break;\n case 'Bootstrap4':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'Bootstrap':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'HighContrastLight':\n case 'HighContrast':\n palette = ['#79ECE4', '#E98272', '#DFE6B6', '#C6E773', '#BA98FF',\n '#FA83C3', '#00C27A', '#43ACEF', '#D681EF', '#D8BC6E'];\n break;\n case 'MaterialDark':\n palette = ['#9ECB08', '#56AEFF', '#C57AFF', '#61EAA9', '#EBBB3E',\n '#F45C5C', '#8A77FF', '#63C7FF', '#FF84B0', '#F7C928'];\n break;\n case 'FabricDark':\n palette = ['#4472c4', '#ed7d31', '#ffc000', '#70ad47', '#5b9bd5',\n '#c1c1c1', '#6f6fe2', '#e269ae', '#9e480e', '#997300'];\n break;\n case 'BootstrapDark':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'Tailwind':\n palette = ['#5A61F6', '#65A30D', '#334155', '#14B8A6', '#8B5CF6',\n '#0369A1', '#F97316', '#9333EA', '#F59E0B', '#15803D'];\n break;\n case 'TailwindDark':\n palette = ['#8B5CF6', '#22D3EE', '#F87171', '#4ADE80', '#E879F9',\n '#FCD34D', '#F97316', '#2DD4BF', '#F472B6', '#10B981'];\n break;\n case 'Bootstrap5':\n palette = ['#6355C7', '#FFB400', '#2196F5', '#F7523F', '#963C70',\n '#4BE0BC', '#FD7400', '#C9E422', '#DE3D8A', '#162F88'];\n break;\n case 'Bootstrap5Dark':\n palette = ['#8F80F4', '#FFD46D', '#6CBDFF', '#FF7F71', '#FF6DB3',\n '#63F5D2', '#FCAA65', '#ECFF77', '#EF8EFF', '#5F82FD'];\n break;\n case 'FluentDark':\n palette = ['#1AC9E6', '#DA4CB2', '#EDBB40', '#AF4BCF', '#FF7266',\n '#1BD565', '#EE993D', '#5887FF', '#EC548D', '#7D39C0'];\n break;\n case 'Fluent':\n palette = ['#1AC9E6', '#DA4CB2', '#EDBB40', '#AF4BCF', '#FF7266',\n '#1BD565', '#EE993D', '#5887FF', '#EC548D', '#7D39C0'];\n break;\n case 'Material3':\n palette = ['#6355C7', '#00AEE0', '#FFB400', '#F7523F', '#963C70',\n '#FD7400', '#4BE0BC', '#2196F5', '#DE3D8A', '#162F88'];\n break;\n case 'Material3Dark':\n palette = ['#4EAAFF', '#FA4EAB', '#FFF500', '#17EA58', '#38FFE7',\n '#FF9E45', '#B3F32F', '#B93CE4', '#FC5664', '#9B55FF'];\n break;\n default:\n palette = ['#00bdae', '#404041', '#357cd2', '#e56590', '#f8b883',\n '#70ad47', '#dd8abd', '#7f84e8', '#7bb4eb', '#ea7a57'];\n break;\n }\n return palette;\n}\n/** @private */\n// tslint:disable-next-line:max-func-body-length\nexport function getThemeColor(theme, canvas) {\n var style;\n var darkBackground = theme === 'MaterialDark' ? '#383838' : (theme === 'FabricDark' ? '#242424' : '#1b1b1b');\n switch (theme) {\n case 'HighContrastLight':\n case 'HighContrast':\n style = {\n axisLabel: '#ffffff',\n axisTitle: '#ffffff',\n axisLine: '#ffffff',\n majorGridLine: '#BFBFBF',\n minorGridLine: '#969696',\n majorTickLine: '#BFBFBF',\n minorTickLine: '#969696',\n chartTitle: '#ffffff',\n legendLabel: '#ffffff',\n background: canvas ? '#000000' : 'transparent',\n areaBorder: '#ffffff',\n errorBar: '#ffffff',\n crosshairLine: '#ffffff',\n crosshairFill: '#ffffff',\n crosshairLabel: '#000000',\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696',\n markerShadow: '#BFBFBF',\n selectionRectFill: 'rgba(255, 217, 57, 0.3)',\n selectionRectStroke: '#ffffff',\n selectionCircleStroke: '#FFD939',\n tabColor: '#969696',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#FFD939',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI'\n },\n axisLabelFont: {\n color: '#969696', fontFamily: 'Segoe UI'\n },\n legendTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI'\n },\n legendLabelFont: {\n color: '#969696', fontFamily: 'Segoe UI'\n },\n tooltipLabelFont: {\n color: '#000000', fontFamily: 'Segoe UI'\n },\n axisTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI'\n },\n datalabelFont: {\n color: '#969696', fontFamily: 'Segoe UI'\n },\n chartSubTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI'\n },\n crosshairLabelFont: {\n color: '#000000', fontFamily: 'Segoe UI'\n },\n stripLineLabelFont: {\n color: '#969696', fontFamily: 'Segoe UI'\n }\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n axisLabel: '#DADADA', axisTitle: '#ffffff',\n axisLine: ' #6F6C6C',\n majorGridLine: '#414040',\n minorGridLine: '#514F4F',\n majorTickLine: '#414040',\n minorTickLine: ' #4A4848',\n chartTitle: '#ffffff',\n legendLabel: '#DADADA',\n background: canvas ? darkBackground : 'transparent',\n areaBorder: ' #9A9A9A',\n errorBar: '#ffffff',\n crosshairLine: '#F4F4F4',\n crosshairFill: theme === 'MaterialDark' ? '#F4F4F4' : theme === 'FabricDark' ? '#A19F9D' : '#F0F0F0',\n crosshairLabel: '#282727',\n tooltipFill: '#F4F4F4',\n tooltipBoldLabel: '#282727',\n tooltipLightLabel: '#333232',\n tooltipHeaderLine: '#9A9A9A',\n markerShadow: null,\n selectionRectFill: 'rgba(56,169,255, 0.1)',\n selectionRectStroke: '#38A9FF',\n selectionCircleStroke: '#282727',\n tabColor: 'rgb(102, 175, 233)',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: theme === 'MaterialDark' ? '#00B0FF' : theme === 'FabricDark' ? '#0074CC' : '#0070F0',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n axisLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.6)' : theme === 'FabricDark' ? '#A19F9D' : '#CED4DA', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n legendTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n legendLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.6)' : theme === 'FabricDark' ? '#A19F9D' : '#676767', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n tooltipLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n axisTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n datalabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.6)' : theme === 'FabricDark' ? '#A19F9D' : '#676767', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n chartSubTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n crosshairLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n },\n stripLineLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.24)' : theme === 'FabricDark' ? '#6F6C6C' : '#414141', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica'\n }\n };\n break;\n case 'Bootstrap4':\n style = {\n axisLabel: '#212529', axisTitle: '#212529', axisLine: '#CED4DA', majorGridLine: '#CED4DA',\n minorGridLine: '#DEE2E6', majorTickLine: '#ADB5BD', minorTickLine: '#CED4DA', chartTitle: '#212529', legendLabel: '#212529',\n background: canvas ? '#FFFFFF' : 'transparent', areaBorder: '#DEE2E6', errorBar: '#000000', crosshairLine: '#6C757D', crosshairFill: '#212529',\n crosshairLabel: '#FFFFFF', tooltipFill: '#020202', tooltipBoldLabel: 'rgba(255,255,255)',\n tooltipLightLabel: 'rgba(255,255,255, 0.9)', tooltipHeaderLine: 'rgba(255,255,255, 0.2)', markerShadow: null,\n selectionRectFill: 'rgba(255,255,255, 0.1)', selectionRectStroke: 'rgba(0, 123, 255)', selectionCircleStroke: '#495057', tabColor: 'rgb(102, 175, 233)', bearFillColor: '#2ecd71', bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#007BFF',\n toolkitFill: '#495057',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(-5, -5, 26, 26),\n chartTitleFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n axisLabelFont: {\n color: '#495057', fontFamily: 'Helvetica'\n },\n legendTitleFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n legendLabelFont: {\n color: '#666666', fontFamily: 'Helvetica'\n },\n tooltipLabelFont: {\n color: '#F9FAFB', fontFamily: 'Helvetica'\n },\n axisTitleFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n datalabelFont: {\n color: '#495057', fontFamily: 'Helvetica'\n },\n chartSubTitleFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n crosshairLabelFont: {\n color: '#F9FAFB', fontFamily: 'Helvetica'\n },\n stripLineLabelFont: {\n color: '#6C757D', fontFamily: 'Helvetica'\n }\n };\n break;\n case 'Tailwind':\n style = {\n axisLabel: '#6B728', axisTitle: '#374151',\n axisLine: ' #D1D5DB',\n majorGridLine: '#E5E7EB',\n minorGridLine: '#E5E7EB',\n majorTickLine: '#D1D5DB',\n minorTickLine: ' #D1D5DB',\n chartTitle: '#374151',\n legendLabel: '#374151',\n background: canvas ? 'rgba(255,255,255, 0.0)' : 'transparent',\n areaBorder: ' #E5E7EB',\n errorBar: '#374151',\n crosshairLine: '#1F2937',\n crosshairFill: '#111827',\n crosshairLabel: '#F9FAFB',\n tooltipFill: '#111827',\n tooltipBoldLabel: '#D1D5DB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#6B7280',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: 'rgb(79, 70, 229)',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#4F46E5',\n toolkitFill: '#6B7280',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n axisLabelFont: {\n color: '#6B7280', fontFamily: 'Inter'\n },\n legendTitleFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n legendLabelFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n tooltipLabelFont: {\n color: '#F9FAFB', fontFamily: 'Inter'\n },\n axisTitleFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n datalabelFont: {\n color: '#6B7280', fontFamily: 'Inter'\n },\n chartSubTitleFont: {\n color: '#374151', fontFamily: 'Inter'\n },\n crosshairLabelFont: {\n color: '#F9FAFB', fontFamily: 'Inter'\n },\n stripLineLabelFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n }\n };\n break;\n case 'TailwindDark':\n style = {\n axisLabel: '#9CA3AF', axisTitle: '#9CA3AF',\n axisLine: ' #4B5563',\n majorGridLine: '#374151',\n minorGridLine: '#374151',\n majorTickLine: '#4B5563',\n minorTickLine: ' #4B5563',\n chartTitle: '#D1D5DB',\n legendLabel: '#D1D5DB',\n background: canvas ? '#1f2937' : 'transparent',\n areaBorder: ' #374151',\n errorBar: '#ffffff',\n crosshairLine: '#9CA3AF',\n crosshairFill: '#F9FAFB',\n crosshairLabel: '#1F2937',\n tooltipFill: '#F9FAFB',\n tooltipBoldLabel: '#6B7280',\n tooltipLightLabel: '#1F2937',\n tooltipHeaderLine: '#9CA3AF',\n markerShadow: null,\n selectionRectFill: 'rgba(34,211,238, 0.1)',\n selectionRectStroke: '#22D3EE',\n selectionCircleStroke: '#282727',\n tabColor: 'rgb(34, 211, 238)',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#22D3EE',\n toolkitFill: '#D1D5DB',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n axisLabelFont: {\n color: '#9CA3AF', fontFamily: 'Inter'\n },\n legendTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n legendLabelFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n tooltipLabelFont: {\n color: '#1F2937', fontFamily: 'Inter'\n },\n axisTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n datalabelFont: {\n color: '#9CA3AF', fontFamily: 'Inter'\n },\n chartSubTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter'\n },\n crosshairLabelFont: {\n color: '#1F2937', fontFamily: 'Inter'\n },\n stripLineLabelFont: {\n color: '#6B7280', fontFamily: 'Inter'\n }\n };\n break;\n case 'Bootstrap5':\n style = {\n axisLabel: '#495057',\n axisTitle: '#343A40',\n axisLine: '#D1D5DB',\n majorGridLine: '#E5E7EB',\n minorGridLine: '#E5E7EB',\n majorTickLine: '#D1D5DB',\n minorTickLine: ' #D1D5DB',\n chartTitle: '#343A40',\n legendLabel: '#343A40',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: ' #DEE2E6',\n errorBar: '#1F2937',\n crosshairLine: '#1F2937',\n crosshairFill: '#212529',\n crosshairLabel: '#F9FAFB',\n tooltipFill: '#212529',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#9CA3AF',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#0d6efd',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#0D6EFD',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n axisLabelFont: {\n color: '#495057', fontFamily: 'Helvetica'\n },\n legendTitleFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n legendLabelFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n tooltipLabelFont: {\n color: '#F9FAFB', fontFamily: 'Helvetica'\n },\n axisTitleFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n datalabelFont: {\n color: '#495057', fontFamily: 'Helvetica'\n },\n chartSubTitleFont: {\n color: '#343A40', fontFamily: 'Helvetica'\n },\n crosshairLabelFont: {\n color: '#F9FAFB', fontFamily: 'Helvetica'\n },\n stripLineLabelFont: {\n color: '#ADB5BD', fontFamily: 'Helvetica'\n }\n };\n break;\n case 'Bootstrap5Dark':\n style = {\n axisLabel: '#CED4DA',\n axisTitle: '#E9ECEF',\n axisLine: '#495057',\n majorGridLine: '#343A40',\n minorGridLine: '#343A40',\n majorTickLine: '#495057',\n minorTickLine: ' #495057',\n chartTitle: '#E9ECEF',\n legendLabel: '#E9ECEF',\n background: canvas ? '#212529' : 'transparent',\n areaBorder: ' #444C54',\n errorBar: '#ADB5BD',\n crosshairLine: '#ADB5BD',\n crosshairFill: '#E9ECEF',\n crosshairLabel: '#212529',\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#212529',\n tooltipLightLabel: '#212529',\n tooltipHeaderLine: '#ADB5BD',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: 'rgb(13, 110, 253)',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#0D6EFD',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n axisLabelFont: {\n color: '#CED4DA', fontFamily: 'Helvetica'\n },\n legendTitleFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n legendLabelFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n tooltipLabelFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n axisTitleFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n datalabelFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n chartSubTitleFont: {\n color: '#E9ECEF', fontFamily: 'Helvetica'\n },\n crosshairLabelFont: {\n color: '#212529', fontFamily: 'Helvetica'\n },\n stripLineLabelFont: {\n color: '#6C757D', fontFamily: 'Helvetica'\n }\n };\n break;\n case 'Fluent':\n style = {\n axisLabel: '#3B3A39',\n axisTitle: '#201F1E',\n axisLine: '#D2D0CE',\n majorGridLine: '#EDEBE9',\n minorGridLine: '#EDEBE9',\n majorTickLine: '#D2D0CE',\n minorTickLine: ' #D2D0CE',\n chartTitle: '#201F1E',\n legendLabel: '#323130',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: '#EDEBE9',\n errorBar: '#A19F9D',\n crosshairLine: '#A19F9D',\n crosshairFill: '#FFFFFF',\n crosshairLabel: '#323130',\n tooltipFill: '#FFFFFF',\n tooltipBoldLabel: '#323130',\n tooltipLightLabel: '#323130',\n tooltipHeaderLine: '#D2D0CE',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#0078d4',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#0078D4',\n toolkitFill: '#A19F9D',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#201F1E', fontFamily: 'Segoe UI'\n },\n axisLabelFont: {\n color: '#3B3A39', fontFamily: 'Segoe UI'\n },\n legendTitleFont: {\n color: '#201F1E', fontFamily: 'Segoe UI'\n },\n legendLabelFont: {\n color: '#49454E', fontFamily: 'Segoe UI'\n },\n tooltipLabelFont: {\n color: '#323130', fontFamily: 'Segoe UI'\n },\n axisTitleFont: {\n color: '#201F1E', fontFamily: 'Segoe UI'\n },\n datalabelFont: {\n color: '#3B3A39', fontFamily: 'Segoe UI'\n },\n chartSubTitleFont: {\n color: '#323129', fontFamily: 'Segoe UI'\n },\n crosshairLabelFont: {\n color: '#323130', fontFamily: 'Segoe UI'\n },\n stripLineLabelFont: {\n color: '#A19F9D', fontFamily: 'Segoe UI'\n }\n };\n break;\n case 'FluentDark':\n style = {\n axisLabel: '#C8C6C4',\n axisTitle: '#F3F2F1',\n axisLine: '#3B3A39',\n majorGridLine: '#414040',\n minorGridLine: '#414040',\n majorTickLine: '#3B3A39',\n minorTickLine: '#3B3A39',\n chartTitle: '#F3F2F1',\n legendLabel: '#D2D0CE',\n background: canvas ? '#383838' : 'transparent',\n areaBorder: '#414040',\n errorBar: '#D2D0CE',\n crosshairLine: '#D2D0CE',\n crosshairFill: '#323130',\n crosshairLabel: '#F3F2F1',\n tooltipFill: '#252423',\n tooltipBoldLabel: '#F3F2F1',\n tooltipLightLabel: '#F3F2F1',\n tooltipHeaderLine: '#3B3A39',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#0078d4',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#0078D4',\n toolkitFill: '#484644',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#C8C6C4', fontFamily: 'Segoe UI'\n },\n axisLabelFont: {\n color: '#C8C6C4', fontFamily: 'Segoe UI'\n },\n legendTitleFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI'\n },\n legendLabelFont: {\n color: '#D2D0CE', fontFamily: 'Segoe UI'\n },\n tooltipLabelFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI'\n },\n axisTitleFont: {\n color: '#F3F2F2', fontFamily: 'Segoe UI'\n },\n datalabelFont: {\n color: '#D2D0CE', fontFamily: 'Segoe UI'\n },\n chartSubTitleFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI'\n },\n crosshairLabelFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI'\n },\n stripLineLabelFont: {\n color: '#484644', fontFamily: 'Segoe UI'\n }\n };\n break;\n case 'Material3':\n style = {\n axisLabel: '#1E192B',\n axisTitle: '#1C1B1F',\n axisLine: '#C4C7C5',\n majorGridLine: '#C4C7C5',\n minorGridLine: '#C4C7C5',\n majorTickLine: '#C4C7C5',\n minorTickLine: ' #C4C7C5',\n chartTitle: '#1C1B1F',\n legendLabel: '#49454E',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: '#E7E0EC',\n errorBar: '#79747E',\n crosshairLine: '#49454E',\n crosshairFill: '#313033',\n crosshairLabel: '#F4EFF4',\n tooltipFill: '#313033',\n tooltipBoldLabel: '#F4EFF4',\n tooltipLightLabel: '#F4EFF4',\n tooltipHeaderLine: '#F4EFF4',\n markerShadow: null,\n selectionRectFill: 'rgb(98, 0, 238, 0.06)',\n selectionRectStroke: '#6200EE',\n selectionCircleStroke: '#79747E',\n tabColor: '#EADDFF',\n bearFillColor: '#5887FF',\n bullFillColor: '#F7523F',\n toolkitSelectionColor: '#49454E',\n toolkitFill: '#49454E',\n toolkitIconRectOverFill: '#EADDFF',\n toolkitIconRectSelectionFill: '#EADDFF',\n toolkitIconRect: new Rect(-4, -5, 26, 26),\n histogram: '#D21020',\n chartTitleFont: {\n color: '#1C1B1F', fontFamily: 'Roboto'\n },\n axisLabelFont: {\n color: '#1E192B', fontFamily: 'Roboto'\n },\n legendTitleFont: {\n color: '#1C1B1F', fontFamily: 'Roboto'\n },\n legendLabelFont: {\n color: '#49454E', fontFamily: 'Roboto'\n },\n tooltipLabelFont: {\n color: '#F4EFF4', fontFamily: 'Roboto'\n },\n axisTitleFont: {\n color: '#1C1B1F', fontFamily: 'Roboto'\n },\n datalabelFont: {\n color: '#49454E', fontFamily: 'Roboto'\n },\n chartSubTitleFont: {\n color: '#49454E', fontFamily: 'Roboto'\n },\n crosshairLabelFont: {\n color: '#F4EFF4', fontFamily: 'Roboto'\n },\n stripLineLabelFont: {\n color: '#79747E', fontFamily: 'Roboto'\n }\n };\n break;\n case 'Material3Dark':\n style = {\n axisLabel: '#E6E1E5',\n axisTitle: '#E6E1E5',\n axisLine: '#49454F',\n majorGridLine: '#444746',\n minorGridLine: '#444746',\n majorTickLine: '#444746',\n minorTickLine: ' #444746',\n chartTitle: '#E6E1E5',\n legendLabel: '#CAC4D0',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: '#49454F',\n errorBar: '#938F99',\n crosshairLine: '#CAC4D0',\n crosshairFill: '#E6E1E5',\n crosshairLabel: '#313033',\n tooltipFill: '#E6E1E5',\n tooltipBoldLabel: '#313033',\n tooltipLightLabel: '#313033',\n tooltipHeaderLine: '#313033',\n markerShadow: null,\n selectionRectFill: 'rgba(78, 170, 255, 0.06)',\n selectionRectStroke: '#4EAAFF',\n selectionCircleStroke: '#938F99',\n tabColor: '#4F378B',\n bearFillColor: '#B3F32F',\n bullFillColor: '#FF9E45',\n toolkitSelectionColor: '#CAC4D0',\n toolkitFill: '#CAC4D0',\n toolkitIconRectOverFill: '#4F378B',\n toolkitIconRectSelectionFill: '#4F378B',\n toolkitIconRect: new Rect(-4, -5, 26, 26),\n histogram: '#FF9E45',\n chartTitleFont: {\n color: '#E6E1E5', fontFamily: 'Roboto'\n },\n axisLabelFont: {\n color: '#CAC4D0', fontFamily: 'Roboto'\n },\n legendTitleFont: {\n color: '#E6E1E5', fontFamily: 'Roboto'\n },\n legendLabelFont: {\n color: '#CAC4D0', fontFamily: 'Roboto'\n },\n tooltipLabelFont: {\n color: '#313033', fontFamily: 'Roboto'\n },\n axisTitleFont: {\n color: '#E6E1E5', fontFamily: 'Roboto'\n },\n datalabelFont: {\n color: '#CAC4D0', fontFamily: 'Roboto'\n },\n chartSubTitleFont: {\n color: '#CAC4D0', fontFamily: 'Roboto'\n },\n crosshairLabelFont: {\n color: '#313033', fontFamily: 'Roboto'\n },\n stripLineLabelFont: {\n color: '#938F99', fontFamily: 'Roboto'\n }\n };\n break;\n default:\n style = {\n axisLabel: '#686868',\n axisTitle: '#424242',\n axisLine: '#b5b5b5',\n majorGridLine: '#dbdbdb',\n minorGridLine: '#eaeaea',\n majorTickLine: '#b5b5b5',\n minorTickLine: '#d6d6d6',\n chartTitle: '#424242',\n legendLabel: '#353535',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: 'Gray',\n errorBar: '#000000',\n crosshairLine: '#4f4f4f',\n crosshairFill: theme === 'Material' ? '#000816' : theme === 'Fabric' ? '#FFFFFF' : '#212529',\n crosshairLabel: '#e5e5e5',\n tooltipFill: '#000816',\n tooltipBoldLabel: '#ffffff',\n tooltipLightLabel: '#dbdbdb',\n tooltipHeaderLine: '#ffffff',\n markerShadow: null,\n selectionRectFill: 'rgba(41, 171, 226, 0.1)',\n selectionRectStroke: '#29abe2',\n selectionCircleStroke: '#29abe2',\n tabColor: 'rgb(158, 158, 158)',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: theme === 'Material' ? '#ff4081' : theme === 'Fabric' ? '#0078D6' : '#317AB9',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n axisLabelFont: {\n color: theme === 'Material' ? 'rgba(97, 97, 97, 1)' : theme === 'Fabric' ? '#666666' : '#676767', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n legendTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n legendLabelFont: {\n color: theme === 'Material' ? 'rgba(97, 97, 97, 1)' : theme === 'Fabric' ? '#666666' : '#666666', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n tooltipLabelFont: {\n color: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n axisTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n datalabelFont: {\n color: theme === 'Material' ? 'rgba(97, 97, 97, 1)' : theme === 'Fabric' ? '#666666' : '#676767', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n chartSubTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n crosshairLabelFont: {\n color: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n },\n stripLineLabelFont: {\n color: theme === 'Material' ? 'rgba(158, 158, 158, 1)' : theme === 'Fabric' ? '#A6A6A6' : '#676767', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica'\n }\n };\n break;\n }\n return style;\n}\n/** @private */\nexport function getScrollbarThemeColor(theme) {\n var scrollStyle;\n switch (theme) {\n case 'HighContrastLight':\n scrollStyle = {\n backRect: '#333',\n thumb: '#bfbfbf',\n circle: '#fff',\n circleHover: '#685708',\n arrow: '#333',\n grip: '#333',\n arrowHover: '#fff',\n backRectBorder: '#969696'\n };\n break;\n case 'Bootstrap':\n scrollStyle = {\n backRect: '#f5f5f5',\n thumb: '#e6e6e6',\n circle: '#fff',\n circleHover: '#eee',\n arrow: '#8c8c8c',\n grip: '#8c8c8c'\n };\n break;\n case 'Fabric':\n scrollStyle = {\n backRect: '#f8f8f8',\n thumb: '#eaeaea',\n circle: '#fff',\n circleHover: '#eaeaea',\n arrow: '#a6a6a6',\n grip: '#a6a6a6'\n };\n break;\n case 'MaterialDark':\n scrollStyle = {\n backRect: '#424242',\n thumb: '#616161',\n circle: '#757575',\n circleHover: '#616161',\n arrow: '#BDBDBD',\n grip: '#BDBDBD'\n };\n break;\n case 'FabricDark':\n scrollStyle = {\n backRect: '#282727',\n thumb: '#333232',\n circle: '#4A4848',\n circleHover: '#514F4F',\n arrow: '#ADB5BD',\n grip: '#DADADA'\n };\n break;\n case 'BootstrapDark':\n scrollStyle = {\n backRect: '#2A2A2A',\n thumb: '#313131',\n circle: '#414141',\n circleHover: '#484848',\n arrow: '#DADADA',\n grip: '#FFFFFF'\n };\n break;\n case 'Bootstrap5Dark':\n scrollStyle = {\n backRect: '#282D31',\n thumb: '#3B4248',\n circle: '#495057',\n circleHover: '#6C757D',\n arrow: '#A19F9D',\n grip: '#ADB5BD'\n };\n break;\n case 'HighContrast':\n scrollStyle = {\n backRect: '#757575',\n thumb: '#BFBFBF',\n circle: '#FFFFFF',\n circleHover: '#FFFFFF',\n arrow: '#ADB5BD',\n grip: '#969696'\n };\n break;\n case 'TailwindDark':\n scrollStyle = {\n backRect: '#6B7280',\n thumb: '#374151',\n circle: '#4B5563',\n circleHover: '#4B5563',\n arrow: '#ADB5BD',\n grip: '#D1D5DB'\n };\n break;\n case 'Fluent':\n scrollStyle = {\n backRect: '#F3F2F1',\n thumb: '#E1DFDD',\n circle: '#FFFFFF',\n circleHover: '#E1DFDD',\n arrow: '#605E5C',\n grip: '#605E5C'\n };\n break;\n case 'FluentDark':\n scrollStyle = {\n backRect: '#252423',\n thumb: '#323130',\n circle: '#3B3A39',\n circleHover: '#3B3A39',\n arrow: '#ADB5BD',\n grip: '#A19F9D'\n };\n break;\n case 'Material3':\n scrollStyle = {\n backRect: 'rgba(103, 80, 164, 0.05)',\n thumb: ' rgba(103, 80, 164, 0.14)',\n circle: '#FFFFFF',\n circleHover: '#E1DFDD',\n arrow: '#49454E',\n grip: '#49454E'\n };\n break;\n case 'Material3Dark':\n scrollStyle = {\n backRect: 'rgba(208, 188, 255, 0.05)',\n thumb: 'rgba(208, 188, 255, 0.14)',\n circle: '#FFFFFF',\n circleHover: '#E1DFDD',\n arrow: '#CAC4D0',\n grip: '#CAC4D0'\n };\n break;\n default:\n scrollStyle = {\n backRect: '#f5f5f5',\n thumb: '#e0e0e0',\n circle: '#fff',\n circleHover: '#eee',\n arrow: '#9e9e9e',\n grip: '#9e9e9e'\n };\n break;\n }\n return scrollStyle;\n}\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { subtractThickness, valueToCoefficient, sum, redrawElement, isBreakLabel, ChartLocation, withInBounds, rotateTextSize } from '../../common/utils/helper';\nimport { subArray, inside, appendChildElement, stringToNumber } from '../../common/utils/helper';\nimport { Thickness, logBase, createZoomingLabels, getElement } from '../../common/utils/helper';\nimport { Size, Rect, measureText, TextOption, PathOption } from '@syncfusion/ej2-svg-base';\nimport { textElement, textTrim, getRotatedRectangleCoordinates, isRotatedRectIntersect, isZoomSet } from '../../common/utils/helper';\n/**\n * Specifies the Cartesian Axis Layout.\n */\nvar axisPadding = 10;\nvar CartesianAxisLayoutPanel = /** @class */ (function () {\n /** @private */\n function CartesianAxisLayoutPanel(chartModule) {\n this.chart = chartModule;\n this.padding = 5;\n }\n /**\n * Measure the axis size.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measureAxis = function (rect) {\n var chart = this.chart;\n var chartAreaWidth = chart.chartArea.width ? stringToNumber(chart.chartArea.width, chart.availableSize.width) : null;\n this.crossAt(chart);\n this.seriesClipRect = new Rect(rect.x, rect.y, rect.width, rect.height);\n this.initialClipRect = rect;\n this.leftSize = 0;\n this.rightSize = 0;\n this.topSize = 0;\n this.bottomSize = 0;\n //Measure Axis size with initial Rect\n this.measureRowAxis(chart, this.initialClipRect);\n this.initialClipRect = subtractThickness(this.initialClipRect, new Thickness(this.leftSize, this.rightSize, 0, 0));\n this.measureColumnAxis(chart, this.initialClipRect);\n this.initialClipRect = subtractThickness(this.initialClipRect, new Thickness(0, 0, this.topSize, this.bottomSize));\n if (!this.chart.delayRedraw) {\n this.calculateAxisSize(this.initialClipRect);\n }\n this.leftSize = 0;\n this.rightSize = 0;\n this.topSize = 0;\n this.bottomSize = 0;\n //Measure Axis size with series Rect\n this.measureRowAxis(chart, this.initialClipRect);\n this.seriesClipRect = subtractThickness(this.seriesClipRect, new Thickness(this.leftSize, this.rightSize, 0, 0));\n this.measureColumnAxis(chart, this.initialClipRect);\n this.seriesClipRect = subtractThickness(this.seriesClipRect, new Thickness(0, 0, this.topSize, this.bottomSize));\n if (chartAreaWidth) {\n this.calculateFixedChartArea(chart, chartAreaWidth);\n }\n if (!this.chart.delayRedraw) {\n chart.refreshAxis();\n this.calculateAxisSize(this.seriesClipRect);\n }\n };\n CartesianAxisLayoutPanel.prototype.calculateFixedChartArea = function (chart, chartAreaWidth) {\n this.seriesClipRect.width = chartAreaWidth;\n this.seriesClipRect.x = chart.availableSize.width - chart.margin.right - chartAreaWidth -\n (chart.legendSettings.position === 'Right' ? chart.legendModule.legendBounds.width : 0);\n for (var _i = 0, _a = chart.rows; _i < _a.length; _i++) {\n var item = _a[_i];\n this.seriesClipRect.x -= sum(item.farSizes);\n }\n };\n CartesianAxisLayoutPanel.prototype.measureRowAxis = function (chart, rect) {\n var row;\n this.calculateRowSize(rect);\n for (var _i = 0, _a = chart.rows; _i < _a.length; _i++) {\n var item = _a[_i];\n row = item;\n row.nearSizes = [];\n row.farSizes = [];\n row.insideNearSizes = [];\n row.insideFarSizes = [];\n this.arrangeAxis(row);\n this.measureDefinition(row, chart, new Size(chart.availableSize.width, row.computedHeight));\n if (this.leftSize < sum(row.nearSizes)) {\n this.leftSize = sum(row.nearSizes);\n }\n if (this.rightSize < sum(row.farSizes)) {\n this.rightSize = sum(row.farSizes);\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.measureColumnAxis = function (chart, rect) {\n var column;\n this.calculateColumnSize(rect);\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var item = _a[_i];\n column = item;\n column.farSizes = [];\n column.nearSizes = [];\n column.insideNearSizes = [];\n column.insideFarSizes = [];\n this.arrangeAxis(column);\n this.measureDefinition(column, chart, new Size(column.computedWidth, chart.availableSize.height));\n if (this.bottomSize < sum(column.nearSizes)) {\n this.bottomSize = sum(column.nearSizes);\n }\n if (this.topSize < sum(column.farSizes)) {\n this.topSize = sum(column.farSizes);\n }\n }\n };\n /**\n * Measure the column and row in chart.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measureDefinition = function (definition, chart, size) {\n var ele;\n for (var _i = 0, _a = definition.axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n ele = axis.scrollbarSettings.height;\n axis.scrollBarHeight = chart.scrollBarModule && chart.zoomModule && chart.zoomSettings.enableScrollbar &&\n axis.enableScrollbarOnZooming && chart.zoomModule.isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0) ? ele : 0;\n axis.scrollBarHeight = chart.scrollBarModule && (chart.zoomModule && chart.zoomSettings.enableScrollbar &&\n axis.enableScrollbarOnZooming && chart.zoomModule.isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0)\n || axis.scrollbarSettings.enable) ? ele : 0;\n axis.getModule(chart);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n definition.computeSize(axis, axis.scrollBarHeight, definition, chart);\n }\n if (definition.farSizes.length > 0) {\n definition.farSizes[definition.farSizes.length - 1] -= axisPadding;\n }\n if (definition.nearSizes.length > 0) {\n definition.nearSizes[definition.nearSizes.length - 1] -= axisPadding;\n }\n };\n /**\n * Measure the axis.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.calculateAxisSize = function (rect) {\n var chart = this.chart;\n var row;\n var column;\n var definition;\n var axis;\n var nearCount = 0;\n var farCount = 0;\n var size = 0;\n var x;\n var y;\n var axisOffset;\n this.calculateRowSize(rect);\n for (var i = 0, len = chart.rows.length; i < len; i++) {\n row = chart.rows[i];\n nearCount = 0;\n farCount = 0;\n for (var j = 0, len_1 = row.axes.length; j < len_1; j++) {\n axis = row.axes[j];\n axisOffset = axis.plotOffset;\n if (axis.rect.height === 0) {\n axis.rect.height = row.computedHeight;\n size = 0;\n for (var k = i + 1, len_2 = i + axis.span; k < len_2; k++) {\n definition = chart.rows[k];\n size += definition.computedHeight;\n }\n axis.rect.y = (row.computedTop - size) + (axis.plotOffsetTop ? axis.plotOffsetTop : axisOffset);\n axis.rect.height = (axis.rect.height + size) -\n (this.getAxisOffsetValue(axis.plotOffsetTop, axis.plotOffsetBottom, axis.plotOffset));\n axis.rect.width = 0;\n }\n if (axis.isAxisOpposedPosition) {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Vertical') {\n x = rect.x + rect.width - sum(subArray(row.insideFarSizes, farCount));\n }\n else {\n x = rect.x + rect.width + sum(subArray(row.farSizes, farCount));\n }\n axis.rect.x = axis.rect.x >= x ? axis.rect.x : x;\n farCount++;\n }\n else {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Vertical') {\n x = rect.x + sum(subArray(row.insideNearSizes, nearCount));\n }\n else {\n x = rect.x - sum(subArray(row.nearSizes, nearCount));\n }\n axis.rect.x = axis.rect.x <= x ? axis.rect.x : x;\n nearCount++;\n }\n }\n }\n this.calculateColumnSize(rect);\n for (var i = 0, len = chart.columns.length; i < len; i++) {\n column = chart.columns[i];\n nearCount = 0;\n farCount = 0;\n for (var j = 0, len_3 = column.axes.length; j < len_3; j++) {\n axis = column.axes[j];\n axisOffset = axis.plotOffset;\n if (axis.rect.width === 0) {\n for (var k = i, len_4 = (i + axis.span); k < len_4; k++) {\n definition = chart.columns[k];\n axis.rect.width += definition.computedWidth;\n }\n axis.rect.x = column.computedLeft + (axis.plotOffsetLeft ? axis.plotOffsetLeft : axisOffset);\n axis.rect.width -= (this.getAxisOffsetValue(axis.plotOffsetLeft, axis.plotOffsetRight, axis.plotOffset));\n axis.rect.height = 0;\n }\n if (axis.isAxisOpposedPosition) {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Horizontal') {\n y = rect.y + sum(subArray(column.insideFarSizes, farCount));\n }\n else {\n y = rect.y - sum(subArray(column.farSizes, farCount));\n }\n axis.rect.y = axis.rect.y <= y ? axis.rect.y : y;\n farCount++;\n }\n else {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Horizontal') {\n y = rect.y + rect.height - sum(subArray(column.insideNearSizes, nearCount));\n }\n else {\n y = rect.y + rect.height + sum(subArray(column.nearSizes, nearCount));\n }\n axis.rect.y = axis.rect.y >= y ? axis.rect.y : y;\n nearCount++;\n }\n }\n }\n };\n /**\n * Measure the axis.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measure = function () {\n var chart = this.chart;\n var row;\n var column;\n var definition;\n var actualIndex;\n var span;\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n //definition.Axes = axis;\n if (axis.orientation === 'Vertical') {\n chart.verticalAxes.push(axis);\n actualIndex = this.getActualRow(axis);\n row = chart.rows[actualIndex];\n this.pushAxis(row, axis);\n span = ((actualIndex + axis.span) > chart.rows.length ? chart.rows.length : (actualIndex + axis.span));\n for (var j = actualIndex + 1; j < span; j++) {\n definition = chart.rows[j];\n definition.axes[row.axes.length - 1] = axis;\n chart.rows[j] = definition;\n }\n chart.rows[actualIndex] = row;\n }\n else {\n chart.horizontalAxes.push(axis);\n actualIndex = this.getActualColumn(axis);\n column = chart.columns[actualIndex];\n this.pushAxis(column, axis);\n span = ((actualIndex + axis.span) > chart.columns.length ? chart.columns.length : (actualIndex + axis.span));\n for (var j = actualIndex + 1; j < span; j++) {\n definition = chart.columns[j];\n definition.axes[column.axes.length - 1] = axis;\n chart.columns[j] = definition;\n }\n chart.columns[actualIndex] = column;\n }\n axis.isRTLEnabled = chart.enableRtl;\n axis.setIsInversedAndOpposedPosition();\n }\n };\n CartesianAxisLayoutPanel.prototype.getAxisOffsetValue = function (position1, position2, plotOffset) {\n var rangeOffset = position1 ? (position1 + (position2 ? position2 :\n plotOffset)) : (position2 ? position2 + plotOffset : 2 * plotOffset);\n return rangeOffset;\n };\n CartesianAxisLayoutPanel.prototype.crossAt = function (chart) {\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n if (axis.crossesAt === null) {\n continue;\n }\n if (!axis.crossesInAxis) {\n if (chart.requireInvertedAxis) {\n axis.crossInAxis = ((axis.orientation === 'Horizontal')) ? chart.primaryXAxis : chart.primaryYAxis;\n }\n else {\n axis.crossInAxis = ((axis.orientation === 'Horizontal')) ? chart.primaryYAxis : chart.primaryXAxis;\n }\n axis.crossAt = this.updateCrossAt(axis.crossInAxis, axis.crossesAt);\n continue;\n }\n else {\n for (var i = 2, len = chart.axisCollections.length; i < len; i++) {\n if (axis.crossesInAxis === chart.axisCollections[i].name) {\n axis.crossInAxis = chart.axisCollections[i];\n axis.crossAt = this.updateCrossAt(axis.crossInAxis, axis.crossesAt);\n continue;\n }\n }\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.updateCrossAt = function (axis, crossAt) {\n switch (axis.valueType) {\n case 'DateTime':\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n return Date.parse(dateParser(dateFormatter(new Date(DataUtil.parse.parseJson({ val: crossAt }).val))));\n case 'Category':\n return parseFloat(crossAt) ? parseFloat(crossAt) : axis.labels.indexOf(crossAt);\n case 'Logarithmic':\n return logBase(crossAt, axis.logBase);\n default:\n return crossAt;\n }\n };\n CartesianAxisLayoutPanel.prototype.pushAxis = function (definition, axis) {\n for (var i = 0, len = definition.axes.length; i <= len; i++) {\n if (!definition.axes[i]) {\n definition.axes[i] = axis;\n break;\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.arrangeAxis = function (definition) {\n var axisCollection = [];\n for (var i = 0, len = definition.axes.length; i <= len; i++) {\n if (definition.axes[i]) {\n axisCollection.push(definition.axes[i]);\n }\n }\n definition.axes = axisCollection;\n };\n CartesianAxisLayoutPanel.prototype.getActualColumn = function (axis) {\n var actualLength = this.chart.columns.length;\n var pos = axis.columnIndex;\n var result = pos >= actualLength ? actualLength - 1 : (pos < 0 ? 0 : pos);\n return result;\n };\n CartesianAxisLayoutPanel.prototype.getActualRow = function (axis) {\n var actualLength = this.chart.rows.length;\n var pos = axis.rowIndex;\n var result = pos >= actualLength ? actualLength - 1 : (pos < 0 ? 0 : pos);\n return result;\n };\n /**\n * Measure the row size.\n *\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.calculateRowSize = function (rect) {\n /*! Calculate row size */\n var chart = this.chart;\n var row;\n var rowTop = rect.y + rect.height;\n var height = 0;\n var remainingHeight = Math.max(0, rect.height);\n for (var i = 0, len = chart.rows.length; i < len; i++) {\n row = chart.rows[i];\n if (row.height.indexOf('%') !== -1) {\n height = Math.min(remainingHeight, (rect.height * parseInt(row.height, 10) / 100));\n }\n else {\n height = Math.min(remainingHeight, parseInt(row.height, 10));\n }\n height = (i !== (len - 1)) ? height : remainingHeight;\n row.computedHeight = height;\n rowTop -= height;\n row.computedTop = rowTop;\n remainingHeight -= height;\n }\n };\n /**\n * Measure the row size.\n *\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.calculateColumnSize = function (rect) {\n /*! Calculate column size */\n var chart = this.chart;\n var column;\n var columnLeft = rect.x;\n var width = 0;\n var remainingWidth = Math.max(0, rect.width);\n for (var i = 0, len = chart.columns.length; i < len; i++) {\n column = chart.columns[i];\n if (column.width.indexOf('%') !== -1) {\n width = Math.min(remainingWidth, (rect.width * parseInt(column.width, 10) / 100));\n }\n else {\n width = Math.min(remainingWidth, parseInt(column.width, 10));\n }\n width = (i !== (len - 1)) ? width : remainingWidth;\n column.computedWidth = width;\n column.computedLeft = columnLeft;\n columnLeft += width;\n remainingWidth -= width;\n }\n };\n /**\n * To render the axis element.\n *\n * @returns {void}\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n CartesianAxisLayoutPanel.prototype.renderAxes = function () {\n var chart = this.chart;\n var axis;\n var axisElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisInsideCollection' });\n var axisLineElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisOutsideCollection' });\n if (axisLineElement) {\n axisLineElement.setAttribute('aria-hidden', 'true');\n }\n var outsideElement;\n var isInside;\n for (var i = 0, len = chart.axisCollections.length; i < len; i++) {\n var axisVisibility = true;\n axis = chart.axisCollections[i];\n this.element = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i + 'Inside' });\n if (this.element) {\n this.element.setAttribute('aria-hidden', 'true');\n }\n outsideElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i + 'Outside' });\n if (outsideElement) {\n outsideElement.setAttribute('aria-hidden', 'true');\n }\n for (var _i = 0, _a = axis.series; _i < _a.length; _i++) {\n var series = _a[_i];\n if (axis.name === series.yAxisName || axis.name === series.xAxisName) {\n axisVisibility = series.visible;\n if (series.category === 'Pareto' && !series.paretoOptions.showAxis && series.type === 'Line') {\n axisVisibility = false;\n }\n if (!axisVisibility) {\n continue;\n }\n else {\n break;\n }\n }\n }\n if (!axisVisibility) {\n continue;\n }\n isInside = this.findAxisPosition(axis);\n if (axis.orientation === 'Horizontal') {\n axis.updateCrossValue();\n if (axis.visible && axis.internalVisibility && axis.lineStyle.width > 0) {\n this.drawAxisLine(axis, i, axis.plotOffset, 0, 0, 0, axis.plotOffsetLeft, axis.plotOffsetRight, (isInside || axis.lineStyle.width > 1) ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.majorGridLines.width > 0 || axis.majorTickLines.width > 0 || axis.minorTickLines.width > 0 || axis.minorGridLines.width > 0) {\n this.drawXAxisGridLine(axis, i, (isInside || axis.tickPosition === 'Inside') ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.visible && axis.internalVisibility) {\n this.drawXAxisLabels(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawXAxisBorder(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawXAxisTitle(axis, i, isInside ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n }\n else {\n axis.updateCrossValue();\n if (axis.visible && axis.internalVisibility && axis.lineStyle.width > 0) {\n this.drawAxisLine(axis, i, 0, axis.plotOffset, axis.plotOffsetBottom, axis.plotOffsetTop, 0, 0, (isInside || axis.lineStyle.width > 1) ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.majorGridLines.width > 0 || axis.majorTickLines.width > 0 || axis.minorTickLines.width > 0 || axis.minorGridLines.width > 0) {\n this.drawYAxisGridLine(axis, i, (isInside || axis.tickPosition === 'Inside') ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.visible && axis.internalVisibility) {\n this.drawYAxisLabels(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawYAxisBorder(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawYAxisTitle(axis, i, isInside ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n }\n if (!this.chart.enableCanvas) {\n axisElement.appendChild(this.element);\n if (outsideElement && outsideElement.childNodes.length > 0) {\n axisLineElement.appendChild(outsideElement);\n }\n }\n if (chart.scrollBarModule && ((chart.zoomSettings.enableScrollbar && axis.enableScrollbarOnZooming) ||\n axis.scrollbarSettings.enable)) {\n this.renderScrollbar(chart, axis);\n }\n }\n this.element = chart.renderer.createGroup({ id: chart.element.id + 'DefinitionLine' });\n for (var j = 0, len = chart.rows.length; j < len; j++) {\n var row = chart.rows[j];\n if (row.border.color) {\n this.drawBottomLine(row, j, true);\n }\n }\n for (var j = 0, len = chart.columns.length; j < len; j++) {\n var column = chart.columns[j];\n if (column.border.color) {\n this.drawBottomLine(column, j, false);\n }\n }\n if (!this.chart.enableCanvas) {\n axisElement.appendChild(this.element);\n }\n appendChildElement(chart.enableCanvas, chart.svgObject, axisElement, chart.redraw);\n return axisLineElement;\n };\n /**\n * To render the axis scrollbar\n *\n * @param {Chart} chart chart\n * @param {Axis} axis axis\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderScrollbar = function (chart, axis) {\n var isZoomed = isNullOrUndefined(chart.zoomModule) ? false : chart.zoomModule.isZoomed;\n if (((isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0)) || (axis.scrollbarSettings.enable &&\n (axis.zoomFactor <= 1 || axis.zoomPosition >= 0))) &&\n (!axis.zoomingScrollBar.isScrollUI)) {\n if (!chart.scrollElement) {\n chart.scrollElement = redrawElement(chart.redraw, chart.element.id + '_scrollElement') || createElement('div', { id: chart.element.id + '_scrollElement' });\n }\n appendChildElement(false, chart.scrollElement, axis.zoomingScrollBar.render(true), true);\n }\n else if (axis.zoomFactor === 1 && axis.zoomPosition === 0 && axis.zoomingScrollBar.svgObject && !axis.scrollbarSettings.enable) {\n axis.zoomingScrollBar.destroy();\n }\n if (axis.zoomingScrollBar.isScrollUI) {\n axis.zoomingScrollBar.isScrollUI = false;\n }\n };\n /**\n * To find the axis position\n *\n * @param {Axis} axis axis\n * @returns {boolean} axis position\n */\n CartesianAxisLayoutPanel.prototype.findAxisPosition = function (axis) {\n return axis.crossAt !== null && axis.isInside(axis.crossInAxis.visibleRange);\n };\n /**\n * To render the bootom line of the columns and rows\n *\n * @param {Row | Column} definition definition\n * @param {number} index index\n * @param {boolean} isRow isRow\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawBottomLine = function (definition, index, isRow) {\n var chart = this.chart;\n var optionsLine = {};\n var x1;\n var x2;\n var y1;\n var y2;\n var definitionName;\n if (isRow) {\n definition = definition;\n y1 = y2 = definition.computedTop + definition.computedHeight;\n x1 = this.seriesClipRect.x;\n x2 = x1 + this.seriesClipRect.width;\n definitionName = 'Row';\n }\n else {\n definition = definition;\n x1 = x2 = definition.computedLeft;\n y1 = this.seriesClipRect.y;\n y2 = y1 + this.seriesClipRect.height;\n definitionName = 'Column';\n }\n optionsLine = {\n 'id': chart.element.id + '_AxisBottom_' + definitionName + index,\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n 'stroke-width': definition.border.width,\n 'stroke': definition.border.color\n };\n this.htmlObject = chart.renderer.drawLine(optionsLine);\n this.element.appendChild(this.htmlObject);\n };\n /**\n * To render the axis line\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {number} plotX plotX\n * @param {number} plotY plotY\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawAxisLine = function (axis, index, plotX, plotY, plotBottom, plotTop, plotLeft, plotRight, parent, rect) {\n var chart = this.chart;\n var optionsLine = {};\n var element = getElement(chart.element.id + 'AxisLine_' + index);\n var direction = element ? element.getAttribute('d') : '';\n element = null;\n optionsLine = {\n 'id': chart.element.id + 'AxisLine_' + index,\n 'd': 'M ' + (rect.x - plotX - plotLeft) + ' ' + (rect.y - plotY - plotTop) +\n ' L ' + (rect.x + rect.width + plotX + plotRight) + ' ' + (rect.y + rect.height + plotY + plotBottom),\n 'stroke-dasharray': axis.lineStyle.dashArray,\n 'stroke-width': axis.lineStyle.width,\n 'stroke': axis.lineStyle.color || chart.themeStyle.axisLine\n };\n this.htmlObject = chart.renderer.drawPath(optionsLine);\n appendChildElement(chart.enableCanvas, parent, this.htmlObject, chart.redraw, true, 'x', 'y', null, direction);\n };\n /**\n * To render the yAxis grid line\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisGridLine = function (axis, index, parent, rect) {\n var isLogAxis = axis.valueType === 'Logarithmic';\n var isCategoryAxis = axis.valueType.indexOf('Category') > -1;\n var tempInterval;\n var pointY = 0;\n var majorGrid = '';\n var majorTick = '';\n var minorGridDirection;\n var isOpposed = axis.isAxisOpposedPosition;\n var tickSize = isOpposed ? axis.majorTickLines.height : -axis.majorTickLines.height;\n var axisLineSize = (isOpposed) ? axis.lineStyle.width * 0.5 : -axis.lineStyle.width * 0.5;\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ?\n 0.5 : 0;\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? isOpposed ? axis.scrollBarHeight :\n -axis.scrollBarHeight : 0;\n var isTickInside = axis.tickPosition === 'Inside';\n var ticks = isTickInside ? (rect.x - tickSize - axisLineSize) : (rect.x + tickSize + axisLineSize + scrollBarHeight);\n var length = axis.visibleLabels.length;\n var chartThemeStyle = this.chart.themeStyle;\n if (axis.valueType.indexOf('Category') > -1 && axis.labelPlacement === 'BetweenTicks' && length > 0) {\n length += 1;\n }\n var minorGridLines = axis.minorGridLines;\n var minorTickLines = axis.minorTickLines;\n //Gridlines\n for (var i = 0; i < length; i++) {\n tempInterval = !axis.visibleLabels[i] ? (axis.visibleLabels[i - 1].value + axis.visibleRange.interval) - ticksbwtLabel\n : axis.visibleLabels[i].value - ticksbwtLabel;\n pointY = valueToCoefficient(tempInterval, axis) * rect.height;\n pointY = (pointY * -1) + (rect.y + rect.height);\n if (pointY >= rect.y && (rect.y + rect.height) >= pointY) {\n if ((inside(tempInterval, axis.visibleRange)) || this.isBorder(axis, i, pointY)) {\n majorGrid = 'M ' + this.seriesClipRect.x + ' ' + (pointY) +\n ' L ' + (this.seriesClipRect.x + this.seriesClipRect.width) + ' ' + pointY;\n this.renderGridLine(axis, index, majorGrid, axis.majorGridLines, '_MajorGridLine_', i, this.element, chartThemeStyle.majorGridLine, axis.majorGridLines.dashArray);\n }\n majorTick = 'M ' + (rect.x + axisLineSize + (isTickInside ? scrollBarHeight : 0)) + ' ' + pointY +\n ' L ' + (ticks) + ' ' + pointY;\n this.renderGridLine(axis, index, majorTick, axis.majorTickLines, '_MajorTickLine_', i, parent, chartThemeStyle.majorTickLine);\n if ((minorGridLines.width > 0 || minorTickLines.width > 0) && axis.minorTicksPerInterval > 0) {\n if (i === 0 && isZoomSet(axis) && !isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, tempInterval, rect, i, index, chartThemeStyle, parent);\n }\n minorGridDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i);\n this.renderGridLine(axis, index, minorGridDirection[0], minorGridLines, '_MinorGridLine_', i, this.element, chartThemeStyle.minorGridLine, minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorGridDirection[1], minorTickLines, '_MinorTickLine_', i, parent, chartThemeStyle.minorTickLine);\n if (i === length - 1 && isZoomSet(axis) && isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, (tempInterval + axis.visibleRange.interval), rect, i, index, chartThemeStyle, parent);\n }\n }\n }\n }\n };\n /**\n * To check the border of the axis\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {number} value value\n * @returns {boolean} check the border of the axis\n */\n CartesianAxisLayoutPanel.prototype.isBorder = function (axis, index, value) {\n var border = this.chart.chartArea.border;\n var rect = this.seriesClipRect;\n var orientation = axis.orientation;\n var start = (orientation === 'Horizontal') ? rect.x : rect.y;\n var size = (orientation === 'Horizontal') ? rect.width : rect.height;\n var startIndex = (orientation === 'Horizontal') ? 0 : axis.visibleLabels.length - 1;\n var endIndex = (orientation === 'Horizontal') ? axis.visibleLabels.length - 1 : 0;\n if (axis.plotOffset > 0) {\n return true;\n }\n else if ((value === start || value === (start + size)) && (border.width <= 0 || border.color === 'transparent')) {\n return true;\n }\n else if ((value !== start && index === startIndex) || (value !== (start + size) && index === endIndex)) {\n return true;\n }\n return false;\n };\n /**\n * To render the yAxis label\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisLabels = function (axis, index, parent, rect) {\n var chart = this.chart;\n var label;\n var pointX = 0;\n var pointY = 0;\n var elementSize;\n var labelSpace = axis.labelPadding;\n var options;\n var isAxisBreakLabel;\n var isLabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.isAxisOpposedPosition;\n var RotatedWidth;\n var tickSpace = axis.labelPosition === axis.tickPosition ? axis.majorTickLines.height : 0;\n var padding = tickSpace + labelSpace + axis.lineStyle.width * 0.5;\n var angle = axis.angle % 360;\n var isVerticalAngle = (angle === -90 || angle === 90 || angle === 270 || angle === -270);\n padding += (isVerticalAngle) ? (isLabelInside ? 5 : -5) : 0;\n padding = (isOpposed) ? padding : -padding;\n var labelElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisLabels' + index });\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.scrollBarHeight * (isOpposed ? 1 : -1) : 0;\n var textHeight;\n var textPadding;\n var maxLineWidth;\n var pixel = 10;\n var isInverse = axis.isAxisInverse;\n var previousEnd = isInverse ? rect.y : (rect.y + rect.height);\n var labelPadding;\n var intervalLength;\n var labelHeight;\n var yAxisLabelX;\n var isLabelOnAxisLineLeft = ((!isOpposed && !isLabelInside) || (isOpposed && isLabelInside));\n if (isLabelInside) {\n labelPadding = !isLabelOnAxisLineLeft ? -padding : padding;\n }\n else {\n labelPadding = !isLabelOnAxisLineLeft ? -padding + scrollBarHeight : padding + scrollBarHeight;\n }\n var sizeWidth = [];\n var breakLabelSizeWidth = [];\n axis.visibleLabels.map(function (item) {\n sizeWidth.push(item.size['width']);\n breakLabelSizeWidth.push(item.breakLabelSize['width']);\n });\n var LabelMaxWidth = Math.max.apply(Math, sizeWidth);\n var breakLabelMaxWidth = Math.max.apply(Math, breakLabelSizeWidth);\n RotatedWidth = LabelMaxWidth;\n if (angle >= -45 && angle <= 45 && angle !== 0) {\n RotatedWidth = LabelMaxWidth * Math.cos(angle * Math.PI / 180);\n if (RotatedWidth < 0) {\n RotatedWidth = -RotatedWidth;\n }\n }\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n label = axis.visibleLabels[i];\n isAxisBreakLabel = isBreakLabel(axis.visibleLabels[i].originalText);\n elementSize = isAxisBreakLabel ? axis.visibleLabels[i].breakLabelSize : axis.visibleLabels[i].size;\n pointY = (valueToCoefficient(axis.visibleLabels[i].value, axis) * rect.height) + (chart.stockChart ? 7 : 0);\n pointY = Math.floor((pointY * -1) + (rect.y + rect.height));\n textHeight = ((elementSize.height / 8) * axis.visibleLabels[i].text.length / 2);\n textPadding = ((elementSize.height / 4) * 3) + 3;\n intervalLength = rect.height / axis.visibleLabels.length;\n labelHeight = ((axis.labelIntersectAction === 'Trim' || axis.labelIntersectAction === 'Wrap') && angle !== 0 &&\n elementSize.width > intervalLength) ? intervalLength : elementSize.width;\n pointY = (isAxisBreakLabel ? (axis.labelPosition === 'Inside' ? (pointY - (elementSize.height / 2) - textHeight + textPadding)\n : (pointY - textHeight)) : (axis.labelPosition === 'Inside' ? pointY + textPadding : pointY));\n if (axis.labelPosition === 'Inside' && ((i === 0 && !axis.isInversed) || (i === len - 1 && axis.isInversed))) {\n if (chart.stockChart) {\n pointY -= (textPadding);\n }\n else {\n pointY -= (textPadding - (axis.opposedPosition ? -padding : padding));\n }\n }\n if (axis.majorGridLines.width > axis.majorTickLines.width) {\n maxLineWidth = axis.majorGridLines.width;\n }\n else {\n maxLineWidth = axis.majorTickLines.width;\n }\n if (axis.labelStyle.textAlignment === 'Far') {\n pointY = pointY - maxLineWidth - pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Near') {\n pointY = pointY + maxLineWidth + pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Center') {\n // eslint-disable-next-line no-self-assign\n pointY = pointY;\n }\n // label X value adjustment (Start)\n if (isLabelInside) {\n yAxisLabelX = labelPadding + ((angle === 0 ? elementSize.width : (isAxisBreakLabel ? breakLabelMaxWidth : LabelMaxWidth)) / 2);\n }\n else {\n yAxisLabelX = labelPadding - ((angle === 0 ? elementSize.width : (isAxisBreakLabel ? breakLabelMaxWidth : RotatedWidth)) / 2);\n }\n pointX = isOpposed ? (rect.x - yAxisLabelX) : (rect.x + yAxisLabelX);\n if (isVerticalAngle) {\n pointX += (isOpposed) ? -10 : 10;\n }\n yAxisLabelX = labelPadding;\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, 'middle', label.text, '', 'middle', angle);\n switch (axis.edgeLabelPlacement) {\n case 'None':\n break;\n case 'Hide':\n if (((i === 0 || (isInverse && i === len - 1)) && options.y > rect.y) ||\n (((i === len - 1) || (isInverse && i === 0)) && options.y - elementSize.height * 0.5 < rect.y)) {\n options.text = '';\n }\n break;\n case 'Shift':\n if ((i === 0 || (isInverse && i === len - 1)) && options.y > rect.y + rect.height) {\n options.y = pointY = rect.y + rect.height;\n }\n else if (((i === len - 1) || (isInverse && i === 0)) && (options.y < rect.y)) {\n options.y = pointY = rect.y + elementSize.height * 0.5;\n }\n break;\n }\n // ------- Hide Calculation (Start) -------------\n var previousYValue = options.y;\n var currentYValue = options.y - labelHeight;\n if (isAxisBreakLabel) {\n previousYValue = (options.y - (labelHeight / 2));\n currentYValue = options.y + (labelHeight / 2);\n }\n if ((angle === 90 || angle === 270) && axis.labelIntersectAction === 'Hide' && i !== 0 &&\n (!isInverse ? previousYValue >= previousEnd : currentYValue <= previousEnd)) {\n continue;\n }\n previousEnd = isInverse ? previousYValue : currentYValue;\n // ------- Hide Calculation (End) -------------\n options.transform = 'rotate(' + angle + ',' + pointX + ',' + pointY + ')';\n textElement(chart.renderer, options, label.labelStyle, label.labelStyle.color || chart.themeStyle.axisLabelFont.color, labelElement, false, chart.redraw, true, true, null, null, null, null, chart.enableCanvas, null, chart.themeStyle.axisLabelFont);\n }\n if (!this.chart.enableCanvas) {\n if (!chart.delayRedraw) {\n appendChildElement(chart.enableCanvas, parent, labelElement, chart.redraw);\n }\n else if (axis.visible && axis.internalVisibility) {\n this.createZoomingLabel(this.chart, labelElement, axis, index, rect);\n }\n }\n };\n /**\n * To get X value based on lineBreakAlignment for Y axis line break labels only.\n *\n * @param {number} x text x position\n * @param {Axis} axis y axis values\n * @param {number} textWidth axis label width\n * @returns {number} returns suitable axis label x position\n */\n CartesianAxisLayoutPanel.prototype.getAxisLabelXvalue = function (x, axis, textWidth) {\n var anchor = axis.lineBreakAlignment;\n var isLabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.isAxisOpposedPosition;\n if ((isOpposed && isLabelInside) || (!isOpposed && !isLabelInside)) {\n return (anchor === 'Right' ? x : (anchor === 'Center' ? (x - textWidth / 2) : (x - textWidth)));\n }\n else {\n return (anchor === 'Left' ? x : (anchor === 'Center' ? (x + textWidth / 2) : (x + textWidth)));\n }\n };\n /**\n * To render the yAxis label border.\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisBorder = function (axis, index, parent, rect) {\n if (axis.border.width > 0) {\n var startY = void 0;\n var pointY = void 0;\n var scrollBarHeight = axis.labelPosition === 'Outside' ? axis.scrollBarHeight : 0;\n var isOpposed = axis.isAxisOpposedPosition;\n scrollBarHeight = (isOpposed ? 1 : -1) * scrollBarHeight;\n var gap = (rect.height / axis.visibleRange.delta) * (axis.valueType === 'DateTime' ? axis.dateTimeInterval\n : axis.visibleRange.interval);\n var endY = void 0;\n var length_1 = axis.maxLabelSize.width + 10 + ((axis.tickPosition === axis.labelPosition) ?\n axis.majorTickLines.height : 0);\n var labelBorder = '';\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ? -0.5 : 0;\n var endX = ((isOpposed && axis.labelPosition === 'Inside') || (!isOpposed\n && axis.labelPosition === 'Outside')) ? rect.x - length_1 + scrollBarHeight : rect.x + length_1 + scrollBarHeight;\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n pointY = valueToCoefficient(axis.visibleLabels[i].value + ticksbwtLabel, axis);\n pointY = (axis.isAxisInverse ? (1 - pointY) : pointY) * rect.height;\n if (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') {\n startY = (pointY * -1) + (rect.y + rect.height);\n endY = (pointY * -1) - (gap) + (rect.y + rect.height);\n }\n else {\n startY = (pointY * -1) + gap / 2 + (rect.y + rect.height);\n endY = (pointY * -1) - gap / 2 + (rect.y + rect.height);\n }\n switch (axis.border.type) {\n case 'Rectangle':\n case 'WithoutTopBorder':\n if (startY > (rect.y + rect.height)) {\n labelBorder += ('M' + ' ' + endX + ' ' + (rect.y + rect.height) + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n }\n else if (Math.floor(rect.y) > (endY)) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX\n + ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + (rect.y) + ' ');\n }\n else {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX +\n ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n if (i === axis.visibleLabels.length - 1) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + endY + ' ' + 'L' + ' ' +\n endX + ' ' + endY + ' ');\n }\n }\n break;\n case 'WithoutTopandBottomBorder':\n if (!(startY > rect.y + rect.height) && !((endY) < Math.floor(rect.y))) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX +\n ' ' + startY + ' ' + 'M' + ' ' + endX + ' ' + endY + ' ' +\n 'L' + ' ' + (rect.x + scrollBarHeight) + ' ' + endY);\n }\n break;\n }\n }\n labelBorder += (axis.border.type === 'Rectangle') ? ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + rect.y + ' ' + 'L' + ' ' +\n (rect.x + scrollBarHeight) + ' ' + (rect.y + rect.height) + ' ') : '';\n if (labelBorder !== '') {\n this.createAxisBorderElement(axis, index, labelBorder, parent);\n }\n }\n if (axis.multiLevelLabels.length > 0 && this.chart.multiLevelLabelModule) {\n this.chart.multiLevelLabelModule.renderYAxisMultiLevelLabels(axis, index, parent, rect);\n }\n };\n /**\n * To render the yAxis title\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisTitle = function (axis, index, parent, rect) {\n if (axis.title) {\n var chart = this.chart;\n var isRotated = false;\n var isOpposed = axis.isAxisOpposedPosition;\n var labelRotation = (axis.titleRotation == null ? (isOpposed ? 90 : -90) : axis.titleRotation) % 360;\n var padding = (axis.tickPosition === 'Inside' ? 0 : axis.majorTickLines.height + axis.titlePadding) +\n (axis.labelPosition === 'Inside' ? 0 :\n (axis.maxLabelSize.width + axis.multiLevelLabelHeight + this.padding));\n padding = isOpposed ? padding + axis.scrollBarHeight : -padding - axis.scrollBarHeight;\n if ((labelRotation !== -90 && !isOpposed) || (labelRotation !== 90 && isOpposed)) {\n padding += axis.isAxisOpposedPosition ? axis.titleSize.width / 2 + axis.labelPadding : -axis.titleSize.width / 2 - axis.labelPadding;\n isRotated = true;\n }\n var x = rect.x + padding;\n var y = rect.y + rect.height * 0.5;\n var titleSize = (axis.titleSize.height * (axis.titleCollection.length - 1));\n var options = new TextOption(chart.element.id + '_AxisTitle_' + index, x, y + (isRotated ? -titleSize : -axis.labelPadding - titleSize), 'middle', axis.titleCollection, 'rotate(' + labelRotation + ',' + (x) + ',' + (y) + ')', null, labelRotation);\n var element = textElement(chart.renderer, options, axis.titleStyle, axis.titleStyle.color || chart.themeStyle.axisTitleFont.color, parent, null, null, null, null, null, null, null, null, chart.enableCanvas, null, chart.themeStyle.axisTitleFont);\n element.setAttribute('aria-hidden', 'true');\n }\n };\n /**\n * xAxis grid line calculation performed here\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisGridLine = function (axis, index, parent, rect) {\n var isLogAxis = axis.valueType === 'Logarithmic';\n var isCategoryAxis = axis.valueType.indexOf('Category') > -1;\n var tempInterval;\n var pointX = 0;\n var majorGrid = '';\n var majorTick = '';\n var minorDirection;\n var isOpposed = axis.isAxisOpposedPosition;\n var tickSize = (isOpposed) ? -axis.majorTickLines.height : axis.majorTickLines.height;\n var axisLineSize = (isOpposed) ? -axis.lineStyle.width * 0.5 : axis.lineStyle.width * 0.5;\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? isOpposed ? -axis.scrollBarHeight :\n axis.scrollBarHeight : 0;\n var ticksbwtLabel = (axis.valueType.indexOf('Category') > -1 && axis.labelPlacement === 'BetweenTicks') ?\n 0.5 : 0;\n var length = axis.visibleLabels.length;\n var isTickInside = axis.tickPosition === 'Inside';\n var ticks = isTickInside ? (rect.y - tickSize - axisLineSize) : (rect.y + tickSize + axisLineSize + scrollBarHeight);\n var chartThemeStyle = this.chart.themeStyle;\n if (axis.valueType.indexOf('Category') > -1 && length > 0 && axis.labelPlacement === 'BetweenTicks') {\n length += 1;\n }\n //Gridlines\n for (var i = 0; i < length; i++) {\n if (axis.valueType !== 'DateTimeCategory') {\n tempInterval = axis.visibleLabels[i] ? axis.visibleLabels[i].value - ticksbwtLabel\n : (axis.visibleLabels[i - 1].value + axis.visibleRange.interval) - ticksbwtLabel;\n }\n else {\n tempInterval = axis.visibleLabels[i] ?\n axis.visibleLabels[i].value - ticksbwtLabel : axis.visibleRange.max;\n }\n pointX = (valueToCoefficient(tempInterval, axis) * rect.width) + rect.x;\n if (pointX >= rect.x && (rect.x + rect.width) >= pointX) {\n if (inside(tempInterval, axis.visibleRange) || this.isBorder(axis, i, pointX)) {\n majorGrid = 'M ' + pointX + ' ' + (this.seriesClipRect.y + this.seriesClipRect.height) +\n ' L ' + pointX + ' ' + this.seriesClipRect.y;\n this.renderGridLine(axis, index, majorGrid, axis.majorGridLines, '_MajorGridLine_', i, this.element, chartThemeStyle.majorGridLine, axis.majorGridLines.dashArray);\n }\n majorTick = 'M ' + (pointX) + ' ' + (rect.y + axisLineSize + (isTickInside ? scrollBarHeight : 0))\n + ' L ' + (pointX) + ' ' + ticks;\n this.renderGridLine(axis, index, majorTick, axis.majorTickLines, '_MajorTickLine_', i, parent, chartThemeStyle.majorTickLine);\n if (axis.minorTicksPerInterval > 0 && (axis.minorGridLines.width > 0 || axis.minorTickLines.width > 0)) {\n if (i === 0 && isZoomSet(axis) && !isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, tempInterval, rect, i, index, chartThemeStyle, parent);\n }\n minorDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i);\n this.renderGridLine(axis, index, minorDirection[0], axis.minorGridLines, '_MinorGridLine_', i, this.element, chartThemeStyle.minorGridLine, axis.minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorDirection[1], axis.minorTickLines, '_MinorTickLine_', i, parent, chartThemeStyle.minorTickLine);\n if (i === length - 1 && isZoomSet(axis) && isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, (tempInterval + axis.visibleRange.interval), rect, i, index, chartThemeStyle, parent);\n }\n }\n }\n }\n };\n /**\n * To render missing minor grid lines while zooming\n *\n * @param {Axis} axis axis\n * @param {number} tempInterval tempInterval\n * @param {Rect} rect rect\n * @param {number} i i\n * @param {number} index index\n * @param {IThemeStyle} chartThemeStyle chartThemeStyle\n * @param {Element} parent parent\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderMinorGridOnZooming = function (axis, tempInterval, rect, i, index, chartThemeStyle, parent) {\n var minorDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i, true);\n this.renderGridLine(axis, index, minorDirection[0], axis.minorGridLines, '_MinorGridLine_', -1, this.element, chartThemeStyle.minorGridLine, axis.minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorDirection[1], axis.minorTickLines, '_MinorTickLine_', -1, parent, chartThemeStyle.minorTickLine);\n };\n /**\n * To calcualte the axis minor line\n *\n * @param {Axis} axis axis\n * @param {number} tempInterval tempInterval\n * @param {Rect} rect rect\n * @param {number} labelIndex labelIndex\n * @param {boolean} isFirstLabel isFirstLabel\n * @returns {string[]} axis minor line path\n */\n CartesianAxisLayoutPanel.prototype.drawAxisMinorLine = function (axis, tempInterval, rect, labelIndex, isFirstLabel) {\n var value = tempInterval;\n var coor = 0;\n var position = 0;\n var range = axis.visibleRange;\n var isTickInside = axis.tickPosition === 'Inside';\n var direction = [];\n var tickSize = axis.isAxisOpposedPosition ? -axis.minorTickLines.height : axis.minorTickLines.height;\n var logStart;\n var logEnd;\n var logInterval = 1;\n var logPosition = 1;\n var ticksX = isTickInside ? (rect.y - tickSize) : (rect.y + tickSize);\n var ticksY = isTickInside ? (rect.x + tickSize) : (rect.x - tickSize);\n var minorGird = '';\n var minorTick = '';\n var isInverse = axis.isAxisInverse;\n if (axis.valueType === 'Logarithmic') {\n logStart = Math.pow(axis.logBase, value - range.interval);\n logEnd = Math.pow(axis.logBase, value);\n logInterval = (logEnd - logStart) / (axis.minorTicksPerInterval + 1);\n logPosition = logStart + logInterval;\n }\n if (axis.orientation === 'Horizontal') {\n for (var j = 0; j < axis.minorTicksPerInterval; j++) {\n value = this.findLogNumeric(axis, logPosition, value, labelIndex, isFirstLabel);\n logPosition += logInterval;\n if (inside(value, range)) {\n position = ((value - range.min) / (range.max - range.min));\n position = Math.ceil((isInverse ? (1 - position) : position) * rect.width);\n coor = (Math.floor(position + rect.x));\n minorGird = minorGird.concat('M' + ' ' + coor + ' ' + (this.seriesClipRect.y)\n + 'L ' + coor + ' ' + (this.seriesClipRect.y + this.seriesClipRect.height));\n coor = (Math.floor(position + rect.x));\n minorTick = minorTick.concat('M' + ' ' + coor + ' ' + (rect.y)\n + 'L ' + coor + ' ' + (ticksX + axis.scrollBarHeight));\n }\n }\n }\n else {\n for (var j = 0; j < axis.minorTicksPerInterval; j++) {\n value = this.findLogNumeric(axis, logPosition, value, labelIndex, isFirstLabel);\n if (inside(value, range)) {\n position = ((value - range.min) / (range.max - range.min));\n position = Math.ceil(((isInverse ? (1 - position) : position)) * rect.height) * -1; // For inversed axis\n coor = (Math.floor(position + rect.y + rect.height));\n minorGird = minorGird.concat('M' + ' ' + (this.seriesClipRect.x) + ' ' + coor\n + 'L ' + (this.seriesClipRect.x + this.seriesClipRect.width) + ' ' + coor + ' ');\n coor = (Math.floor(position + rect.y + rect.height));\n minorTick = minorTick.concat('M' + ' ' + rect.x + ' ' + coor + 'L ' + (ticksY - axis.scrollBarHeight) +\n ' ' + coor + ' ');\n }\n logPosition += logInterval;\n }\n }\n direction.push(minorGird);\n direction.push(minorTick);\n return direction;\n };\n /**\n * To find the numeric value of the log\n *\n * @param {Axis} axis axis\n * @param {number} logPosition logPosition\n * @param {number} value value\n * @param {number} labelIndex labelIndex\n * @param {boolean} isFirstLabel isFirstLabel\n * @returns {number} value\n */\n CartesianAxisLayoutPanel.prototype.findLogNumeric = function (axis, logPosition, value, labelIndex, isFirstLabel) {\n var range = axis.visibleRange;\n var tempValue;\n if (axis.valueType === 'Logarithmic') {\n value = logBase(logPosition, axis.logBase);\n }\n else if (axis.valueType === 'DateTime') {\n tempValue = axis.dateTimeInterval / (axis.minorTicksPerInterval + 1);\n value = isFirstLabel ? (value - tempValue) : (value + tempValue);\n }\n else if (axis.valueType === 'DateTimeCategory') {\n var padding = axis.labelPlacement === 'BetweenTicks' ? 0.5 : 0;\n value += ((axis.visibleLabels[labelIndex + 1] ?\n axis.visibleLabels[labelIndex + 1].value - padding : axis.visibleRange.max) -\n (axis.visibleLabels[labelIndex] ?\n axis.visibleLabels[labelIndex].value - padding : axis.visibleRange.min)) /\n (axis.minorTicksPerInterval + 1);\n }\n else {\n tempValue = range.interval / (axis.minorTicksPerInterval + 1);\n value = isFirstLabel ? (value - tempValue) : (value + tempValue);\n }\n return value;\n };\n /**\n * To render the xAxis Labels\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisLabels = function (axis, index, parent, rect) {\n var chart = this.chart;\n var pointX = 0;\n var pointY = 0;\n var labelSpace = axis.labelPadding;\n var labelHeight;\n var elementSize;\n var labelPadding;\n var anchor;\n var pixel = 10;\n var labelElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisLabels' + index });\n var islabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.isAxisOpposedPosition;\n var tickSpace = axis.labelPosition === axis.tickPosition ? axis.majorTickLines.height : 0;\n var padding = tickSpace + labelSpace + axis.lineStyle.width * 0.5;\n var angle = axis.angle % 360;\n var isHorizontalAngle = (angle === 0 || angle === -180 || angle === 180);\n var options;\n var labelWidth;\n var isInverse = axis.isAxisInverse;\n var isLeft;\n var previousEnd = isInverse ? (rect.x + rect.width) : rect.x;\n var width = 0;\n var length = axis.visibleLabels.length;\n var intervalLength;\n var label;\n var isAxisBreakLabel;\n var scrollBarHeight = axis.scrollbarSettings.enable || (!islabelInside && isNullOrUndefined(axis.crossesAt)\n && (axis.zoomFactor < 1 || axis.zoomPosition > 0)) ? axis.scrollBarHeight : 0;\n var newPoints = [];\n var isRotatedLabelIntersect = false;\n var textPoints = [];\n var rotatedLabelSize;\n padding += (angle === 90 || angle === 270 || angle === -90 || angle === -270) ? (islabelInside ? 5 : -5) : 0;\n var isLabelUnderAxisLine = ((!isOpposed && !islabelInside) || (isOpposed && islabelInside));\n var isEndAnchor = isLabelUnderAxisLine ?\n ((360 >= angle && angle >= 180) || (-1 >= angle && angle >= -180)) :\n ((1 <= angle && angle <= 180) || (-181 >= angle && angle >= -360));\n for (var i = 0, len = length; i < len; i++) {\n label = axis.visibleLabels[i];\n isAxisBreakLabel = isBreakLabel(label.originalText) || (axis.labelIntersectAction === 'Wrap' && label.text.length > 1);\n pointX = (valueToCoefficient(label.value, axis) * rect.width) + rect.x;\n elementSize = label.size;\n intervalLength = rect.width / length;\n labelWidth = isAxisBreakLabel ? label.breakLabelSize.width : elementSize.width;\n width = ((axis.labelIntersectAction === 'Trim' || axis.labelIntersectAction === 'Wrap') && angle === 0 &&\n labelWidth > intervalLength) ? intervalLength : labelWidth;\n labelHeight = elementSize.height / 4;\n pointX -= (isAxisBreakLabel || angle !== 0) ? 0 : (width / 2);\n // label X value adjustment for label rotation (Start)\n if (angle !== 0) {\n if (isAxisBreakLabel) {\n pointX -= axis.lineBreakAlignment === 'Left' ? (label.breakLabelSize.width / 2) : axis.lineBreakAlignment === 'Right' ?\n -(label.breakLabelSize.width / 2) : 0;\n }\n else {\n pointX -= (angle === -90 || angle === 270 ? -labelHeight : (angle === 90 || angle === -270) ? labelHeight : 0);\n }\n }\n // label X value adjustment for label rotation (End)\n if (axis.labelStyle.textAlignment === 'Far') {\n pointX = pointX + width - pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Near') {\n pointX = pointX - width + pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Center') {\n // eslint-disable-next-line no-self-assign\n pointX = pointX;\n }\n // For line break label alignment like left, right & center in angle 0\n if (isAxisBreakLabel && axis.lineBreakAlignment !== 'Center' && angle === 0) {\n pointX += axis.lineBreakAlignment === 'Left' ? -(width / 2) : (width / 2);\n }\n var paddingForBreakLabel = isAxisBreakLabel ?\n (isHorizontalAngle ? (axis.opposedPosition || islabelInside ? 0 : elementSize.height) : (label.breakLabelSize.width / 2)) : 0;\n padding = isAxisBreakLabel ? (tickSpace + labelSpace + axis.lineStyle.width * 0.5) : padding;\n // label Y value adjustment (Start)\n if (islabelInside && angle) {\n if (isAxisBreakLabel) {\n pointY = isOpposed ? (rect.y + padding + (paddingForBreakLabel)) : (rect.y - padding - (paddingForBreakLabel));\n }\n else {\n pointY = isOpposed ? (rect.y + padding + labelHeight) : (rect.y - padding - labelHeight);\n }\n }\n else {\n if (isAxisBreakLabel) {\n labelPadding = !isLabelUnderAxisLine ? -(padding + scrollBarHeight + (paddingForBreakLabel)) :\n padding + scrollBarHeight + (angle ? paddingForBreakLabel : (3 * labelHeight));\n }\n else {\n labelPadding = !isLabelUnderAxisLine ?\n -(padding + scrollBarHeight + (angle ? labelHeight : (label.index > 1 ? (2 * labelHeight) : 0))) :\n padding + scrollBarHeight + ((angle ? 1 : 3) * labelHeight);\n }\n pointY = (rect.y + (labelPadding * label.index));\n }\n // label Y value adjustment (End)\n if (isAxisBreakLabel) {\n anchor = this.getAnchor(axis); // for break label self alignment\n }\n else {\n anchor = (chart.enableRtl) ? ((isEndAnchor) ? '' : 'end') : (chart.isRtlEnabled || isEndAnchor) ? 'end' : '';\n }\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, anchor);\n if (angle !== 0) {\n rotatedLabelSize = rotateTextSize(label.labelStyle, label.originalText, angle, chart);\n isLeft = ((angle < 0 && angle > -90) || (angle < -180 && angle > -270) || (angle > 90 && angle < 180) || (angle > 270 && angle < 360));\n }\n if (axis.edgeLabelPlacement) {\n switch (axis.edgeLabelPlacement) {\n case 'None':\n break;\n case 'Hide':\n if (((i === 0 || (isInverse && i === len - 1)) && options.x < rect.x) ||\n ((i === len - 1 || (isInverse && i === 0)) && (options.x + width > rect.x + rect.width))) {\n continue;\n }\n break;\n case 'Shift':\n if ((i === 0 || (isInverse && i === len - 1)) && (options.x < rect.x || (angle !== 0 && isLeft && options.x - rotatedLabelSize.width <= rect.x) || (axis.lineBreakAlignment === 'Center' && options.x - (label.size.width / label.text.length) / 2 < rect.x && angle === 0))) {\n intervalLength -= (rect.x - options.x);\n if (anchor === '' && !isInverse && angle === 0) {\n if (options.x <= 0) {\n pointX = options.x = 0;\n }\n else {\n pointX = options.x;\n }\n intervalLength = rect.width / length;\n }\n else if (isLeft && angle !== 0) {\n intervalLength = rect.width / length;\n if (intervalLength > rect.x + rotatedLabelSize.width) {\n options.x = pointX = rect.x + rotatedLabelSize.width;\n }\n else {\n options.x = pointX = rect.x + intervalLength - padding;\n }\n }\n else if (isAxisBreakLabel && axis.lineBreakAlignment === 'Center' && axis.labelPlacement === 'OnTicks' && angle === 0) {\n var maxWidth = 0;\n for (var i_1 = 0; i_1 < label.text.length; i_1++) {\n var breakLabelWidth = measureText(label.text[i_1], axis.labelStyle, chart.themeStyle.axisLabelFont).width;\n if (breakLabelWidth > maxWidth) {\n maxWidth = breakLabelWidth;\n }\n }\n options.x = pointX = rect.x + maxWidth / 2;\n }\n else if (!(anchor === 'start' && options.x > 0)) {\n options.x = pointX = !isHorizontalAngle ? rect.x + padding : rect.x;\n }\n }\n else if ((i === len - 1 || (isInverse && i === 0)) && (((options.x + width) > rect.x + rect.width && anchor !== 'end' && angle === 0) || (angle !== 0 && !isLeft && (options.x + rotatedLabelSize.width) > rect.x + rect.width) || (anchor === 'end' && options.x > rect.x + rect.width))) {\n if (elementSize.width > intervalLength && axis.labelIntersectAction === 'Trim' && angle === 0) {\n intervalLength -= (options.x + width - (rect.x + rect.width));\n }\n else if (angle !== 0) {\n if (rotatedLabelSize.width < intervalLength) {\n intervalLength = rotatedLabelSize.width;\n }\n }\n else {\n intervalLength = width;\n }\n if (angle !== 0) {\n options.x = pointX = rect.x + rect.width - intervalLength + padding;\n }\n else {\n options.x = pointX = !isHorizontalAngle ? rect.x + rect.width - intervalLength / 2 : rect.x + rect.width - intervalLength;\n }\n }\n if (this.chart.primaryYAxis.opposedPosition && i === 0 && options.x <= rect.x) {\n intervalLength -= (rect.x - options.x);\n options.x += rect.x + (width / 2);\n pointX += rect.x + (width / 2);\n }\n break;\n }\n }\n options.text = this.getLabelText(label, axis, intervalLength);\n options.labelRotation = angle;\n // ------- Hide Calculation (Start) -------------\n // Currect label actual start value (Start)\n var xValue = void 0;\n var xValue2 = void 0;\n if (isAxisBreakLabel && angle === 0) {\n if (axis.lineBreakAlignment === 'Right') {\n xValue = (options.x - width);\n xValue2 = options.x;\n }\n else if (axis.lineBreakAlignment === 'Center') {\n xValue = (options.x - (width / 2));\n xValue2 = options.x + (width / 2);\n }\n else {\n xValue = options.x;\n xValue2 = options.x + width;\n }\n }\n else {\n xValue = options.x;\n xValue2 = options.x + width;\n }\n // Currect label actual start value (End)\n if (angle === 0 && axis.labelIntersectAction === 'Hide' && i !== 0 &&\n (!isInverse ? xValue <= previousEnd : xValue2 >= previousEnd)) {\n continue;\n }\n // Previous label actual end value (Start)\n if (isAxisBreakLabel) {\n if (axis.lineBreakAlignment === 'Right') {\n previousEnd = isInverse ? (options.x - width) : options.x;\n }\n else if (axis.lineBreakAlignment === 'Center') {\n previousEnd = isInverse ? (options.x - (width / 2)) : options.x + (width / 2);\n }\n else {\n previousEnd = isInverse ? options.x : options.x + width;\n }\n }\n else {\n previousEnd = isInverse ? options.x : options.x + width;\n }\n // Previous label actual end value (End)\n // ------- Hide Calculation (End) -------------\n // label Rotataion calculation (Start)\n if (angle !== 0) {\n var height = void 0;\n var rect_1 = void 0;\n if (isAxisBreakLabel) {\n var xAdjustment = 0;\n var yAdjustment = 0;\n height = (label.breakLabelSize.height);\n yAdjustment = (label.breakLabelSize.height) - 4; // 4 for label bound correction\n // xAdjustment (Start)\n if (axis.lineBreakAlignment === 'Center') {\n xAdjustment = -(label.breakLabelSize.width / 2);\n }\n else if (axis.lineBreakAlignment === 'Right') {\n xAdjustment = -label.breakLabelSize.width;\n }\n // xAdjustment (End)\n if (isLabelUnderAxisLine) {\n yAdjustment = (label.breakLabelSize.height) / (options.text.length + 1);\n }\n rect_1 = new Rect(options.x + xAdjustment, options.y - (yAdjustment), label.breakLabelSize.width, height);\n }\n else {\n height = (pointY) - (options.y - ((label.size.height / 2)));\n rect_1 = new Rect(options.x, options.y - ((label.size.height / 2) - 5), label.size.width, height);\n }\n var rectCoordinates = this.getRectanglePoints(rect_1);\n var rectCenterX = isAxisBreakLabel ? rect_1.x + (rect_1.width / 2) : pointX;\n var rectCenterY = isAxisBreakLabel ? rect_1.y + (rect_1.height / 2) : (pointY - (height / 2));\n if (isAxisBreakLabel) {\n options.transform = 'rotate(' + angle + ',' + rectCenterX + ',' + rectCenterY + ')';\n }\n else {\n options.transform = 'rotate(' + angle + ',' + pointX + ',' + pointY + ')';\n }\n newPoints.push(getRotatedRectangleCoordinates(rectCoordinates, rectCenterX, rectCenterY, angle));\n isRotatedLabelIntersect = false;\n if (axis.labelIntersectAction !== 'None') {\n for (var index_1 = i; index_1 > 0; index_1--) {\n if (newPoints[i] && newPoints[index_1 - 1] && isRotatedRectIntersect(newPoints[i], newPoints[index_1 - 1])) {\n isRotatedLabelIntersect = true;\n newPoints[i] = null;\n break;\n }\n }\n }\n var rotateAngle = ((angle > 0 && angle < 90) || (angle > 180 && angle < 270) || (angle < -90 && angle > -180) || (angle < -270 && angle > -360));\n var textRect = new Rect(options.x, options.y - (elementSize.height / 2 + padding / 2), label.size.width, height);\n var textRectCoordinates = this.getRectanglePoints(textRect);\n var rectPoints = [];\n rectPoints.push(new ChartLocation(rotateAngle ? this.chart.availableSize.width : this.padding, axis.rect.y));\n rectPoints.push(new ChartLocation(rotateAngle ? this.chart.availableSize.width : this.padding, axis.rect.y + axis.maxLabelSize.height));\n textPoints.push(getRotatedRectangleCoordinates(textRectCoordinates, rectCenterX, rectCenterY, angle));\n var newRect = new Rect(0, axis.rect.y, this.chart.availableSize.width, axis.maxLabelSize.height * 2);\n for (var k = 0; k < textPoints[i].length; k++) {\n if (!axis.opposedPosition && !withInBounds(textPoints[i][k].x, textPoints[i][k].y, newRect) && typeof options.text === 'string') {\n var interSectPoint = this.calculateIntersection(textPoints[i][0], textPoints[i][1], rectPoints[0], rectPoints[1]);\n var rectPoint1 = rotateAngle ? this.chart.availableSize.width - pointX : pointX;\n var rectPoint2 = interSectPoint.y - axis.rect.y;\n var trimValue = Math.sqrt((rectPoint1 * rectPoint1) + (rectPoint2 * rectPoint2));\n options.text = textTrim(trimValue, label.text, label.labelStyle, chart.themeStyle.axisLabelFont);\n }\n }\n }\n // label Rotataion calculation (End)\n textElement(chart.renderer, options, label.labelStyle, label.labelStyle.color || chart.themeStyle.axisLabelFont.color, labelElement, (axis.isAxisOpposedPosition !== (axis.labelPosition === 'Inside')), chart.redraw, true, null, null, null, label.size, isRotatedLabelIntersect, chart.enableCanvas, null, chart.themeStyle.axisLabelFont);\n }\n if (!this.chart.enableCanvas) {\n if (!chart.delayRedraw) {\n parent.appendChild(labelElement);\n }\n else if (axis.visible && axis.internalVisibility) {\n this.createZoomingLabel(this.chart, labelElement, axis, index, rect);\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.calculateIntersection = function (p1, p2, p3, p4) {\n var c2x = p3.x - p4.x;\n var c3x = p1.x - p2.x;\n var c2y = p3.y - p4.y;\n var c3y = p1.y - p2.y;\n var d = c3x * c2y - c3y * c2x;\n var u1 = p1.x * p2.y - p1.y * p2.x;\n var u4 = p3.x * p4.y - p3.y * p4.x;\n var px = (u1 * c2x - c3x * u4) / d;\n var py = (u1 * c2y - c3y * u4) / d;\n var p = { x: px, y: py };\n return p;\n };\n /**\n * To get text anchor value for line break labels.\n *\n * @param {Axis} axis axis model\n * @returns {string} returns text anchor\n */\n CartesianAxisLayoutPanel.prototype.getAnchor = function (axis) {\n return (axis.lineBreakAlignment === 'Center' ? 'middle' : (this.chart.enableRtl) ? (axis.lineBreakAlignment === 'Left' ? 'end' : 'start') : (axis.lineBreakAlignment === 'Left' ? 'start' : 'end'));\n };\n /**\n * Get rect coordinates\n *\n * @param {Rect} rect rect\n * @returns {ChartLocation[]} rectangle points\n */\n CartesianAxisLayoutPanel.prototype.getRectanglePoints = function (rect) {\n var point1 = new ChartLocation(rect.x, rect.y);\n var point2 = new ChartLocation(rect.x + rect.width, rect.y);\n var point3 = new ChartLocation(rect.x + rect.width, rect.y + rect.height);\n var point4 = new ChartLocation(rect.x, rect.y + rect.height);\n return [point1, point2, point3, point4];\n };\n /**\n * To get axis label text\n *\n * @param {VisibleLabels} label label\n * @param {Axis} axis axis\n * @param {number} intervalLength intervalLength\n * @returns {string | string[]} label or label collection\n */\n CartesianAxisLayoutPanel.prototype.getLabelText = function (label, axis, intervalLength) {\n if (isBreakLabel(label.originalText)) {\n var result = [];\n var str = void 0;\n for (var index = 0; index < label.text.length; index++) {\n str = this.findAxisLabel(axis, label.text[index], intervalLength);\n result.push(str);\n }\n return result;\n }\n else {\n return this.findAxisLabel(axis, label.text, intervalLength);\n }\n };\n /**\n * To render the x-axis label border.\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} axisRect axisRect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisBorder = function (axis, index, parent, axisRect) {\n if (axis.border.width > 0) {\n var scrollBarHeight = axis.labelPosition === 'Outside' ? axis.scrollBarHeight : 0;\n var isOpposed = axis.isAxisOpposedPosition;\n var startX = void 0;\n var startY = axisRect.y + ((isOpposed ? -1 : 1) * scrollBarHeight);\n var padding = 10;\n var pointX = void 0;\n var gap = (axisRect.width / axis.visibleRange.delta) * (axis.valueType === 'DateTime' ? axis.dateTimeInterval\n : axis.visibleRange.interval);\n var endX = void 0;\n var length_2 = axis.maxLabelSize.height +\n ((axis.tickPosition === axis.labelPosition) ? axis.majorTickLines.height : 0);\n var labelBorder = '';\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ? -0.5 : 0;\n var endY = ((isOpposed && axis.labelPosition === 'Inside') ||\n (!isOpposed && axis.labelPosition === 'Outside')) ?\n (axisRect.y + length_2 + padding + scrollBarHeight) : (axisRect.y - length_2 - padding - scrollBarHeight);\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n pointX = valueToCoefficient(axis.visibleLabels[i].value + ticksbwtLabel, axis);\n pointX = (axis.isAxisInverse ? (1 - pointX) : pointX) * axisRect.width;\n if (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') {\n startX = pointX + axisRect.x;\n endX = pointX + (gap) + axisRect.x;\n }\n else {\n startX = pointX - gap * 0.5 + axisRect.x;\n endX = pointX + gap * 0.5 + axisRect.x;\n }\n switch (axis.border.type) {\n case 'Rectangle':\n case 'WithoutTopBorder':\n if (startX < axisRect.x && axis.labelPlacement !== 'OnTicks') {\n labelBorder += ('M' + ' ' + axisRect.x + ' ' + endY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n }\n else if (Math.floor(endX) > axisRect.width + axisRect.x && !(axis.visibleLabels.length === 1) && !(i === axis.visibleLabels.length - 1)) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'L' + ' ' + (axisRect.width + axisRect.x) + ' ' + endY + ' ');\n }\n else {\n startX = (i === 0 && axis.labelPlacement === 'OnTicks') ? axisRect.x : startX;\n endX = ((i === axis.visibleLabels.length - 1) && axis.labelPlacement === 'OnTicks') ? endX - gap * 0.5 : endX;\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' +\n endY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n if (i === 0) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'M ' + startX + ' ' + endY + ' L ' + (axisRect.x) + ' ' + endY);\n }\n if (i === axis.visibleLabels.length - 1) {\n labelBorder += ('M' + ' ' + endX + ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ' +\n 'M ' + endX + ' ' + endY + ' L ' + (axisRect.width + axisRect.x) + ' ' + endY);\n }\n }\n break;\n case 'WithoutTopandBottomBorder':\n if (!(startX < axisRect.x) && !(Math.floor(endX) > axisRect.width + axisRect.x)) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'M ' + endX + ' ' + startY + ' L ' + endX + ' ' + endY);\n }\n break;\n }\n }\n labelBorder += (axis.border.type === 'Rectangle' ? ('M ' + ' ' + axisRect.x + ' ' + startY + 'L' + ' ' +\n (axisRect.x + axisRect.width) + ' ' + startY) : '');\n if (labelBorder !== '') {\n this.createAxisBorderElement(axis, index, labelBorder, parent);\n }\n }\n if (this.chart.multiLevelLabelModule && axis.multiLevelLabels.length > 0) {\n this.chart.multiLevelLabelModule.renderXAxisMultiLevelLabels(axis, index, parent, axisRect);\n }\n };\n /**\n * To create border element of the axis\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {string} labelBorder labelBorder\n * @param {Element} parent parent\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.createAxisBorderElement = function (axis, index, labelBorder, parent) {\n var element = getElement(this.chart.element.id + '_BorderLine_' + index);\n var direction = element ? element.getAttribute('d') : '';\n var borderElement = this.chart.renderer.drawPath(new PathOption(this.chart.element.id + '_BorderLine_' + index, 'transparent', axis.border.width, axis.border.color || this.chart.themeStyle.axisLine, 1, '', labelBorder));\n borderElement.style.pointerEvents = 'none';\n appendChildElement(this.chart.enableCanvas, parent, borderElement, this.chart.redraw, false, 'x', 'y', null, direction, true);\n };\n /**\n * To find the axis label of the intersect action\n *\n * @param {Axis} axis axis\n * @param {string} label label\n * @param {number} width width\n * @returns {string} label\n */\n CartesianAxisLayoutPanel.prototype.findAxisLabel = function (axis, label, width) {\n return (axis.labelIntersectAction === 'Trim' ?\n ((axis.angle % 360 === 0 && !axis.enableTrim) ? textTrim(width, label, axis.labelStyle, this.chart.themeStyle.axisLabelFont) : label) : label);\n };\n /**\n * X-Axis Title function performed\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisTitle = function (axis, index, parent, rect) {\n if (axis.title) {\n var chart = this.chart;\n var elementSize = measureText(axis.title, axis.titleStyle, this.chart.themeStyle.axisTitleFont);\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.scrollBarHeight : 0;\n var padding = (axis.tickPosition === 'Inside' ? 0 : axis.majorTickLines.height + axis.titlePadding) +\n (axis.labelPosition === 'Inside' ? 0 :\n axis.maxLabelSize.height + axis.multiLevelLabelHeight + axis.labelPadding);\n var titleSize = (axis.titleSize.height * (axis.titleCollection.length - 1));\n padding = axis.isAxisOpposedPosition ? -(padding + elementSize.height / 4 + scrollBarHeight + titleSize) : (padding + (3 *\n elementSize.height / 4) + scrollBarHeight);\n var labelRotation = axis.titleRotation ? axis.titleRotation : 0;\n var x = rect.x + rect.width * 0.5;\n var y = rect.y + padding;\n if (labelRotation !== 0) {\n y += axis.opposedPosition ? -(axis.titleSize.height / 2 + elementSize.height / 4) :\n axis.titleSize.height / 2 - elementSize.height / 4;\n }\n var options = new TextOption(chart.element.id + '_AxisTitle_' + index, x, y, 'middle', axis.titleCollection, 'rotate(' + labelRotation + ',' + (x) + ',' + (y) + ')', null, labelRotation);\n var element = textElement(chart.renderer, options, axis.titleStyle, axis.titleStyle.color || chart.themeStyle.axisTitleFont.color, parent, null, null, null, null, null, null, null, null, chart.enableCanvas, null, chart.themeStyle.axisTitleFont);\n element.setAttribute('aria-hidden', 'true');\n }\n };\n /**\n * To render the axis grid and tick lines(Both Major and Minor)\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {string} gridDirection gridDirection\n * @param {MajorTickLinesModel | MinorTickLinesModel | MajorGridLinesModel | MinorGridLinesModel} gridModel gridModel\n * @param {string} gridId gridId\n * @param {number} gridIndex gridIndex\n * @param {Element} parent parent\n * @param {string} themeColor themeColor\n * @param {string} dashArray dashArray\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderGridLine = function (axis, index, gridDirection, gridModel, gridId, gridIndex, parent, themeColor, dashArray) {\n if (dashArray === void 0) { dashArray = null; }\n var chart = this.chart;\n var direction;\n var element;\n if (gridModel.width > 0 && axis.visible && axis.internalVisibility && gridDirection) {\n element = getElement(chart.element.id + gridId + index + '_' + gridIndex);\n direction = element ? element.getAttribute('d') : null;\n element = null;\n this.htmlObject = chart.renderer.drawPath(new PathOption(chart.element.id + gridId + index + '_' + gridIndex, 'transparent', gridModel.width, gridModel.color || themeColor, null, dashArray, gridDirection));\n appendChildElement(chart.enableCanvas, parent, this.htmlObject, chart.redraw, true, 'x', 'y', null, direction, true);\n }\n };\n /**\n * To Find the parent node of the axis\n *\n * @param {string} elementId elementId\n * @param {Element} label label\n * @param {number} index index\n * @returns {Element} parent node of the axis\n */\n CartesianAxisLayoutPanel.prototype.findParentNode = function (elementId, label, index) {\n if (document.getElementById(elementId + 'AxisGroup' + index + 'Inside').contains(document.getElementById(label.id))) {\n return document.getElementById(elementId + 'AxisGroup' + index + 'Inside');\n }\n else {\n return document.getElementById(elementId + 'AxisGroup' + index + 'Outside');\n }\n };\n /**\n * Create Zooming Labels Function Called here\n *\n * @param {Chart} chart chart\n * @param {Element} labelElement labelElement\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.createZoomingLabel = function (chart, labelElement, axis, index, rect) {\n var parentNode = this.findParentNode(chart.element.id, labelElement, index);\n labelElement.setAttribute('opacity', '0.3');\n var zoomElement = chart.renderer.createGroup({\n id: chart.element.id + 'AxisLabels_Zoom' + index\n });\n zoomElement = createZoomingLabels(chart, axis, zoomElement, index, axis.orientation === 'Vertical', rect);\n parentNode.replaceChild(labelElement, document.getElementById(labelElement.id));\n if (getElement(chart.element.id + 'AxisLabels_Zoom' + index)) {\n parentNode.replaceChild(zoomElement, document.getElementById(zoomElement.id));\n }\n else {\n parentNode.appendChild(zoomElement);\n }\n };\n return CartesianAxisLayoutPanel;\n}());\nexport { CartesianAxisLayoutPanel };\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 { withInBounds, PointData, getValueXByPoint, getValueYByPoint, sort } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * To get the data on mouse move.\n *\n * @private\n */\nvar ChartData = /** @class */ (function () {\n /**\n * Constructor for the data.\n *\n * @private\n */\n function ChartData(chart) {\n /** @private */\n this.currentPoints = [];\n /** @private */\n this.previousPoints = [];\n this.insideRegion = false;\n this.commonXvalues = [];\n this.chart = chart;\n this.lierIndex = 0;\n }\n /**\n * Method to get the Data.\n *\n * @private\n */\n ChartData.prototype.getData = function () {\n var chart = this.chart;\n var point = null;\n var series = null;\n var width;\n var height;\n var mouseX;\n var mouseY;\n for (var len = chart.visibleSeries.length, i = len - 1; i >= 0; i--) {\n series = chart.visibleSeries[i];\n width = (series.type === 'Scatter' || series.drawType === 'Scatter' || (series.marker.visible))\n ? (series.marker.height + 5) / 2 : 0;\n height = (series.type === 'Scatter' || series.drawType === 'Scatter' || (series.marker.visible))\n ? (series.marker.width + 5) / 2 : 0;\n mouseX = chart.mouseX;\n mouseY = chart.mouseY;\n if (series.dragSettings.enable && series.isRectSeries) {\n if (!(series.type === 'Bar' && chart.isTransposed) && (chart.isTransposed || series.type === 'Bar')) {\n var markerWidth = series.marker.width / 2;\n mouseX = series.yAxis.isAxisInverse ? mouseX + markerWidth : mouseX - markerWidth;\n }\n else {\n var markerHeight = series.marker.height / 2;\n mouseY = series.yAxis.isAxisInverse ? mouseY - markerHeight : mouseY + markerHeight;\n }\n }\n if (series.visible && withInBounds(mouseX, mouseY, series.clipRect, width, height)) {\n point = this.getRectPoint(series, series.clipRect, mouseX, mouseY);\n }\n if (point) {\n return new PointData(point, series);\n }\n }\n return new PointData(point, series);\n };\n ChartData.prototype.isSelected = function (chart) {\n return ((chart.selectionMode.indexOf('Drag') > -1 || chart.selectionMode.indexOf('Lasso') > -1) && chart.selectionModule &&\n chart.selectionModule.rectPoints !== null);\n };\n ChartData.prototype.getRectPoint = function (series, rect, x, y) {\n var chart = this.chart;\n var fromCenterX;\n var fromCenterY;\n var clickAngle;\n var arcAngle = 0;\n var startAngle;\n var endAngle;\n var distanceFromCenter;\n if (chart.isScrolling) {\n return null;\n }\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (!point.regionData) {\n if (!point.regions || !point.regions.length) {\n continue;\n }\n }\n if (point.regionData && this.chart.chartAreaType === 'PolarRadar' && series.drawType.indexOf('Column') > -1) {\n fromCenterX = x - (series.clipRect.width / 2 + series.clipRect.x);\n fromCenterY = y - (series.clipRect.height / 2 + series.clipRect.y);\n arcAngle = 2 * Math.PI * (point.regionData.currentXPosition < 0 ? 1 + point.regionData.currentXPosition\n : point.regionData.currentXPosition);\n clickAngle = (Math.atan2(fromCenterY, fromCenterX) + 0.5 * Math.PI - arcAngle) % (2 * Math.PI);\n clickAngle = clickAngle < 0 ? 2 * Math.PI + clickAngle : clickAngle;\n clickAngle = clickAngle + 2 * Math.PI * series.chart.primaryXAxis.startAngle;\n startAngle = point.regionData.startAngle;\n startAngle -= arcAngle;\n startAngle = startAngle < 0 ? 2 * Math.PI + startAngle : startAngle;\n endAngle = point.regionData.endAngle;\n endAngle -= arcAngle;\n endAngle = endAngle < 0 ? 2 * Math.PI + endAngle : endAngle;\n distanceFromCenter = Math.sqrt(Math.pow(Math.abs(fromCenterX), 2) + Math.pow(Math.abs(fromCenterY), 2));\n if (clickAngle >= startAngle && clickAngle <= endAngle &&\n (((distanceFromCenter >= point.regionData.innerRadius && distanceFromCenter <= point.regionData.radius) ||\n (distanceFromCenter <= point.regionData.innerRadius && distanceFromCenter >= point.regionData.radius))\n && distanceFromCenter <= series.chart.radius)) {\n return point;\n }\n }\n if ((series.dragSettings.enable && series.isRectSeries) || (series.isRectSeries && series.marker.visible)) {\n if (this.isPointInThresholdRegion(x, y, point, rect, series)) {\n this.insideRegion = true;\n return point;\n }\n }\n if (!this.insideRegion && this.checkRegionContainsPoint(point.regions, rect, x, y)) {\n return point;\n }\n else if (this.insideRegion && this.checkRegionContainsPoint(point.regions, rect, x, y)) {\n return point;\n }\n }\n return null;\n };\n /**\n * Checks whether the region contains a point\n */\n ChartData.prototype.checkRegionContainsPoint = function (regionRect, rect, x, y) {\n var _this = this;\n return regionRect.some(function (region, index) {\n _this.lierIndex = index;\n return withInBounds(x, y, new Rect((_this.chart.chartAreaType === 'Cartesian' ? rect.x : 0) + region.x, (_this.chart.chartAreaType === 'Cartesian' ? rect.y : 0) + region.y, region.width, region.height));\n });\n };\n /**\n * To check the point in threshold region for column and bar series\n *\n * @param {number} x X coordinate\n * @param {number} y Y coodinate\n * @param {Points} point point\n * @param {Rect} rect point rect region\n * @param {Series} series series\n */\n ChartData.prototype.isPointInThresholdRegion = function (x, y, point, rect, series) {\n var _this = this;\n var isBar = series.type === 'Bar';\n var isInversed = series.yAxis.isAxisInverse;\n var isTransposed = series.chart.isTransposed;\n var heightValue = 10;\n var yValue = 0;\n var xValue = 0;\n var width;\n var height = width = 2 * heightValue;\n if (isInversed && isTransposed) {\n if (isBar) {\n yValue = point.regions[0].height - heightValue;\n width = point.regions[0].width;\n }\n else {\n xValue = -heightValue;\n height = point.regions[0].height;\n }\n }\n else if (isInversed || point.yValue < 0) {\n if (isBar) {\n xValue = -heightValue;\n height = point.regions[0].height;\n }\n else {\n yValue = point.regions[0].height - heightValue;\n width = point.regions[0].width;\n }\n }\n else if (isTransposed) {\n if (isBar) {\n yValue = -heightValue;\n width = point.regions[0].width;\n }\n else {\n xValue = point.regions[0].width - heightValue;\n height = point.regions[0].height;\n }\n }\n else {\n if (isBar) {\n xValue = point.regions[0].width - heightValue;\n height = point.regions[0].height;\n }\n else {\n yValue = -heightValue;\n width = point.regions[0].width;\n }\n }\n return point.regions.some(function (region) {\n return withInBounds(x, y, new Rect((_this.chart.chartAreaType === 'Cartesian' ? rect.x : 0) + region.x + xValue, (_this.chart.chartAreaType === 'Cartesian' ? rect.y : 0) + region.y + yValue, width, height));\n });\n };\n /**\n * @private\n */\n ChartData.prototype.getClosest = function (series, value, xvalues) {\n var closest;\n var data;\n var xData = xvalues ? xvalues : series.xData;\n var xLength = xData.length;\n if (value >= series.xMin - 0.5 && value <= series.xMax + 0.5) {\n for (var i = 0; i < xLength; i++) {\n data = xData[i];\n if (closest == null || Math.abs(data - value) < Math.abs(closest - value)) {\n closest = data;\n }\n }\n }\n var isDataExist = series.xData.indexOf(closest) !== -1;\n if (isDataExist) {\n return closest;\n }\n else {\n return null;\n }\n };\n ChartData.prototype.binarySearch = function (target, list) {\n var first = 0;\n var last = list.length;\n var position = -1;\n var found = false;\n var middle;\n while (found === false && first <= last) {\n middle = Math.floor((first + last) / 2);\n if (list[middle].xValue === target) {\n found = true;\n position = middle;\n }\n else if (list[middle].xValue > target) {\n last = middle - 1;\n }\n else {\n first = middle + 1;\n }\n }\n return position !== -1 ? list[position] : null;\n };\n ChartData.prototype.getClosestX = function (chart, series, xvalues) {\n var value;\n var rect = series.clipRect;\n if (chart.mouseX <= rect.x + rect.width && chart.mouseX >= rect.x) {\n if (!chart.requireInvertedAxis) {\n value = getValueXByPoint(chart.mouseX - rect.x, rect.width, series.xAxis);\n }\n else {\n value = getValueYByPoint(chart.mouseY - rect.y, rect.height, series.xAxis);\n }\n }\n var closest = this.getClosest(series, value, xvalues);\n var point = ((closest || closest === 0) && series.points.length > 0) ? this.binarySearch(closest, sort(series.points, ['xValue'])) : null;\n if (point && point.visible) {\n return new PointData(point, series);\n }\n return null;\n };\n /**\n * Merge all visible series X values for shared tooltip (EJ2-47072)\n *\n * @param visibleSeries\n * @private\n */\n ChartData.prototype.mergeXvalues = function (visibleSeries) {\n if (visibleSeries.length && (!this.commonXvalues.length || (this.commonXvalues.length !== visibleSeries[0].xData.length))) {\n this.commonXvalues = visibleSeries[0].xData;\n for (var index = 1; index < visibleSeries.length; index++) {\n this.commonXvalues = this.getDistinctValues(this.commonXvalues, visibleSeries[index].xData);\n }\n }\n return this.commonXvalues;\n };\n ChartData.prototype.commonXValue = function (visibleSeries) {\n var commonXValues = [];\n for (var j = 0; j < visibleSeries.length; j++) {\n for (var i = 0; (visibleSeries[j].points && i < visibleSeries[j].points.length); i++) {\n var point = visibleSeries[j].points[i];\n if (point && (point.index === 0 || point.index === visibleSeries[j].points.length - 1 ||\n (point.symbolLocations && point.symbolLocations.length > 0))) {\n commonXValues.push(point.xValue);\n }\n }\n }\n return commonXValues;\n };\n ChartData.prototype.getDistinctValues = function (first, second) {\n if (first === void 0) { first = []; }\n if (second === void 0) { second = []; }\n var intial = {};\n var result = [];\n var index;\n for (index = 0; index < first.length; index++) {\n var temp = first[index];\n if (!intial[temp]) {\n intial[temp] = true;\n result.push(temp);\n }\n }\n for (index = 0; index < second.length; index++) {\n var temp = second[index];\n if (!intial[temp]) {\n intial[temp] = true;\n result.push(temp);\n }\n }\n return result;\n };\n return ChartData;\n}());\nexport { ChartData };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 max-len */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\nimport { Property, ChildProperty, Complex, Collection, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { StackValues, RectOption, appendChildElement, appendClipElement } from '../../common/utils/helper';\nimport { firstToLowerCase, CircleOption, getColorByValue } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { Border, Font, Margin, Animation, EmptyPointSettings, CornerRadius, Connector, DragSettings } from '../../common/model/base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Offset } from '../../common/model/base';\nimport { seriesRender } from '../../common/model/constants';\nimport { sort, getVisiblePoints, setRange } from '../../common/utils/helper';\nimport { Browser } from '@syncfusion/ej2-base';\n/**\n * Configures the data label in the series.\n */\nvar DataLabelSettings = /** @class */ (function (_super) {\n __extends(DataLabelSettings, _super);\n function DataLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(true)\n ], DataLabelSettings.prototype, \"showZero\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"name\", void 0);\n __decorate([\n Property('transparent')\n ], DataLabelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"format\", void 0);\n __decorate([\n Property(1)\n ], DataLabelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(0)\n ], DataLabelSettings.prototype, \"angle\", void 0);\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"enableRotation\", void 0);\n __decorate([\n Property('Auto')\n ], DataLabelSettings.prototype, \"position\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"rx\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"ry\", void 0);\n __decorate([\n Property('Center')\n ], DataLabelSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], DataLabelSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 5, right: 5, top: 5, bottom: 5 }, Margin)\n ], DataLabelSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ size: '12px', color: null, fontStyle: 'Normal', fontWeight: '400', fontFamily: null }, Font)\n ], DataLabelSettings.prototype, \"font\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"template\", void 0);\n __decorate([\n Property('Hide')\n ], DataLabelSettings.prototype, \"labelIntersectAction\", void 0);\n return DataLabelSettings;\n}(ChildProperty));\nexport { DataLabelSettings };\n/**\n * Configures the marker in the series.\n */\nvar MarkerSettings = /** @class */ (function (_super) {\n __extends(MarkerSettings, _super);\n function MarkerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], MarkerSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], MarkerSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], MarkerSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property(5)\n ], MarkerSettings.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], MarkerSettings.prototype, \"isFilled\", void 0);\n __decorate([\n Property(5)\n ], MarkerSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ width: 2, color: null }, Border)\n ], MarkerSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Offset)\n ], MarkerSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(null)\n ], MarkerSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(true)\n ], MarkerSettings.prototype, \"allowHighlight\", void 0);\n __decorate([\n Property(1)\n ], MarkerSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, DataLabelSettings)\n ], MarkerSettings.prototype, \"dataLabel\", void 0);\n return MarkerSettings;\n}(ChildProperty));\nexport { MarkerSettings };\n/**\n * Configures the pareto in the series.\n */\nvar ParetoOptions = /** @class */ (function (_super) {\n __extends(ParetoOptions, _super);\n function ParetoOptions() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ParetoOptions.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], ParetoOptions.prototype, \"width\", void 0);\n __decorate([\n Property('0')\n ], ParetoOptions.prototype, \"dashArray\", void 0);\n __decorate([\n Complex(null, MarkerSettings)\n ], ParetoOptions.prototype, \"marker\", void 0);\n __decorate([\n Property(true)\n ], ParetoOptions.prototype, \"showAxis\", void 0);\n return ParetoOptions;\n}(ChildProperty));\nexport { ParetoOptions };\n/**\n * Points model for the series.\n *\n * @public\n */\nvar Points = /** @class */ (function () {\n function Points() {\n /** point symbol location. */\n this.symbolLocations = null;\n /** point region. */\n this.regions = null;\n /** point percentage value. */\n this.percentage = null;\n /** point region data. */\n this.regionData = null;\n /** To know the point is selected. */\n this.isSelect = false;\n /** point marker. */\n this.marker = {\n visible: false\n };\n /**\n * To identify point y value with in the range.\n *\n * @private\n */\n this.isPointInRange = true;\n /** vertical error value for the point. */\n this.verticalError = null;\n /** vertical negative error value for the point. */\n this.verticalNegativeError = null;\n /** horizontal error value for the point. */\n this.horizontalError = null;\n /** horizontal negative error value for the point. */\n this.horizontalNegativeError = null;\n /** vertical positive error value for the point. */\n this.verticalPositiveError = null;\n /** horizontal positive error value for the point. */\n this.horizontalPositiveError = null;\n }\n return Points;\n}());\nexport { Points };\n/**\n * Defines the behavior of the Trendlines\n */\nvar Trendline = /** @class */ (function (_super) {\n __extends(Trendline, _super);\n function Trendline() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n return _this;\n }\n /** @private */\n Trendline.prototype.setDataSource = function (series, chart) {\n if (series) {\n this.points = series.points;\n }\n chart.trendLineModule.initDataSource(this);\n chart.visibleSeriesCount++;\n };\n __decorate([\n Property('')\n ], Trendline.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], Trendline.prototype, \"dashArray\", void 0);\n __decorate([\n Property(true)\n ], Trendline.prototype, \"visible\", void 0);\n __decorate([\n Property('Linear')\n ], Trendline.prototype, \"type\", void 0);\n __decorate([\n Property(2)\n ], Trendline.prototype, \"period\", void 0);\n __decorate([\n Property(2)\n ], Trendline.prototype, \"polynomialOrder\", void 0);\n __decorate([\n Property(0)\n ], Trendline.prototype, \"backwardForecast\", void 0);\n __decorate([\n Property(0)\n ], Trendline.prototype, \"forwardForecast\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Trendline.prototype, \"animation\", void 0);\n __decorate([\n Complex({}, MarkerSettings)\n ], Trendline.prototype, \"marker\", void 0);\n __decorate([\n Property(true)\n ], Trendline.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property(null)\n ], Trendline.prototype, \"intercept\", void 0);\n __decorate([\n Property('')\n ], Trendline.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], Trendline.prototype, \"width\", void 0);\n __decorate([\n Property('SeriesType')\n ], Trendline.prototype, \"legendShape\", void 0);\n return Trendline;\n}(ChildProperty));\nexport { Trendline };\n/**\n * Configures Error bar in series.\n */\nvar ErrorBarCapSettings = /** @class */ (function (_super) {\n __extends(ErrorBarCapSettings, _super);\n function ErrorBarCapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], ErrorBarCapSettings.prototype, \"width\", void 0);\n __decorate([\n Property(10)\n ], ErrorBarCapSettings.prototype, \"length\", void 0);\n __decorate([\n Property(null)\n ], ErrorBarCapSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarCapSettings.prototype, \"opacity\", void 0);\n return ErrorBarCapSettings;\n}(ChildProperty));\nexport { ErrorBarCapSettings };\nvar ChartSegment = /** @class */ (function (_super) {\n __extends(ChartSegment, _super);\n function ChartSegment() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ChartSegment.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ChartSegment.prototype, \"color\", void 0);\n __decorate([\n Property('0')\n ], ChartSegment.prototype, \"dashArray\", void 0);\n return ChartSegment;\n}(ChildProperty));\nexport { ChartSegment };\n/**\n * Error bar settings\n *\n * @public\n */\nvar ErrorBarSettings = /** @class */ (function (_super) {\n __extends(ErrorBarSettings, _super);\n function ErrorBarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ErrorBarSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Fixed')\n ], ErrorBarSettings.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ErrorBarSettings.prototype, \"direction\", void 0);\n __decorate([\n Property('Vertical')\n ], ErrorBarSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(null)\n ], ErrorBarSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"verticalError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"width\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalError\", void 0);\n __decorate([\n Property(3)\n ], ErrorBarSettings.prototype, \"verticalPositiveError\", void 0);\n __decorate([\n Property(3)\n ], ErrorBarSettings.prototype, \"verticalNegativeError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalPositiveError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalNegativeError\", void 0);\n __decorate([\n Complex(null, ErrorBarCapSettings)\n ], ErrorBarSettings.prototype, \"errorBarCap\", void 0);\n __decorate([\n Property('')\n ], ErrorBarSettings.prototype, \"errorBarColorMapping\", void 0);\n return ErrorBarSettings;\n}(ChildProperty));\nexport { ErrorBarSettings };\n/**\n * Defines the common behavior of Series and Technical Indicators\n */\nvar SeriesBase = /** @class */ (function (_super) {\n __extends(SeriesBase, _super);\n function SeriesBase() {\n /**\n * The DataSource field that contains the x value.\n * It is applicable for series and technical indicators\n *\n * @default ''\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.rangeColorPoints = [];\n _this.isAdvancedColor = undefined;\n /** @private */\n _this.currentViewData = [];\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n /** @private */\n _this.seriesType = 'XY';\n _this.isRectTypeSeries = false;\n return _this;\n }\n /**\n * Process data for the series.\n *\n * @hidden\n */\n SeriesBase.prototype.processJsonData = function () {\n var i = 0;\n var point = new Points();\n var xName = (this instanceof Series && this.type === 'Histogram') ? 'x' : this.xName;\n var textMappingName = this instanceof Series && this.marker.dataLabel.name ?\n this.marker.dataLabel.name : '';\n if (this instanceof Series) {\n if ((this.type === 'Waterfall' || this.type === 'Histogram')) {\n this.currentViewData = this.chart[firstToLowerCase(this.type) + 'SeriesModule'].\n processInternalData(extend([], this.currentViewData, null, true), this);\n }\n if (this.category === 'Pareto') {\n this.currentViewData = sort(extend([], this.currentViewData, null, true), [this.yName], true);\n if (this.type === 'Line') {\n this.currentViewData = this.chart.paretoSeriesModule.performCumulativeCalculation(this.currentViewData, this);\n }\n }\n this.isRectTypeSeries = this.type.indexOf('Column') > -1 || this.type.indexOf('Bar') > -1\n || this.type.indexOf('Histogram') > -1;\n }\n var len = (this.currentViewData || []).length;\n this.points = [];\n this.xMin = Infinity;\n this.xMax = -Infinity;\n this.yMin = Infinity;\n this.yMax = -Infinity;\n this.sizeMax = -Infinity;\n this.getSeriesType();\n if (this.xAxis.valueType === 'Category') {\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n this.pushCategoryData(point, i, point.x);\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n this.rangeColorsInterior(point);\n i++;\n }\n }\n else if (this.xAxis.valueType.indexOf('DateTime') > -1) {\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n if (!isNullOrUndefined(point.x) && point.x !== '') {\n point.x = new Date(DataUtil.parse.parseJson({ val: point.x }).val);\n if (this.xAxis.valueType === 'DateTime') {\n point.xValue = Date.parse(point.x.toString());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.chart.isBlazor ? this.pushCategoryData(point, i, Date.parse(point.x.toString()).toString()) :\n this.pushCategoryData(point, i, Date.parse(dateParser(dateFormatter(point.x))).toString());\n }\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n //this.rangeColorsInterior(point);\n }\n else {\n point.visible = false;\n }\n i++;\n }\n }\n else {\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n point.xValue = point.x;\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n i++;\n }\n }\n if (this instanceof Series) {\n if (this.type.indexOf('Spline') > -1 || (this.drawType.indexOf('Spline') > -1 && this.chart.chartAreaType === 'PolarRadar')) {\n var isArea = (this.type.indexOf('Area') > -1 || this.drawType.indexOf('Area') > -1);\n var isRange = this.type.indexOf('Range') > -1;\n this.chart['spline' + (isArea ? isRange ? 'RangeArea' : 'Area' : '') + 'SeriesModule'].findSplinePoint(this);\n }\n else if (this.type.indexOf('Histogram') > -1 && (this.xAxis.maximum || this.xAxis.minimum)) {\n this.chart['histogramSeriesModule'].calculateBinValues(this);\n }\n if (this.type.indexOf('Histogram') > -1 && this.points.length === 1) {\n this.xMin = this.xMin - this.histogramValues.binWidth;\n this.xMax = this.xMax + this.histogramValues.binWidth;\n }\n }\n };\n SeriesBase.prototype.rangeColorsInterior = function (point) {\n if (this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0 && this.chart.visibleSeries.length === 1 &&\n (this.chart.series[0].type === 'Column' || this.chart.series[0].type === 'Bar' ||\n this.chart.series[0].type === 'Scatter' || this.chart.series[0].type === 'Bubble')) {\n if (!this.rangeColorPoints[point.interior]) {\n this.rangeColorPoints[point.interior] = [];\n }\n else if (this.rangeColorPoints[point.interior] !== undefined) {\n this.rangeColorPoints[point.interior].push(point);\n }\n }\n };\n SeriesBase.prototype.pushData = function (point, i) {\n point.index = i;\n point.yValue = point.y;\n point.series = this;\n // To find the min, max for the axis range.\n this.xMin = Math.min(this.xMin, point.xValue);\n this.xMax = Math.max(this.xMax, point.xValue);\n this.xData.push(point.xValue);\n };\n /** @private */\n SeriesBase.prototype.dataPoint = function (i, textMappingName, xName) {\n this.points[i] = new Points();\n var point = this.points[i];\n var currentViewData = this.currentViewData[i];\n var getObjectValueByMappingString = this.enableComplexProperty ? getValue : this.getObjectValue;\n point.x = getObjectValueByMappingString(xName, currentViewData);\n point.high = getObjectValueByMappingString(this.high, currentViewData);\n point.low = getObjectValueByMappingString(this.low, currentViewData);\n point.open = getObjectValueByMappingString(this.open, currentViewData);\n point.close = getObjectValueByMappingString(this.close, currentViewData);\n point.volume = getObjectValueByMappingString(this.volume, currentViewData);\n point.interior = getObjectValueByMappingString(this.pointColorMapping, currentViewData);\n if (this instanceof Series) {\n if (this.errorBar.visible) {\n point.errorBarColor = getObjectValueByMappingString(this.errorBar.errorBarColorMapping, currentViewData);\n point.verticalError = typeof this.errorBar.verticalError == 'string' ? getObjectValueByMappingString(this.errorBar.verticalError, currentViewData) : this.errorBar.verticalError;\n point.horizontalError = typeof this.errorBar.horizontalError == 'string' ? getObjectValueByMappingString(this.errorBar.horizontalError, currentViewData) : this.errorBar.horizontalError;\n point.verticalNegativeError = typeof this.errorBar.verticalNegativeError == 'string' ? getObjectValueByMappingString(this.errorBar.verticalNegativeError, currentViewData) : this.errorBar.verticalNegativeError;\n point.verticalPositiveError = typeof this.errorBar.verticalPositiveError == 'string' ? getObjectValueByMappingString(this.errorBar.verticalPositiveError, currentViewData) : this.errorBar.verticalPositiveError;\n point.horizontalNegativeError = typeof this.errorBar.horizontalNegativeError == 'string' ? getObjectValueByMappingString(this.errorBar.horizontalNegativeError, currentViewData) : this.errorBar.horizontalNegativeError;\n point.horizontalPositiveError = typeof this.errorBar.horizontalPositiveError == 'string' ? getObjectValueByMappingString(this.errorBar.horizontalPositiveError, currentViewData) : this.errorBar.horizontalPositiveError;\n }\n point.y = getObjectValueByMappingString(this.yName, currentViewData);\n point.size = getObjectValueByMappingString(this.size, currentViewData);\n point.text = getObjectValueByMappingString(textMappingName, currentViewData);\n point.tooltip = getObjectValueByMappingString(this.tooltipMappingName, currentViewData);\n if (this.isAdvancedColorSupported()) {\n this.rangeColorName = this.colorName.length > 0 ? this.colorName : this.yName;\n point.colorValue = getObjectValueByMappingString(this.rangeColorName, currentViewData);\n point.interior = this.getPointFillColor(point.interior, point.colorValue);\n }\n }\n return point;\n };\n SeriesBase.prototype.isAdvancedColorSupported = function () {\n if (isNullOrUndefined(this.isAdvancedColor)) {\n if (this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0 &&\n (this.chart.series[0].type === 'Column' || this.chart.series[0].type === 'Bar' ||\n this.chart.series[0].type === 'Scatter' || this.chart.series[0].type === 'Bubble')) {\n this.isAdvancedColor = true;\n }\n else {\n this.isAdvancedColor = false;\n }\n }\n return this.isAdvancedColor;\n };\n SeriesBase.prototype.getPointFillColor = function (pointFill, value) {\n var color = pointFill;\n if (value && this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0) {\n for (var _i = 0, _a = this.chart.rangeColorSettings; _i < _a.length; _i++) {\n var rangeMap = _a[_i];\n if (value >= rangeMap.start && value <= rangeMap.end) {\n if (rangeMap.colors.length > 1) {\n color = getColorByValue(rangeMap, value);\n }\n else {\n color = rangeMap.colors[0];\n }\n }\n }\n }\n return color;\n };\n SeriesBase.prototype.getObjectValue = function (mappingName, data) {\n return data[mappingName];\n };\n /**\n * To set empty point value based on empty point mode\n *\n * @private\n */\n SeriesBase.prototype.setEmptyPoint = function (point, i) {\n if (!this.findVisibility(point)) {\n point.visible = true;\n return null;\n }\n point.isEmpty = true;\n var mode = this instanceof Series && point.isPointInRange ? this.emptyPointSettings.mode : 'Drop';\n switch (mode) {\n case 'Zero':\n point.visible = true;\n if (this instanceof Series && this.seriesType.indexOf('HighLow') > -1) {\n point.high = point.low = 0;\n if (this.seriesType.indexOf('HighLowOpenClose') > -1) {\n point.open = point.close = 0;\n }\n }\n else {\n point.y = point.yValue = this.yData[i] = 0;\n }\n break;\n case 'Average':\n if (this instanceof Series) {\n if (this.seriesType.indexOf('HighLow') > -1) {\n point.high = (isNullOrUndefined(point.high) || isNaN(+point.high)) ? this.getAverage(this.high, i) : point.high;\n point.low = (isNullOrUndefined(point.low) || isNaN(+point.low)) ? this.getAverage(this.low, i) : point.low;\n if (this.seriesType.indexOf('HighLowOpenClose') > -1) {\n point.open = (isNullOrUndefined(point.open) || isNaN(+point.open)) ? this.getAverage(this.open, i) : point.open;\n point.close = (isNullOrUndefined(point.close) || isNaN(+point.close)) ? this.getAverage(this.close, i) :\n point.close;\n }\n }\n else {\n point.y = point.yValue = this.yData[i] = this.getAverage(this.yName, i);\n }\n }\n point.visible = true;\n break;\n case 'Drop':\n case 'Gap':\n this.yData[i] = null;\n point.visible = false;\n break;\n }\n };\n SeriesBase.prototype.findVisibility = function (point) {\n var type = this instanceof Series ? this.seriesType : 'HighLowOpenClose';\n var yValues;\n var yAxisMin = this.yAxis.minimum;\n var yAxisMax = this.yAxis.maximum;\n switch (type) {\n case 'XY':\n if (this.chart.chartAreaType === 'PolarRadar' && ((!isNullOrUndefined(yAxisMin) && point.yValue < yAxisMin) ||\n (!isNullOrUndefined(yAxisMax) && point.yValue > yAxisMax))) {\n point.isPointInRange = false;\n return true;\n }\n this.setXYMinMax(point.yValue);\n this.yData.push(point.yValue);\n if (this instanceof Series && this.type === 'Bubble') {\n this.sizeMax = Math.max(this.sizeMax, (isNullOrUndefined(point.size) || isNaN(+point.size)) ? this.sizeMax\n : point.size);\n }\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.y) || isNaN(+point.y));\n case 'HighLow':\n this.setHiloMinMax(point.high, point.low);\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.low) || isNaN(+point.low)) ||\n (isNullOrUndefined(point.high) || isNaN(+point.high));\n case 'HighLowOpenClose':\n this.setHiloMinMax(point.high, point.low);\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.low) || isNaN(+point.low)) ||\n (isNullOrUndefined(point.open) || isNaN(+point.open)) || (isNullOrUndefined(point.close) || isNaN(+point.close))\n || (isNullOrUndefined(point.high) || isNaN(+point.high));\n case 'BoxPlot':\n yValues = (point.y || [null]).filter(function (value) {\n return !isNullOrUndefined(value) && !isNaN(value);\n }).sort(function (a, b) {\n return a - b;\n });\n point.y = yValues;\n this.yMin = Math.min(this.yMin, Math.min.apply(Math, yValues));\n this.yMax = Math.max(this.yMax, Math.max.apply(Math, yValues));\n return !yValues.length;\n }\n };\n /**\n * To get Y min max for the provided point seriesType XY\n */\n SeriesBase.prototype.setXYMinMax = function (yValue) {\n var isLogAxis = (this.yAxis.valueType === 'Logarithmic' || this.xAxis.valueType === 'Logarithmic');\n var isNegativeValue = yValue < 0 || this.yAxis.rangePadding === 'None';\n var seriesMinY;\n if (this.isRectTypeSeries && !setRange(this.yAxis)) {\n seriesMinY = ((isLogAxis ? (yValue) : isNegativeValue ? yValue : 0));\n }\n else {\n seriesMinY = yValue;\n }\n this.yMin = isLogAxis ?\n Math.min(this.yMin, (isNullOrUndefined(seriesMinY) || isNaN(seriesMinY) || (seriesMinY === 0) ||\n (seriesMinY.toString() === '0') || (seriesMinY.toString() === '')) ? this.yMin : seriesMinY) :\n Math.min(this.yMin, (isNullOrUndefined(seriesMinY) || isNaN(seriesMinY)) ? this.yMin : seriesMinY);\n this.yMax = Math.max(this.yMax, (isNullOrUndefined(yValue) || isNaN(yValue)) ? this.yMax : yValue);\n };\n /**\n * To get Y min max for the provided point seriesType XY\n */\n SeriesBase.prototype.setHiloMinMax = function (high, low) {\n this.yMin = Math.min(this.yMin, Math.min((isNullOrUndefined(low) || isNaN(low)) ? this.yMin : low, (isNullOrUndefined(high) || isNaN(high)) ? this.yMin : high));\n this.yMax = Math.max(this.yMax, Math.max((isNullOrUndefined(low) || isNaN(low)) ? this.yMax : low, (isNullOrUndefined(high) || isNaN(high)) ? this.yMax : high));\n };\n /**\n * Finds the type of the series\n *\n * @private\n */\n SeriesBase.prototype.getSeriesType = function () {\n var type;\n if (this instanceof Series) {\n var seriesType = this.chart.chartAreaType === 'PolarRadar' ? this.drawType : this.type;\n if (seriesType) {\n switch (seriesType) {\n case 'RangeColumn':\n case 'RangeArea':\n case 'RangeStepArea':\n case 'SplineRangeArea':\n case 'Hilo':\n type = 'HighLow';\n break;\n case 'HiloOpenClose':\n case 'Candle':\n type = 'HighLowOpenClose';\n break;\n case 'BoxAndWhisker':\n type = 'BoxPlot';\n break;\n default:\n type = 'XY';\n }\n }\n }\n this.seriesType = type;\n };\n /** @private */\n SeriesBase.prototype.pushCategoryData = function (point, index, pointX) {\n if (!this.chart.tooltip.shared) {\n if (!this.visible) {\n return null;\n }\n }\n if (!this.xAxis.isIndexed) {\n if (this.xAxis.indexLabels[pointX] === undefined) {\n this.xAxis.indexLabels[pointX] = this.xAxis.labels.length;\n this.xAxis.labels.push(pointX);\n }\n point.xValue = this.xAxis.indexLabels[pointX];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.xAxis.labels[index] ? this.xAxis.labels[index] += ', ' + pointX :\n this.xAxis.labels.push(pointX);\n point.xValue = index;\n }\n };\n /**\n * To find average of given property\n */\n SeriesBase.prototype.getAverage = function (member, i, data) {\n if (data === void 0) { data = this.currentViewData; }\n var previous = data[i - 1] ? (data[i - 1][member] || 0) : 0;\n var next = data[i + 1] ? (data[i + 1][member] || 0) : 0;\n return (previous + next) / 2;\n };\n /**\n * To find the control points for spline.\n *\n * @returns {void}\n * @private\n */\n SeriesBase.prototype.refreshDataManager = function (chart) {\n var _this = this;\n this.chart = chart;\n var dataSource;\n var isAngular = 'isAngular';\n if (chart[isAngular]) {\n dataSource = Object.keys(this.dataSource).length ? this.dataSource : chart.dataSource;\n }\n else {\n dataSource = this.dataSource || chart.dataSource;\n }\n if (!(dataSource instanceof DataManager) && isNullOrUndefined(this.query)) {\n this.dataManagerSuccess({ result: dataSource, count: dataSource.length }, false);\n return;\n }\n var dataManager = this.dataModule.getData(this.dataModule.generateQuery().requiresCount());\n dataManager.then(function (e) { return _this.dataManagerSuccess(e); });\n };\n SeriesBase.prototype.dataManagerSuccess = function (e, isRemoteData) {\n if (isRemoteData === void 0) { isRemoteData = true; }\n this.currentViewData = e.count ? e.result : [];\n this.chart.allowServerDataBinding = false;\n if (this instanceof Series) {\n if (this.chart.stockChart) {\n this.chart.stockChart.series[this.index].localData = this.currentViewData;\n }\n var argsData = {\n name: seriesRender, series: this, data: this.currentViewData, fill: this.interior\n };\n this.chart.trigger(seriesRender, argsData);\n this.interior = argsData.fill;\n this.currentViewData = argsData.data;\n }\n if (this.chart.stockChart && !(this instanceof Series)) {\n this.currentViewData = this.chart.stockChart.findCurrentData(this.chart.stockChart.series[0].localData, this.chart.stockChart.series[0].xName);\n }\n this.processJsonData();\n this.recordsCount = e.count;\n this.refreshChart(isRemoteData);\n this.currentViewData = null;\n };\n SeriesBase.prototype.refreshChart = function (isRemoteData) {\n var chart = this.chart;\n if (this instanceof Series) {\n chart.visibleSeriesCount += isRemoteData ? 1 : 0;\n }\n chart.refreshTechnicalIndicator(this);\n if (this instanceof Series && this.category !== 'TrendLine') {\n for (var _i = 0, _a = this.trendlines; _i < _a.length; _i++) {\n var trendline = _a[_i];\n trendline.setDataSource(this, chart);\n }\n }\n //if (chart.visibleSeries.length === (chart.visibleSeriesCount - chart.indicators.length)) {\n if (chart.visibleSeries.length === (chart.visibleSeriesCount)) {\n chart.refreshBound();\n chart.trigger('loaded', { chart: chart.isBlazor ? {} : chart });\n if (this.chart.stockChart && this.chart.stockChart.initialRender) {\n this.chart.stockChart.initialRender = false;\n this.chart.stockChart.stockChartDataManagerSuccess();\n }\n }\n if (this instanceof Series) {\n chart.visibleSeriesCount += isRemoteData ? 0 : 1;\n }\n };\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"xName\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"colorName\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"high\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"low\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"open\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"close\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"volume\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"pointColorMapping\", void 0);\n __decorate([\n Property(true)\n ], SeriesBase.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"xAxisName\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"yAxisName\", void 0);\n __decorate([\n Complex(null, Animation)\n ], SeriesBase.prototype, \"animation\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], SeriesBase.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"dashArray\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], SeriesBase.prototype, \"query\", void 0);\n __decorate([\n Collection([], ChartSegment)\n ], SeriesBase.prototype, \"segments\", void 0);\n __decorate([\n Property('X')\n ], SeriesBase.prototype, \"segmentAxis\", void 0);\n __decorate([\n Property(false)\n ], SeriesBase.prototype, \"enableComplexProperty\", void 0);\n return SeriesBase;\n}(ChildProperty));\nexport { SeriesBase };\n/**\n * Configures the series in charts.\n *\n * @public\n */\nvar Series = /** @class */ (function (_super) {\n __extends(Series, _super);\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n function Series(parent, propName, defaultValue, isArray) {\n var _this = _super.call(this, parent, propName, defaultValue, isArray) || this;\n _this.visibleSeriesCount = 0;\n /** @private */\n _this.category = 'Series';\n /** @private */\n _this.isRectSeries = false;\n /** @private */\n _this.drawPoints = [];\n /** @private */\n _this.lowDrawPoints = [];\n /** @private */\n _this.delayedAnimation = false;\n /** @private */\n _this.rangeColorName = _this.colorName.length > 0 ? _this.colorName : _this.yName;\n return _this;\n }\n /**\n * Refresh the axis label.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.refreshAxisLabel = function () {\n if (this.xAxis.valueType !== 'Category') {\n return null;\n }\n this.xAxis.labels = [];\n this.xAxis.indexLabels = {};\n for (var _i = 0, _a = this.xAxis.series; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.visible && item.category !== 'TrendLine') {\n item.xMin = Infinity;\n item.xMax = -Infinity;\n for (var _b = 0, _c = item.points; _b < _c.length; _b++) {\n var point = _c[_b];\n item.pushCategoryData(point, point.index, point.x);\n item.xMin = Math.min(item.xMin, point.xValue);\n item.xMax = Math.max(item.xMax, point.xValue);\n }\n }\n }\n };\n /**\n * To get the series collection.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.findSeriesCollection = function (column, row, isStack) {\n var seriesCollection = [];\n for (var _i = 0, _a = row.axes; _i < _a.length; _i++) {\n var rowAxis = _a[_i];\n for (var _b = 0, _c = rowAxis.series; _b < _c.length; _b++) {\n var rowSeries = _c[_b];\n for (var _d = 0, _e = column.axes; _d < _e.length; _d++) {\n var axis = _e[_d];\n for (var _f = 0, _g = axis.series; _f < _g.length; _f++) {\n var series = _g[_f];\n if (series === rowSeries && series.visible && this.rectSeriesInChart(series, isStack)) {\n seriesCollection.push(series);\n }\n }\n }\n }\n }\n return seriesCollection;\n };\n /**\n * To get the column type series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.rectSeriesInChart = function (series, isStack) {\n var type = (series.type).toLowerCase();\n return (type.indexOf('column') !== -1 || type.indexOf('bar') !== -1 || type.indexOf('histogram') !== -1 ||\n type.indexOf('hiloopenclose') !== -1 || type.indexOf('candle') !== -1 || type.indexOf('pareto') !== -1 ||\n type.indexOf('hilo') !== -1 || series.drawType.indexOf('Column') !== -1 ||\n type.indexOf('waterfall') !== -1 || type.indexOf('boxandwhisker') !== -1 || isStack);\n };\n /**\n * To calculate the stacked values.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.calculateStackedValue = function (isStacking100, chart) {\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var columnItem = _a[_i];\n for (var _b = 0, _c = chart.rows; _b < _c.length; _b++) {\n var item = _c[_b];\n this.calculateStackingValues(this.findSeriesCollection(columnItem, item, true), isStacking100);\n }\n }\n };\n Series.prototype.calculateStackingValues = function (seriesCollection, isStacking100) {\n var startValues;\n var endValues;\n var yValues = [];\n var lastPositive = [];\n var lastNegative = [];\n var stackingGroup;\n var lastValue;\n var value;\n var frequencies = [];\n if (isStacking100) {\n frequencies = this.findFrequencies(seriesCollection);\n }\n var groupingValues = [];\n var visiblePoints = [];\n for (var i = 0; i < seriesCollection.length; i++) {\n var series = seriesCollection[i];\n if (!groupingValues[series.stackingGroup]) {\n groupingValues[series.stackingGroup] = [];\n groupingValues[series.stackingGroup].push(series);\n }\n else if (groupingValues[series.stackingGroup] !== undefined) {\n groupingValues[series.stackingGroup].push(series);\n }\n }\n var keys = Object.keys(groupingValues);\n for (var k = 0; k < keys.length; k++) {\n var stackingSeies = [];\n var stackedValues = [];\n var seriesCollection_2 = groupingValues[keys[k]];\n for (var _i = 0, seriesCollection_1 = seriesCollection_2; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n if (series.type.indexOf('Stacking') !== -1 || (series.drawType.indexOf('Stacking') !== -1 &&\n (series.chart.chartAreaType === 'PolarRadar'))) {\n stackingGroup = (series.type.indexOf('StackingArea') !== -1) ? 'StackingArea100' :\n (series.type.indexOf('StackingLine') !== -1) ? 'StackingLine100' : series.stackingGroup;\n if (!lastPositive[stackingGroup]) {\n lastPositive[stackingGroup] = [];\n lastNegative[stackingGroup] = [];\n }\n yValues = series.yData;\n startValues = [];\n endValues = [];\n stackingSeies.push(series);\n visiblePoints = getVisiblePoints(series);\n for (var j = 0, pointsLength = visiblePoints.length; j < pointsLength; j++) {\n lastValue = 0;\n value = +yValues[j]; // Fix for chart not rendering while y value is given as string issue\n if (lastPositive[stackingGroup][visiblePoints[j].xValue] === undefined) {\n lastPositive[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (lastNegative[stackingGroup][visiblePoints[j].xValue] === undefined) {\n lastNegative[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (isStacking100) {\n value = value / frequencies[stackingGroup][visiblePoints[j].xValue] * 100;\n value = !isNaN(value) ? value : 0;\n visiblePoints[j].percentage = +(value.toFixed(2));\n }\n else {\n stackedValues[j] = stackedValues[j] ? stackedValues[j] + Math.abs(value) : Math.abs(value);\n }\n if (value >= 0) {\n lastValue = lastPositive[stackingGroup][visiblePoints[j].xValue];\n lastPositive[stackingGroup][visiblePoints[j].xValue] += value;\n }\n else {\n lastValue = lastNegative[stackingGroup][visiblePoints[j].xValue];\n lastNegative[stackingGroup][visiblePoints[j].xValue] += value;\n }\n startValues.push(lastValue);\n endValues.push(value + lastValue);\n if (isStacking100 && (endValues[j] > 100)) {\n endValues[j] = 100;\n }\n }\n series.stackedValues = new StackValues(startValues, endValues);\n var isLogAxis = series.yAxis.valueType === 'Logarithmic';\n var isColumnBarType = (series.type.indexOf('Column') !== -1 || series.type.indexOf('Bar') !== -1);\n series.yMin = isLogAxis && isColumnBarType && series.yMin < 1 ? series.yMin : Math.min.apply(0, isStacking100 ? startValues : endValues);\n series.yMax = Math.max.apply(0, endValues);\n if (series.yMin > Math.min.apply(0, endValues)) {\n series.yMin = (isStacking100) ? -100 :\n isLogAxis && isColumnBarType && series.yMin < 1 ? series.yMin : Math.min.apply(0, endValues);\n }\n if (series.yMax < Math.max.apply(0, startValues)) {\n series.yMax = 0;\n }\n }\n }\n this.findPercentageOfStacking(stackingSeies, stackedValues, isStacking100);\n }\n };\n Series.prototype.findPercentageOfStacking = function (stackingSeies, values, isStacking100) {\n for (var _i = 0, stackingSeies_1 = stackingSeies; _i < stackingSeies_1.length; _i++) {\n var item = stackingSeies_1[_i];\n if (isStacking100) {\n return null;\n }\n for (var _a = 0, _b = getVisiblePoints(item); _a < _b.length; _a++) {\n var point = _b[_a];\n point.percentage = Math.abs(+(point.y / values[point.index] * 100).toFixed(2));\n }\n }\n };\n Series.prototype.findFrequencies = function (seriesCollection) {\n var frequencies = [];\n var stackingGroup;\n var visiblePoints = [];\n for (var _i = 0, seriesCollection_3 = seriesCollection; _i < seriesCollection_3.length; _i++) {\n var series = seriesCollection_3[_i];\n series.yAxis.isStack100 = series.type.indexOf('100') !== -1 ? true : false;\n visiblePoints = getVisiblePoints(series);\n if (series.type.indexOf('Stacking') !== -1) {\n stackingGroup = (series.type.indexOf('StackingArea') !== -1) ? 'StackingArea100' :\n (series.type.indexOf('StackingLine') !== -1) ? 'StackingLine100' : series.stackingGroup;\n if (!frequencies[stackingGroup]) {\n frequencies[stackingGroup] = [];\n }\n for (var j = 0, pointsLength = visiblePoints.length; j < pointsLength; j++) {\n if (frequencies[stackingGroup][visiblePoints[j].xValue] === undefined) {\n frequencies[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (series.yData[j] > 0) {\n frequencies[stackingGroup][visiblePoints[j].xValue] += series.yData[j];\n }\n else {\n frequencies[stackingGroup][visiblePoints[j].xValue] -= series.yData[j];\n }\n }\n }\n }\n return frequencies;\n };\n /* private dataManagerFailure(e: { result: Object[] }): void {\n this.currentViewData = [];\n this.refreshChart();\n }*/\n /** @private */\n Series.prototype.renderSeries = function (chart) {\n var seriesType = firstToLowerCase(this.type);\n seriesType = seriesType.replace('100', '');\n if (chart[seriesType + 'SeriesModule']) {\n if (this.category !== 'Indicator' && this.category !== 'TrendLine') {\n this.createSeriesElements(chart);\n }\n this.visiblePoints = getVisiblePoints(this);\n chart[seriesType + 'SeriesModule'].render(this, this.xAxis, this.yAxis, chart.requireInvertedAxis);\n if (this.category !== 'Indicator') {\n if (this.errorBar.visible) {\n this.chart.errorBarModule.render(this);\n }\n if (this.marker.dataLabel.visible) {\n chart.dataLabelModule.render(this, this.chart, this.marker.dataLabel);\n }\n this.appendSeriesElement(chart.seriesElements, chart);\n }\n if (!this.chart.enableCanvas) {\n this.performAnimation(chart, seriesType, this.errorBar, this.marker, this.marker.dataLabel);\n }\n }\n };\n /**\n * To create seris element.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.createSeriesElements = function (chart) {\n if (this.category !== 'Indicator') {\n var elementId = chart.element.id;\n // 8 for extend border value 5 for extend size value\n var explodeValue = this.marker.border.width + 8 + 5;\n var render = (this.type === 'Bubble') || (!this.marker.visible && chart.tooltip.shared && chart.enableCanvas) ?\n chart.svgRenderer : chart.renderer;\n var index = this.index === undefined ? this.category : this.index;\n var markerHeight = void 0;\n var markerWidth = void 0;\n var options = void 0;\n if (this.type === 'Scatter' || this.drawType === 'Scatter') {\n markerHeight = (this.marker.height + explodeValue) / 2;\n markerWidth = (this.marker.width + explodeValue) / 2;\n }\n else {\n markerHeight = 0;\n markerWidth = 0;\n }\n if (chart.chartAreaType === 'PolarRadar') {\n var markerMaxValue = (this.drawType === 'Scatter') ? Math.max(this.marker.width, this.marker.height) : 0;\n options = new CircleOption(elementId + '_ChartSeriesClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, this.clipRect.width / 2 + this.clipRect.x, this.clipRect.height / 2 + this.clipRect.y, chart.radius + markerMaxValue);\n this.clipRectElement = appendClipElement(chart.redraw, options, render, 'drawCircularClipPath');\n }\n else {\n options = new RectOption(elementId + '_ChartSeriesClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: -markerWidth, y: -markerHeight,\n width: this.clipRect.width + markerWidth * 2,\n height: this.clipRect.height + markerHeight * 2\n });\n this.clipRectElement = appendClipElement(chart.redraw, options, render);\n }\n var transform = chart.chartAreaType === 'Cartesian' ? 'translate(' + this.clipRect.x + ',' + (this.clipRect.y) + ')' : '';\n this.symbolElement = null;\n this.seriesElement = render.createGroup({\n 'id': elementId + 'SeriesGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + elementId + '_ChartSeriesClipRect_' + index + ')'\n });\n if (this.seriesElement) {\n this.seriesElement.setAttribute('role', 'region');\n this.seriesElement.setAttribute('aria-label', (this.name + ',' + this.type + ' series with ' + this.points.length + ' data points'));\n this.seriesElement.setAttribute('aria-hidden', 'false');\n }\n if (!this.chart.enableCanvas || this.type === 'Bubble') {\n this.seriesElement.setAttribute('tabindex', index === 0 ? '0' : '');\n this.seriesElement.setAttribute('style', 'outline: none');\n this.seriesElement.appendChild(this.clipRectElement);\n }\n }\n };\n /**\n * To append the series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.appendSeriesElement = function (element, chart) {\n var marker = this.marker;\n var dataLabel = marker.dataLabel;\n var redraw = chart.redraw;\n if (this.category !== 'TrendLine') {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.seriesElement, redraw);\n var errorBar = this.errorBar;\n if (errorBar.visible) {\n if (chart.chartAreaType === 'PolarRadar') {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.seriesElement, redraw);\n }\n else {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.errorBarElement, redraw);\n }\n }\n if (this.type === 'Scatter' || this.type === 'Bubble' || this.drawType === 'Scatter') {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.seriesElement, redraw);\n }\n }\n if (marker.visible && (chart.chartAreaType === 'Cartesian' ||\n ((this.drawType !== 'Scatter') && chart.chartAreaType === 'PolarRadar')) && this.type !== 'Scatter' &&\n this.type !== 'Bubble' && this.type !== 'Candle' && this.type !== 'Hilo' && this.type !== 'HiloOpenClose' && this.symbolElement) {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.symbolElement, redraw);\n }\n if (dataLabel.visible && this.textElement) {\n appendChildElement(chart.enableCanvas, chart.dataLabelElements, this.shapeElement, redraw);\n appendChildElement(chart.enableCanvas, chart.dataLabelElements, this.textElement, redraw);\n }\n if (!chart.enableCanvas && chart.dataLabelElements.hasChildNodes()) {\n chart.seriesElements.appendChild(chart.dataLabelElements);\n }\n };\n /**\n * To perform animation for chart series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.performAnimation = function (chart, type, errorBar, marker, dataLabel) {\n if (this.animation.enable && chart.animateSeries) {\n chart[type + 'SeriesModule'].doAnimation(this);\n if (errorBar.visible) {\n chart.errorBarModule.doErrorBarAnimation(this);\n }\n if (marker.visible) {\n chart.markerRender.doMarkerAnimation(this);\n }\n //to datalabel animation disabled for edge and IE\n if (dataLabel.visible && Browser.info.name !== 'edge' && !Browser.isIE) {\n chart.dataLabelModule.doDataLabelAnimation(this);\n }\n }\n };\n /**\n * To set border color for empty point\n *\n * @private\n */\n Series.prototype.setPointColor = function (point, color) {\n color = point.interior || color;\n return point.isEmpty ? (this.emptyPointSettings.fill || color) : color;\n };\n /**\n * To set border color for empty point\n *\n * @private\n */\n Series.prototype.setBorderColor = function (point, border) {\n border.width = point.isEmpty ? (this.emptyPointSettings.border.width || border.width) : border.width;\n border.color = point.isEmpty ? (this.emptyPointSettings.border.color || border.color) : border.color;\n return border;\n };\n __decorate([\n Property('')\n ], Series.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"yName\", void 0);\n __decorate([\n Property('Line')\n ], Series.prototype, \"drawType\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"isClosed\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"bearFillColor\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"bullFillColor\", void 0);\n __decorate([\n Property(false)\n ], Series.prototype, \"enableSolidCandles\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"binInterval\", void 0);\n __decorate([\n Property(false)\n ], Series.prototype, \"showNormalDistribution\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"stackingGroup\", void 0);\n __decorate([\n Complex({ color: null, width: 0 }, Border)\n ], Series.prototype, \"border\", void 0);\n __decorate([\n Property(1)\n ], Series.prototype, \"opacity\", void 0);\n __decorate([\n Property(0)\n ], Series.prototype, \"zOrder\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"groupName\", void 0);\n __decorate([\n Property('Line')\n ], Series.prototype, \"type\", void 0);\n __decorate([\n Complex(null, ErrorBarSettings)\n ], Series.prototype, \"errorBar\", void 0);\n __decorate([\n Complex(null, MarkerSettings)\n ], Series.prototype, \"marker\", void 0);\n __decorate([\n Complex(null, ParetoOptions)\n ], Series.prototype, \"paretoOptions\", void 0);\n __decorate([\n Complex({}, DragSettings)\n ], Series.prototype, \"dragSettings\", void 0);\n __decorate([\n Collection([], Trendline)\n ], Series.prototype, \"trendlines\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"tooltipFormat\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"tooltipMappingName\", void 0);\n __decorate([\n Property('SeriesType')\n ], Series.prototype, \"legendShape\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"legendImageUrl\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"selectionStyle\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"unSelectedStyle\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"nonHighlightStyle\", void 0);\n __decorate([\n Property(1)\n ], Series.prototype, \"minRadius\", void 0);\n __decorate([\n Property(3)\n ], Series.prototype, \"maxRadius\", void 0);\n __decorate([\n Property('Natural')\n ], Series.prototype, \"splineType\", void 0);\n __decorate([\n Property(0.5)\n ], Series.prototype, \"cardinalSplineTension\", void 0);\n __decorate([\n Complex(null, EmptyPointSettings)\n ], Series.prototype, \"emptyPointSettings\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"showMean\", void 0);\n __decorate([\n Property('Normal')\n ], Series.prototype, \"boxPlotMode\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"columnWidth\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"columnWidthInPixel\", void 0);\n __decorate([\n Property(0)\n ], Series.prototype, \"columnSpacing\", void 0);\n __decorate([\n Property('#C64E4A')\n ], Series.prototype, \"negativeFillColor\", void 0);\n __decorate([\n Property('#4E81BC')\n ], Series.prototype, \"summaryFillColor\", void 0);\n __decorate([\n Property()\n ], Series.prototype, \"intermediateSumIndexes\", void 0);\n __decorate([\n Property()\n ], Series.prototype, \"sumIndexes\", void 0);\n __decorate([\n Complex({ color: 'black', width: 2 }, Connector)\n ], Series.prototype, \"connector\", void 0);\n __decorate([\n Complex(null, CornerRadius)\n ], Series.prototype, \"cornerRadius\", void 0);\n return Series;\n}(SeriesBase));\nexport { Series };\n","import { Query, DataManager, Deferred } from '@syncfusion/ej2-data';\n/**\n * data module is used to generate query and dataSource\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module\n *\n * @param dataSource\n * @param query\n * @param dataSource\n * @param query\n * @private\n */\n function Data(dataSource, query) {\n this.initDataManager(dataSource, query);\n }\n /**\n * The function used to initialize dataManager and query\n *\n * @param dataSource\n * @param query\n * @param dataSource\n * @param query\n * @returns {void}\n * @private\n */\n Data.prototype.initDataManager = function (dataSource, query) {\n this.dataManager = dataSource instanceof DataManager ? dataSource : new DataManager(dataSource);\n this.query = query instanceof Query ? query : new Query();\n };\n /**\n * The function used to generate updated Query from chart model\n *\n * @returns {void}\n * @private\n */\n Data.prototype.generateQuery = function () {\n var query = this.query.clone();\n return query;\n };\n /**\n * The function used to get dataSource by executing given Query\n *\n * @param {Query} query - A Query that specifies to generate dataSource\n * @returns {void}\n * @private\n */\n Data.prototype.getData = function (dataQuery) {\n var _this = this;\n if (this.dataManager.ready) {\n var dataManagerDeferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(dataQuery).then(function (result) {\n dataManagerDeferred_1.resolve(result);\n });\n }).catch(function (e) { dataManagerDeferred_1.reject(e); });\n return dataManagerDeferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(dataQuery);\n }\n };\n return Data;\n}());\nexport { Data };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/check-param-names */\n/* eslint-disable jsdoc/require-param-type */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-param-description */\n/* eslint-disable valid-jsdoc */\nimport { drawSymbol } from '../../common/utils/helper';\nimport { PathOption, Size } from '@syncfusion/ej2-svg-base';\nimport { Browser, extend, remove, isNullOrUndefined, Animation } from '@syncfusion/ej2-base';\nimport { ChartData } from '../../chart/utils/get-data';\nimport { withInBounds, PointData, stopTimer } from '../../common/utils/helper';\nimport { colorNameToHex, convertHexToColor } from '../../common/utils/helper';\n/**\n * Marker Module used to render the marker for line type series.\n */\nvar MarkerExplode = /** @class */ (function (_super) {\n __extends(MarkerExplode, _super);\n /**\n * Constructor for the marker module.\n *\n * @private\n */\n function MarkerExplode(chart) {\n var _this = _super.call(this, chart) || this;\n _this.elementId = chart.element.id;\n _this.commonXvalues = [];\n return _this;\n }\n /**\n * @hidden\n */\n MarkerExplode.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.off(Browser.touchMoveEvent, this.mouseMoveHandler);\n this.chart.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.mouseUpHandler = function () {\n var chart = this.chart;\n if (chart.isTouch && !chart.crosshair.enable && !this.isSelected(chart)) {\n this.markerMove(true);\n }\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.mouseMoveHandler = function () {\n var chart = this.chart;\n if ((chart.highlightMode !== 'None' || (chart.tooltip.enable)) && (!chart.isTouch || chart.startMove) && !this.isSelected(chart)) {\n this.markerMove(false);\n }\n };\n MarkerExplode.prototype.markerMove = function (remove) {\n var _this = this;\n var chart = this.chart;\n this.currentPoints = [];\n var data;\n var previous;\n var explodeSeries;\n var series;\n if (!chart.tooltip.shared || !chart.tooltip.enable) {\n data = this.getData();\n series = data.series;\n previous = this.previousPoints[0];\n explodeSeries = series && ((series.type === 'Bubble' || series.drawType === 'Scatter' || series.type === 'Scatter') ||\n (((series.type !== 'Candle') && (series.type !== 'Hilo') && (series.type !== 'HiloOpenClose')) &&\n (series.marker.visible && series.marker.width !== 0 && series.marker.height !== 0)));\n data.lierIndex = this.lierIndex;\n if (data.point && explodeSeries && ((!previous || (previous.point !== data.point)) ||\n (previous && previous.lierIndex > 3 && previous.lierIndex !== this.lierIndex))) {\n this.currentPoints.push(data);\n }\n if (data.point && explodeSeries && chart.isPointMouseDown) {\n this.currentPoints.push(data);\n }\n }\n else {\n if (!withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n return null;\n }\n if (chart.tooltip.enable) {\n var pointData = chart.chartAreaType === 'PolarRadar' ? this.getData() : null;\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var chartSeries = _a[_i];\n if (!chartSeries.enableTooltip || chartSeries.category === 'Indicator') {\n continue;\n }\n if (chart.chartAreaType === 'Cartesian' && chartSeries.visible) {\n data = this.getClosestX(chart, chartSeries, this.commonXValue(this.chart.visibleSeries));\n }\n else if (chart.chartAreaType === 'PolarRadar' && chartSeries.visible && pointData.point !== null) {\n data = new PointData(chartSeries.points[pointData.point.index], chartSeries);\n }\n if (data) {\n this.currentPoints.push(data);\n data = null;\n }\n }\n }\n }\n var length = this.previousPoints.length;\n if (this.currentPoints.length > 0) {\n if (length === 0 || chart.isPointMouseDown || (length > 0 && this.previousPoints[0].point !== this.currentPoints[0].point)) {\n if (this.previousPoints.length > 0) {\n for (var _b = 0, _c = this.previousPoints; _b < _c.length; _b++) {\n var previousPoint = _c[_b];\n if (!isNullOrUndefined(previousPoint)) {\n this.removeHighlightedMarker(previousPoint.series, previousPoint.point);\n }\n }\n }\n var _loop_1 = function (data_1) {\n if ((data_1 && data_1.point) || ((series.type !== 'Candle') &&\n (series.type !== 'Hilo') && (series.type !== 'HiloOpenClose'))) {\n stopTimer(this_1.markerExplode);\n this_1.isRemove = true;\n data_1.point.symbolLocations.map(function (location, index) {\n if (data_1.series.marker.allowHighlight && (!data_1.series.isRectSeries || data_1.point.marker.visible)) {\n _this.drawTrackBall(data_1.series, data_1.point, location, index);\n }\n });\n }\n };\n var this_1 = this;\n for (var _d = 0, _e = this.currentPoints; _d < _e.length; _d++) {\n var data_1 = _e[_d];\n _loop_1(data_1);\n }\n this.previousPoints = extend([], this.currentPoints, null, true);\n }\n }\n if (!chart.tooltip.enable && ((this.currentPoints.length === 0 && this.isRemove) || (remove && this.isRemove) ||\n !withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect))) {\n this.isRemove = false;\n if (!isNullOrUndefined(this.previousPoints[0])) {\n this.markerExplode = +setTimeout(function () {\n if (_this.previousPoints[0]) {\n _this.removeHighlightedMarker(_this.previousPoints[0].series, _this.previousPoints[0].point);\n }\n }, 2000);\n }\n }\n this.currentPoints = [];\n };\n MarkerExplode.prototype.animationDuration = function () {\n var duration = 200;\n if (this.chart.maxPointCount > 100) {\n duration = 10;\n }\n else if (this.chart.maxPointCount > 50) {\n duration = 100;\n }\n return duration;\n };\n MarkerExplode.prototype.drawTrackBall = function (series, point, location, index) {\n var marker = point.marker;\n var seriesMarker = series.marker;\n var shape = marker.shape || seriesMarker.shape || 'Circle';\n var svg;\n if (shape === 'None' || shape === 'Image') {\n return null;\n }\n var element = series.symbolElement || series.seriesElement;\n var className;\n if (this.chart.highlightModule && this.chart.highlightMode !== 'None') {\n className = this.chart.highlightModule.generateStyle(series);\n }\n if (this.chart.selectionModule && this.chart.selectionMode !== 'None') {\n className = this.chart.selectionModule.generateStyle(series);\n }\n var symbolId = this.elementId + '_Series_' + series.index + '_Point_' + point.index + '_Trackball' +\n (index ? index : '');\n var size = new Size((marker.width || seriesMarker.width) + 3, (marker.height || seriesMarker.height) + 3);\n var border = (marker.border || series.border);\n var explodeSeries = (series.type === 'BoxAndWhisker' || series.type === 'Bubble' || series.type === 'Scatter');\n var borderColor = (border.color && border.color !== 'transparent') ? border.color :\n marker.fill || point.interior || (explodeSeries ? point.color : series.interior);\n var colorValue = convertHexToColor(colorNameToHex(borderColor));\n var borderWidth = marker.border ? marker.border.width : seriesMarker.border.width;\n var markerShadow = series.chart.themeStyle.markerShadow ||\n 'rgba(' + colorValue.r + ',' + colorValue.g + ',' + colorValue.b + ',0.2)';\n var markerElement = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point.index + '_Symbol');\n if (!isNullOrUndefined(markerElement)) {\n markerElement.setAttribute('visibility', 'hidden');\n }\n if (this.chart.enableCanvas) {\n var trackElement = document.getElementById(this.chart.element.id + '_Secondary_Element');\n svg = this.chart.svgRenderer.createSvg({\n id: this.chart.element.id + '_trackball_svg',\n width: this.chart.availableSize.width,\n height: this.chart.availableSize.height\n });\n svg.style.cssText = 'position: absolute; pointer-events: none';\n trackElement.appendChild(svg);\n }\n for (var i = 0; i < 2; i++) {\n var options = new PathOption(symbolId + '_' + i, i ? (marker.fill || point.color || (explodeSeries ? series.interior : '#ffffff')) : 'transparent', borderWidth + (i ? 0 : 8), i ? borderColor : markerShadow, (marker.opacity || seriesMarker.opacity), null, null);\n var symbol = drawSymbol(location, shape, size, marker.imageUrl, options, '', this.chart.svgRenderer, series.clipRect);\n // incident: 252450 point click selection not working while maker explode\n //symbol.setAttribute('style', 'pointer-events:none');\n symbol.setAttribute('class', 'EJ2-Trackball_Series_' + series.index + '_Point_' + point.index);\n var selectionId = element.id.indexOf('Symbol') !== -1 ? '_Symbol' : '';\n var seletionElem = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point.index + selectionId);\n if (className !== '' && !isNullOrUndefined(className) && !isNullOrUndefined(seletionElem) &&\n seletionElem.hasAttribute('class') && (className === seletionElem.getAttribute('class'))) {\n symbol.classList.add(className);\n }\n symbol.setAttribute('role', 'img');\n symbol.setAttribute('clip-path', element.getAttribute('clip-path'));\n symbol.setAttribute('transform', element.getAttribute('transform'));\n if (this.chart.enableCanvas) {\n svg.appendChild(symbol);\n }\n else {\n this.chart.svgObject.appendChild(symbol);\n }\n }\n this.doAnimation(series, point, false);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n MarkerExplode.prototype.doAnimation = function (series, point, endAnimate) {\n if (endAnimate === void 0) { endAnimate = false; }\n var duration = this.animationDuration();\n var delay = series.animation.delay;\n var rectElements = document.getElementsByClassName('EJ2-Trackball_Series_' + series.index + '_Point_' + point.index);\n for (var i = 0, len = rectElements.length; i < len; i++) {\n this.trackballAnimate(rectElements[i], delay, duration, series, point.index, point.symbolLocations[0], false, endAnimate);\n }\n };\n /**\n * Animation Effect Calculation End\n *\n * @private\n */\n MarkerExplode.prototype.trackballAnimate = function (elements, delays, durations, series, pointIndex, point, isLabel, endAnimate) {\n var centerX = point.x;\n var centerY = point.y;\n var clipX = (series.type !== 'Polar' && series.type !== 'Radar') ? series.clipRect.x : 0;\n var clipY = (series.type !== 'Polar' && series.type !== 'Radar') ? series.clipRect.y : 0;\n var height = 0;\n elements.style.visibility = 'hidden';\n var reducedHeight = endAnimate ? -8 : 1;\n var transform = elements.getAttribute('transform');\n new Animation({}).animate(elements, {\n duration: durations,\n delay: delays,\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n args.element.style.visibility = 'visible';\n height = ((args.timeStamp - args.delay) / args.duration);\n elements.setAttribute('transform', 'translate(' + (centerX + clipX)\n + ' ' + (centerY + clipY) + ') scale(' + (height / reducedHeight) + ') translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n },\n end: function () {\n elements.style.visibility = '';\n elements.setAttribute('transform', transform);\n if (!isLabel && (pointIndex === series.points.length - 1)) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n if (endAnimate) {\n remove(elements);\n }\n }\n });\n };\n /**\n * @param series\n * @param point\n * @param fadeOut\n * @param series\n * @param point\n * @param fadeOut\n * @param series\n * @param point\n * @param fadeOut\n * @hidden\n */\n MarkerExplode.prototype.removeHighlightedMarker = function (series, point, fadeOut) {\n if (series === void 0) { series = null; }\n if (point === void 0) { point = null; }\n if (fadeOut === void 0) { fadeOut = false; }\n if (!isNullOrUndefined(series) && !isNullOrUndefined(point)) {\n var markerElement = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point.index + '_Symbol');\n var trackballElements = document.getElementsByClassName('EJ2-Trackball_Series_' + series.index + '_Point_' + point.index);\n for (var i = 0, len = trackballElements.length; i < len; i++) {\n remove(trackballElements[0]);\n }\n if (!isNullOrUndefined(markerElement)) {\n markerElement.setAttribute('visibility', 'visible');\n }\n }\n else {\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point_1 = _a[_i];\n var elements = document.getElementsByClassName('EJ2-Trackball_Series_' + series.index + '_Point_' + point_1.index);\n var markerElement = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point_1.index + '_Symbol');\n for (var i = 0, len = elements.length; i < len; i++) {\n if (!isNullOrUndefined(markerElement)) {\n markerElement.setAttribute('visibility', 'visible');\n }\n remove(elements[0]);\n }\n }\n }\n if (fadeOut) {\n this.previousPoints = [];\n }\n };\n return MarkerExplode;\n}(ChartData));\nexport { MarkerExplode };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { RectOption, appendChildElement, getElement, appendClipElement } from '../../common/utils/helper';\nimport { findlElement, drawSymbol, markerAnimate, CircleOption } from '../../common/utils/helper';\nimport { PathOption, Size } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { pointRender } from '../../common/model/constants';\nimport { MarkerExplode } from './marker-explode';\nimport { getSaturationColor } from '../../common/utils/helper';\nexport var markerShapes = [\"Circle\", \"Triangle\", \"Diamond\", \"Rectangle\", \"Pentagon\", \"InvertedTriangle\", \"VerticalLine\", \"Cross\", \"Plus\", \"HorizontalLine\"];\n/**\n * Marker module used to render the marker for line type series.\n */\nvar Marker = /** @class */ (function (_super) {\n __extends(Marker, _super);\n /**\n * Constructor for the marker module.\n *\n * @private\n */\n function Marker(chart) {\n var _this = _super.call(this, chart) || this;\n _this.addEventListener();\n return _this;\n }\n /**\n * Render the marker for series.\n *\n * @returns {void}\n * @private\n */\n Marker.prototype.render = function (series) {\n var _this = this;\n var redraw = series.chart.redraw;\n this.createElement(series, redraw);\n var _loop_1 = function (point) {\n if (point.visible && point.symbolLocations && point.symbolLocations.length) {\n point.symbolLocations.map(function (location, index) {\n if (series.marker.shape !== 'None') {\n _this.renderMarker(series, point, location, index, redraw);\n }\n });\n }\n };\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n _loop_1(point);\n }\n };\n Marker.prototype.renderMarker = function (series, point, location, index, redraw) {\n var seriesIndex = series.index === undefined ? series.category : series.index;\n var marker = series.marker;\n series.marker.shape = series.marker.shape ? series.marker.shape : markerShapes[seriesIndex % 10];\n var border = {\n color: marker.border.color,\n width: marker.border.width\n };\n var borderColor = marker.border.color;\n var previousLocation;\n var previousPath;\n var circlePath;\n var shapeOption;\n location.x = location.x + marker.offset.x;\n location.y = location.y - marker.offset.y;\n var isBoxPlot = series.type === 'BoxAndWhisker';\n var fill = marker.fill || ((isBoxPlot || series.marker.isFilled) ? point.interior || series.interior : '#ffffff');\n var markerElement;\n var parentElement = isBoxPlot ?\n findlElement(series.seriesElement.childNodes, 'Series_' + series.index + '_Point_' + point.index)\n : series.symbolElement;\n border.color = borderColor || series.setPointColor(point, series.interior);\n var symbolId = this.elementId + '_Series_' + seriesIndex + '_Point_' + point.index + '_Symbol' +\n (index ? index : '');\n var argsData = {\n cancel: false, name: pointRender, series: series, point: point,\n fill: point.isEmpty ? (series.emptyPointSettings.fill || fill) : fill,\n border: {\n color: series.type === 'BoxAndWhisker' ?\n (!isNullOrUndefined(borderColor) && borderColor !== 'transparent') ? borderColor :\n getSaturationColor(fill, -0.6)\n : border.color,\n width: border.width\n },\n height: marker.height, width: marker.width, shape: marker.shape\n };\n argsData.border = series.setBorderColor(point, { width: argsData.border.width, color: argsData.border.color });\n if (!series.isRectSeries || series.type === 'BoxAndWhisker') {\n this.chart.trigger(pointRender, argsData);\n point.color = argsData.fill;\n }\n point.color = argsData.fill;\n if (!argsData.cancel) {\n var y = void 0;\n if (series.type === 'RangeArea' || series.type === 'RangeColumn' || series.drawType === 'RangeColumn'\n || series.type === 'SplineRangeArea' || series.type === 'RangeStepArea') {\n y = index ? point.low : point.high;\n }\n else if (isBoxPlot) {\n y = point.outliers[index];\n }\n else {\n y = point.y;\n }\n var markerFill = argsData.point.marker.fill || argsData.fill;\n var markerBorder = void 0;\n if (!isNullOrUndefined(argsData.point.marker.border)) {\n markerBorder = {\n color: argsData.point.marker.border.color || argsData.border.color,\n width: argsData.point.marker.border.width || argsData.border.width\n };\n }\n else {\n markerBorder = { color: argsData.border.color, width: argsData.border.width };\n }\n var markerWidth = argsData.point.marker.width || argsData.width;\n var markerHeight = argsData.point.marker.height || argsData.height;\n var markerOpacity = argsData.point.marker.opacity || marker.opacity;\n var markerShape = argsData.point.marker.shape || argsData.shape;\n var imageURL = argsData.point.marker.imageUrl || marker.imageUrl;\n shapeOption = new PathOption(symbolId, markerFill, markerBorder.width, markerBorder.color, markerOpacity, null);\n if ((parentElement !== undefined && parentElement !== null) || this.chart.enableCanvas) {\n if (redraw && getElement(shapeOption.id)) {\n markerElement = getElement(shapeOption.id);\n circlePath = markerShape === 'Circle' ? 'c' : '';\n previousLocation = {\n x: +markerElement.getAttribute(circlePath + 'x'), y: +markerElement.getAttribute(circlePath + 'y')\n };\n previousPath = markerElement.getAttribute('d');\n }\n markerElement = drawSymbol(location, markerShape, new Size(markerWidth, markerHeight), imageURL, shapeOption, point.x.toString() + ':' + y.toString(), this.chart.renderer, series.clipRect);\n if (markerElement) {\n markerElement.setAttribute('role', 'img');\n markerElement.setAttribute('aria-label', (point.x + ': ' + point.y + ', ' + series.name));\n }\n appendChildElement(this.chart.enableCanvas, parentElement, markerElement, redraw, true, circlePath + 'x', circlePath + 'y', previousLocation, previousPath, false, false, null, series.chart.duration);\n }\n point.marker = {\n border: markerBorder, fill: markerFill, height: markerHeight,\n visible: true, shape: markerShape, width: markerWidth, imageUrl: imageURL\n };\n }\n else {\n location = null;\n point.marker = {\n visible: false\n };\n }\n };\n Marker.prototype.createElement = function (series, redraw) {\n var markerClipRect;\n var marker = series.marker;\n // 8 for extend border value 5 for extend size value\n var explodeValue = marker.border.width + 8 + 5;\n var render = series.chart.svgRenderer;\n var index = series.index === undefined ? series.category : series.index;\n var options;\n var transform = series.chart.chartAreaType === 'Cartesian' ? 'translate(' + series.clipRect.x + ',' + (series.clipRect.y) + ')' : '';\n if (marker.visible) {\n var markerHeight = (marker.height + explodeValue) / 2;\n var markerWidth = (marker.width + explodeValue) / 2;\n if (series.chart.chartAreaType === 'Cartesian') {\n var isZoomed = series.xAxis.zoomFactor < 1 || series.xAxis.zoomPosition > 0;\n options = new RectOption(this.elementId + '_ChartMarkerClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: isZoomed ? 0 : -markerWidth, y: -markerHeight,\n width: series.clipRect.width + (isZoomed ? 0 : markerWidth * 2),\n height: series.clipRect.height + markerHeight * 2\n });\n markerClipRect = appendClipElement(redraw, options, render);\n }\n else {\n options = new CircleOption(this.elementId + '_ChartMarkerClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, series.clipRect.width / 2 + series.clipRect.x, series.clipRect.height / 2 + series.clipRect.y, series.chart.radius + Math.max(markerHeight, markerWidth));\n markerClipRect = appendClipElement(redraw, options, render, 'drawCircularClipPath');\n }\n options = {\n 'id': this.elementId + 'SymbolGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + this.elementId + '_ChartMarkerClipRect_' + index + ')'\n };\n series.symbolElement = render.createGroup(options);\n series.symbolElement.appendChild(markerClipRect);\n if (this.chart.enableCanvas) {\n var element = document.getElementById(this.chart.element.id + '_tooltip_svg');\n element.appendChild(series.symbolElement);\n }\n }\n };\n Marker.prototype.getRangeLowPoint = function (region, series) {\n var x = region.x;\n var y = region.y;\n if (series.chart.requireInvertedAxis) {\n y += region.height / 2;\n x += series.yAxis.isAxisInverse ? region.width : 0;\n }\n else {\n y += series.yAxis.isAxisInverse ? 0 : region.height;\n x += region.width / 2;\n }\n return { x: x, y: y };\n };\n /**\n * Animates the marker.\n *\n * @returns {void}\n * @private\n */\n Marker.prototype.doMarkerAnimation = function (series) {\n if (!(series.type === 'Scatter' || series.type === 'Bubble' || series.type === 'Candle' || series.type === 'Hilo' ||\n series.type === 'HiloOpenClose' || (series.chart.chartAreaType === 'PolarRadar' && (series.drawType === 'Scatter')))) {\n var markerElements = series.symbolElement.childNodes;\n var delay = series.animation.delay + series.animation.duration;\n var duration = series.chart.animated ? series.chart.duration : 200;\n var j = 1;\n var incFactor = (series.type === 'RangeArea' || series.type === 'RangeColumn' || series.type === 'SplineRangeArea' || series.type === 'RangeStepArea') ? 2 : 1;\n for (var i = 0; i < series.points.length; i++) {\n if (series.points[i].symbolLocations) {\n if (!series.points[i].symbolLocations.length || !markerElements[j]) {\n continue;\n }\n markerAnimate(markerElements[j], delay, duration, series, i, series.points[i].symbolLocations[0], false);\n if (incFactor === 2) {\n var lowPoint = this.getRangeLowPoint(series.points[i].regions[0], series);\n markerAnimate(markerElements[j + 1], delay, duration, series, i, lowPoint, false);\n }\n j += incFactor;\n }\n }\n }\n };\n return Marker;\n}(MarkerExplode));\nexport { Marker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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-vars */\n/* eslint-disable max-len */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { Property, Complex, ChildProperty } from '@syncfusion/ej2-base';\nimport { measureText, Rect, TextOption, Size, PathOption } from '@syncfusion/ej2-svg-base';\nimport { Font, Border, Margin, ContainerPadding } from '../model/base';\nimport { subtractThickness, Thickness, drawSymbol, ChartLocation, titlePositionX, getTitle, textTrim, getTextAnchor } from '../utils/helper';\nimport { RectOption, textElement, stringToNumber } from '../utils/helper';\nimport { removeElement, showTooltip, getElement, appendChildElement } from '../utils/helper';\n/**\n * Configures the location for the legend.\n */\nvar Location = /** @class */ (function (_super) {\n __extends(Location, _super);\n function Location() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Location.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Location.prototype, \"y\", void 0);\n return Location;\n}(ChildProperty));\nexport { Location };\n/**\n * Configures the legends in charts.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Location)\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property('Auto')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('Series')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(8)\n ], LegendSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"itemPadding\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"14px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Complex({}, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, Margin)\n ], LegendSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, ContainerPadding)\n ], LegendSettings.prototype, \"containerPadding\", void 0);\n __decorate([\n Property(8)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"toggleVisibility\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"enableHighlight\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"description\", void 0);\n __decorate([\n Property(3)\n ], LegendSettings.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"14px\", fontStyle: 'Normal', fontWeight: '600', color: null }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Top')\n ], LegendSettings.prototype, \"titlePosition\", void 0);\n __decorate([\n Property('Normal')\n ], LegendSettings.prototype, \"textWrap\", void 0);\n __decorate([\n Property('Ellipsis')\n ], LegendSettings.prototype, \"textOverflow\", void 0);\n __decorate([\n Property(100)\n ], LegendSettings.prototype, \"maximumTitleWidth\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"maximumLabelWidth\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"enablePages\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"isInversed\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"reverse\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Legend base class for Chart and Accumulation chart.\n *\n * @private\n */\nvar BaseLegend = /** @class */ (function () {\n /**\n * Constructor for the dateTime module.\n *\n * @private\n */\n function BaseLegend(chart) {\n this.maxItemHeight = 0;\n this.rowHeights = [];\n this.pageHeights = [];\n this.columnHeights = [];\n this.pageXCollections = []; // pages of x locations\n this.chartRowCount = 1;\n this.legendTitleCollections = [];\n this.legendRegions = [];\n this.pagingRegions = [];\n this.chart = chart;\n this.legend = chart.legendSettings;\n this.legendID = chart.element.id + '_chart_legend';\n this.isChartControl = (chart.getModuleName() === 'chart');\n this.isAccChartControl = (chart.getModuleName() === 'accumulationchart');\n this.isBulletChartControl = (chart.getModuleName() === 'bulletChart');\n this.isStockChartControl = (chart.getModuleName() === 'stockChart');\n this.bulletChart = this.chart;\n this.fivePixel = 5;\n this.rowCount = 0;\n this.pageButtonSize = 8;\n this.maxColumns = 0;\n this.maxWidth = 0;\n this.currentPage = 1;\n this.backwardArrowOpacity = 0;\n this.forwardArrowOpacity = 1;\n this.arrowWidth = (2 * (this.fivePixel + this.pageButtonSize + this.fivePixel));\n this.arrowHeight = this.arrowWidth;\n this.isTop = false;\n this.isTitle = false;\n this.currentPageNumber = 1;\n }\n /**\n * Calculate the bounds for the legends.\n *\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.calculateLegendBounds = function (rect, availableSize, maxLabelSize) {\n var legend = this.legend;\n var defaultValue = (this.isBulletChartControl) ? '40%' : '20%';\n this.getPosition(legend.position, availableSize);\n this.legendBounds = new Rect(rect.x, rect.y, 0, 0);\n this.isVertical = (this.position === 'Left' || this.position === 'Right');\n this.itemPadding = this.legend.itemPadding ? this.legend.itemPadding : this.isVertical ? this.legend.padding : 20;\n if (this.isVertical) {\n this.legendBounds.height = stringToNumber(legend.height, availableSize.height - (rect.y - this.chart.margin.top)) || rect.height;\n this.legendBounds.width = stringToNumber(legend.width || defaultValue, availableSize.width);\n }\n else {\n this.legendBounds.width = stringToNumber(legend.width, availableSize.width) || rect.width;\n this.legendBounds.height = stringToNumber(legend.height || defaultValue, availableSize.height);\n }\n this.library.getLegendBounds(availableSize, this.legendBounds, legend);\n if (!this.isBulletChartControl) {\n this.legendBounds.width += (this.legend.containerPadding.left + this.legend.containerPadding.right);\n this.legendBounds.height += (this.legend.containerPadding.top + this.legend.containerPadding.bottom);\n }\n this.getLocation(this.position, legend.alignment, this.legendBounds, rect, availableSize, maxLabelSize);\n };\n /**\n * To find legend position based on available size for chart and accumulation chart\n *\n * @param position\n * @param availableSize\n * @param position\n * @param availableSize\n * @returns {void}\n */\n BaseLegend.prototype.getPosition = function (position, availableSize) {\n var chart = this.chart;\n var accumulation = this.chart;\n if (this.isChartControl || this.isBulletChartControl || this.isStockChartControl) {\n this.position = (position !== 'Auto') ? position : 'Bottom';\n }\n else {\n if (position === 'Auto' && ((chart || accumulation).visibleSeries && (chart || accumulation).visibleSeries[0].type === 'Funnel' || (chart || accumulation).visibleSeries[0].type === 'Pyramid')) {\n position = 'Top';\n }\n this.position = (position !== 'Auto') ? position :\n (availableSize.width > availableSize.height ? 'Right' : 'Bottom');\n }\n };\n /**\n * To set bounds for chart and accumulation chart\n *\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @returns {void}\n */\n BaseLegend.prototype.setBounds = function (computedWidth, computedHeight, legend, legendBounds) {\n var titleHeight = legend.title && legend.titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n if (this.isVertical && this.isPaging && !legend.enablePages && !this.isBulletChartControl) {\n titleHeight = legend.title && legend.titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n titleHeight += (this.pageButtonSize + this.fivePixel);\n }\n computedWidth = Math.min(computedWidth, legendBounds.width);\n computedHeight = Math.min(computedHeight, legendBounds.height);\n if (legend.mode === 'Gradient') {\n legendBounds.width = legend.width ? legendBounds.width : this.isVertical ? computedWidth : 0.75 * legendBounds.width;\n legendBounds.height = legend.height ? legendBounds.height : this.isVertical ? 0.75 * legendBounds.height : computedHeight;\n }\n else {\n legendBounds.width = !legend.width ? computedWidth : legendBounds.width;\n legendBounds.height = !legend.height ? computedHeight : legendBounds.height;\n }\n if (!this.isBulletChartControl) {\n if (this.isTop && legend.titleStyle.textOverflow !== 'None') {\n this.calculateLegendTitle(legend, legendBounds);\n legendBounds.height += legend.titleStyle.textOverflow === 'Wrap' && this.legendTitleCollections.length > 1 ?\n (this.legendTitleSize.height - (this.legendTitleSize.height / this.legendTitleCollections.length)) : 0;\n }\n }\n this.rowCount = Math.max(1, Math.ceil((legendBounds.height - legend.padding - titleHeight) /\n (this.maxItemHeight + legend.padding)));\n };\n /**\n * To find legend location based on position, alignment for chart and accumulation chart\n *\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n */\n BaseLegend.prototype.getLocation = function (position, alignment, legendBounds, rect, availableSize, maxLabelSize) {\n var padding = this.legend.border.width;\n var isBulletChart = this.isBulletChartControl;\n var bulletChart = this.bulletChart;\n var labelIns = bulletChart.labelPosition === 'Inside';\n var ticklIns = bulletChart.tickPosition === 'Inside';\n var isVertical = bulletChart.orientation === 'Vertical';\n var categoryFieldValue = (isBulletChart && bulletChart.categoryField !== '') ?\n maxLabelSize.width + this.chart.border.width + padding * 3 : 0;\n var marginBottom = this.chart.margin.bottom;\n var legendHeight = legendBounds.height + padding + this.legend.margin.top + this.legend.margin.bottom;\n var legendWidth = legendBounds.width + padding + this.legend.margin.left + this.legend.margin.right;\n if (position === 'Bottom') {\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = rect.y + (rect.height - legendHeight) + padding + this.legend.margin.top;\n legendBounds.y += (isBulletChart && !bulletChart.opposedPosition && !labelIns && !ticklIns\n && !isVertical) ? bulletChart.majorTickLines.height + marginBottom + this.legend.border.width + padding * 2 :\n (isVertical && bulletChart.categoryField !== '') ? maxLabelSize.height + padding * 2 : 0;\n subtractThickness(rect, new Thickness(0, 0, 0, legendHeight));\n }\n else if (position === 'Top') {\n var axisTextSize = void 0;\n if (this.isChartControl) {\n axisTextSize = measureText('100', this.chart.verticalAxes[0].labelStyle, this.chart.themeStyle.legendLabelFont);\n }\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = rect.y + padding + this.legend.margin.top;\n legendBounds.y -= (isBulletChart && bulletChart.opposedPosition && !labelIns && !ticklIns &&\n !isVertical) ? bulletChart.majorTickLines.height + this.chart.margin.top : 0;\n legendHeight -= (isBulletChart) ? -padding * 2 : (this.isChartControl ? -padding * 2 - axisTextSize.height / 2 : 0);\n subtractThickness(rect, new Thickness(0, 0, legendHeight, 0));\n }\n else if (position === 'Right') {\n legendBounds.x = rect.x + (rect.width - legendBounds.width) - this.legend.margin.right;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n legendWidth += (isBulletChart && bulletChart.opposedPosition && !labelIns && !ticklIns &&\n isVertical) ? (this.chart.margin.left + this.chart.margin.right + bulletChart.majorTickLines.height) : 0;\n subtractThickness(rect, new Thickness(0, legendWidth, 0, 0));\n }\n else if (position === 'Left') {\n legendBounds.x = legendBounds.x + this.legend.margin.left;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n legendWidth += (isBulletChart && !bulletChart.opposedPosition && !labelIns && !ticklIns &&\n isVertical) ? (legendBounds.x - this.chart.margin.left + padding + bulletChart.majorTickLines.height) :\n (bulletChart.orientation !== 'Vertical' && bulletChart.categoryField !== '') ? categoryFieldValue : 0;\n subtractThickness(rect, new Thickness(legendWidth, 0, 0, 0));\n }\n else {\n legendBounds.x = this.legend.location.x;\n legendBounds.y = this.legend.location.y;\n subtractThickness(rect, new Thickness(0, 0, 0, 0));\n }\n };\n /**\n * To find legend alignment for chart and accumulation chart\n *\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n */\n BaseLegend.prototype.alignLegend = function (start, size, legendSize, alignment) {\n switch (alignment) {\n case 'Far':\n start = (size - legendSize) - start;\n break;\n case 'Center':\n start = ((size - legendSize) / 2);\n break;\n }\n return start;\n };\n /**\n * Renders the legend.\n *\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.renderLegend = function (chart, legend, legendBounds, redraw) {\n var titleHeight = 0;\n var titlePlusArrowWidth = 0;\n var pagingLegendBounds = new Rect(0, 0, 0, 0);\n var requireLegendBounds = new Rect(0, 0, 0, 0);\n var firstLegend = this.findFirstLegendPosition(this.legendCollections);\n var padding = legend.padding;\n this.itemPadding = this.isBulletChartControl ? legend.padding : this.itemPadding;\n var isPaging = legend.enablePages;\n var titlePosition = legend.titlePosition;\n var upArrowHeight = this.isPaging && !legend.enablePages && this.isVertical ? this.pageButtonSize : 0;\n var legendGroup = chart.renderer.createGroup({ id: this.legendID + '_g' });\n var legendTranslateGroup = this.createLegendElements(chart, legendBounds, legendGroup, legend, this.legendID, redraw);\n this.legendRegions = [];\n this.chartRowCount = 1;\n var maxHeight = 0;\n titleHeight = !this.isTitle ? 0 : (this.isTop || this.isVertical ? this.legendTitleSize.height : 0);\n if (this.isChartControl || (this.isAccChartControl && !this.isVertical)) {\n var pageCount = 1;\n var rowHeights = this.rowHeights[0] + padding;\n for (var i = 1; i < this.rowHeights.length; i++) {\n if ((rowHeights + this.rowHeights[i] + padding) > (this.legendBounds.height - this.pageButtonSize - this.maxItemHeight / 2)) {\n this.pageHeights[pageCount - 1] = rowHeights + titleHeight;\n pageCount++;\n rowHeights = 0;\n }\n rowHeights += (this.rowHeights[i] + (this.isVertical ? this.itemPadding : padding));\n }\n this.pageHeights[pageCount - 1] = rowHeights + titleHeight;\n this.totalPages = pageCount;\n }\n for (var i = 0; i < this.legendCollections.length; i++) {\n if (this.legendCollections[i].text !== '') {\n maxHeight = Math.max(this.legendCollections[i].textSize.height, maxHeight);\n break;\n }\n else {\n continue;\n }\n }\n if (!this.isChartControl && !this.isAccChartControl) {\n this.maxItemHeight = Math.max(maxHeight, legend.shapeHeight);\n }\n // For new legend navigation\n if (!isPaging && this.isPaging && !this.isVertical) {\n titlePlusArrowWidth = !this.isTitle ? 0 : titlePosition === 'Left' ? this.legendTitleSize.width : 0;\n titlePlusArrowWidth += (this.pageButtonSize + (2 * this.fivePixel));\n }\n else if (this.isTitle && !this.isPaging && !this.isVertical) {\n titlePlusArrowWidth = titlePosition === ((!this.isRtlEnable) ? 'Left' : 'Right') ? (this.fivePixel + this.legendTitleSize.width) : 0;\n }\n if (chart.legendSettings.mode === 'Gradient' && this.legendCollections.length > 1) {\n this.getLinearLegend(legendBounds, chart, legend, legendTranslateGroup);\n this.totalPages = 1;\n }\n else if (firstLegend !== this.legendCollections.length) {\n var legendSeriesGroup = void 0; // legendItem group for each series group element\n var count = 0;\n var previousLegend = this.legendCollections[firstLegend];\n // starting shape center x,y position && to resolve lint error used new line for declaration\n var startPadding = this.isBulletChartControl ? 0 : titlePlusArrowWidth + padding + (legend.shapeWidth / 2) + legend.containerPadding.left;\n var xLocation = this.isBulletChartControl ? legendBounds.x + titlePlusArrowWidth + padding + (legend.shapeWidth / 2) :\n (!this.isRtlEnable) ? legendBounds.x + startPadding : legendBounds.x + ((this.chart.getModuleName() === 'accumulationchart' && this.isVertical) ? this.maxWidth : legendBounds.width) - startPadding;\n var start = new ChartLocation(xLocation, this.isBulletChartControl ? legendBounds.y + titleHeight + upArrowHeight + padding + (this.maxItemHeight / 2) :\n legendBounds.y + titleHeight + upArrowHeight + padding + (this.maxItemHeight / 2) + legend.containerPadding.top);\n var anchor = chart.isRtlEnabled || chart.enableRtl ? 'end' : 'start';\n var textOptions = new TextOption('', start.x, start.y, anchor);\n var textPadding = legend.shapePadding + this.itemPadding + legend.shapeWidth;\n // initialization for totalPages legend click totalpage again calculate\n this.totalPages = this.totalPages = (this.isAccChartControl || this.isChartControl || this.isBulletChartControl || this.isStockChartControl) ? this.totalPages : 0;\n this.pageXCollections = [];\n this.legendCollections[firstLegend].location = start;\n var legendIndex = void 0;\n if (!legend.enablePages && this.isPaging) {\n var x = start.x - this.fivePixel;\n var y = start.y - this.fivePixel;\n var leftSpace = this.isTitle && !this.isVertical && titlePosition === 'Left' ?\n this.legendTitleSize.width + this.fivePixel : 0;\n var bottomSapce = this.isVertical ? (this.pageButtonSize) + Math.abs(y - legendBounds.y) : 0;\n var rightSpace = this.isTitle && !this.isVertical && titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0;\n rightSpace += this.isVertical ? 0 : (this.fivePixel + this.pageButtonSize + this.fivePixel);\n pagingLegendBounds = new Rect(x, y, legendBounds.width - rightSpace - leftSpace, legendBounds.height - bottomSapce);\n requireLegendBounds = pagingLegendBounds;\n }\n else {\n requireLegendBounds = legendBounds;\n }\n var legendOption = void 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n legendOption = this.legendCollections[i];\n legendIndex = !this.isReverse ? count : (this.legendCollections.length - 1) - count;\n if (this.chart.getModuleName() === 'accumulationchart') {\n legendOption.fill = (this.chart || this.chart || this.chart).visibleSeries[0].points[legendOption.pointIndex].color;\n }\n if (this.chart.getModuleName() === 'stockChart') {\n legendOption.type = this.chart.visibleSeries[count].type;\n }\n this.accessbilityText = (this.isBulletChartControl) ? 'Legend of bullet chart' + '' + legendOption.text\n : 'Click to show or hide the ' + legendOption.text + ' series';\n if (legendOption.render && legendOption.text && legendOption.text !== '') {\n legendSeriesGroup = chart.renderer.createGroup({\n id: this.legendID + this.generateId(legendOption, '_g_', legendIndex)\n });\n if (legendSeriesGroup) {\n legendSeriesGroup.setAttribute('tabindex', i === 0 ? '0' : '');\n legendSeriesGroup.setAttribute('aria-label', legend.description || ((legendOption.visible ? 'Show ' : 'Hide ') + legendOption.text));\n legendSeriesGroup.setAttribute('aria-pressed', legendOption.visible ? 'true' : 'false');\n }\n this.library.getRenderPoint(legendOption, start, textPadding, previousLegend, requireLegendBounds, count, firstLegend);\n this.renderSymbol(legendOption, legendSeriesGroup, legendIndex);\n this.renderText(chart, legendOption, legendSeriesGroup, textOptions, count, legendIndex);\n if (legendSeriesGroup) {\n legendSeriesGroup.style.cssText =\n 'pointer-events: bounding-box; cursor: ' + ((!legend.toggleVisibility && (chart.selectionMode === 'None' ||\n chart.highlightMode === 'None' ||\n chart.selectionMode === 'None') || this.isBulletChartControl) ? 'auto' : 'pointer');\n }\n if (legendTranslateGroup) {\n legendTranslateGroup.appendChild(legendSeriesGroup);\n }\n previousLegend = legendOption;\n }\n count++;\n }\n this.totalPages = (this.isPaging && !this.isBulletChartControl && !this.legend.enablePages && !this.isVertical &&\n this.totalPages > this.chartRowCount) ? this.chartRowCount : this.totalPages;\n if (this.isPaging && this.totalPages > 1) {\n this.renderPagingElements(chart, legendBounds, textOptions, legendGroup);\n }\n else {\n this.totalPages = 1;\n }\n }\n appendChildElement(chart.enableCanvas, chart.svgObject, legendGroup, redraw);\n };\n /** @private */\n BaseLegend.prototype.getLinearLegend = function (legendBounds, chart, legend, legendTranslateGroup) {\n var xmlns = 'http://www.w3.org/2000/svg';\n var previousLegend = this.legendCollections[0];\n var nextLegend = this.legendCollections[1];\n var defElement = this.chart.renderer.createDefs();\n var gradientLegendCount = 0;\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var fillColors = [];\n var numberItems = [];\n if (legend.title) {\n if (!this.isVertical) {\n if (legend.titlePosition === 'Left') {\n legendBounds.x += this.legendTitleSize.width;\n legendBounds.width -= this.legendTitleSize.width;\n }\n else if (legend.titlePosition === 'Right') {\n legendBounds.width -= this.legendTitleSize.width;\n }\n else if (legend.titlePosition === 'Top') {\n legendBounds.y += this.legendTitleSize.height;\n legendBounds.height -= this.legendTitleSize.height;\n }\n }\n else {\n legendBounds.y += this.legendTitleSize.height;\n legendBounds.height -= this.legendTitleSize.height;\n }\n }\n for (var _i = 0, _a = this.chart.rangeColorSettings; _i < _a.length; _i++) {\n var colorMap = _a[_i];\n if (numberItems.indexOf(colorMap.start) < 0) {\n numberItems.push(colorMap.start);\n }\n if (colorMap.colors.length > 2) {\n var diffValue = (colorMap.end - colorMap.start);\n var colorsLength = colorMap.colors.length - 1;\n if (diffValue > 0) {\n diffValue = diffValue / colorsLength;\n for (var index = 1; index < colorsLength; index++) {\n var calculatedValue = colorMap.start + (diffValue * index);\n numberItems.push(calculatedValue);\n }\n }\n else {\n for (var index = 1; index < colorsLength; index++) {\n numberItems.push(colorMap.start);\n }\n }\n }\n if (numberItems.indexOf(colorMap.end) < 0) {\n numberItems.push(colorMap.end);\n }\n for (var _b = 0, _c = colorMap.colors; _b < _c.length; _b++) {\n var fillColor = _c[_b];\n if (fillColors.indexOf(fillColor) < 0) {\n fillColors.push(fillColor);\n }\n }\n if (colorMap.colors.length > 0 && colorMap.colors.length < 2) {\n fillColors.push(colorMap.colors[0]);\n }\n }\n var x1 = this.isRtlEnable && !this.isVertical ? '100%' : '0%';\n var x2 = this.isVertical || this.isRtlEnable ? '0%' : '100%';\n var y2 = this.isVertical ? '100%' : '0%';\n linerGradientEle.setAttribute('id', this.generateId(previousLegend, 'linearGradient', gradientLegendCount));\n linerGradientEle.setAttribute('x1', x1);\n linerGradientEle.setAttribute('y1', '0%');\n linerGradientEle.setAttribute('x2', x2);\n linerGradientEle.setAttribute('y2', y2);\n var full = numberItems[numberItems.length - 1] - numberItems[0];\n for (var b = 0; b < fillColors.length; b++) {\n var offsetValue = numberItems[b] - numberItems[0];\n offsetValue = offsetValue / full;\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', offsetValue.toString());\n stopEle.setAttribute('stop-color', fillColors[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n var startLabel = previousLegend.text.toString();\n var endLabel = nextLegend.text.toString();\n var startTextSize = measureText(startLabel, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var endTextSize = measureText(endLabel, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var textWidth = startTextSize.width > endTextSize.width ? startTextSize.width : endTextSize.width;\n var textHeight = startTextSize.height > endTextSize.height ? startTextSize.height : endTextSize.height;\n var otherSpaces = (2 * textWidth) + (4 * legend.padding);\n var linearBarWidth = legendBounds.width;\n var linearBarHeight = legendBounds.height;\n var xValue = legendBounds.x + textWidth + (2 * legend.padding);\n var yValue = legendBounds.y + legend.padding;\n var startLabelY;\n var endLabelY;\n var startLabelX;\n var endLabelX;\n if (this.isVertical) {\n otherSpaces = (2 * textHeight) + (4 * legend.padding);\n linearBarWidth = legendBounds.width - (2 * legend.padding);\n linearBarHeight = legendBounds.height - otherSpaces;\n xValue = legendBounds.x + legend.padding;\n yValue = legendBounds.y + textHeight + (2 * legend.padding);\n startLabelY = legendBounds.y + legend.padding + textHeight;\n endLabelY = yValue + linearBarHeight + textHeight;\n startLabelX = (legendBounds.x + (legendBounds.width * 0.5)) - (textWidth * 0.5);\n endLabelX = startLabelX;\n if (linearBarWidth > 30) {\n var diffWidth = linearBarWidth - 30;\n linearBarWidth = 30;\n xValue = xValue + (diffWidth / 2);\n }\n }\n else {\n linearBarWidth = legendBounds.width - otherSpaces;\n linearBarHeight = legendBounds.height - (2 * legend.padding);\n startLabelX = legendBounds.x + ((!this.isRtlEnable) ? legend.padding + (textWidth - startTextSize.width) :\n linearBarWidth + (3 * legend.padding) + textWidth);\n endLabelX = legendBounds.x + ((!this.isRtlEnable) ? linearBarWidth + (3 * legend.padding) + textWidth :\n legend.padding + (textWidth - endTextSize.width));\n startLabelY = legendBounds.y + (legendBounds.height * 0.5) + (textHeight * 0.25);\n endLabelY = startLabelY;\n if (linearBarHeight > 30) {\n var diffHeight = linearBarHeight - 30;\n linearBarHeight = 30;\n yValue = yValue + (diffHeight / 2);\n }\n }\n var anchor = chart.enableRtl ? 'end' : '';\n var textOptions = new TextOption('', startLabelX, startLabelY, anchor, startLabel);\n var hiddenColor = '#D3D3D3';\n textOptions.id = this.legendID + this.generateId(previousLegend, '_text_', 1);\n var fontcolor = previousLegend.visible ? legend.textStyle.color || chart.themeStyle.legendLabelFont.color : hiddenColor;\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, legendTranslateGroup, false, false, false, false, \n // tslint:disable-next-line:align\n null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, null, null, null, null, this.chart.themeStyle.legendLabelFont);\n textOptions = new TextOption('', endLabelX, endLabelY, anchor, endLabel);\n textOptions.id = this.legendID + this.generateId(previousLegend, '_text_', 2);\n textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, legendTranslateGroup, false, false, false, false, \n // tslint:disable-next-line:align\n null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, null, null, null, null, this.chart.themeStyle.legendLabelFont);\n var gradientLegend = chart.renderer.drawRectangle({\n width: linearBarWidth,\n height: linearBarHeight,\n x: xValue,\n y: yValue,\n fill: 'url(#' + this.generateId(previousLegend, 'linearGradient', gradientLegendCount) + ')'\n });\n defElement.appendChild(linerGradientEle);\n legendTranslateGroup.appendChild(defElement);\n legendTranslateGroup.appendChild(gradientLegend);\n };\n /**\n * To find first valid legend text index for chart and accumulation chart\n *\n * @param legendCollection\n * @returns {number}\n * @private\n */\n BaseLegend.prototype.findFirstLegendPosition = function (legendCollection) {\n var count = 0;\n for (var _i = 0, legendCollection_1 = legendCollection; _i < legendCollection_1.length; _i++) {\n var legend = legendCollection_1[_i];\n if (legend.render && legend.text && legend.text !== '') {\n break;\n }\n count++;\n }\n return count;\n };\n /**\n * To get the legend title text width and height.\n *\n * @param legend\n * @param legendBounds\n */\n BaseLegend.prototype.calculateLegendTitle = function (legend, legendBounds) {\n if (legend.title) {\n this.isTop = legend.titlePosition === 'Top';\n var padding = legend.titleStyle.textOverflow === 'Trim' ? 2 * legend.padding : 0;\n if (this.isTop || this.isVertical) {\n this.legendTitleCollections = getTitle(legend.title, legend.titleStyle, (legendBounds.width - padding), this.chart.themeStyle.legendTitleFont);\n }\n else {\n this.legendTitleCollections[0] = textTrim(legend.maximumTitleWidth, legend.title, legend.titleStyle, this.chart.themeStyle.legendTitleFont);\n }\n var text = this.isTop ? legend.title : this.legendTitleCollections[0];\n this.legendTitleSize = measureText(text, legend.titleStyle, this.chart.themeStyle.legendTitleFont);\n this.legendTitleSize.height *= this.legendTitleCollections.length;\n }\n else {\n this.legendTitleSize = new Size(0, 0);\n }\n };\n /**\n * Render the legend title\n *\n * @param chart\n * @param legend\n * @param legendBounds\n * @param legendGroup\n */\n BaseLegend.prototype.renderLegendTitle = function (chart, legend, legendBounds, legendGroup) {\n var padding = legend.padding;\n var alignment = legend.titleStyle.textAlignment;\n this.isTop = legend.titlePosition === 'Top';\n var anchor = getTextAnchor(legend.titleStyle.textAlignment, chart.enableRtl);\n var x = titlePositionX(legendBounds, legend.titleStyle);\n anchor = this.isTop || this.isVertical ? anchor : (chart.enableRtl) ? 'end' : '';\n x = alignment === 'Near' ? (x + padding) : alignment === 'Far' ? (x - padding) : x;\n x = (this.isTop || this.isVertical) ? x : ((legendBounds.x) + (legend.titlePosition === 'Left' ? 5 :\n (legendBounds.width - this.legendTitleSize.width - 5)));\n var topPadding = (legendBounds.height / 2) + (this.legendTitleSize.height / 4);\n var y = legendBounds.y + (!this.isTop && !this.isVertical ? topPadding :\n (this.legendTitleSize.height / this.legendTitleCollections.length));\n var legendTitleTextOptions = new TextOption(this.legendID + '_title', x, y, anchor, this.legendTitleCollections);\n textElement(chart.renderer, legendTitleTextOptions, legend.titleStyle, legend.titleStyle.color || this.chart.themeStyle.legendTitleFont.color, legendGroup, null, null, null, null, null, null, null, null, null, null, this.chart.themeStyle.legendTitleFont);\n };\n /**\n * To create legend rendering elements for chart and accumulation chart\n *\n * @param chart\n * @param legendBounds\n * @param legendGroup\n * @param legend\n * @param id\n * @param redraw\n */\n BaseLegend.prototype.createLegendElements = function (chart, legendBounds, legendGroup, legend, id, redraw) {\n var padding = legend.padding;\n var options = new RectOption(id + '_element', legend.background, legend.border, legend.opacity, legendBounds);\n var legendItemsGroup = chart.renderer.createGroup({ id: id + '_collections' });\n var isCanvas = this.isStockChartControl ? false : chart.enableCanvas;\n var clippath = chart.renderer.createClipPath({ id: id + '_clipPath' });\n options.width = (this.isRtlEnable && this.chart.getModuleName() === 'accumulationchart' && this.isVertical) ? this.maxWidth : legendBounds.width;\n if (legendGroup) {\n legendGroup.appendChild(chart.renderer.drawRectangle(options));\n }\n else {\n chart.renderer.drawRectangle(options);\n }\n if (legend.title) {\n this.renderLegendTitle(chart, legend, legendBounds, legendGroup);\n }\n if (!isCanvas) {\n legendGroup.appendChild(legendItemsGroup);\n }\n this.legendTranslateGroup = chart.renderer.createGroup({ id: id + '_translate_g' });\n if (!isCanvas) {\n legendItemsGroup.appendChild(this.legendTranslateGroup);\n }\n options.y += (this.isTop ? this.legendTitleSize.height : 0);\n options.id += '_clipPath_rect';\n options.width = ((!this.isChartControl && chart.getModuleName() !== 'bulletChart' && !this.isStockChartControl) && this.isVertical) ? this.maxWidth - padding + legend.containerPadding.left + legend.containerPadding.right\n : legendBounds.width;\n if (!isCanvas) {\n this.clipRect = chart.renderer.drawRectangle(options);\n clippath.appendChild(this.clipRect);\n }\n else {\n this.pagingClipRect = options;\n }\n appendChildElement(isCanvas, chart.svgObject, clippath, redraw);\n if (!isCanvas) {\n legendItemsGroup.style.cssText = 'clip-path:url(#' + clippath.id + ')';\n }\n return this.legendTranslateGroup;\n };\n /**\n * To render legend symbols for chart and accumulation chart\n *\n * @param legendOption\n * @param group\n * @param i\n * @param legendOption\n * @param group\n * @param i\n * @param legendOption\n * @param group\n * @param i\n */\n BaseLegend.prototype.renderSymbol = function (legendOption, group, legendIndex) {\n var control = this.isBulletChartControl ? this.chart : null;\n var symbolColor = legendOption.visible ? legendOption.fill : '#D3D3D3';\n var isStrokeWidth = (this.chart.getModuleName() === 'chart' || this.chart.getModuleName() === 'stockChart') && ((legendOption.shape === 'SeriesType') &&\n (legendOption.type.toLowerCase().indexOf('line') > -1) && (legendOption.type.toLowerCase().indexOf('area') === -1)) ||\n ((legendOption.shape === 'HorizontalLine') || (legendOption.shape === 'VerticalLine') || (legendOption.shape === 'Cross'));\n var isCustomBorder = (this.chart.getModuleName() === 'chart' || this.chart.getModuleName() === 'stockChart') &&\n (legendOption.type === 'Scatter' || legendOption.type === 'Bubble');\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n var borderColor;\n var shape = (legendOption.shape === 'SeriesType') ? legendOption.type : legendOption.shape;\n var strokewidth = isStrokeWidth ? (this.legend.mode === 'Series' ?\n this.chart.visibleSeries[legendIndex].width : this.chart.visibleSeries[0].width) :\n (this.isBulletChartControl && legendOption.shape === 'Multiply') ? 4 : 1;\n var regionPadding;\n shape = shape === 'Scatter' ? legendOption.markerShape : shape;\n if (isCustomBorder && legendIndex < this.chart.visibleSeries.length) {\n var series = this.chart.visibleSeries[legendIndex];\n var seriesBorder = series.border;\n var isLineShapemarker = shape === 'HorizontalLine' || shape === 'VerticalLine';\n borderColor = isLineShapemarker ? symbolColor : seriesBorder.color ? seriesBorder.color : symbolColor;\n strokewidth = isLineShapemarker ? series.width : seriesBorder.width ? seriesBorder.width : 1;\n }\n var symbolOption = new PathOption(this.legendID + this.generateId(legendOption, '_shape_', legendIndex), symbolColor, strokewidth, (isCustomBorder ? borderColor : symbolColor), this.legend.opacity, legendOption.dashArray, '');\n var textSize = measureText(legendOption.text, this.legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var x = this.legend.isInversed && !this.isRtlEnable ? legendOption.location.x + textSize.width + this.legend.shapePadding\n : legendOption.location.x;\n var y = legendOption.location.y;\n if (!isCanvas) {\n group.appendChild(drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth, this.legend.shapeHeight), legendOption.url, symbolOption, this.accessbilityText, this.chart.renderer, null, this.isBulletChartControl, control));\n }\n else {\n regionPadding = -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber);\n drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth, this.legend.shapeHeight), '', symbolOption, this.accessbilityText, this.chart.renderer, this.currentPageNumber ? new Rect(0, regionPadding, 0, 0) : null, this.isBulletChartControl, control);\n this.legendRegions.push({\n rect: new Rect(legendOption.location.x, legendOption.location.y, this.legend.shapeWidth, this.legend.shapeHeight + regionPadding), index: legendIndex\n });\n }\n if (shape === 'Line' && legendOption.markerVisibility && legendOption.markerShape !== 'Image' ||\n (legendOption.type === 'Doughnut' && shape === 'Doughnut')) {\n symbolOption.id = this.legendID + this.generateId(legendOption, '_shape_marker_', legendIndex);\n shape = legendOption.type === 'Doughnut' ? 'Circle' : legendOption.markerShape;\n symbolOption.fill = legendOption.type === 'Doughnut' ? '#FFFFFF' : symbolOption.fill;\n if (!isCanvas) {\n group.appendChild(drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth / 2, this.legend.shapeHeight / 2), '', symbolOption, this.accessbilityText, null, null, this.isBulletChartControl, control));\n }\n else {\n drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth / 2, this.legend.shapeHeight / 2), '', symbolOption, this.accessbilityText, this.chart.renderer, this.currentPageNumber ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, this.isBulletChartControl, control);\n }\n }\n };\n /**\n * To render legend text for chart and accumulation chart\n *\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n */\n BaseLegend.prototype.renderText = function (chart, legendOption, group, textOptions, i, legendIndex) {\n var legend = chart.legendSettings;\n var hiddenColor = '#D3D3D3';\n var fontcolor = legendOption.visible ? legend.textStyle.color || chart.themeStyle.legendLabelFont.color : hiddenColor;\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n textOptions.id = this.legendID + this.generateId(legendOption, '_text_', legendIndex);\n textOptions.text = legendOption.textCollection.length > 0 ? legendOption.textCollection : legendOption.text;\n if (legend.isInversed && !this.isRtlEnable) {\n textOptions.x = legendOption.location.x - (legend.shapeWidth / 2);\n }\n else if (this.isRtlEnable) {\n textOptions.x = legendOption.location.x - (measureText(legendOption.text, legend.textStyle, this.chart.themeStyle.legendLabelFont).width + legend.shapeWidth / 2 + legend.shapePadding);\n }\n else {\n textOptions.x = legendOption.location.x + (legend.shapeWidth / 2) + legend.shapePadding;\n }\n textOptions.y = legendOption.location.y + this.maxItemHeight / 4;\n var element = textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, group, false, false, false, false, null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, null, null, null, null, this.chart.themeStyle.legendLabelFont);\n if (isCanvas) {\n var textSize = measureText(legendOption.text, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n this.legendRegions[i].rect.y = textOptions.y < this.legendRegions[i].rect.y ? textOptions.y : this.legendRegions[i].rect.y;\n this.legendRegions[i].rect.width += textSize.width;\n this.legendRegions[i].rect.height = textSize.height;\n this.legendRegions[i].rect.y -= textSize.height * 0.5;\n this.legendRegions[i].rect.x -= (this.isRtlEnable) ? this.legendRegions[i].rect.width : 0;\n }\n };\n /**\n * To render legend paging elements for chart and accumulation chart\n *\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n */\n // tslint:disable-next-line:max-func-body-length\n BaseLegend.prototype.renderPagingElements = function (chart, bounds, textOption, legendGroup) {\n var paginggroup = chart.renderer.createGroup({ id: this.legendID + '_navigation' });\n var isCanvas = this.isStockChartControl ? false : chart.enableCanvas;\n var titleHeight = this.isBulletChartControl ? 0 : this.legendTitleSize.height;\n var grayColor = (this.chart.theme.indexOf('Dark') > -1 || this.chart.theme.indexOf('Contrast') > -1) ? '#FFFFFF' : '#545454';\n var legend = chart.legendSettings; // to solve parameter lint error, legend declaration is here\n var padding = 8; // const padding for paging elements\n var pageUp = this.legendID + (!this.isRtlEnable ? '_pageup' : '_pagedown');\n var pageDown = this.legendID + (!this.isRtlEnable ? '_pagedown' : '_pageup');\n var symbolOption = new PathOption(pageUp, 'transparent', 5, grayColor, 1, '', '');\n var iconSize = this.pageButtonSize;\n // Page left arrow drawing calculation started here\n var rowCount = !legend.enablePages && this.isPaging && !this.isVertical && !this.isBulletChartControl ? 1 :\n (this.rowCount - 1);\n var titleWidth = this.isTitle && legend.titlePosition === 'Left' ? this.legendTitleSize.width : 0;\n this.pagingRegions = [];\n this.backwardArrowOpacity = this.currentPage !== 1 ? 1 : 0;\n this.forwardArrowOpacity = this.currentPage === this.totalPages ? 0 : 1;\n if (!isCanvas) {\n legendGroup.appendChild(paginggroup);\n }\n if (!this.isChartControl && !this.isAccChartControl) {\n if (this.isBulletChartControl || this.isStockChartControl || !this.isVertical) {\n this.totalPages = Math.ceil(this.totalPages / Math.max(1, this.rowCount - 1));\n }\n else {\n this.totalPages = Math.ceil(this.totalPages / this.maxColumns);\n }\n }\n if (paginggroup) {\n paginggroup.style.cursor = 'pointer';\n }\n if ((this.isChartControl || this.isAccChartControl) && !(!legend.enablePages && this.isPaging)) {\n this.clipPathHeight = this.pageHeights[0];\n }\n else {\n this.clipPathHeight = (rowCount * (this.maxItemHeight + legend.padding));\n }\n //this.clipPathHeight = !(this.isChartControl) ? (rowCount * (this.maxItemHeight + legend.padding)) : this.columnHeights[0];\n if (!isCanvas) {\n this.clipRect.setAttribute('height', this.clipPathHeight.toString());\n }\n else {\n //paging clipRect only for canvas mode\n this.pagingClipRect.height = this.legendBounds.height - this.clipPathHeight -\n (this.pagingClipRect.y - this.legendBounds.y) - legend.border.width;\n this.pagingClipRect.y = this.pagingClipRect.y + this.clipPathHeight;\n this.pagingClipRect.x += legend.border.width;\n this.pagingClipRect.width -= (legend.border.width + legend.border.width / 2);\n this.chart.renderer.clearRect(new Rect(this.pagingClipRect.x, this.pagingClipRect.y, this.pagingClipRect.width, this.pagingClipRect.height));\n }\n var pageTextElement;\n var x = (bounds.x + iconSize / 2);\n var y = bounds.y + this.clipPathHeight + ((titleHeight + bounds.height - this.clipPathHeight) / 2);\n if (this.isPaging && !legend.enablePages && !this.isVertical && !this.isBulletChartControl) {\n x = (bounds.x + this.pageButtonSize + titleWidth);\n y = legend.title && this.isTop ? (bounds.y + padding + titleHeight + (iconSize / 1) + 0.5) :\n (bounds.y + padding + iconSize + 0.5);\n }\n var size = measureText(this.totalPages + '/' + this.totalPages, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var translateX = (this.isRtlEnable) ? legend.border.width + (iconSize / 2) : bounds.width - (2 * (iconSize + padding) + padding + size.width);\n if (!isCanvas) {\n if (this.isVertical && !legend.enablePages && !this.isBulletChartControl) {\n x = bounds.x + (bounds.width / 2);\n y = bounds.y + (iconSize / 2) + (padding / 2) + titleHeight;\n symbolOption.opacity = this.backwardArrowOpacity;\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'UpArrow', new Size(iconSize, iconSize), '', symbolOption, 'UpArrow'));\n }\n else {\n symbolOption.opacity = this.isBulletChartControl ? symbolOption.opacity :\n (legend.enablePages ? 1 : !this.isRtlEnable ? this.backwardArrowOpacity : this.forwardArrowOpacity);\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption, 'LeftArrow'));\n }\n }\n else {\n drawSymbol({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption, 'LeftArrow', this.chart.renderer, new Rect(translateX, 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(!this.isRtlEnable ? x + bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5 : x, y - iconSize * 0.5, iconSize, iconSize));\n // Page numbering rendering calculation started here\n textOption.x = x + (iconSize / 2) + padding;\n textOption.y = y + (size.height / 4);\n textOption.id = this.legendID + '_pagenumber';\n textOption.text = !this.isRtlEnable ? '1/' + this.totalPages : this.totalPages + '/1';\n var color = (this.chart.theme.indexOf('Dark') > -1 || this.chart.theme.indexOf('Contrast') > -1) ? '#FFFFFF' : legend.textStyle.color || this.chart.themeStyle.legendLabelFont.color;\n if (isCanvas && this.totalNoOfPages) {\n textOption.text = !this.isRtlEnable ? this.currentPageNumber + '/' + this.totalNoOfPages : this.totalNoOfPages + '/' + this.currentPageNumber;\n }\n if (legend.enablePages || this.isBulletChartControl) {\n pageTextElement = textElement(chart.renderer, textOption, legend.textStyle, color, paginggroup, false, false, false, false, null, new Rect(translateX, 0, 0, 0), null, null, null, null, this.chart.themeStyle.legendLabelFont);\n }\n // Page right arrow rendering calculation started here\n x = textOption.x + padding + (iconSize / 2) + size.width;\n if (this.isPaging && !legend.enablePages && !this.isVertical) {\n x = (bounds.x + bounds.width - (this.isBulletChartControl ? this.fivePixel : 0) - this.pageButtonSize - (legend.title && legend.titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0));\n }\n symbolOption.id = pageDown;\n symbolOption.opacity = !legend.enablePages ? !this.isRtlEnable ? this.forwardArrowOpacity : this.backwardArrowOpacity : 1;\n if (!isCanvas) {\n if (this.isVertical && !legend.enablePages && !this.isBulletChartControl) {\n x = bounds.x + (bounds.width / 2);\n y = bounds.y + bounds.height - (iconSize / 2);\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'DownArrow', new Size(iconSize, iconSize), '', symbolOption, 'DownArrow'));\n }\n else {\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption, 'RightArrow'));\n }\n }\n else {\n drawSymbol({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption, 'RightArrow', this.chart.renderer, new Rect(translateX, 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(!this.isRtlEnable ? x + (bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5) : x, y - iconSize * 0.5, iconSize, iconSize));\n if (!isCanvas && (legend.enablePages || this.isBulletChartControl)) {\n //placing the navigation buttons and page numbering in legend right corner\n paginggroup.setAttribute('transform', 'translate(' + translateX + ', ' + 0 + ')');\n }\n else {\n if (this.currentPageNumber === 1 && this.calTotalPage && (legend.enablePages || this.isBulletChartControl)) {\n this.totalNoOfPages = this.totalPages;\n this.calTotalPage = false;\n }\n if (!legend.enablePages && !this.isBulletChartControl) { // For new legend page navigation\n this.translatePage(isCanvas, null, this.currentPage - 1, this.currentPage, legend);\n }\n }\n if (legend.enablePages || this.isBulletChartControl) {\n this.translatePage(isCanvas, pageTextElement, this.currentPage - 1, this.currentPage, legend);\n }\n };\n BaseLegend.prototype.getPageHeight = function (pageHeights, pageCount) {\n var sum = 0;\n for (var i = 0; i < pageCount; i++) {\n sum += pageHeights[i];\n }\n return sum;\n };\n /**\n * To translate legend pages for chart and accumulation chart\n *\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n */\n BaseLegend.prototype.translatePage = function (isCanvas, pagingText, page, pageNumber, legend) {\n var size = (this.isChartControl || this.isAccChartControl) ? (page ? this.getPageHeight(this.pageHeights, page) : 0) : ((this.clipPathHeight) * page);\n if (!isCanvas && (this.isChartControl || this.isAccChartControl)) {\n this.clipRect.setAttribute('height', this.pageHeights[page].toString());\n if (this.isAccChartControl && this.isPaging && !legend.enablePages && this.isVertical) {\n this.clipRect.setAttribute('height', this.legendBounds.height.toString());\n }\n }\n var translate = 'translate(0,-' + size + ')';\n if (!this.isChartControl && !this.isBulletChartControl && !this.isStockChartControl && this.isVertical) {\n var pageX = this.pageXCollections[page * this.maxColumns];\n size = (!this.isRtlEnable) ? pageX - this.legendBounds.x : (this.legendBounds.x + this.maxWidth) - pageX;\n size = size < 0 ? 0 : size; // to avoid small pixel variation\n translate = ((!this.isRtlEnable) ? 'translate(-' : 'translate(') + size + ',0)';\n }\n if (!this.chart.enableCanvas) {\n this.legendTranslateGroup.setAttribute('transform', translate);\n }\n if (!this.chart.enableCanvas && (legend.enablePages || this.isBulletChartControl)) {\n pagingText.textContent = !this.isRtlEnable ? (pageNumber) + '/' + this.totalPages : this.totalPages + '/' + pageNumber;\n }\n this.currentPage = pageNumber;\n return size;\n };\n /**\n * To change legend pages for chart and accumulation chart\n *\n * @param event\n * @param pageUp\n * @param event\n * @param pageUp\n */\n BaseLegend.prototype.changePage = function (event, pageUp) {\n var legend = this.chart.legendSettings;\n var backwardArrow = document.getElementById(this.legendID + '_pageup');\n var forwardArrow = document.getElementById(this.legendID + '_pagedown');\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n var pageText = (legend.enablePages || this.isBulletChartControl) ?\n document.getElementById(this.legendID + '_pagenumber') : null;\n var page = (legend.enablePages || this.isBulletChartControl) ? parseInt(pageText.textContent.split('/')[!this.isRtlEnable ? 0 : 1], 10) :\n this.currentPage;\n if (pageUp && page > 1) {\n this.translatePage(isCanvas, pageText, (page - 2), (page - 1), legend);\n }\n else if (!pageUp && page < this.totalPages) {\n this.translatePage(isCanvas, pageText, page, (page + 1), legend);\n }\n if (this.isPaging && !legend.enablePages && !this.isBulletChartControl) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentPage === this.totalPages ? this.hideArrow(forwardArrow) : this.showArrow(forwardArrow);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentPage === 1 ? this.hideArrow(backwardArrow) : this.showArrow(backwardArrow);\n }\n };\n /**\n * To hide the backward and forward arrow\n *\n * @param arrowElement\n */\n BaseLegend.prototype.hideArrow = function (arrowElement) {\n arrowElement.setAttribute('opacity', '0');\n };\n /**\n * To show the backward and forward arrow\n *\n * @param arrowElement\n */\n BaseLegend.prototype.showArrow = function (arrowElement) {\n arrowElement.setAttribute('opacity', '1');\n };\n /**\n * To find legend elements id based on chart or accumulation chart\n *\n * @param option\n * @param prefix\n * @param count\n * @param option\n * @param prefix\n * @param count\n * @param option\n * @param prefix\n * @param count\n * @private\n */\n BaseLegend.prototype.generateId = function (option, prefix, count) {\n if (this.isChartControl || this.isStockChartControl) {\n return prefix + count;\n }\n else {\n return prefix + option.pointIndex;\n }\n };\n /**\n * To show or hide trimmed text tooltip for legend.\n *\n * @param event\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.move = function (event) {\n var _this = this;\n var x = this.chart.mouseX;\n var y = this.chart.mouseY;\n if (event.target.textContent.indexOf('...') > -1) {\n var targetId = event.target.id.split(this.legendID + '_text_');\n if (targetId.length === 2) {\n var index = parseInt(targetId[1], 10);\n var element = this.chart.element;\n if (!isNaN(index)) {\n if (this.chart.isTouch) {\n removeElement(this.chart.element.id + '_EJ2_Legend_Tooltip');\n }\n if (this.isChartControl) {\n showTooltip(this.chart.series[index].name, x, y, element.offsetWidth, element.id + '_EJ2_Legend_Tooltip', getElement(this.chart.element.id + '_Secondary_Element'));\n }\n else {\n showTooltip(this.chart.visibleSeries[0].points[index].x.toString(), x + 10, y + 10, element.offsetWidth, element.id + '_EJ2_Legend_Tooltip', getElement(this.chart.element.id + '_Secondary_Element'));\n }\n }\n }\n }\n else {\n removeElement(this.chart.element.id + '_EJ2_Legend_Tooltip');\n }\n if (this.chart.isTouch) {\n clearTimeout(this.clearTooltip);\n this.clearTooltip = +setTimeout(function () { removeElement(_this.chart.element.id + '_EJ2_Legend_Tooltip'); }, 1000);\n }\n };\n return BaseLegend;\n}());\nexport { BaseLegend };\n/**\n * Class for legend options\n *\n * @private\n */\nvar LegendOptions = /** @class */ (function () {\n function LegendOptions(text, fill, shape, visible, type, url, markerShape, markerVisibility, pointIndex, seriesIndex, dashArray) {\n this.location = { x: 0, y: 0 };\n this.textCollection = [];\n this.text = text;\n this.fill = fill;\n this.shape = shape;\n this.url = url;\n this.visible = visible;\n this.type = type;\n this.markerVisibility = markerVisibility;\n this.markerShape = markerShape;\n this.pointIndex = pointIndex;\n this.seriesIndex = seriesIndex;\n this.dashArray = dashArray;\n }\n return LegendOptions;\n}());\nexport { LegendOptions };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, Complex } from '@syncfusion/ej2-base';\nimport { Connector } from '../../common/model/base';\nimport { SeriesBase } from '../series/chart-series';\nimport { firstToLowerCase } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * Defines how to represent the market trend using technical indicators\n */\nvar TechnicalIndicator = /** @class */ (function (_super) {\n __extends(TechnicalIndicator, _super);\n function TechnicalIndicator() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n return _this;\n }\n /** @private */\n TechnicalIndicator.prototype.setDataSource = function (series, chart) {\n if (series) {\n this.xData = series.xData;\n this.yData = series.yData;\n this.points = series.points;\n }\n var type = firstToLowerCase(this.type);\n if (this.visible) {\n chart[type + 'IndicatorModule'].initDataSource(this, chart);\n }\n chart.visibleSeriesCount += this.targetSeries.length;\n };\n __decorate([\n Property('Sma')\n ], TechnicalIndicator.prototype, \"type\", void 0);\n __decorate([\n Property(14)\n ], TechnicalIndicator.prototype, \"period\", void 0);\n __decorate([\n Property(14)\n ], TechnicalIndicator.prototype, \"kPeriod\", void 0);\n __decorate([\n Property(3)\n ], TechnicalIndicator.prototype, \"dPeriod\", void 0);\n __decorate([\n Property(80)\n ], TechnicalIndicator.prototype, \"overBought\", void 0);\n __decorate([\n Property(20)\n ], TechnicalIndicator.prototype, \"overSold\", void 0);\n __decorate([\n Property(2)\n ], TechnicalIndicator.prototype, \"standardDeviation\", void 0);\n __decorate([\n Property('Close')\n ], TechnicalIndicator.prototype, \"field\", void 0);\n __decorate([\n Property(12)\n ], TechnicalIndicator.prototype, \"slowPeriod\", void 0);\n __decorate([\n Property(26)\n ], TechnicalIndicator.prototype, \"fastPeriod\", void 0);\n __decorate([\n Property(true)\n ], TechnicalIndicator.prototype, \"showZones\", void 0);\n __decorate([\n Complex({ color: '#ff9933', width: 2 }, Connector)\n ], TechnicalIndicator.prototype, \"macdLine\", void 0);\n __decorate([\n Property('Both')\n ], TechnicalIndicator.prototype, \"macdType\", void 0);\n __decorate([\n Property('#2ecd71')\n ], TechnicalIndicator.prototype, \"macdPositiveColor\", void 0);\n __decorate([\n Property('#e74c3d')\n ], TechnicalIndicator.prototype, \"macdNegativeColor\", void 0);\n __decorate([\n Property('rgba(211,211,211,0.25)')\n ], TechnicalIndicator.prototype, \"bandColor\", void 0);\n __decorate([\n Complex({ color: '#ffb735', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"upperLine\", void 0);\n __decorate([\n Complex({ color: '#f2ec2f', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"lowerLine\", void 0);\n __decorate([\n Complex({ color: '#f2ec2f', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"periodLine\", void 0);\n __decorate([\n Property('')\n ], TechnicalIndicator.prototype, \"seriesName\", void 0);\n return TechnicalIndicator;\n}(SeriesBase));\nexport { TechnicalIndicator };\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 { StreamWriter } from '@syncfusion/ej2-file-utils';\nimport { Encoding } from '@syncfusion/ej2-file-utils';\nimport { PdfDocument } from './pdf-document';\n/**\n * `PdfDocumentBase` class represent common properties of PdfDocument classes.\n * @private\n */\nvar PdfDocumentBase = /** @class */ (function () {\n function PdfDocumentBase(document) {\n /**\n * If the stream is copied, then it specifies true.\n * @private\n */\n this.isStreamCopied = false;\n if (document instanceof PdfDocument) {\n this.document = document;\n }\n }\n Object.defineProperty(PdfDocumentBase.prototype, \"pdfObjects\", {\n //Prpperties\n /**\n * Gets the `PDF objects` collection, which stores all objects and references to it..\n * @private\n */\n get: function () {\n return this.objects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"crossTable\", {\n /**\n * Gets the `cross-reference` table.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"currentSavingObj\", {\n /**\n * Gets or sets the current saving `object number`.\n * @private\n */\n get: function () {\n return this.currentSavingObject;\n },\n set: function (value) {\n this.currentSavingObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"catalog\", {\n /**\n * Gets the PDF document `catalog`.\n * @private\n */\n get: function () {\n return this.pdfCatalog;\n },\n set: function (value) {\n this.pdfCatalog = value;\n },\n enumerable: true,\n configurable: true\n });\n 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.isFont = false;\n if (typeof dictionary === 'undefined') {\n this.primitiveItems = new Dictionary();\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n else {\n this.primitiveItems = new Dictionary();\n var keys = dictionary.items.keys();\n var values = dictionary.items.values();\n for (var index = 0; index < dictionary.items.size(); index++) {\n this.primitiveItems.setValue(keys[index], values[index]);\n }\n this.status = dictionary.status;\n this.freezeChanges(this);\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n }\n Object.defineProperty(PdfDictionary.prototype, \"items\", {\n //Properties\n /**\n * Gets or sets the `IPdfSavable` with the specified key.\n * @private\n */\n get: function () {\n return this.primitiveItems;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status7;\n },\n set: function (value) {\n this.status7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving7;\n },\n set: function (value) {\n this.isSaving7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index7;\n },\n set: function (value) {\n this.index7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position7;\n },\n set: function (value) {\n this.position7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.primitiveItems.size();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Dictionary\", {\n /**\n * Collection of `items` in the object.\n * @private\n */\n get: function () {\n return this;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.getArchive = function () {\n return this.archive;\n };\n /**\n * Set flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.setArchive = function (value) {\n this.archive = value;\n };\n /**\n * Sets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.setEncrypt = function (value) {\n this.encrypt = value;\n this.modify();\n };\n /**\n * Gets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.getEncrypt = function () {\n return this.encrypt;\n };\n /**\n * `Freezes` the changes.\n * @private\n */\n PdfDictionary.prototype.freezeChanges = function (freezer) {\n this.bChanged = false;\n };\n /**\n * Creates a `copy of PdfDictionary`.\n * @private\n */\n PdfDictionary.prototype.clone = function (crossTable) {\n //Need to add more codings\n var newDict = new PdfDictionary();\n return newDict;\n };\n /**\n * `Mark` this instance modified.\n * @private\n */\n PdfDictionary.prototype.modify = function () {\n this.bChanged = true;\n };\n /**\n * `Removes` the specified key.\n * @private\n */\n PdfDictionary.prototype.remove = function (key) {\n if (typeof key !== 'string') {\n this.primitiveItems.remove(key.value);\n this.modify();\n }\n else {\n this.remove(new PdfName(key));\n }\n };\n /**\n * `Determines` whether the dictionary contains the key.\n * @private\n */\n PdfDictionary.prototype.containsKey = function (key) {\n var returnValue = false;\n returnValue = this.primitiveItems.containsKey(key.toString());\n return returnValue;\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginSave = function () {\n this.beginSave.sender.beginSave();\n };\n /**\n * Raises event `Font Dictionary BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onFontDictionaryBeginSave = function () {\n this.fontDictionaryBeginSave.sender.fontDictionaryBeginSave();\n };\n /**\n * Raises event `Descendant Font BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onDescendantFontBeginSave = function () {\n this.descendantFontBeginSave.sender.descendantFontBeginSave();\n };\n /**\n * Raises event 'BeginSave'.\n * @private\n */\n PdfDictionary.prototype.onTemplateBeginSave = function () {\n this.pageBeginDrawTemplate.sender.pageBeginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginAnnotationSave = function () {\n this.annotationBeginSave.sender.beginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onSectionBeginSave = function (writer) {\n var saveEvent = this.sectionBeginSave;\n saveEvent.sender.beginSave(saveEvent.state, writer);\n };\n PdfDictionary.prototype.save = function (writer, bRaiseEvent) {\n if (typeof bRaiseEvent === 'undefined') {\n this.save(writer, true);\n }\n else {\n writer.write(this.prefix);\n if (typeof this.beginSave !== 'undefined') {\n this.onBeginSave();\n }\n if (typeof this.descendantFontBeginSave !== 'undefined') {\n this.onDescendantFontBeginSave();\n }\n if (typeof this.fontDictionaryBeginSave !== 'undefined') {\n this.onFontDictionaryBeginSave();\n }\n if (typeof this.annotationBeginSave !== 'undefined') {\n this.onBeginAnnotationSave();\n }\n if (typeof this.sectionBeginSave !== 'undefined') {\n this.onSectionBeginSave(writer);\n }\n if (typeof this.pageBeginDrawTemplate !== 'undefined') {\n this.onTemplateBeginSave();\n }\n // }\n if (this.Count > 0) {\n this.saveItems(writer);\n }\n writer.write(this.suffix);\n writer.write(Operators.newLine);\n }\n };\n /**\n * `Save dictionary items`.\n * @private\n */\n PdfDictionary.prototype.saveItems = function (writer) {\n writer.write(Operators.newLine);\n var keys = this.primitiveItems.keys();\n var values = this.primitiveItems.values();\n for (var index = 0; index < keys.length; index++) {\n var key = keys[index];\n var name_1 = new PdfName(key);\n name_1.save(writer);\n writer.write(Operators.whiteSpace);\n var resources = values[index];\n resources.save(writer);\n writer.write(Operators.newLine);\n }\n };\n return PdfDictionary;\n}());\nexport { PdfDictionary };\nvar SaveSectionCollectionEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveSectionCollectionEventHandler(sender) {\n this.sender = sender;\n }\n return SaveSectionCollectionEventHandler;\n}());\nexport { SaveSectionCollectionEventHandler };\nvar SaveDescendantFontEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveDescendantFontEventHandler(sender) {\n this.sender = sender;\n }\n return SaveDescendantFontEventHandler;\n}());\nexport { SaveDescendantFontEventHandler };\nvar SaveFontDictionaryEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontDictionaryEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontDictionaryEventHandler;\n}());\nexport { SaveFontDictionaryEventHandler };\nvar SaveAnnotationEventHandler = /** @class */ (function () {\n /**\n * New instance for `save annotation event handler` class.\n * @private\n */\n function SaveAnnotationEventHandler(sender) {\n this.sender = sender;\n }\n return SaveAnnotationEventHandler;\n}());\nexport { SaveAnnotationEventHandler };\nvar SaveSectionEventHandler = /** @class */ (function () {\n // constructors\n /**\n * New instance for `save section event handler` class.\n * @private\n */\n function SaveSectionEventHandler(sender, state) {\n this.sender = sender;\n this.state = state;\n }\n return SaveSectionEventHandler;\n}());\nexport { SaveSectionEventHandler };\n/**\n * SaveTemplateEventHandler class used to store information about template elements.\n * @private\n * @hidden\n */\nvar SaveTemplateEventHandler = /** @class */ (function () {\n /**\n * New instance for save section collection event handler class.\n * @public\n */\n function SaveTemplateEventHandler(sender) {\n this.sender = sender;\n }\n return SaveTemplateEventHandler;\n}());\nexport { SaveTemplateEventHandler };\n","/**\n * `PdfNumber` class is used to perform number related primitive operations.\n * @private\n */\nvar PdfNumber = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfNumber` class.\n * @private\n */\n function PdfNumber(value) {\n /**\n * Sotres the `position`.\n * @default -1\n * @private\n */\n this.position5 = -1;\n this.value = value;\n }\n Object.defineProperty(PdfNumber.prototype, \"intValue\", {\n /**\n * Gets or sets the `integer` value.\n * @private\n */\n get: function () {\n return this.value;\n },\n set: function (value) {\n this.value = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isInteger\", {\n /**\n * Gets or sets a value indicating whether this instance `is integer`.\n * @private\n */\n get: function () {\n return this.integer;\n },\n set: function (value) {\n this.integer = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status5;\n },\n set: function (value) {\n this.status5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving5;\n },\n set: function (value) {\n this.isSaving5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index5;\n },\n set: function (value) {\n this.index5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position5;\n },\n set: function (value) {\n this.position5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves the object`.\n * @private\n */\n PdfNumber.prototype.save = function (writer) {\n writer.write(this.intValue.toString()); //tostring(CultureInfo.InletiantCulture)\n };\n /**\n * Creates a `copy of PdfNumber`.\n * @private\n */\n PdfNumber.prototype.clone = function (crossTable) {\n var newNumber = new PdfNumber(this.value);\n return newNumber;\n };\n /**\n * Converts a `float value to a string` using Adobe PDF rules.\n * @private\n */\n PdfNumber.floatToString = function (number) {\n // let tempString1 : string = number.toString();\n // let tempString2 : string = tempString1.indexOf('.') != -1 ? tempString1.substring(0, tempString1.indexOf('.')) : tempString1;\n var returnString = number.toFixed(2);\n if (returnString === '0.00') {\n returnString = '.00';\n }\n // let prefixLength : number = (22 - tempString2.length) >= 0 ? (22 - tempString2.length) : 0;\n // for (let index : number = 0; index < prefixLength; index++) {\n // returnString += '0';\n // }\n // returnString += tempString2 + '.00';\n // returnString += (tempString3.length > 6) ? tempString3.substring(0,6) : tempString3;\n // let suffixLength : number = (6 - tempString3.length) >= 0 ? (6 - tempString3.length) : 0;\n // for (let index : number = 0; index < suffixLength; index++) {\n // returnString += '0';\n // }\n return returnString;\n };\n /**\n * Determines the `minimum of the three values`.\n * @private\n */\n PdfNumber.min = function (x, y, z) {\n var r = Math.min(x, y);\n return Math.min(z, r);\n };\n return PdfNumber;\n}());\nexport { PdfNumber };\n","import { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\n/**\n * `PdfArray` class is used to perform array related primitive operations.\n * @private\n */\nvar PdfArray = /** @class */ (function () {\n function PdfArray(array) {\n //Fields\n /**\n * `startMark` - '['\n * @private\n */\n this.startMark = '[';\n /**\n * `endMark` - ']'.\n * @private\n */\n this.endMark = ']';\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position9 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject9 = null;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof array === 'undefined') {\n this.internalElements = [];\n }\n else {\n if (typeof array !== 'undefined' && !(array instanceof PdfArray)) {\n var tempNumberArray = array;\n for (var index = 0; index < tempNumberArray.length; index++) {\n var pdfNumber = new PdfNumber(tempNumberArray[index]);\n this.add(pdfNumber);\n }\n // } else if (typeof array !== 'undefined' && (array instanceof PdfArray)) {\n }\n else {\n var tempArray = array;\n // if (tempArray.Elements.length > 0) {\n this.internalElements = [];\n for (var index = 0; index < tempArray.elements.length; index++) {\n this.internalElements.push(tempArray.elements[index]);\n }\n // }\n }\n }\n }\n //property\n /**\n * Gets the `IPdfSavable` at the specified index.\n * @private\n */\n PdfArray.prototype.items = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index, The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n Object.defineProperty(PdfArray.prototype, \"count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.internalElements.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status9;\n },\n set: function (value) {\n this.status9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving9;\n },\n set: function (value) {\n this.isSaving9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject9;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position9;\n },\n set: function (value) {\n this.position9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index9;\n },\n set: function (value) {\n this.index9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"elements\", {\n /**\n * Gets the `elements` of the Pdf Array.\n * @private\n */\n get: function () {\n return this.internalElements;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element to the PDF array.\n * @private\n */\n PdfArray.prototype.add = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : obj');\n // }\n if (typeof this.internalElements === 'undefined') {\n this.internalElements = [];\n }\n this.internalElements.push(element);\n this.markedChange();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markedChange = function () {\n this.bChanged = true;\n };\n /**\n * `Determines` whether the specified element is within the array.\n * @private\n */\n PdfArray.prototype.contains = function (element) {\n var returnValue = false;\n for (var index = 0; index < this.internalElements.length; index++) {\n var tempElement = this.internalElements[index];\n var inputElement = element;\n if (tempElement != null && typeof tempElement !== 'undefined' && inputElement != null && typeof inputElement !== 'undefined') {\n if (tempElement.value === inputElement.value) {\n return true;\n }\n }\n // if (this.internalElements[index] === element) {\n // returnValue = true;\n // }\n }\n return returnValue;\n };\n /**\n * Returns the `primitive object` of input index.\n * @private\n */\n PdfArray.prototype.getItems = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index , The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfArray.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.startMark);\n for (var i = 0, len = this.count; i < len; i++) {\n this.getItems(i).save(writer);\n if (i + 1 !== len) {\n writer.write(Operators.whiteSpace);\n }\n }\n writer.write(this.endMark);\n };\n /**\n * Creates a `copy of PdfArray`.\n * @private\n */\n PdfArray.prototype.clone = function (crossTable) {\n // if (this.clonedObject9 !== null && this.clonedObject9.CrossTable === crossTable) {\n // return this.clonedObject9;\n // } else {\n this.clonedObject9 = null;\n // Else clone the object.\n var newArray = new PdfArray();\n for (var index = 0; index < this.internalElements.length; index++) {\n var obj = this.internalElements[index];\n newArray.add(obj.clone(crossTable));\n }\n newArray.pdfCrossTable = crossTable;\n this.clonedObject9 = newArray;\n return newArray;\n };\n /**\n * Creates filled PDF array `from the rectangle`.\n * @private\n */\n PdfArray.fromRectangle = function (bounds) {\n var values = [bounds.x, bounds.y, bounds.width, bounds.height];\n var array = new PdfArray(values);\n return array;\n };\n // /**\n // * Creates the rectangle from filled PDF array.\n // * @private\n // */\n // public ToRectangle() : RectangleF {\n // if (this.Count < 4) {\n // throw Error('InvalidOperationException-Can not convert to rectangle.');\n // }\n // let x1 : number;\n // let x2 : number;\n // let y1 : number;\n // let y2 : number;\n // let num : PdfNumber = this.getItems(0) as PdfNumber;\n // x1 = num.IntValue;\n // num = this.getItems(1) as PdfNumber;\n // y1 = num.IntValue;\n // num = this.getItems(2) as PdfNumber;\n // x2 = num.IntValue;\n // num = this.getItems(3) as PdfNumber;\n // y2 = num.IntValue;\n // let x : number = Math.min(x1, x2);\n // let y : number = Math.min(y1, y2);\n // let width : number = Math.abs(x1 - x2);\n // let height : number = Math.abs(y1 - y2);\n // let rect : RectangleF = new RectangleF(new PointF(x, y), new SizeF(width, height));\n // return rect;\n // }\n /**\n * `Inserts` the element into the array.\n * @private\n */\n PdfArray.prototype.insert = function (index, element) {\n if (index < this.internalElements.length && index > 0) {\n var tempElements = [];\n for (var i = 0; i < index; i++) {\n tempElements.push(this.internalElements[i]);\n }\n tempElements.push(element);\n for (var i = index; i < this.internalElements.length; i++) {\n tempElements.push(this.internalElements[i]);\n }\n this.internalElements = tempElements;\n }\n else {\n this.internalElements.push(element);\n }\n this.markChanged();\n };\n /**\n * `Checks whether array contains the element`.\n * @private\n */\n PdfArray.prototype.indexOf = function (element) {\n return this.internalElements.indexOf(element);\n };\n /**\n * `Removes` element from the array.\n * @private\n */\n PdfArray.prototype.remove = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : element');\n // }\n var index = this.internalElements.indexOf(element);\n // if (index >= 0 && index < this.internalElements.length) {\n this.internalElements[index] = null;\n // }\n this.markChanged();\n };\n /**\n * `Remove` the element from the array by its index.\n * @private\n */\n PdfArray.prototype.removeAt = function (index) {\n // this.internalElements.RemoveAt(index);\n if (this.internalElements.length > index) {\n var tempArray = [];\n for (var i = 0; i < index; i++) {\n tempArray.push(this.internalElements[i]);\n }\n for (var i = index + 1; i < this.internalElements.length; i++) {\n tempArray.push(this.internalElements[i]);\n }\n this.internalElements = tempArray;\n }\n this.markChanged();\n };\n /**\n * `Clear` the array.\n * @private\n */\n PdfArray.prototype.clear = function () {\n this.internalElements = [];\n this.markChanged();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markChanged = function () {\n this.bChanged = true;\n };\n return PdfArray;\n}());\nexport { PdfArray };\n","/* 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 /**\n * @hidden\n * @private\n */\n _this.isImageStream = false;\n /**\n * @hidden\n * @private\n */\n _this.isFontStream = false;\n if (typeof dictionary !== 'undefined' || typeof data !== 'undefined') {\n _this.dataStream2 = [];\n _this.dataStream2 = data;\n _this.bCompress2 = false;\n }\n else {\n _this.dataStream2 = [];\n _this.bCompress2 = true;\n //Pending\n }\n return _this;\n }\n Object.defineProperty(PdfStream.prototype, \"internalStream\", {\n /**\n * Gets the `internal` stream.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"isImage\", {\n /**\n * Gets or sets 'is image' flag.\n * @private\n */\n get: function () {\n return this.isImageStream;\n },\n set: function (value) {\n this.isImageStream = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"isFont\", {\n /**\n * Gets or sets 'is font' flag.\n * @private\n */\n get: function () {\n return this.isFontStream;\n },\n set: function (value) {\n this.isFontStream = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"compress\", {\n /**\n * Gets or sets `compression` flag.\n * @private\n */\n get: function () {\n return this.bCompress;\n },\n set: function (value) {\n this.bCompress = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"data\", {\n /**\n * Gets or sets the `data`.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clear` the internal stream.\n * @private\n */\n PdfStream.prototype.clearStream = function () {\n this.internalStream = [];\n if (this.items.containsKey(this.dictionaryProperties.filter)) {\n this.remove(this.dictionaryProperties.filter);\n }\n this.bCompress = true;\n this.modify();\n };\n /**\n * `Writes` the specified string.\n * @private\n */\n PdfStream.prototype.write = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (text.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty string, text');\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * `Writes` the specified bytes.\n * @private\n */\n PdfStream.prototype.writeBytes = function (data) {\n if (data === null) {\n throw new Error('ArgumentNullException:data');\n }\n if (data.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty bytes, data');\n }\n var text = '';\n for (var i = 0; i < data.length; i++) {\n text += String.fromCharCode(data[i]);\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * Raises event `Cmap BeginSave`.\n * @private\n */\n PdfStream.prototype.onCmapBeginSave = function () {\n this.cmapBeginSave.sender.cmapBeginSave();\n };\n /**\n * Raises event `Font Program BeginSave`.\n * @private\n */\n PdfStream.prototype.onFontProgramBeginSave = function () {\n this.fontProgramBeginSave.sender.fontProgramBeginSave();\n };\n /**\n * `Compresses the content` if it's required.\n * @private\n */\n PdfStream.prototype.compressContent = function (data, writer) {\n if (this.bCompress) {\n var byteArray = [];\n for (var i = 0; i < data.length; i++) {\n byteArray.push(data.charCodeAt(i));\n }\n var dataArray = new Uint8Array(byteArray);\n var sw = new CompressedStreamWriter();\n // data = 'Hello World!!!';\n sw.write(dataArray, 0, dataArray.length);\n sw.close();\n data = sw.getCompressedString;\n this.addFilter(this.dictionaryProperties.flatedecode);\n }\n return data;\n };\n /**\n * `Adds a filter` to the filter array.\n * @private\n */\n PdfStream.prototype.addFilter = function (filterName) {\n var obj = this.items.getValue(this.dictionaryProperties.filter);\n if (obj instanceof PdfReferenceHolder) {\n var rh = obj;\n obj = rh.object;\n }\n var array = obj;\n var name = obj;\n if (name != null) {\n array = new PdfArray();\n array.insert(0, name);\n this.items.setValue(this.dictionaryProperties.filter, array);\n }\n name = new PdfName(filterName);\n if (array == null) {\n this.items.setValue(this.dictionaryProperties.filter, name);\n }\n else {\n array.insert(0, name);\n }\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfStream.prototype.save = function (writer) {\n if (typeof this.cmapBeginSave !== 'undefined') {\n this.onCmapBeginSave();\n }\n if (typeof this.fontProgramBeginSave !== 'undefined') {\n this.onFontProgramBeginSave();\n }\n var data = '';\n for (var i = 0; i < this.data.length; i++) {\n data = data + this.data[i];\n }\n if (data.length > 1 && !this.isImage && !this.isFont) {\n data = 'q\\r\\n' + data + 'Q\\r\\n';\n }\n data = this.compressContent(data, writer);\n var length = data.length;\n this.items.setValue(this.dictionaryProperties.length, new PdfNumber(length));\n _super.prototype.save.call(this, writer, false);\n writer.write(this.dicPrefix);\n writer.write(Operators.newLine);\n if (data.length > 0) {\n writer.write(data);\n }\n writer.write(Operators.newLine);\n writer.write(this.dicSuffix);\n writer.write(Operators.newLine);\n };\n /**\n * Converts `bytes to string`.\n * @private\n */\n PdfStream.bytesToString = function (byteArray) {\n var output = '';\n for (var i = 0; i < byteArray.length; i++) {\n output = output + String.fromCharCode(byteArray[i]);\n }\n return output;\n };\n return PdfStream;\n}(PdfDictionary));\nexport { PdfStream };\nvar SaveCmapEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveCmapEventHandler(sender) {\n this.sender = sender;\n }\n return SaveCmapEventHandler;\n}());\nexport { SaveCmapEventHandler };\nvar SaveFontProgramEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontProgramEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontProgramEventHandler;\n}());\nexport { SaveFontProgramEventHandler };\n","/**\n * 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 `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","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 * PdfPageSettings.ts class for EJ2-PDF\n */\nimport { SizeF, PointF } from './../drawing/pdf-drawing';\nimport { PdfPageSize } from './pdf-page-size';\nimport { PdfPageRotateAngle, PdfPageOrientation } from './enum';\nimport { PdfMargins } from './../graphics/pdf-margins';\n/**\n * The class provides various `setting` related with PDF pages.\n */\nvar PdfPageSettings = /** @class */ (function () {\n function PdfPageSettings(margins) {\n //Fields\n /**\n * The page `margins`.\n * @private\n */\n this.pageMargins = new PdfMargins();\n /**\n * The page `size`.\n * @default a4\n * @private\n */\n this.pageSize = PdfPageSize.a4;\n /**\n * The page `rotation angle`.\n * @default PdfPageRotateAngle.RotateAngle0\n * @private\n */\n this.rotateAngle = PdfPageRotateAngle.RotateAngle0;\n /**\n * The page `orientation`.\n * @default PdfPageOrientation.Portrait\n * @private\n */\n this.pageOrientation = PdfPageOrientation.Portrait;\n /**\n * The page `origin`.\n * @default 0,0\n * @private\n */\n this.pageOrigin = new PointF(0, 0);\n /**\n * Checks the Whether the `rotation` is applied or not.\n * @default false\n * @private\n */\n this.isRotation = false;\n if (typeof margins === 'number') {\n this.pageMargins.setMargins(margins);\n }\n }\n Object.defineProperty(PdfPageSettings.prototype, \"size\", {\n //Properties\n /**\n * Gets or sets the `size` of the page.\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.setSize(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"orientation\", {\n /**\n * Gets or sets the page `orientation`.\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (orientation) {\n if (this.pageOrientation !== orientation) {\n this.pageOrientation = orientation;\n this.updateSize(orientation);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"margins\", {\n /**\n * Gets or sets the `margins` of the page.\n * @private\n */\n get: function () {\n return this.pageMargins;\n },\n set: function (value) {\n this.pageMargins = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.width;\n },\n set: function (value) {\n this.pageSize.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.height;\n },\n set: function (value) {\n this.pageSize.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"origin\", {\n /**\n * Gets or sets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"rotate\", {\n /**\n * Gets or sets the number of degrees by which the page should be `rotated` clockwise when displayed or printed.\n * @private\n */\n get: function () {\n return this.rotateAngle;\n },\n set: function (value) {\n this.rotateAngle = value;\n this.isRotation = true;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Update page size` depending on orientation.\n * @private\n */\n PdfPageSettings.prototype.updateSize = function (orientation) {\n var min = Math.min(this.pageSize.width, this.pageSize.height);\n var max = Math.max(this.pageSize.width, this.pageSize.height);\n switch (orientation) {\n case PdfPageOrientation.Portrait:\n this.pageSize = new SizeF(min, max);\n break;\n case PdfPageOrientation.Landscape:\n this.pageSize = new SizeF(max, min);\n break;\n }\n };\n /**\n * Creates a `clone` of the object.\n * @private\n */\n PdfPageSettings.prototype.clone = function () {\n var settings = this;\n settings.pageMargins = this.pageMargins.clone();\n // if (GetTransition() != null)\n // {\n // settings.Transition = (PdfPageTransition)Transition.clone();\n // }\n return settings;\n };\n /**\n * Returns `size`, shrinked by the margins.\n * @private\n */\n PdfPageSettings.prototype.getActualSize = function () {\n var width = this.width - (this.margins.left + this.margins.right);\n var height = this.height - (this.margins.top + this.margins.bottom);\n var size = new SizeF(width, height);\n return size;\n };\n /**\n * Sets `size` to the page aaccording to the orientation.\n * @private\n */\n PdfPageSettings.prototype.setSize = function (size) {\n var min = Math.min(size.width, size.height);\n var max = Math.max(size.width, size.height);\n if (this.orientation === PdfPageOrientation.Portrait) {\n this.pageSize = new SizeF(min, max);\n }\n else {\n this.pageSize = new SizeF(max, min);\n }\n };\n return PdfPageSettings;\n}());\nexport { PdfPageSettings };\n","import { Operators } from './pdf-operators';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PointF, RectangleF } from './../drawing/pdf-drawing';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * Helper class to `write PDF graphic streams` easily.\n * @private\n */\nvar PdfStreamWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfStreamWriter` class.\n * @private\n */\n function PdfStreamWriter(stream) {\n if (stream == null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.stream = stream;\n }\n //Implementation\n /**\n * `Clear` the stream.\n * @public\n */\n PdfStreamWriter.prototype.clear = function () {\n this.stream.clearStream();\n };\n PdfStreamWriter.prototype.setGraphicsState = function (dictionaryName) {\n if (dictionaryName instanceof PdfName) {\n this.stream.write(dictionaryName.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n else {\n this.stream.write(Operators.slash);\n this.stream.write(dictionaryName);\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n };\n /**\n * `Executes the XObject`.\n * @private\n */\n PdfStreamWriter.prototype.executeObject = function (name) {\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.paintXObject);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes path object`.\n * @private\n */\n PdfStreamWriter.prototype.closePath = function () {\n this.writeOperator(Operators.closePath);\n };\n /**\n * `Clips the path`.\n * @private\n */\n PdfStreamWriter.prototype.clipPath = function (useEvenOddRule) {\n this.stream.write(Operators.clipPath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n }\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.endPath);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes, then fills and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.closeFillStrokePath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills and strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.fillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.fillStroke);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills path`.\n * @private\n */\n PdfStreamWriter.prototype.fillPath = function (useEvenOddRule) {\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Ends the path`.\n * @private\n */\n PdfStreamWriter.prototype.endPath = function () {\n this.writeOperator(Operators.n);\n };\n /**\n * `Closes and fills the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillPath = function (useEvenOddRule) {\n this.writeOperator(Operators.closePath);\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Closes and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeStrokePath = function () {\n this.writeOperator(Operators.closeStrokePath);\n };\n /**\n * `Sets the text scaling`.\n * @private\n */\n PdfStreamWriter.prototype.setTextScaling = function (textScaling) {\n this.stream.write(PdfNumber.floatToString(textScaling));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextScaling);\n };\n /**\n * `Strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.strokePath = function () {\n this.writeOperator(Operators.stroke);\n };\n /**\n * `Restores` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.restoreGraphicsState = function () {\n this.writeOperator(Operators.restoreState);\n };\n /**\n * `Saves` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.saveGraphicsState = function () {\n this.writeOperator(Operators.saveState);\n };\n PdfStreamWriter.prototype.startNextLine = function (arg1, arg2) {\n if (typeof arg1 === 'undefined') {\n this.writeOperator(Operators.goToNextLine);\n }\n else if (arg1 instanceof PointF) {\n this.writePoint(arg1);\n this.writeOperator(Operators.setCoords);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.setCoords);\n }\n };\n /**\n * Shows the `text`.\n * @private\n */\n PdfStreamWriter.prototype.showText = function (text) {\n this.checkTextParam(text);\n this.writeText(text);\n this.writeOperator(Operators.setText);\n };\n /**\n * Sets `text leading`.\n * @private\n */\n PdfStreamWriter.prototype.setLeading = function (leading) {\n this.stream.write(PdfNumber.floatToString(leading));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextLeading);\n };\n /**\n * `Begins the path`.\n * @private\n */\n PdfStreamWriter.prototype.beginPath = function (x, y) {\n this.writePoint(x, y);\n this.writeOperator(Operators.beginPath);\n };\n /**\n * `Begins text`.\n * @private\n */\n PdfStreamWriter.prototype.beginText = function () {\n this.writeOperator(Operators.beginText);\n };\n /**\n * `Ends text`.\n * @private\n */\n PdfStreamWriter.prototype.endText = function () {\n this.writeOperator(Operators.endText);\n };\n PdfStreamWriter.prototype.appendRectangle = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.appendRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writeOperator(Operators.appendRectangle);\n }\n };\n PdfStreamWriter.prototype.appendLineSegment = function (arg1, arg2) {\n if (arg1 instanceof PointF) {\n this.appendLineSegment(arg1.x, arg1.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.appendLineSegment);\n }\n };\n /**\n * Sets the `text rendering mode`.\n * @private\n */\n PdfStreamWriter.prototype.setTextRenderingMode = function (renderingMode) {\n this.stream.write(renderingMode.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setRenderingMode);\n };\n /**\n * Sets the `character spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setCharacterSpacing = function (charSpacing) {\n this.stream.write(PdfNumber.floatToString(charSpacing));\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.setCharacterSpace);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `word spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setWordSpacing = function (wordSpacing) {\n this.stream.write(PdfNumber.floatToString(wordSpacing));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setWordSpace);\n };\n PdfStreamWriter.prototype.showNextLineText = function (arg1, arg2) {\n if (arg1 instanceof PdfString) {\n this.checkTextParam(arg1);\n this.writeText(arg1);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n else {\n this.checkTextParam(arg1);\n this.writeText(arg1, arg2);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n };\n PdfStreamWriter.prototype.setColorSpace = function (arg1, arg2) {\n if (arg1 instanceof PdfName && typeof arg2 === 'boolean') {\n var temparg1 = arg1;\n var temparg2 = arg2;\n // if (temparg1 == null) {\n // throw new Error('ArgumentNullException:name');\n // }\n var op = (temparg2) ? Operators.selectcolorspaceforstroking : Operators.selectcolorspacefornonstroking;\n this.stream.write(temparg1.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(op);\n this.stream.write(Operators.newLine);\n }\n else {\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.setColorSpace(new PdfName(temparg1), temparg2);\n }\n };\n /**\n * Modifies current `transformation matrix`.\n * @private\n */\n PdfStreamWriter.prototype.modifyCtm = function (matrix) {\n if (matrix == null) {\n throw new Error('ArgumentNullException:matrix');\n }\n this.stream.write(matrix.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.modifyCtm);\n };\n PdfStreamWriter.prototype.setFont = function (font, name, size) {\n if (typeof name === 'string') {\n this.setFont(font, new PdfName(name), size);\n }\n else {\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(PdfNumber.floatToString(size));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setFont);\n }\n };\n /**\n * `Writes the operator`.\n * @private\n */\n PdfStreamWriter.prototype.writeOperator = function (opcode) {\n this.stream.write(opcode);\n this.stream.write(Operators.newLine);\n };\n PdfStreamWriter.prototype.checkTextParam = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (typeof text === 'string' && text === '') {\n throw new Error('ArgumentException:The text can not be an empty string, text');\n }\n };\n PdfStreamWriter.prototype.writeText = function (arg1, arg2) {\n if ((arg1 instanceof PdfString) && (typeof arg2 === 'undefined')) {\n this.stream.write(arg1.pdfEncode());\n }\n else {\n var start = void 0;\n var end = void 0;\n if (arg2) {\n start = PdfString.hexStringMark[0];\n end = PdfString.hexStringMark[1];\n }\n else {\n start = PdfString.stringMark[0];\n end = PdfString.stringMark[1];\n }\n this.stream.write(start);\n this.stream.write(arg1);\n this.stream.write(end);\n }\n };\n PdfStreamWriter.prototype.writePoint = function (arg1, arg2) {\n if ((arg1 instanceof PointF) && (typeof arg2 === 'undefined')) {\n this.writePoint(arg1.x, arg1.y);\n }\n else {\n var temparg1 = arg1;\n this.stream.write(PdfNumber.floatToString(temparg1));\n this.stream.write(Operators.whiteSpace);\n // NOTE: Change Y co-ordinate because we shifted co-ordinate system only.\n arg2 = this.updateY(arg2);\n this.stream.write(PdfNumber.floatToString(arg2));\n this.stream.write(Operators.whiteSpace);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfStreamWriter.prototype.updateY = function (arg) {\n return -arg;\n };\n /**\n * `Writes string` to the file.\n * @private\n */\n PdfStreamWriter.prototype.write = function (string) {\n var builder = '';\n builder += string;\n builder += Operators.newLine;\n this.writeOperator(builder);\n };\n /**\n * `Writes comment` to the file.\n * @private\n */\n PdfStreamWriter.prototype.writeComment = function (comment) {\n if (comment != null && comment.length > 0) {\n var builder = '';\n builder += Operators.comment;\n builder += Operators.whiteSpace;\n builder += comment;\n //builder.Append( Operators.NewLine );\n this.writeOperator(builder);\n }\n else {\n throw new Error('Invalid comment');\n }\n };\n /**\n * Sets the `color and space`.\n * @private\n */\n PdfStreamWriter.prototype.setColorAndSpace = function (color, colorSpace, forStroking) {\n if (!color.isEmpty) {\n // bool test = color is PdfExtendedColor;\n this.stream.write(color.toString(colorSpace, forStroking));\n this.stream.write(Operators.newLine);\n }\n };\n // public setLineDashPattern(pattern : number[], patternOffset : number) : void\n // {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n // }\n // private setLineDashPatternHelper(pattern : PdfArray, patternOffset : PdfNumber) : void\n // {\n // pattern.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // patternOffset.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // this.writeOperator(Operators.setDashPattern);\n // }\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPattern = function (pattern, patternOffset) {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n this.setLineDashPatternHelper(pattern, patternOffset);\n };\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPatternHelper = function (pattern, patternOffset) {\n var tempPattern = '[';\n if (pattern.length > 1) {\n for (var index = 0; index < pattern.length; index++) {\n if (index === pattern.length - 1) {\n tempPattern += pattern[index].toString();\n }\n else {\n tempPattern += pattern[index].toString() + ' ';\n }\n }\n }\n tempPattern += '] ';\n tempPattern += patternOffset.toString();\n tempPattern += ' ' + Operators.setDashPattern;\n this.stream.write(tempPattern);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `miter limit`.\n * @private\n */\n PdfStreamWriter.prototype.setMiterLimit = function (miterLimit) {\n this.stream.write(PdfNumber.floatToString(miterLimit));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setMiterLimit);\n };\n /**\n * Sets the `width of the line`.\n * @private\n */\n PdfStreamWriter.prototype.setLineWidth = function (width) {\n this.stream.write(PdfNumber.floatToString(width));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineWidth);\n };\n /**\n * Sets the `line cap`.\n * @private\n */\n PdfStreamWriter.prototype.setLineCap = function (lineCapStyle) {\n this.stream.write((lineCapStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineCapStyle);\n };\n /**\n * Sets the `line join`.\n * @private\n */\n PdfStreamWriter.prototype.setLineJoin = function (lineJoinStyle) {\n this.stream.write((lineJoinStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineJoinStyle);\n };\n Object.defineProperty(PdfStreamWriter.prototype, \"position\", {\n //IPdfWriter members\n /**\n * Gets or sets the current `position` within the stream.\n * @private\n */\n get: function () {\n return this.stream.position;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"length\", {\n /**\n * Gets `stream length`.\n * @private\n */\n get: function () {\n var returnValue = 0;\n if (this.stream.data.length !== 0 && this.stream.data.length !== -1) {\n for (var index = 0; index < this.stream.data.length; index++) {\n returnValue += this.stream.data[index].length;\n }\n }\n return returnValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"document\", {\n /**\n * Gets and Sets the `current document`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n /* tslint:disable-next-line:max-line-length */\n PdfStreamWriter.prototype.appendBezierSegment = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF) {\n this.writePoint(arg1.x, arg1.y);\n this.writePoint(arg2.x, arg2.y);\n this.writePoint(arg3.x, arg3.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writePoint(arg5, arg6);\n }\n this.writeOperator(Operators.appendbeziercurve);\n };\n PdfStreamWriter.prototype.setColourWithPattern = function (colours, patternName, forStroking) {\n if ((colours != null)) {\n var count = colours.length;\n var i = 0;\n for (i = 0; i < count; ++i) {\n this.stream.write(colours[i].toString());\n this.stream.write(Operators.whiteSpace);\n }\n }\n if ((patternName != null)) {\n this.stream.write(patternName.toString());\n this.stream.write(Operators.whiteSpace);\n }\n if (forStroking) {\n this.writeOperator(Operators.setColorAndPatternStroking);\n }\n else {\n this.writeOperator(Operators.setColorAndPattern);\n }\n };\n return PdfStreamWriter;\n}());\nexport { PdfStreamWriter };\n","import { SizeF, RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfWordWrapType } from './enum';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Class `lay outing the text`.\n */\nvar PdfStringLayouter = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n function PdfStringLayouter() {\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n //\n }\n PdfStringLayouter.prototype.layout = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg4 instanceof RectangleF) {\n this.initialize(arg1, arg2, arg3, arg4, arg5);\n this.isOverloadWithPosition = arg6;\n this.clientSize = arg7;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n else {\n this.initialize(arg1, arg2, arg3, arg4);\n this.isOverloadWithPosition = arg5;\n this.clientSize = arg6;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n };\n PdfStringLayouter.prototype.initialize = function (text, font, format, rectSize, pageHeight) {\n if (typeof pageHeight === 'number') {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.text = text;\n this.font = font;\n this.format = format;\n this.size = new SizeF(rectSize.width, rectSize.height);\n this.rectangle = rectSize;\n this.pageHeight = pageHeight;\n this.reader = new StringTokenizer(text);\n }\n else {\n this.initialize(text, font, format, new RectangleF(new PointF(0, 0), rectSize), 0);\n }\n };\n /**\n * `Clear` all resources.\n * @private\n */\n PdfStringLayouter.prototype.clear = function () {\n this.font = null;\n this.format = null;\n this.reader.close();\n this.reader = null;\n this.text = null;\n };\n /**\n * `Layouts` the text.\n * @private\n */\n PdfStringLayouter.prototype.doLayout = function () {\n var result = new PdfStringLayoutResult();\n var lineResult = new PdfStringLayoutResult();\n var lines = [];\n var line = this.reader.peekLine();\n var lineIndent = this.getLineIndent(true);\n while (line != null) {\n lineResult = this.layoutLine(line, lineIndent);\n if (lineResult !== null || typeof lineResult !== 'undefined') {\n var numSymbolsInserted = 0;\n /* tslint:disable */\n var returnedValue = this.copyToResult(result, lineResult, lines, /*out*/ numSymbolsInserted);\n /* tslint:enable */\n var success = returnedValue.success;\n numSymbolsInserted = returnedValue.numInserted;\n if (!success) {\n this.reader.read(numSymbolsInserted);\n break;\n }\n }\n // if (lineResult.textRemainder != null && lineResult.textRemainder.length > 0 ) {\n // break;\n // }\n this.reader.readLine();\n line = this.reader.peekLine();\n lineIndent = this.getLineIndent(false);\n }\n this.finalizeResult(result, lines);\n return result;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineIndent = function (firstLine) {\n var lineIndent = 0;\n if (this.format != null) {\n lineIndent = (firstLine) ? this.format.firstLineIndent : this.format.paragraphIndent;\n lineIndent = (this.size.width > 0) ? Math.min(this.size.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates `height` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineHeight = function () {\n var height = this.font.height;\n if (this.format != null && this.format.lineSpacing !== 0) {\n height = this.format.lineSpacing + this.font.height;\n }\n return height;\n };\n /**\n * Calculates `width` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineWidth = function (line) {\n var width = this.font.getLineWidth(line, this.format);\n return width;\n };\n // tslint:disable\n /**\n * `Layouts` line.\n * @private\n */\n PdfStringLayouter.prototype.layoutLine = function (line, lineIndent) {\n var lineResult = new PdfStringLayoutResult();\n lineResult.layoutLineHeight = this.getLineHeight();\n var lines = [];\n var maxWidth = this.size.width;\n var lineWidth = this.getLineWidth(line) + lineIndent;\n var lineType = LineType.FirstParagraphLine;\n var readWord = true;\n // line is in bounds.\n if (maxWidth <= 0 || Math.round(lineWidth) <= Math.round(maxWidth)) {\n this.addToLineResult(lineResult, lines, line, lineWidth, LineType.NewLineBreak | lineType);\n }\n else {\n var builder = '';\n var curLine = '';\n lineWidth = lineIndent;\n var curIndent = lineIndent;\n var reader = new StringTokenizer(line);\n var word = reader.peekWord();\n var isSingleWord = false;\n if (word.length !== reader.length) {\n if (word === ' ') {\n curLine = curLine + word;\n builder = builder + word;\n reader.position += 1;\n word = reader.peekWord();\n }\n }\n while (word != null) {\n curLine = curLine + word;\n var curLineWidth = this.getLineWidth(curLine.toString()) + curIndent /*)*/;\n if (curLine.toString() === ' ') {\n curLine = '';\n curLineWidth = 0;\n }\n if (curLineWidth > maxWidth) {\n if (this.getWrapType() === PdfWordWrapType.None) {\n break;\n }\n if (curLine.length === word.length) {\n // Character wrap is disabled or one symbol is greater than bounds.\n if (this.getWrapType() === PdfWordWrapType.WordOnly) {\n lineResult.textRemainder = line.substring(reader.position);\n break;\n }\n else if (curLine.length === 1) {\n builder = builder + word;\n break;\n }\n else {\n readWord = false;\n curLine = '';\n word = reader.peek().toString();\n continue;\n }\n }\n else {\n if (this.getLineWidth(word.toString()) > maxWidth) {\n this.format.wordWrap = PdfWordWrapType.Character;\n }\n else {\n if (typeof this.format !== 'undefined' && this.format !== null) {\n this.format.wordWrap = PdfWordWrapType.Word;\n }\n }\n if (this.getWrapType() !== PdfWordWrapType.Character || !readWord) {\n var ln = builder.toString();\n // if (ln.indexOf(' ') === -1) {\n // isSingleWord = true;\n // this.addToLineResult(lineResult, lines, curLine, lineWidth, LineType.LayoutBreak | lineType);\n // } else {\n // this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n // } \n if (ln !== ' ') {\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n }\n if (this.isOverloadWithPosition) {\n maxWidth = this.clientSize.width;\n }\n curLine = '';\n builder = '';\n lineWidth = 0;\n curIndent = 0;\n curLineWidth = 0;\n lineType = LineType.None;\n // if (isSingleWord) {\n // reader.readWord();\n // readWord = false;\n // }\n word = (readWord) ? word : reader.peekWord();\n //isSingleWord = false;\n readWord = true;\n }\n else {\n readWord = false;\n curLine = '';\n curLine = curLine + builder.toString();\n word = reader.peek().toString();\n }\n continue;\n }\n }\n /*tslint:disable:max-func-body-length */\n builder = builder + word;\n lineWidth = curLineWidth;\n if (readWord) {\n reader.readWord();\n word = reader.peekWord();\n //isSingleWord = false;\n }\n else {\n reader.read();\n word = reader.peek().toString();\n }\n }\n if (builder.length > 0) {\n var ln = builder.toString();\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.NewLineBreak | LineType.LastParagraphLine);\n }\n reader.close();\n }\n lineResult.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n lineResult.layoutLines.push(lines[index]);\n }\n lines = [];\n return lineResult;\n };\n /**\n * `Adds` line to line result.\n * @private\n */\n PdfStringLayouter.prototype.addToLineResult = function (lineResult, lines, line, lineWidth, breakType) {\n var info = new LineInfo();\n info.text = line;\n info.width = lineWidth;\n info.lineType = breakType;\n lines.push(info);\n var size = lineResult.actualSize;\n size.height += this.getLineHeight();\n size.width = Math.max(size.width, lineWidth);\n lineResult.size = size;\n };\n /**\n * `Copies` layout result from line result to entire result. Checks whether we can proceed lay outing or not.\n * @private\n */\n PdfStringLayouter.prototype.copyToResult = function (result, lineResult, lines, \n /*out*/ numInserted) {\n var success = true;\n var allowPartialLines = (this.format != null && !this.format.lineLimit);\n var height = result.actualSize.height;\n var maxHeight = this.size.height;\n if ((this.pageHeight > 0) && (maxHeight + this.rectangle.y > this.pageHeight)) {\n maxHeight = this.rectangle.y - this.pageHeight;\n maxHeight = Math.max(maxHeight, -maxHeight);\n }\n numInserted = 0;\n if (lineResult.lines != null) {\n for (var i = 0, len = lineResult.lines.length; i < len; i++) {\n var expHeight = height + lineResult.lineHeight;\n if (expHeight <= maxHeight || maxHeight <= 0 || allowPartialLines) {\n var info = lineResult.lines[i];\n numInserted += info.text.length;\n info = this.trimLine(info, (lines.length === 0));\n lines.push(info);\n // Update width.\n var size = result.actualSize;\n size.width = Math.max(size.width, info.width);\n result.size = size;\n // The part of the line fits only and it's allowed to use partial lines.\n // if (expHeight >= maxHeight && maxHeight > 0 && allowPartialLines)\n // {\n // let shouldClip : boolean = (this.format == null || !this.format.noClip);\n // if (shouldClip)\n // {\n // let exceededHeight : number = expHeight - maxHeight;\n // let fitHeight : number = /*Utils.Round(*/ lineResult.lineHeight - exceededHeight /*)*/;\n // height = /*Utils.Round(*/ height + fitHeight /*)*/;\n // }\n // else\n // {\n // height = expHeight;\n // }\n // success = false;\n // break;\n // } else {\n height = expHeight;\n // }\n }\n else {\n success = false;\n break;\n }\n }\n }\n if (height != result.size.height) {\n var size1 = result.actualSize;\n size1.height = height;\n result.size = size1;\n }\n return { success: success, numInserted: numInserted };\n };\n /**\n * `Finalizes` final result.\n * @private\n */\n PdfStringLayouter.prototype.finalizeResult = function (result, lines) {\n result.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n result.layoutLines.push(lines[index]);\n }\n result.layoutLineHeight = this.getLineHeight();\n if (!this.reader.end) {\n result.textRemainder = this.reader.readToEnd();\n }\n lines = [];\n };\n /**\n * `Trims` whitespaces at the line.\n * @private\n */\n PdfStringLayouter.prototype.trimLine = function (info, firstLine) {\n var line = info.text;\n var lineWidth = info.width;\n // Trim start whitespaces if the line is not a start of the paragraph only.\n var trimStartSpaces = ((info.lineType & LineType.FirstParagraphLine) === 0);\n var start = (this.format == null || !this.format.rightToLeft);\n var spaces = StringTokenizer.spaces;\n line = (start) ? line.trim() : line.trim();\n // Recalculate line width.\n if (line.length !== info.text.length) {\n lineWidth = this.getLineWidth(line);\n if ((info.lineType & LineType.FirstParagraphLine) > 0) {\n lineWidth += this.getLineIndent(firstLine);\n }\n }\n info.text = line;\n info.width = lineWidth;\n return info;\n };\n /**\n * Returns `wrap` type.\n * @private\n */\n PdfStringLayouter.prototype.getWrapType = function () {\n var wrapType = (this.format != null) ? this.format.wordWrap : PdfWordWrapType.Word;\n return wrapType;\n };\n return PdfStringLayouter;\n}());\nexport { PdfStringLayouter };\n//Internal declaration\nvar PdfStringLayoutResult = /** @class */ (function () {\n function PdfStringLayoutResult() {\n }\n Object.defineProperty(PdfStringLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets the `text` which is not lay outed.\n * @private\n */\n get: function () {\n return this.textRemainder;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"actualSize\", {\n /**\n * Gets the actual layout text `bounds`.\n * @private\n */\n get: function () {\n if (typeof this.size === 'undefined') {\n this.size = new SizeF(0, 0);\n }\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lines\", {\n /**\n * Gets layout `lines` information.\n * @private\n */\n get: function () {\n return this.layoutLines;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineHeight\", {\n /**\n * Gets the `height` of the line.\n * @private\n */\n get: function () {\n return this.layoutLineHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"empty\", {\n /**\n * Gets value that indicates whether any layout text [`empty`].\n * @private\n */\n get: function () {\n return (this.layoutLines == null || this.layoutLines.length === 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineCount\", {\n /**\n * Gets `number of` the layout lines.\n * @private\n */\n get: function () {\n var count = (!this.empty) ? this.layoutLines.length : 0;\n return count;\n },\n enumerable: true,\n configurable: true\n });\n return PdfStringLayoutResult;\n}());\nexport { PdfStringLayoutResult };\nvar LineInfo = /** @class */ (function () {\n function LineInfo() {\n }\n Object.defineProperty(LineInfo.prototype, \"lineType\", {\n //Properties\n /**\n * Gets the `type` of the line text.\n * @private\n */\n get: function () {\n return this.type;\n },\n set: function (value) {\n this.type = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"text\", {\n /**\n * Gets the line `text`.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"width\", {\n /**\n * Gets `width` of the line text.\n * @private\n */\n get: function () {\n return this.lineWidth;\n },\n set: function (value) {\n this.lineWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n return LineInfo;\n}());\nexport { LineInfo };\n/**\n* Break type of the `line`.\n* @private\n*/\nexport var LineType;\n(function (LineType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n LineType[LineType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `NewLineBreak`.\n * @private\n */\n LineType[LineType[\"NewLineBreak\"] = 1] = \"NewLineBreak\";\n /**\n * Specifies the type of `LayoutBreak`.\n * @private\n */\n LineType[LineType[\"LayoutBreak\"] = 2] = \"LayoutBreak\";\n /**\n * Specifies the type of `FirstParagraphLine`.\n * @private\n */\n LineType[LineType[\"FirstParagraphLine\"] = 4] = \"FirstParagraphLine\";\n /**\n * Specifies the type of `LastParagraphLine`.\n * @private\n */\n LineType[LineType[\"LastParagraphLine\"] = 8] = \"LastParagraphLine\";\n})(LineType || (LineType = {}));\n","import { PdfColorSpace } from './enum';\nimport { Operators } from './../input-output/pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfArray } from './../primitives/pdf-array';\n/**\n * Implements structures and routines working with `color`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // set color\n * let brushColor : PdfColor = new PdfColor(0, 0, 0);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(brushColor);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default black color\n */\nvar PdfColor = /** @class */ (function () {\n function PdfColor(color1, color2, color3, color4) {\n if (typeof color1 === 'undefined') {\n if (typeof color2 !== 'undefined' && typeof color3 !== 'undefined' && typeof color4 !== 'undefined') {\n this.assignRGB(color2, color3, color4);\n }\n else {\n this.filled = false;\n }\n }\n else if (color1 instanceof PdfColor) {\n this.redColor = color1.r;\n this.greenColor = color1.g;\n this.blueColor = color1.b;\n this.grayColor = color1.gray;\n this.alpha = color1.alpha;\n this.filled = (this.alpha !== 0);\n /* tslint:disable-next-line:max-line-length */\n }\n else if (typeof color1 === 'number' && typeof color2 === 'undefined' && typeof color3 === 'undefined' && typeof color4 === 'undefined') {\n if (color1 < 0) {\n color1 = 0;\n }\n if (color1 > 1) {\n color1 = 1;\n }\n this.redColor = color1 * PdfColor.maxColourChannelValue;\n this.greenColor = color1 * PdfColor.maxColourChannelValue;\n this.blueColor = color1 * PdfColor.maxColourChannelValue;\n this.cyanColor = color1;\n this.magentaColor = color1;\n this.yellowColor = color1;\n this.blackColor = color1;\n this.grayColor = color1;\n this.alpha = PdfColor.maxColourChannelValue;\n this.filled = true;\n }\n else if (typeof color4 === 'undefined') {\n this.assignRGB(color1, color2, color3);\n }\n else {\n this.assignRGB(color2, color3, color4, color1);\n }\n }\n /**\n * `Assign` red, green, blue colors with alpha value..\n * @private\n */\n PdfColor.prototype.assignRGB = function (r, g, b, a) {\n if (typeof r === 'undefined' || typeof g === 'undefined' || typeof b === 'undefined') {\n this.filled = false;\n }\n else {\n this.cyanColor = 0;\n this.magentaColor = 0;\n this.yellowColor = 0;\n this.blackColor = 0;\n this.grayColor = 0;\n this.redColor = r;\n this.greenColor = g;\n this.blueColor = b;\n if (typeof a === 'undefined') {\n this.alpha = PdfColor.maxColourChannelValue;\n }\n else {\n this.alpha = a;\n }\n this.filled = true;\n this.assignCMYK(r, g, b);\n }\n };\n /**\n * `Calculate and assign` cyan, megenta, yellow colors from rgb values..\n * @private\n */\n PdfColor.prototype.assignCMYK = function (r, g, b) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n var black = PdfNumber.min(1 - red, 1 - green, 1 - blue);\n var cyan = (black === 1.0) ? 0 : (1 - red - black) / (1 - black);\n var magenta = (black === 1.0) ? 0 : (1 - green - black) / (1 - black);\n var yellow = (black === 1.0) ? 0 : (1 - blue - black) / (1 - black);\n this.blackColor = black;\n this.cyanColor = cyan;\n this.magentaColor = magenta;\n this.yellowColor = yellow;\n };\n Object.defineProperty(PdfColor.prototype, \"r\", {\n //Properties\n // public static get Empty():PdfColor\n // {\n // return this.s_emptyColor\n // }\n /**\n * Gets or sets `Red` channel value.\n * @private\n */\n get: function () {\n return this.redColor;\n },\n set: function (value) {\n this.redColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"red\", {\n /**\n * Gets the `Red` color\n * @private\n */\n get: function () {\n return (this.r / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"b\", {\n /**\n * Gets or sets `Blue` channel value.\n * @private\n */\n get: function () {\n return this.blueColor;\n },\n set: function (value) {\n this.blueColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"blue\", {\n /**\n * Gets the `blue` color.\n * @private\n */\n get: function () {\n return (this.b / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"c\", {\n /**\n * Gets or sets `Cyan` channel value.\n * @private\n */\n get: function () {\n return this.cyanColor;\n },\n set: function (value) {\n if (value < 0) {\n this.cyanColor = 0;\n }\n else if (value > 1) {\n this.cyanColor = 1;\n }\n else {\n this.cyanColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"k\", {\n /**\n * Gets or sets `Black` channel value.\n * @private\n */\n get: function () {\n return this.blackColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.blackColor = 0;\n }\n else if ((value > 1)) {\n this.blackColor = 1;\n }\n else {\n this.blackColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"m\", {\n /**\n * Gets or sets `Magenta` channel value.\n * @private\n */\n get: function () {\n return this.magentaColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.magentaColor = 0;\n }\n else if ((value > 1)) {\n this.magentaColor = 1;\n }\n else {\n this.magentaColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"y\", {\n /**\n * Gets or sets `Yellow` channel value.\n * @private\n */\n get: function () {\n return this.yellowColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.yellowColor = 0;\n }\n else if ((value > 1)) {\n this.yellowColor = 1;\n }\n else {\n this.yellowColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"g\", {\n /**\n * Gets or sets `Green` channel value.\n * @private\n */\n get: function () {\n return this.greenColor;\n },\n set: function (value) {\n this.greenColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"green\", {\n /**\n * Gets the `Green` color.\n * @private\n */\n get: function () {\n return (this.g / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"gray\", {\n /**\n * Gets or sets `Gray` channel value.\n * @private\n */\n get: function () {\n return ((((this.redColor + this.greenColor) + this.blueColor)) / (PdfColor.maxColourChannelValue * 3));\n },\n set: function (value) {\n if (value < 0) {\n this.grayColor = 0;\n }\n else if (value > 1) {\n this.grayColor = 1;\n }\n else {\n this.grayColor = value;\n }\n this.r = (this.grayColor * PdfColor.maxColourChannelValue);\n this.g = (this.grayColor * PdfColor.maxColourChannelValue);\n this.b = (this.grayColor * PdfColor.maxColourChannelValue);\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"isEmpty\", {\n /**\n * Gets whether the PDFColor `is Empty` or not.\n * @private\n */\n get: function () {\n return !this.filled;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"a\", {\n /**\n * Gets or sets `Alpha` channel value.\n * @private\n */\n get: function () {\n return this.alpha;\n },\n set: function (value) {\n if (value < 0) {\n this.alpha = 0;\n }\n else {\n // if (this.alpha !== value) {\n this.alpha = value;\n // }\n }\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Converts `PDFColor to PDF string` representation.\n * @private\n */\n PdfColor.prototype.toString = function (colorSpace, stroke) {\n if (this.isEmpty) {\n return '';\n }\n var str = '';\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n str = this.rgbToString(stroke);\n break;\n case PdfColorSpace.GrayScale:\n str = this.grayScaleToString(stroke);\n break;\n case PdfColorSpace.Cmyk:\n str = this.cmykToString(stroke);\n break;\n }\n return str;\n };\n /**\n * Sets `GrayScale` color.\n * @private\n */\n PdfColor.prototype.grayScaleToString = function (ifStroking) {\n var gray = this.gray;\n var colour = '';\n var obj = null;\n /* tslint:disable-next-line:max-line-length */\n obj = (ifStroking) ? PdfColor.grayStringsSroke.containsKey(gray) ? PdfColor.grayStringsSroke.getValue(gray) : null : PdfColor.grayStringsFill.containsKey(gray) ? PdfColor.grayStringsFill.getValue(gray) : null;\n if (obj == null) {\n if (ifStroking) {\n colour = gray.toString() + ' G';\n PdfColor.grayStringsSroke.setValue(gray, colour);\n }\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /**\n * Sets `RGB` color.\n * @private\n */\n PdfColor.prototype.rgbToString = function (ifStroking) {\n var r = this.r;\n var g = this.g;\n var b = this.b;\n var key = (r << 16) + (g << 8) + b;\n if (ifStroking) {\n key += 1 << 24;\n }\n var colour = '';\n var obj = null;\n if (PdfColor.rgbStrings.containsKey(key)) {\n obj = PdfColor.rgbStrings.getValue(key);\n }\n if (obj == null) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n if (ifStroking) {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' RG';\n }\n else {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' rg';\n }\n PdfColor.rgbStrings.setValue(key, colour);\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /***\n * Sets `CMYK` color.\n * @private\n */\n PdfColor.prototype.cmykToString = function (ifStroking) {\n var cyan = this.c;\n var magenta = this.m;\n var yellow = this.y;\n var black = this.b;\n var colour = '';\n colour = cyan.toString() + ' ' + magenta.toString() + ' ' + yellow.toString() + ' ' + black.toString() + ' K';\n return colour + Operators.newLine;\n };\n /**\n * Converts `colour to a PDF array`.\n * @private\n */\n PdfColor.prototype.toArray = function (colorSpace) {\n var array = new PdfArray();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n array.add(new PdfNumber(this.red));\n array.add(new PdfNumber(this.green));\n array.add(new PdfNumber(this.blue));\n break;\n }\n return array;\n };\n //Fields\n /**\n * Holds `RGB colors` converted into strings.\n * @private\n */\n PdfColor.rgbStrings = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `stroking`.\n * @private\n */\n PdfColor.grayStringsSroke = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `filling`.\n * @private\n */\n PdfColor.grayStringsFill = new Dictionary();\n /**\n * `Max value` of color channel.\n * @private\n */\n PdfColor.maxColourChannelValue = 255.0;\n return PdfColor;\n}());\nexport { PdfColor };\n","/**\n * `PdfBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfBrush = /** @class */ (function () {\n /**\n * Creates instanceof `PdfBrush` class.\n * @hidden\n * @private\n */\n function PdfBrush() {\n //\n }\n //IClonable implementation\n PdfBrush.prototype.clone = function () {\n return this;\n };\n return PdfBrush;\n}());\nexport { PdfBrush };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColor } from './../pdf-color';\nimport { PdfColorSpace } from './../enum';\nimport { PdfBrush } from './pdf-brush';\n/**\n * Represents a brush that fills any object with a solid color.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfSolidBrush = /** @class */ (function (_super) {\n __extends(PdfSolidBrush, _super);\n //Constructors\n /**\n * Initializes a new instance of the `PdfSolidBrush` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param color color of the brush\n */\n function PdfSolidBrush(color) {\n var _this = _super.call(this) || this;\n _this.pdfColor = color;\n return _this;\n }\n Object.defineProperty(PdfSolidBrush.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color` of the brush.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Monitors` the changes of the brush and modify PDF state respectively.\n * @private\n */\n PdfSolidBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n if (streamWriter == null) {\n throw new Error('ArgumentNullException:streamWriter');\n }\n var diff = false;\n if (brush == null) {\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n else {\n var sBrush = brush;\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n };\n /**\n * `Resets` the changes, which were made by the brush.\n * @private\n */\n PdfSolidBrush.prototype.resetChanges = function (streamWriter) {\n streamWriter.setColorAndSpace(new PdfColor(0, 0, 0), PdfColorSpace.Rgb, false);\n };\n return PdfSolidBrush;\n}(PdfBrush));\nexport { PdfSolidBrush };\n","/**\n * PdfPen.ts class for EJ2-PDF\n */\nimport { PdfColor } from './pdf-color';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfDashStyle, PdfColorSpace } from './enum';\nimport { PdfBrush } from './brushes/pdf-brush';\n/**\n * `PdfPen` class defining settings for drawing operations, that determines the color,\n * width, and style of the drawing elements.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPen = /** @class */ (function () {\n function PdfPen(arg1, arg2) {\n //Fields\n /**\n * Specifies the `color of the pen`.\n * @default new PdfColor()\n * @private\n */\n this.pdfColor = new PdfColor(0, 0, 0);\n /**\n * Specifies the `dash offset of the pen`.\n * @default 0\n * @private\n */\n this.dashOffsetValue = 0;\n /**\n * Specifies the `dash pattern of the pen`.\n * @default [0]\n * @private\n */\n this.penDashPattern = [0];\n /**\n * Specifies the `dash style of the pen`.\n * @default Solid\n * @private\n */\n this.pdfDashStyle = PdfDashStyle.Solid;\n /**\n * Specifies the `line cap of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineCap = 0;\n /**\n * Specifies the `line join of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineJoin = 0;\n /**\n * Specifies the `width of the pen`.\n * @default 1.0\n * @private\n */\n this.penWidth = 1.0;\n /**\n * Specifies the `mitter limit of the pen`.\n * @default 0.0\n * @private\n */\n this.internalMiterLimit = 0.0;\n /**\n * Stores the `colorspace` value.\n * @default Rgb\n * @private\n */\n this.colorSpace = PdfColorSpace.Rgb;\n if (arg1 instanceof PdfBrush) {\n this.setBrush(arg1);\n }\n else if (arg1 instanceof PdfColor) {\n this.color = arg1;\n }\n if (typeof arg2 === 'number') {\n this.width = arg2;\n }\n }\n Object.defineProperty(PdfPen.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color of the pen`.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashOffset\", {\n /**\n * Gets or sets the `dash offset of the pen`.\n * @private\n */\n get: function () {\n if (typeof this.dashOffsetValue === 'undefined' || this.dashOffsetValue == null) {\n return 0;\n }\n else {\n return this.dashOffsetValue;\n }\n },\n set: function (value) {\n this.dashOffsetValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashPattern\", {\n /**\n * Gets or sets the `dash pattern of the pen`.\n * @private\n */\n get: function () {\n return this.penDashPattern;\n },\n set: function (value) {\n this.penDashPattern = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashStyle\", {\n /**\n * Gets or sets the `dash style of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen style\n * pen.dashStyle = PdfDashStyle.DashDot;\n * // get pen style\n * let style : PdfDashStyle = pen.dashStyle;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfDashStyle;\n },\n set: function (value) {\n if (this.pdfDashStyle !== value) {\n this.pdfDashStyle = value;\n switch (this.pdfDashStyle) {\n case PdfDashStyle.Custom:\n break;\n case PdfDashStyle.Dash:\n this.penDashPattern = [3, 1];\n break;\n case PdfDashStyle.Dot:\n this.penDashPattern = [1, 1];\n break;\n case PdfDashStyle.DashDot:\n this.penDashPattern = [3, 1, 1, 1];\n break;\n case PdfDashStyle.DashDotDot:\n this.penDashPattern = [3, 1, 1, 1, 1, 1];\n break;\n case PdfDashStyle.Solid:\n break;\n default:\n this.pdfDashStyle = PdfDashStyle.Solid;\n this.penDashPattern = [0];\n break;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineCap\", {\n /**\n * Gets or sets the `line cap of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineCap;\n },\n set: function (value) {\n this.pdfLineCap = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineJoin\", {\n /**\n * Gets or sets the `line join style of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineJoin;\n },\n set: function (value) {\n this.pdfLineJoin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"miterLimit\", {\n /**\n * Gets or sets the `miter limit`.\n * @private\n */\n get: function () {\n return this.internalMiterLimit;\n },\n set: function (value) {\n this.internalMiterLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"width\", {\n /**\n * Gets or sets the `width of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen width\n * pen.width = 2;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.penWidth;\n },\n set: function (value) {\n this.penWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Helper\n /**\n * `Clones` this instance of PdfPen class.\n * @private\n */\n PdfPen.prototype.clone = function () {\n var pen = this;\n return pen;\n };\n /**\n * `Sets the brush`.\n * @private\n */\n PdfPen.prototype.setBrush = function (brush) {\n var sBrush = brush;\n if ((sBrush != null && sBrush instanceof PdfSolidBrush)) {\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n }\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n };\n /**\n * `Monitors the changes`.\n * @private\n */\n PdfPen.prototype.monitorChanges = function (currentPen, streamWriter, getResources, saveState, currentColorSpace, matrix) {\n var diff = false;\n saveState = true;\n if (currentPen == null) {\n diff = true;\n }\n diff = this.dashControl(currentPen, saveState, streamWriter);\n streamWriter.setLineWidth(this.width);\n streamWriter.setLineJoin(this.lineJoin);\n streamWriter.setLineCap(this.lineCap);\n var miterLimit = this.miterLimit;\n if (miterLimit > 0) {\n streamWriter.setMiterLimit(miterLimit);\n diff = true;\n }\n var brush = this.pdfBrush;\n streamWriter.setColorAndSpace(this.color, currentColorSpace, true);\n diff = true;\n return diff;\n };\n /**\n * `Controls the dash style` and behaviour of each line.\n * @private\n */\n PdfPen.prototype.dashControl = function (pen, saveState, streamWriter) {\n saveState = true;\n var lineWidth = this.width;\n var pattern = this.getPattern();\n streamWriter.setLineDashPattern(pattern, this.dashOffset * lineWidth);\n return saveState;\n };\n /**\n * `Gets the pattern` of PdfPen.\n * @private\n */\n PdfPen.prototype.getPattern = function () {\n var pattern = this.dashPattern;\n for (var i = 0; i < pattern.length; ++i) {\n pattern[i] *= this.width;\n }\n return pattern;\n };\n return PdfPen;\n}());\nexport { PdfPen };\n","/**\n * PdfStringFormat.ts class for EJ2-PDF\n */\nimport { PdfVerticalAlignment } from './../../graphics/enum';\nimport { PdfSubSuperScript, PdfWordWrapType } from './../../graphics/fonts/enum';\n/**\n * `PdfStringFormat` class represents the text layout information on PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStringFormat = /** @class */ (function () {\n function PdfStringFormat(arg1, arg2) {\n /**\n * The `scaling factor` of the text being drawn.\n * @private\n */\n this.scalingFactor = 100.0;\n /**\n * Indicates text `wrapping` type.\n * @private\n */\n this.wordWrapType = PdfWordWrapType.Word;\n this.internalLineLimit = true;\n this.wordWrapType = PdfWordWrapType.Word;\n if ((typeof arg1 !== 'undefined') && (typeof arg1 !== 'string')) {\n this.textAlignment = arg1;\n }\n if (typeof arg2 !== 'undefined') {\n this.verticalAlignment = arg2;\n }\n }\n Object.defineProperty(PdfStringFormat.prototype, \"alignment\", {\n //Properties\n /**\n * Gets or sets the `horizontal` text alignment\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.textAlignment;\n },\n set: function (value) {\n this.textAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"textDirection\", {\n get: function () {\n return this.direction;\n },\n set: function (value) {\n this.direction = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineAlignment\", {\n /**\n * Gets or sets the `vertical` text alignment.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.verticalAlignment === 'undefined' || this.verticalAlignment == null) {\n return PdfVerticalAlignment.Top;\n }\n else {\n return this.verticalAlignment;\n }\n },\n set: function (value) {\n this.verticalAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"rightToLeft\", {\n /**\n * Gets or sets the value that indicates text `direction` mode.\n * @private\n */\n get: function () {\n if (typeof this.isRightToLeft === 'undefined' || this.isRightToLeft == null) {\n return false;\n }\n else {\n return this.isRightToLeft;\n }\n },\n set: function (value) {\n this.isRightToLeft = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"characterSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the characters in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set character spacing\n * stringFormat.characterSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalCharacterSpacing === 'undefined' || this.internalCharacterSpacing == null) {\n return 0;\n }\n else {\n return this.internalCharacterSpacing;\n }\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the words in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set word spacing\n * stringFormat.wordSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalWordSpacing === 'undefined' || this.internalWordSpacing == null) {\n return 0;\n }\n else {\n return this.internalWordSpacing;\n }\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineSpacing\", {\n /**\n * Gets or sets value that indicates the `vertical distance` between the baselines of adjacent lines of text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set string\n * let text : string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n * incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitati';\n * // set rectangle bounds\n * let rectangle : RectangleF = new RectangleF({x : 0, y : 0}, {width : 300, height : 100})\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set line spacing\n * stringFormat.lineSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString(text, font, blackBrush, rectangle, stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.leading === 'undefined' || this.leading == null) {\n return 0;\n }\n else {\n return this.leading;\n }\n },\n set: function (value) {\n this.leading = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"clipPath\", {\n /**\n * Gets or sets a value indicating whether the text is `clipped` or not.\n * @private\n */\n get: function () {\n if (typeof this.clip === 'undefined' || this.clip == null) {\n return false;\n }\n else {\n return this.clip;\n }\n },\n set: function (value) {\n this.clip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"subSuperScript\", {\n /**\n * Gets or sets value indicating whether the text is in `subscript or superscript` mode.\n * @private\n */\n get: function () {\n if (typeof this.pdfSubSuperScript === 'undefined' || this.pdfSubSuperScript == null) {\n return PdfSubSuperScript.None;\n }\n else {\n return this.pdfSubSuperScript;\n }\n },\n set: function (value) {\n this.pdfSubSuperScript = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"paragraphIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the paragraph.\n * @private\n */\n get: function () {\n if (typeof this.internalParagraphIndent === 'undefined' || this.internalParagraphIndent == null) {\n return 0;\n }\n else {\n return this.internalParagraphIndent;\n }\n },\n set: function (value) {\n this.internalParagraphIndent = value;\n this.firstLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineLimit\", {\n /**\n * Gets or sets a value indicating whether [`line limit`].\n * @private\n */\n get: function () {\n return this.internalLineLimit;\n },\n set: function (value) {\n this.internalLineLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"measureTrailingSpaces\", {\n /**\n * Gets or sets a value indicating whether [`measure trailing spaces`].\n * @private\n */\n get: function () {\n if (typeof this.trailingSpaces === 'undefined' || this.trailingSpaces == null) {\n return false;\n }\n else {\n return this.trailingSpaces;\n }\n },\n set: function (value) {\n this.trailingSpaces = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"noClip\", {\n /**\n * Gets or sets a value indicating whether [`no clip`].\n * @private\n */\n get: function () {\n if (typeof this.isNoClip === 'undefined' || this.isNoClip == null) {\n return false;\n }\n else {\n return this.isNoClip;\n }\n },\n set: function (value) {\n this.isNoClip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordWrap\", {\n /**\n * Gets or sets value indicating type of the text `wrapping`.\n * @private\n */\n get: function () {\n // if (typeof this.wrapType === 'undefined' || this.wrapType == null) {\n // return PdfWordWrapType.Word;\n // } else {\n return this.wordWrapType;\n // }\n },\n set: function (value) {\n this.wordWrapType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"horizontalScalingFactor\", {\n /**\n * Gets or sets the `scaling factor`.\n * @private\n */\n get: function () {\n // if (typeof this.scalingFactor === 'undefined' || this.scalingFactor == null) {\n // return 100;\n // } else {\n return this.scalingFactor;\n // }\n },\n set: function (value) {\n if (value <= 0) {\n throw new Error('ArgumentOutOfRangeException:The scaling factor cant be less of equal to zero, ScalingFactor');\n }\n this.scalingFactor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"firstLineIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the text.\n * @private\n */\n get: function () {\n if (typeof this.initialLineIndent === 'undefined' || this.initialLineIndent == null) {\n return 0;\n }\n else {\n return this.initialLineIndent;\n }\n },\n set: function (value) {\n this.initialLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clones` the object.\n * @private\n */\n //IClonable implementation\n PdfStringFormat.prototype.clone = function () {\n var format = this;\n return format;\n };\n return PdfStringFormat;\n}());\nexport { PdfStringFormat };\n","/**\n * StringTokenizer.ts class for EJ2-PDF\n * Utility class for working with strings.\n * @private\n */\nvar StringTokenizer = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringTokenizer` class.\n * @private\n */\n function StringTokenizer(textValue) {\n /**\n * Current `position`.\n * @private\n */\n this.currentPosition = 0;\n if (textValue == null) {\n throw new Error('ArgumentNullException:text');\n }\n this.text = textValue;\n }\n Object.defineProperty(StringTokenizer.prototype, \"length\", {\n // Properties\n /**\n * Gets text `length`.\n * @private\n */\n get: function () {\n return this.text.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"end\", {\n get: function () {\n return (this.currentPosition === this.text.length);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"position\", {\n /**\n * Gets or sets the position.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n StringTokenizer.getCharsCount = function (text, symbols) {\n if (typeof symbols === 'string') {\n if (text == null) {\n throw new Error('ArgumentNullException:wholeText');\n }\n var numSymbols = 0;\n var curIndex = 0;\n for (;;) {\n curIndex = text.indexOf(symbols, curIndex);\n if (curIndex === -1) {\n break;\n }\n else {\n numSymbols++;\n curIndex++;\n }\n }\n return numSymbols;\n }\n else {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (symbols == null) {\n throw new Error('ArgumentNullException:symbols');\n }\n var count = 0;\n for (var i = 0, len = text.length; i < len; i++) {\n var ch = text[i];\n if (this.contains(symbols, ch)) {\n count++;\n }\n }\n return count;\n }\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.readLine = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n': {\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.peekLine = function () {\n var pos = this.currentPosition;\n var line = this.readLine();\n this.currentPosition = pos;\n return line;\n };\n /**\n * Reads a word from the text.\n * @private\n */\n StringTokenizer.prototype.readWord = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n':\n var textValue = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return textValue;\n case ' ':\n case '\\t': {\n if (pos === this.currentPosition) {\n pos++;\n }\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Peeks a word from the text.\n * @private\n */\n StringTokenizer.prototype.peekWord = function () {\n var pos = this.currentPosition;\n var word = this.readWord();\n this.currentPosition = pos;\n return word;\n };\n StringTokenizer.prototype.read = function (count) {\n if (typeof count === 'undefined') {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n this.currentPosition++;\n }\n return ch;\n }\n else {\n var num = 0;\n var builder = '';\n while (!this.end && num < count) {\n var ch = this.read();\n builder = builder + ch;\n num++;\n }\n return builder;\n }\n };\n /**\n * Peeks char form the data.\n * @private\n */\n StringTokenizer.prototype.peek = function () {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n }\n return ch;\n };\n /**\n * Closes a reader.\n * @private\n */\n StringTokenizer.prototype.close = function () {\n this.text = null;\n };\n StringTokenizer.prototype.readToEnd = function () {\n var text;\n if (this.currentPosition === 0) {\n text = this.text;\n }\n else {\n text = this.text.substr(this.currentPosition, this.length - this.currentPosition);\n }\n this.currentPosition = this.length;\n return text;\n };\n //Implementation\n /**\n * Checks whether array contains a symbol.\n * @private\n */\n StringTokenizer.contains = function (array, symbol) {\n var contains = false;\n for (var i = 0; i < array.length; i++) {\n if (array[i] === symbol) {\n contains = true;\n break;\n }\n }\n return contains;\n };\n // Constants\n /**\n * `Whitespace` symbol.\n * @private\n */\n StringTokenizer.whiteSpace = ' ';\n /**\n * `tab` symbol.\n * @private\n */\n StringTokenizer.tab = '\\t';\n /**\n * Array of `spaces`.\n * @private\n */\n StringTokenizer.spaces = [StringTokenizer.whiteSpace, StringTokenizer.tab];\n /**\n * `Pattern` for WhiteSpace.\n * @private\n */\n StringTokenizer.whiteSpacePattern = '^[ \\t]+$';\n return StringTokenizer;\n}());\nexport { StringTokenizer };\n","/**\n * PdfFont.ts class for EJ2-PDF\n */\nimport { PdfFontStyle } from './enum';\nimport { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfStringFormat } from './pdf-string-format';\nimport { PdfStringLayouter } from './string-layouter';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Defines a particular format for text, including font face, size, and style attributes.\n * @private\n */\nvar PdfFont = /** @class */ (function () {\n function PdfFont(size, style) {\n /**\n * `Style` of the font.\n * @private\n */\n this.fontStyle = PdfFontStyle.Regular;\n if (typeof size === 'number' && typeof style === 'undefined') {\n this.fontSize = size;\n }\n else {\n this.fontSize = size;\n this.setStyle(style);\n }\n }\n Object.defineProperty(PdfFont.prototype, \"name\", {\n //Properties\n /**\n * Gets the face name of this Font.\n * @private\n */\n get: function () {\n return this.metrics.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"size\", {\n /**\n * Gets the size of this font.\n * @private\n */\n get: function () {\n return this.fontSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"height\", {\n /**\n * Gets the height of the font in points.\n * @private\n */\n get: function () {\n return this.metrics.getHeight(null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"style\", {\n /**\n * Gets the style information for this font.\n * @private\n */\n get: function () {\n return this.fontStyle;\n },\n set: function (value) {\n this.fontStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"bold\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `bold`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Bold) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"italic\", {\n /**\n * Gets a value indicating whether this `PdfFont` has the `italic` style applied.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Italic) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"strikeout\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `strikeout`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Strikeout) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"underline\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `underline`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Underline) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"metrics\", {\n /**\n * Gets or sets the `metrics` for this font.\n * @private\n */\n get: function () {\n return this.fontMetrics;\n },\n set: function (value) {\n this.fontMetrics = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"element\", {\n // /**\n // * Gets and Sets the font `internals`.\n // * @private\n // */\n // public get fontInternal() : IPdfPrimitive {\n // return this.pdfFontInternals;\n // }\n // public set fontInternal(value : IPdfPrimitive) {\n // this.pdfFontInternals = value;\n // }\n //IPdfWrapper Members\n /**\n * Gets the `element` representing the font.\n * @private\n */\n get: function () {\n return this.pdfFontInternals;\n },\n enumerable: true,\n configurable: true\n });\n PdfFont.prototype.measureString = function (text, arg2, arg3, arg4, arg5) {\n if (typeof text === 'string' && typeof arg2 === 'undefined') {\n return this.measureString(text, null);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'undefined' && typeof arg4 === 'undefined') {\n var temparg2 = arg2;\n var charactersFitted = 0;\n var linesFilled = 0;\n return this.measureString(text, temparg2, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'number' && typeof arg4 === 'number') {\n var temparg2 = arg2;\n return this.measureString(text, 0, temparg2, arg3, arg4);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'number' && typeof arg5 === 'number') {\n var layoutArea = new SizeF(arg2, 0);\n var temparg3 = arg3;\n return this.measureString(text, layoutArea, temparg3, arg4, arg5);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else {\n if (text == null) {\n throw Error(\"ArgumentNullException(\\\"text\\\")\");\n }\n var temparg2 = arg2;\n var temparg3 = arg3;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(text, this, temparg3, temparg2, false, new SizeF(0, 0));\n // arg4 = (result.Remainder == null) ? text.length : text.length - result.Remainder.length;\n arg4 = text.length;\n arg5 = (result.empty) ? 0 : result.lines.length;\n return result.actualSize;\n }\n };\n /* tslint:enable */\n //IPdfCache Members\n /**\n * `Checks` whether the object is similar to another object.\n * @private\n */\n PdfFont.prototype.equalsTo = function (obj) {\n var result = this.equalsToFont(obj);\n return result;\n };\n /**\n * Returns `internals` of the object.\n * @private\n */\n PdfFont.prototype.getInternals = function () {\n return this.pdfFontInternals;\n };\n /**\n * Sets `internals` to the object.\n * @private\n */\n PdfFont.prototype.setInternals = function (internals) {\n if (internals == null) {\n throw new Error('ArgumentNullException:internals');\n }\n this.pdfFontInternals = internals;\n };\n /**\n * Sets the `style` of the font.\n * @private\n */\n PdfFont.prototype.setStyle = function (style) {\n this.fontStyle = style;\n };\n /**\n * Applies `settings` to the default line width.\n * @private\n */\n PdfFont.prototype.applyFormatSettings = function (line, format, width) {\n // if (line == null) {\n // throw new Error(`ArgumentNullException:line`);\n // }\n var realWidth = width;\n if (format != null && width > 0) {\n // Space among characters is not default.\n if (format.characterSpacing !== 0) {\n realWidth += (line.length - 1) * format.characterSpacing;\n }\n // Space among words is not default.\n if (format.wordSpacing !== 0) {\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n realWidth += whitespacesCount * format.wordSpacing;\n }\n }\n return realWidth;\n };\n //Constants\n /**\n * `Multiplier` of the symbol width.\n * @default 0.001\n * @private\n */\n PdfFont.charSizeMultiplier = 0.001;\n /**\n * `Synchronization` object.\n * @private\n */\n PdfFont.syncObject = new Object();\n return PdfFont;\n}());\nexport { PdfFont };\n","/**\n * public Enum for `PdfLayoutType`.\n * @private\n */\nexport var PdfLayoutType;\n(function (PdfLayoutType) {\n /**\n * Specifies the type of `Paginate`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"Paginate\"] = 0] = \"Paginate\";\n /**\n * Specifies the type of `OnePage`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"OnePage\"] = 1] = \"OnePage\";\n})(PdfLayoutType || (PdfLayoutType = {}));\n/**\n * public Enum for `PdfLayoutBreakType`.\n * @private\n */\nexport var PdfLayoutBreakType;\n(function (PdfLayoutBreakType) {\n /**\n * Specifies the type of `FitPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitPage\"] = 0] = \"FitPage\";\n /**\n * Specifies the type of `FitElement`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitElement\"] = 1] = \"FitElement\";\n /**\n * Specifies the type of `FitColumnsToPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitColumnsToPage\"] = 2] = \"FitColumnsToPage\";\n})(PdfLayoutBreakType || (PdfLayoutBreakType = {}));\nexport var PathPointType;\n(function (PathPointType) {\n /**\n * Specifies the path point type of `Start`.\n * @private\n */\n PathPointType[PathPointType[\"Start\"] = 0] = \"Start\";\n /**\n * Specifies the path point type of `Line`.\n * @private\n */\n PathPointType[PathPointType[\"Line\"] = 1] = \"Line\";\n /**\n * Specifies the path point type of `Bezier3`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier3\"] = 3] = \"Bezier3\";\n /**\n * Specifies the path point type of `Bezier`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier\"] = 3] = \"Bezier\";\n /**\n * Specifies the path point type of `PathTypeMask`.\n * @private\n */\n PathPointType[PathPointType[\"PathTypeMask\"] = 7] = \"PathTypeMask\";\n /**\n * Specifies the path point type of `DashMode`.\n * @private\n */\n PathPointType[PathPointType[\"DashMode\"] = 16] = \"DashMode\";\n /**\n * Specifies the path point type of `PathMarker`.\n * @private\n */\n PathPointType[PathPointType[\"PathMarker\"] = 32] = \"PathMarker\";\n /**\n * Specifies the path point type of `CloseSubpath`.\n * @private\n */\n PathPointType[PathPointType[\"CloseSubpath\"] = 128] = \"CloseSubpath\";\n})(PathPointType || (PathPointType = {}));\n","/**\n * PdfTransformationMatrix.ts class for EJ2-PDF\n */\nimport { PointF } from './../drawing/pdf-drawing';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * Class for representing Root `transformation matrix`.\n */\nvar PdfTransformationMatrix = /** @class */ (function () {\n function PdfTransformationMatrix(value) {\n /**\n * Value for `angle converting`.\n * @default 180.0 / Math.PI\n * @private\n */\n this.radDegFactor = 180.0 / Math.PI;\n if (typeof value === 'undefined') {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, 1.00, 0.00, 0.00);\n }\n else {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, -1.00, 0.00, 0.00);\n }\n }\n Object.defineProperty(PdfTransformationMatrix.prototype, \"matrix\", {\n // Properties\n /**\n * Gets or sets the `internal matrix object`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n set: function (value) {\n this.transformationMatrix = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.translate = function (offsetX, offsetY) {\n this.transformationMatrix.translate(offsetX, offsetY);\n };\n /**\n * `Scales` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.scale = function (scaleX, scaleY) {\n this.transformationMatrix.elements[0] = scaleX;\n this.transformationMatrix.elements[3] = scaleY;\n };\n /**\n * `Rotates` coordinate system in counterclockwise direction.\n * @private\n */\n PdfTransformationMatrix.prototype.rotate = function (angle) {\n //Convert from degree to radian \n angle = (angle * Math.PI) / 180;\n //Rotation \n this.transformationMatrix.elements[0] = Math.cos(angle);\n this.transformationMatrix.elements[1] = Math.sin(angle);\n this.transformationMatrix.elements[2] = -Math.sin(angle);\n this.transformationMatrix.elements[3] = Math.cos(angle);\n };\n // Overrides\n /**\n * Gets `PDF representation`.\n * @private\n */\n PdfTransformationMatrix.prototype.toString = function () {\n var builder = '';\n var whitespace = ' ';\n for (var i = 0, len = this.transformationMatrix.elements.length; i < len; i++) {\n var temp = this.matrix.elements[i];\n builder += PdfNumber.floatToString(this.transformationMatrix.elements[i]);\n builder += whitespace;\n }\n return builder;\n };\n // Implementation\n /**\n * `Multiplies` matrices (changes coordinate system.)\n * @private\n */\n PdfTransformationMatrix.prototype.multiply = function (matrix) {\n this.transformationMatrix.multiply(matrix.matrix);\n };\n /**\n * Converts `degrees to radians`.\n * @private\n */\n PdfTransformationMatrix.degreesToRadians = function (degreesX) {\n return this.degRadFactor * degreesX;\n };\n /**\n * Converts `radians to degrees`.\n * @private\n */\n PdfTransformationMatrix.prototype.radiansToDegrees = function (radians) {\n return this.radDegFactor * radians;\n };\n /**\n * `Clones` this instance of PdfTransformationMatrix.\n * @private\n */\n PdfTransformationMatrix.prototype.clone = function () {\n return this;\n };\n // Constants\n /**\n * Value for `angle converting`.\n * @default Math.PI / 180.0\n * @private\n */\n PdfTransformationMatrix.degRadFactor = Math.PI / 180.0;\n return PdfTransformationMatrix;\n}());\nexport { PdfTransformationMatrix };\nvar Matrix = /** @class */ (function () {\n function Matrix(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (typeof arg1 === 'undefined') {\n this.metrixElements = [];\n }\n else if (typeof arg1 === 'number') {\n this.metrixElements = [];\n this.metrixElements.push(arg1);\n this.metrixElements.push(arg2);\n this.metrixElements.push(arg3);\n this.metrixElements.push(arg4);\n this.metrixElements.push(arg5);\n this.metrixElements.push(arg6);\n }\n else {\n this.metrixElements = arg1;\n }\n }\n Object.defineProperty(Matrix.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `elements`.\n * @private\n */\n get: function () {\n return this.metrixElements;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetX\", {\n /**\n * Gets the off set `X`.\n * @private\n */\n get: function () {\n return this.metrixElements[4];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetY\", {\n /**\n * Gets the off set `Y`.\n * @private\n */\n get: function () {\n return this.metrixElements[5];\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n Matrix.prototype.translate = function (offsetX, offsetY) {\n this.metrixElements[4] = offsetX;\n this.metrixElements[5] = offsetY;\n };\n /**\n * `Translates` the specified offset X.\n * @private\n */\n Matrix.prototype.transform = function (point) {\n var x = point.x;\n var y = point.y;\n var x2 = x * this.elements[0] + y * this.elements[2] + this.offsetX;\n var y2 = x * this.elements[1] + y * this.elements[3] + this.offsetY;\n return new PointF(x2, y2);\n };\n /**\n * `Multiplies matrices` (changes coordinate system.)\n * @private\n */\n Matrix.prototype.multiply = function (matrix) {\n var tempMatrix = [];\n tempMatrix.push(this.elements[0] * matrix.elements[0] + this.elements[1] * matrix.elements[2]);\n tempMatrix[1] = (this.elements[0] * matrix.elements[1] + this.elements[1] * matrix.elements[3]);\n tempMatrix[2] = (this.elements[2] * matrix.elements[0] + this.elements[3] * matrix.elements[2]);\n tempMatrix[3] = (this.elements[2] * matrix.elements[1] + this.elements[3] * matrix.elements[3]);\n tempMatrix[4] = (this.offsetX * matrix.elements[0] + this.offsetY * matrix.elements[2] + matrix.offsetX);\n tempMatrix[5] = (this.offsetX * matrix.elements[1] + this.offsetY * matrix.elements[3] + matrix.offsetY);\n for (var i = 0; i < tempMatrix.length; i++) {\n this.elements[i] = tempMatrix[i];\n }\n };\n // IDisposable Members\n /**\n * `Dispose` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.dispose = function () {\n this.metrixElements = null;\n };\n // ICloneable Members\n /**\n * `Clones` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.clone = function () {\n var m = new Matrix(this.metrixElements);\n return m;\n };\n return Matrix;\n}());\nexport { Matrix };\n","/**\n * `constants.ts` class for EJ2-PDF\n * @private\n */\nvar ProcedureSets = /** @class */ (function () {\n function ProcedureSets() {\n /**\n * Specifies the `PDF` procedure set.\n * @private\n */\n this.pdf = 'PDF';\n /**\n * Specifies the `Text` procedure set.\n * @private\n */\n this.text = 'Text';\n /**\n * Specifies the `ImageB` procedure set.\n * @private\n */\n this.imageB = 'ImageB';\n /**\n * Specifies the `ImageC` procedure set.\n * @private\n */\n this.imageC = 'ImageC';\n /**\n * Specifies the `ImageI` procedure set.\n * @private\n */\n this.imageI = 'ImageI';\n }\n return ProcedureSets;\n}());\nexport { ProcedureSets };\n","/**\n * Dictionary class\n * @private\n * @hidden\n */\nvar TemporaryDictionary = /** @class */ (function () {\n function TemporaryDictionary() {\n /**\n * @hidden\n * @private\n */\n this.mKeys = [];\n /**\n * @hidden\n * @private\n */\n this.mValues = [];\n }\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.size = function () {\n return this.mKeys.length;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.add = function (key, value) {\n if (key === undefined || key === null || value === undefined || value === null) {\n throw new ReferenceError('Provided key or value is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n return 1;\n }\n else {\n throw new RangeError('An item with the same key has already been added.');\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.keys = function () {\n return this.mKeys;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.values = function () {\n return this.mValues;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.getValue = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n return this.mValues[index];\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.setValue = function (key, value) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n }\n else {\n this.mValues[index] = value;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.remove = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n this.mKeys.splice(index, 1);\n this.mValues.splice(index, 1);\n return true;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.containsKey = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n return false;\n }\n return true;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.clear = function () {\n this.mKeys = [];\n this.mValues = [];\n };\n return TemporaryDictionary;\n}());\nexport { TemporaryDictionary };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents a simple `transparency`.\n * @private\n */\nvar PdfTransparency = /** @class */ (function () {\n // Properties\n // /**\n // * Gets the `stroke` operation alpha value.\n // * @private\n // */\n // public get stroke() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.CA);\n // return result;\n // }\n // /**\n // * Gets the `fill` operation alpha value.\n // * @private\n // */\n // public get fill() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.ca);\n // return result;\n // }\n // /**\n // * Gets the `blend mode`.\n // * @private\n // */\n // public get mode() : PdfBlendMode {\n // let result : string = this.getName(this.dictionaryProperties.ca);\n // return PdfBlendMode.Normal;\n // }\n // Constructors\n /**\n * Initializes a new instance of the `Transparency` class.\n * @private\n */\n function PdfTransparency(stroke, fill, mode) {\n // Fields\n /**\n * Internal variable to store `dictionary`.\n * @default new PdfDictionary()\n * @private\n */\n this.dictionary = new PdfDictionary();\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new DictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.dictionary.items.setValue(this.dictionaryProperties.CA, new PdfNumber(stroke));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(fill));\n this.dictionary.items.setValue(this.dictionaryProperties.BM, new PdfName(mode.toString()));\n }\n Object.defineProperty(PdfTransparency.prototype, \"element\", {\n // // Implementation\n // /**\n // * Gets the `number value`.\n // * @private\n // */\n // private getNumber(keyName : string) : number {\n // let result : number = 0.0;\n // let numb : PdfNumber = this.dictionary.items.getValue(keyName) as PdfNumber;\n // result = numb.intValue;\n // return result;\n // }\n // /**\n // * Gets the `name value`.\n // * @private\n // */\n // private getName(keyName : string) : string {\n // let result : string = null;\n // let name : PdfName = this.dictionary.items.getValue(keyName) as PdfName;\n // result = name.value;\n // return result;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTransparency;\n}());\nexport { PdfTransparency };\n","/**\n * Represent a `collection of automatic fields information`.\n * @private\n */\nvar PdfAutomaticFieldInfoCollection = /** @class */ (function () {\n /**\n * Initializes a new instance of the 'PdfPageNumberFieldInfoCollection' class.\n * @private\n */\n function PdfAutomaticFieldInfoCollection() {\n /**\n * Internal variable to store instance of `pageNumberFields` class.\n * @private\n */\n this.automaticFieldsInformation = [];\n //\n }\n Object.defineProperty(PdfAutomaticFieldInfoCollection.prototype, \"automaticFields\", {\n /**\n * Gets the `page number fields collection`.\n * @private\n */\n get: function () {\n return this.automaticFieldsInformation;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /// Adds the specified field info.\n /**\n * Add page number field into collection.\n * @private\n */\n PdfAutomaticFieldInfoCollection.prototype.add = function (fieldInfo) {\n return this.automaticFields.push(fieldInfo);\n };\n return PdfAutomaticFieldInfoCollection;\n}());\nexport { PdfAutomaticFieldInfoCollection };\n","/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfGraphicsElement = /** @class */ (function () {\n // Constructors\n function PdfGraphicsElement() {\n //\n }\n /**\n * `Draws` the page number field.\n * @public\n */\n PdfGraphicsElement.prototype.drawHelper = function (graphics, x, y) {\n var bNeedSave = (x !== 0 || y !== 0);\n var gState = null;\n // Translate co-ordinates.\n if (bNeedSave) {\n // Save state.\n gState = graphics.save();\n graphics.translateTransform(x, y);\n }\n this.drawInternal(graphics);\n if (bNeedSave) {\n // Restore state.\n graphics.restore(gState);\n }\n };\n return PdfGraphicsElement;\n}());\nexport { PdfGraphicsElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfDocument } from './../pdf-document';\nimport { PdfGraphicsElement } from './../../graphics/figures/base/graphics-element';\nimport { PdfAutomaticFieldInfo } from './automatic-field-info';\n/**\n * Represents a fields which is calculated before the document saves.\n */\nvar PdfAutomaticField = /** @class */ (function (_super) {\n __extends(PdfAutomaticField, _super);\n // Constructors\n function PdfAutomaticField() {\n var _this = _super.call(this) || this;\n // Fields\n _this.internalBounds = new RectangleF(0, 0, 0, 0);\n _this.internalTemplateSize = new SizeF(0, 0);\n return _this;\n }\n Object.defineProperty(PdfAutomaticField.prototype, \"bounds\", {\n // Properties\n get: function () {\n return this.internalBounds;\n },\n set: function (value) {\n this.internalBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"size\", {\n get: function () {\n return new SizeF(this.bounds.width, this.bounds.height);\n },\n set: function (value) {\n this.bounds.width = value.width;\n this.bounds.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"location\", {\n get: function () {\n return new PointF(this.bounds.x, this.bounds.y);\n },\n set: function (value) {\n this.bounds.x = value.x;\n this.bounds.y = value.y;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"font\", {\n get: function () {\n return this.internalFont;\n },\n set: function (value) {\n this.internalFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"brush\", {\n get: function () {\n return this.internalBrush;\n },\n set: function (value) {\n this.internalBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"pen\", {\n get: function () {\n return this.internalPen;\n },\n set: function (value) {\n this.internalPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"stringFormat\", {\n get: function () {\n return this.internalStringFormat;\n },\n set: function (value) {\n this.internalStringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfAutomaticField.prototype.performDrawHelper = function (graphics, location, scalingX, scalingY) {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n var text = this.getValue(graphics);\n this.internalTemplateSize = this.getFont().measureString(text, this.size, this.stringFormat);\n }\n };\n PdfAutomaticField.prototype.draw = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n var location_1 = new PointF(0, 0);\n this.draw(arg1, location_1);\n }\n else if (arg2 instanceof PointF) {\n this.draw(arg1, arg2.x, arg2.y);\n }\n else {\n this.drawHelper(arg1, arg2, arg3);\n var info = new PdfAutomaticFieldInfo(this, new PointF(arg2, arg3));\n arg1.automaticFields.add(info);\n }\n };\n PdfAutomaticField.prototype.getSize = function () {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n return this.internalTemplateSize;\n }\n else {\n return this.size;\n }\n };\n PdfAutomaticField.prototype.drawInternal = function (graphics) {\n //\n };\n /* tslint:disable */\n PdfAutomaticField.prototype.getBrush = function () {\n return (typeof this.internalBrush === 'undefined' || this.internalBrush == null) ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.internalBrush;\n };\n PdfAutomaticField.prototype.getFont = function () {\n return (typeof this.internalFont === 'undefined' || this.internalFont == null) ? PdfDocument.defaultFont : this.internalFont;\n };\n /* tslint:enable */\n PdfAutomaticField.prototype.getPageFromGraphics = function (graphics) {\n if (typeof graphics.page !== 'undefined' && graphics.page !== null) {\n var page = graphics.page;\n return page;\n }\n else {\n var page = graphics.currentPage;\n return page;\n }\n };\n return PdfAutomaticField;\n}(PdfGraphicsElement));\nexport { PdfAutomaticField };\n","/**\n * PdfAutomaticFieldInfo.ts class for EJ2-PDF\n * @private\n */\nimport { PointF } from './../../drawing/pdf-drawing';\nimport { PdfAutomaticField } from './automatic-field';\n/**\n * Represents information about the automatic field.\n * @private\n */\nvar PdfAutomaticFieldInfo = /** @class */ (function () {\n function PdfAutomaticFieldInfo(field, location, scaleX, scaleY) {\n // Fields\n /**\n * Internal variable to store location of the field.\n * @private\n */\n this.pageNumberFieldLocation = new PointF();\n /**\n * Internal variable to store field.\n * @private\n */\n this.pageNumberField = null;\n /**\n * Internal variable to store x scaling factor.\n * @private\n */\n this.scaleX = 1;\n /**\n * Internal variable to store y scaling factor.\n * @private\n */\n this.scaleY = 1;\n if (typeof location === 'undefined' && field instanceof PdfAutomaticFieldInfo) {\n this.pageNumberField = field.field;\n this.pageNumberFieldLocation = field.location;\n this.scaleX = field.scalingX;\n this.scaleY = field.scalingY;\n }\n else if (typeof scaleX === 'undefined' && location instanceof PointF && field instanceof PdfAutomaticField) {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n }\n else {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n this.scaleX = scaleX;\n this.scaleY = scaleY;\n }\n }\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"location\", {\n /* tslint:enable */\n // Properties\n /**\n * Gets or sets the location.\n * @private\n */\n get: function () {\n return this.pageNumberFieldLocation;\n },\n set: function (value) {\n this.pageNumberFieldLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"field\", {\n /**\n * Gets or sets the field.\n * @private\n */\n get: function () {\n return this.pageNumberField;\n },\n set: function (value) {\n this.pageNumberField = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingX\", {\n /**\n * Gets or sets the scaling X factor.\n * @private\n */\n get: function () {\n return this.scaleX;\n },\n set: function (value) {\n this.scaleX = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingY\", {\n /**\n * Gets or sets the scaling Y factor.\n * @private\n */\n get: function () {\n return this.scaleY;\n },\n set: function (value) {\n this.scaleY = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAutomaticFieldInfo;\n}());\nexport { PdfAutomaticFieldInfo };\n","/**\n * ByteArray class\n * Used to keep information about image stream as byte array.\n * @private\n */\nvar ByteArray = /** @class */ (function () {\n /**\n * Initialize the new instance for `byte-array` class\n * @hidden\n * @private\n */\n function ByteArray(length) {\n /**\n * Current stream `position`.\n * @default 0\n * @private\n */\n this.mPosition = 0;\n this.buffer = new Uint8Array(length);\n this.dataView = new DataView(this.buffer.buffer);\n }\n Object.defineProperty(ByteArray.prototype, \"position\", {\n /**\n * Gets and Sets a current `position` of byte array.\n * @hidden\n * @private\n */\n get: function () {\n return this.mPosition;\n },\n set: function (value) {\n this.mPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Read` from current stream position.\n * @default 0\n * @hidden\n * @private\n */\n ByteArray.prototype.read = function (buffer, offset, count) {\n for (var index = offset; index < count; index++) {\n var position = this.position;\n buffer.buffer[index] = this.readByte(position);\n this.position++;\n }\n };\n /**\n * @hidden\n */\n ByteArray.prototype.getBuffer = function (index) {\n return this.buffer[index];\n };\n /**\n * @hidden\n */\n ByteArray.prototype.writeFromBase64String = function (base64) {\n var arr = this.encodedString(base64);\n this.buffer = arr;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var enc1;\n var enc2;\n var enc3;\n var enc4;\n var i = 0;\n var resultIndex = 0;\n var dataUrlPrefix = 'data:';\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n var output = new Uint8Array(totalLength | 0);\n while (i < input.length) {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n output[resultIndex++] = chr1;\n output[resultIndex++] = chr2;\n output[resultIndex++] = chr3;\n }\n return output;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.readByte = function (offset) {\n return (this.buffer[offset]);\n };\n Object.defineProperty(ByteArray.prototype, \"internalBuffer\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ByteArray.prototype, \"count\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * 'readNextTwoBytes' stream\n * @hidden\n * @private\n */\n ByteArray.prototype.readNextTwoBytes = function (stream) {\n var data = stream.readByte(this.position);\n this.position++;\n data <<= 8;\n data |= stream.readByte(this.position);\n this.position++;\n return data;\n };\n return ByteArray;\n}());\nexport { ByteArray };\n","/**\n * TtfTableInfo.ts class for EJ2-PDF\n */\nvar TtfTableInfo = /** @class */ (function () {\n function TtfTableInfo() {\n }\n Object.defineProperty(TtfTableInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this table is empty.\n * @private\n */\n get: function () {\n var empty = (this.offset === this.length && this.length === this.checksum && this.checksum === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n return TtfTableInfo;\n}());\nexport { TtfTableInfo };\n","var TtfNameTable = /** @class */ (function () {\n function TtfNameTable() {\n }\n return TtfNameTable;\n}());\nexport { TtfNameTable };\n","/**\n * TtfNameRecord.ts class for EJ2-PDF\n */\nvar TtfNameRecord = /** @class */ (function () {\n function TtfNameRecord() {\n }\n return TtfNameRecord;\n}());\nexport { TtfNameRecord };\n","/**\n * TtfHeadTable.ts class for EJ2-PDF\n */\nvar TtfHeadTable = /** @class */ (function () {\n function TtfHeadTable() {\n }\n return TtfHeadTable;\n}());\nexport { TtfHeadTable };\n","var TtfMetrics = /** @class */ (function () {\n function TtfMetrics() {\n }\n Object.defineProperty(TtfMetrics.prototype, \"isItalic\", {\n //Properties\n /**\n * Gets a value indicating whether this instance is italic.\n */\n get: function () {\n return ((this.macStyle & 2) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfMetrics.prototype, \"isBold\", {\n /**\n * Gets a value indicating whether this instance is bold.\n */\n get: function () {\n return ((this.macStyle & 1) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n return TtfMetrics;\n}());\nexport { TtfMetrics };\n","/**\n * TtfHorizontalHeaderTable.ts class for EJ2-PDF\n */\nvar TtfHorizontalHeaderTable = /** @class */ (function () {\n function TtfHorizontalHeaderTable() {\n }\n return TtfHorizontalHeaderTable;\n}());\nexport { TtfHorizontalHeaderTable };\n","/**\n * TtfOS2Table.ts class for EJ2-PDF\n * The OS/2 table consists of a set of metrics that are required by Windows and OS/2.\n */\nvar TtfOS2Table = /** @class */ (function () {\n function TtfOS2Table() {\n }\n return TtfOS2Table;\n}());\nexport { TtfOS2Table };\n","/**\n * TtfPostTable.ts class for EJ2-PDF\n */\nvar TtfPostTable = /** @class */ (function () {\n function TtfPostTable() {\n }\n return TtfPostTable;\n}());\nexport { TtfPostTable };\n","/**\n * TtfLongHorMetric.ts class for EJ2-PDF\n */\nvar TtfLongHorMetric = /** @class */ (function () {\n function TtfLongHorMetric() {\n }\n return TtfLongHorMetric;\n}());\nexport { TtfLongHorMetric };\n","/**\n * TtfCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfCmapSubTable = /** @class */ (function () {\n function TtfCmapSubTable() {\n }\n return TtfCmapSubTable;\n}());\nexport { TtfCmapSubTable };\n","/**\n * TtfCmapTable.ts class for EJ2-PDF\n */\nvar TtfCmapTable = /** @class */ (function () {\n function TtfCmapTable() {\n }\n return TtfCmapTable;\n}());\nexport { TtfCmapTable };\n","/**\n * TtfGlyphInfo.ts class for EJ2-PDF\n */\nvar TtfGlyphInfo = /** @class */ (function () {\n function TtfGlyphInfo() {\n }\n Object.defineProperty(TtfGlyphInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this TtfGlyphInfo is empty.\n */\n get: function () {\n var empty = (this.index === this.width && this.width === this.charCode && this.charCode === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n //IComparable implementation\n /**\n * Compares two WidthDescriptor objects.\n */\n TtfGlyphInfo.prototype.compareTo = function (obj) {\n var glyph = obj;\n return this.index - glyph.index;\n };\n return TtfGlyphInfo;\n}());\nexport { TtfGlyphInfo };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfLocaTable = /** @class */ (function () {\n function TtfLocaTable() {\n }\n return TtfLocaTable;\n}());\nexport { TtfLocaTable };\n","/**\n * TtfAppleCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfAppleCmapSubTable = /** @class */ (function () {\n function TtfAppleCmapSubTable() {\n }\n return TtfAppleCmapSubTable;\n}());\nexport { TtfAppleCmapSubTable };\n","/**\n * TtfMicrosoftCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfMicrosoftCmapSubTable = /** @class */ (function () {\n function TtfMicrosoftCmapSubTable() {\n }\n return TtfMicrosoftCmapSubTable;\n}());\nexport { TtfMicrosoftCmapSubTable };\n","/**\n * TtfTrimmedCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfTrimmedCmapSubTable = /** @class */ (function () {\n function TtfTrimmedCmapSubTable() {\n }\n return TtfTrimmedCmapSubTable;\n}());\nexport { TtfTrimmedCmapSubTable };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfGlyphHeader = /** @class */ (function () {\n function TtfGlyphHeader() {\n }\n return TtfGlyphHeader;\n}());\nexport { TtfGlyphHeader };\n","/**\n * Writes data in BigEndian order.\n */\nvar BigEndianWriter = /** @class */ (function () {\n //Constructors\n /**\n * Creates a new writer.\n */\n function BigEndianWriter(capacity) {\n //Constants\n /**\n * Size of Int32 type.\n */\n this.int32Size = 4;\n /**\n * Size of Int16 type.\n */\n this.int16Size = 2;\n /**\n * Size of long type.\n */\n this.int64Size = 8;\n this.bufferLength = capacity;\n this.buffer = [];\n }\n Object.defineProperty(BigEndianWriter.prototype, \"data\", {\n //Properties\n /**\n * Gets data written to the writer.\n */\n get: function () {\n if (this.buffer.length < this.bufferLength) {\n var length_1 = this.bufferLength - this.buffer.length;\n for (var i = 0; i < length_1; i++) {\n this.buffer.push(0);\n }\n }\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BigEndianWriter.prototype, \"position\", {\n /// \n /// Gets position of the internal buffer.\n /// \n get: function () {\n if (this.internalPosition === undefined || this.internalPosition === null) {\n this.internalPosition = 0;\n }\n return this.internalPosition;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Writes short value.\n */\n BigEndianWriter.prototype.writeShort = function (value) {\n var bytes = [((value & 0x0000ff00) >> 8), value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes int value.\n */\n BigEndianWriter.prototype.writeInt = function (value) {\n var i1 = (value & 0xff000000) >> 24;\n i1 = i1 < 0 ? 256 + i1 : i1;\n var i2 = (value & 0x00ff0000) >> 16;\n i2 = i2 < 0 ? 256 + i2 : i2;\n var i3 = (value & 0x0000ff00) >> 8;\n i3 = i3 < 0 ? 256 + i3 : i3;\n var i4 = value & 0x000000ff;\n i4 = i4 < 0 ? 256 + i4 : i4;\n var bytes = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes u int value.\n */\n BigEndianWriter.prototype.writeUInt = function (value) {\n var buff = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(buff);\n };\n /**\n * Writes string value.\n */\n BigEndianWriter.prototype.writeString = function (value) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var bytes = [];\n for (var i = 0; i < value.length; i++) {\n bytes.push(value.charCodeAt(i));\n }\n this.flush(bytes);\n };\n /**\n * Writes byte[] value.\n */\n BigEndianWriter.prototype.writeBytes = function (value) {\n this.flush(value);\n };\n // //Implementation\n BigEndianWriter.prototype.flush = function (buff) {\n if (buff === null) {\n throw new Error('Argument Null Exception : buff');\n }\n var position = this.position;\n for (var i = 0; i < buff.length; i++) {\n this.buffer[position] = buff[i];\n position++;\n }\n this.internalPosition += buff.length;\n };\n return BigEndianWriter;\n}());\nexport { BigEndianWriter };\n","/**\n * TtfReader.ts class for EJ2-PDF\n */\nimport { TtfTableInfo } from './ttf-table-info';\nimport { Dictionary } from './../../collections/dictionary';\nimport { TtfNameTable } from './ttf-name-table';\nimport { TtfNameRecord } from './ttf-name-record';\nimport { TtfHeadTable } from './ttf-head-table';\nimport { TtfMetrics } from './ttf-metrics';\nimport { TtfHorizontalHeaderTable } from './ttf-horizontal-header-table';\nimport { TtfOS2Table } from './ttf-OS2-Table';\nimport { TtfPostTable } from './ttf-post-table';\nimport { TtfLongHorMetric } from './ttf-long-hor-metric';\nimport { TtfCmapSubTable } from './ttf-cmap-sub-table';\nimport { TtfCmapTable } from './ttf-cmap-table';\nimport { TtfGlyphInfo } from './ttf-glyph-info';\nimport { TtfLocaTable } from './ttf-loca-table';\nimport { TtfAppleCmapSubTable } from './ttf-apple-cmap-sub-table';\nimport { TtfMicrosoftCmapSubTable } from './ttf-microsoft-cmap-sub-table';\nimport { TtfTrimmedCmapSubTable } from './ttf-trimmed-cmap-sub-table';\nimport { TtfGlyphHeader } from './ttf-glyph-header';\nimport { Rectangle } from './../../drawing/pdf-drawing';\nimport { StringTokenizer } from './string-tokenizer';\nimport { TtfCmapFormat, TtfCmapEncoding, TtfPlatformID } from './enum';\nimport { TtfMicrosoftEncodingID, TtfMacintoshEncodingID, TtfCompositeGlyphFlags } from './enum';\nimport { BigEndianWriter } from './../../input-output/big-endian-writer';\nvar TtfReader = /** @class */ (function () {\n //Constructors\n function TtfReader(fontData) {\n this.int32Size = 4;\n this.isTtcFont = false;\n this.isMacTtf = false;\n this.metricsName = '';\n this.isMacTTF = false;\n this.missedGlyphs = 0;\n this.tableNames = ['cvt ', 'fpgm', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'prep'];\n this.entrySelectors = [0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4];\n this.fontData = fontData;\n this.initialize();\n }\n Object.defineProperty(TtfReader.prototype, \"macintosh\", {\n //Properties\n /**\n * Gets glyphs for Macintosh or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.macintoshDictionary === null || this.macintoshDictionary === undefined) {\n this.macintoshDictionary = new Dictionary();\n }\n return this.macintoshDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoft\", {\n /**\n * Gets glyphs for Microsoft or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.microsoftDictionary === null || this.microsoftDictionary === undefined) {\n this.microsoftDictionary = new Dictionary();\n }\n return this.microsoftDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"macintoshGlyphs\", {\n /**\n * Gets glyphs for Macintosh or Symbol fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMacintoshGlyphs === null || this.internalMacintoshGlyphs === undefined) {\n this.internalMacintoshGlyphs = new Dictionary();\n }\n return this.internalMacintoshGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoftGlyphs\", {\n /**\n * Gets glyphs for Microsoft Unicode fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMicrosoftGlyphs === null || this.internalMicrosoftGlyphs === undefined) {\n this.internalMicrosoftGlyphs = new Dictionary();\n }\n return this.internalMicrosoftGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n TtfReader.prototype.initialize = function () {\n if (this.metrics === undefined) {\n this.metrics = new TtfMetrics();\n }\n this.readFontDictionary();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.initializeFontName(nameTable);\n this.metrics.macStyle = headTable.macStyle;\n };\n TtfReader.prototype.readFontDictionary = function () {\n this.offset = 0;\n var version = this.checkPreambula();\n //this.offset += 4;\n var numTables = this.readInt16(this.offset);\n var searchRange = this.readInt16(this.offset);\n var entrySelector = this.readInt16(this.offset);\n var rangeShift = this.readInt16(this.offset);\n if (this.tableDirectory === undefined) {\n this.tableDirectory = new Dictionary();\n }\n for (var i = 0; i < numTables; ++i) {\n var table = new TtfTableInfo();\n var tableKey = this.readString(this.int32Size);\n table.checksum = this.readInt32(this.offset);\n table.offset = this.readInt32(this.offset);\n table.length = this.readInt32(this.offset);\n this.tableDirectory.setValue(tableKey, table);\n }\n this.lowestPosition = this.offset;\n if (!this.isTtcFont) {\n this.fixOffsets();\n }\n };\n TtfReader.prototype.fixOffsets = function () {\n var minOffset = Number.MAX_VALUE;\n // Search for a smallest offset and compare it with the lowest position found.\n var tableKeys = this.tableDirectory.keys();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n var offset = value.offset;\n if (minOffset > offset) {\n minOffset = offset;\n if (minOffset <= this.lowestPosition) {\n break;\n }\n }\n }\n var shift = minOffset - this.lowestPosition;\n if (shift !== 0) {\n var table = new Dictionary();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n value.offset -= shift;\n table.setValue(tableKeys[i], value);\n }\n this.tableDirectory = table;\n }\n };\n TtfReader.prototype.checkPreambula = function () {\n var version = this.readInt32(this.offset);\n this.isMacTtf = (version === 0x74727565) ? true : false;\n if (version !== 0x10000 && version !== 0x74727565 && version !== 0x4f54544f) {\n this.isTtcFont = true;\n this.offset = 0;\n var fontTag = this.readString(4);\n if (fontTag !== 'ttcf') {\n throw new Error('Can not read TTF font data');\n }\n //skip 4\n this.offset += 4;\n var ttcIdentificationNumber = this.readInt32(this.offset);\n if (ttcIdentificationNumber < 0) {\n throw new Error('Can not read TTF font data');\n }\n this.offset = this.readInt32(this.offset);\n version = this.readInt32(this.offset);\n }\n return version;\n };\n TtfReader.prototype.readNameTable = function () {\n var tableInfo = this.getTable('name');\n this.offset = tableInfo.offset;\n var table = new TtfNameTable();\n table.formatSelector = this.readUInt16(this.offset);\n table.recordsCount = this.readUInt16(this.offset);\n table.offset = this.readUInt16(this.offset);\n table.nameRecords = [];\n var recordSize = 12;\n var position = this.offset;\n for (var i = 0; i < table.recordsCount; i++) {\n this.offset = position;\n var record = new TtfNameRecord();\n record.platformID = this.readUInt16(this.offset);\n record.encodingID = this.readUInt16(this.offset);\n record.languageID = this.readUInt16(this.offset);\n record.nameID = this.readUInt16(this.offset);\n record.length = this.readUInt16(this.offset);\n record.offset = this.readUInt16(this.offset);\n this.offset = tableInfo.offset + table.offset + record.offset;\n var unicode = (record.platformID === 0 || record.platformID === 3);\n record.name = this.readString(record.length, unicode);\n table.nameRecords[i] = record;\n position += recordSize;\n }\n return table;\n };\n TtfReader.prototype.readHeadTable = function () {\n var tableInfo = this.getTable('head');\n this.offset = tableInfo.offset;\n var table = new TtfHeadTable();\n table.version = this.readFixed(this.offset);\n table.fontRevision = this.readFixed(this.offset);\n table.checkSumAdjustment = this.readUInt32(this.offset);\n table.magicNumber = this.readUInt32(this.offset);\n table.flags = this.readUInt16(this.offset);\n table.unitsPerEm = this.readUInt16(this.offset);\n table.created = this.readInt64(this.offset);\n table.modified = this.readInt64(this.offset);\n table.xMin = this.readInt16(this.offset);\n table.yMin = this.readInt16(this.offset);\n table.xMax = this.readInt16(this.offset);\n table.yMax = this.readInt16(this.offset);\n table.macStyle = this.readUInt16(this.offset);\n table.lowestReadableSize = this.readUInt16(this.offset);\n table.fontDirectionHint = this.readInt16(this.offset);\n table.indexToLocalFormat = this.readInt16(this.offset);\n table.glyphDataFormat = this.readInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readHorizontalHeaderTable = function () {\n var tableInfo = this.getTable('hhea');\n this.offset = tableInfo.offset;\n var table = new TtfHorizontalHeaderTable();\n table.version = this.readFixed(this.offset);\n table.ascender = this.readInt16(this.offset);\n table.descender = this.readInt16(this.offset);\n table.lineGap = this.readInt16(this.offset);\n table.advanceWidthMax = this.readUInt16(this.offset);\n table.minLeftSideBearing = this.readInt16(this.offset);\n table.minRightSideBearing = this.readInt16(this.offset);\n table.xMaxExtent = this.readInt16(this.offset);\n table.caretSlopeRise = this.readInt16(this.offset);\n table.caretSlopeRun = this.readInt16(this.offset);\n //skip 2 * 5\n this.offset += 10;\n table.metricDataFormat = this.readInt16(this.offset);\n table.numberOfHMetrics = this.readUInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readOS2Table = function () {\n var tableInfo = this.getTable('OS/2');\n this.offset = tableInfo.offset;\n var table = new TtfOS2Table();\n table.version = this.readUInt16(this.offset);\n table.xAvgCharWidth = this.readInt16(this.offset);\n table.usWeightClass = this.readUInt16(this.offset);\n table.usWidthClass = this.readUInt16(this.offset);\n table.fsType = this.readInt16(this.offset);\n table.ySubscriptXSize = this.readInt16(this.offset);\n table.ySubscriptYSize = this.readInt16(this.offset);\n table.ySubscriptXOffset = this.readInt16(this.offset);\n table.ySubscriptYOffset = this.readInt16(this.offset);\n table.ySuperscriptXSize = this.readInt16(this.offset);\n table.ySuperscriptYSize = this.readInt16(this.offset);\n table.ySuperscriptXOffset = this.readInt16(this.offset);\n table.ySuperscriptYOffset = this.readInt16(this.offset);\n table.yStrikeoutSize = this.readInt16(this.offset);\n table.yStrikeoutPosition = this.readInt16(this.offset);\n table.sFamilyClass = this.readInt16(this.offset);\n table.panose = this.readBytes(10);\n table.ulUnicodeRange1 = this.readUInt32(this.offset);\n table.ulUnicodeRange2 = this.readUInt32(this.offset);\n table.ulUnicodeRange3 = this.readUInt32(this.offset);\n table.ulUnicodeRange4 = this.readUInt32(this.offset);\n table.vendorIdentifier = this.readBytes(4);\n table.fsSelection = this.readUInt16(this.offset);\n table.usFirstCharIndex = this.readUInt16(this.offset);\n table.usLastCharIndex = this.readUInt16(this.offset);\n table.sTypoAscender = this.readInt16(this.offset);\n table.sTypoDescender = this.readInt16(this.offset);\n table.sTypoLineGap = this.readInt16(this.offset);\n table.usWinAscent = this.readUInt16(this.offset);\n table.usWinDescent = this.readUInt16(this.offset);\n table.ulCodePageRange1 = this.readUInt32(this.offset);\n table.ulCodePageRange2 = this.readUInt32(this.offset);\n if (table.version > 1) {\n table.sxHeight = this.readInt16(this.offset);\n table.sCapHeight = this.readInt16(this.offset);\n table.usDefaultChar = this.readUInt16(this.offset);\n table.usBreakChar = this.readUInt16(this.offset);\n table.usMaxContext = this.readUInt16(this.offset);\n }\n else {\n table.sxHeight = 0;\n table.sCapHeight = 0;\n table.usDefaultChar = 0;\n table.usBreakChar = 0;\n table.usMaxContext = 0;\n }\n return table;\n };\n TtfReader.prototype.readPostTable = function () {\n var tableInfo = this.getTable('post');\n this.offset = tableInfo.offset;\n var table = new TtfPostTable();\n table.formatType = this.readFixed(this.offset);\n table.italicAngle = this.readFixed(this.offset);\n table.underlinePosition = this.readInt16(this.offset);\n table.underlineThickness = this.readInt16(this.offset);\n table.isFixedPitch = this.readUInt32(this.offset);\n table.minType42 = this.readUInt32(this.offset);\n table.maxType42 = this.readUInt32(this.offset);\n table.minType1 = this.readUInt32(this.offset);\n table.maxType1 = this.readUInt32(this.offset);\n return table;\n };\n /**\n * Reads Width of the glyphs.\n */\n TtfReader.prototype.readWidthTable = function (glyphCount, unitsPerEm) {\n var tableInfo = this.getTable('hmtx');\n this.offset = tableInfo.offset;\n var width = [];\n for (var i = 0; i < glyphCount; i++) {\n var glyph = new TtfLongHorMetric();\n glyph.advanceWidth = this.readUInt16(this.offset);\n glyph.lsb = this.readInt16(this.offset);\n var glyphWidth = glyph.advanceWidth * 1000 / unitsPerEm;\n width.push(Math.floor(glyphWidth));\n }\n return width;\n };\n /**\n * Reads the cmap table.\n */\n TtfReader.prototype.readCmapTable = function () {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset;\n var table = new TtfCmapTable();\n table.version = this.readUInt16(this.offset);\n table.tablesCount = this.readUInt16(this.offset);\n var position = this.offset;\n var subTables = [];\n for (var i = 0; i < table.tablesCount; i++) {\n this.offset = position;\n var subTable = new TtfCmapSubTable();\n subTable.platformID = this.readUInt16(this.offset);\n subTable.encodingID = this.readUInt16(this.offset);\n subTable.offset = this.readUInt32(this.offset);\n position = this.offset;\n this.readCmapSubTable(subTable);\n subTables[i] = subTable;\n }\n return subTables;\n };\n /**\n * Reads the cmap sub table.\n */\n TtfReader.prototype.readCmapSubTable = function (subTable) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var format = this.readUInt16(this.offset);\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n var platform = (encoding === TtfCmapEncoding.Macintosh) ? TtfPlatformID.Macintosh : TtfPlatformID.Microsoft;\n if (encoding !== TtfCmapEncoding.Unknown) {\n switch (format) {\n case TtfCmapFormat.Apple:\n this.readAppleCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Microsoft:\n this.readMicrosoftCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Trimmed:\n this.readTrimmedCmapTable(subTable, encoding);\n break;\n }\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readAppleCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfAppleCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n if (this.maxMacIndex === null || this.maxMacIndex === undefined) {\n this.maxMacIndex = 0;\n }\n for (var i = 0; i < 256; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readByte(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readMicrosoftCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var collection = (encoding === TtfCmapEncoding.Unicode) ? this.microsoft : this.macintosh;\n var table = new TtfMicrosoftCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.segCountX2 = this.readUInt16(this.offset);\n table.searchRange = this.readUInt16(this.offset);\n table.entrySelector = this.readUInt16(this.offset);\n table.rangeShift = this.readUInt16(this.offset);\n var segCount = table.segCountX2 / 2;\n table.endCount = this.readUshortArray(segCount);\n table.reservedPad = this.readUInt16(this.offset);\n table.startCount = this.readUshortArray(segCount);\n table.idDelta = this.readUshortArray(segCount);\n table.idRangeOffset = this.readUshortArray(segCount);\n var length = (table.length / 2 - 8) - (segCount * 4);\n table.glyphID = this.readUshortArray(length);\n // Process glyphIdArray array.\n var codeOffset = 0;\n var index = 0;\n for (var j = 0; j < segCount; j++) {\n for (var k = table.startCount[j]; k <= table.endCount[j] && k !== 65535; k++) {\n if (table.idRangeOffset[j] === 0) {\n codeOffset = (k + table.idDelta[j]) & 65535;\n }\n else {\n index = j + table.idRangeOffset[j] / 2 - segCount + k - table.startCount[j];\n if (index >= table.glyphID.length) {\n continue;\n }\n codeOffset = (table.glyphID[index] + table.idDelta[j]) & 65535;\n }\n var glyph = new TtfGlyphInfo();\n glyph.index = codeOffset;\n glyph.width = this.getWidth(glyph.index);\n var id = (encoding === TtfCmapEncoding.Symbol) ? ((k & 0xff00) === 0xf000 ? k & 0xff : k) : k;\n glyph.charCode = id;\n collection.setValue(id, glyph);\n this.addGlyph(glyph, encoding);\n }\n }\n };\n /**\n * Reads Trimed cmap table.\n */\n TtfReader.prototype.readTrimmedCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfTrimmedCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.firstCode = this.readUInt16(this.offset);\n table.entryCount = this.readUInt16(this.offset);\n for (var i = 0; i < table.entryCount; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readUInt16(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i + table.firstCode;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n TtfReader.prototype.initializeFontName = function (nameTable) {\n for (var i = 0; i < nameTable.recordsCount; i++) {\n var record = nameTable.nameRecords[i];\n if (record.nameID === 1) {\n //font family\n this.metrics.fontFamily = record.name;\n }\n else if (record.nameID === 6) {\n //post script name\n this.metrics.postScriptName = record.name;\n }\n /* tslint:disable */\n if (this.metrics.fontFamily !== null && this.metrics.fontFamily !== undefined && this.metrics.postScriptName !== null && this.metrics.postScriptName !== undefined) {\n break;\n }\n /* tslint:disable */\n }\n };\n TtfReader.prototype.getTable = function (name) {\n // if (name === null) {\n // throw new Error('Argument Null Exception : name');\n // }\n var table = new TtfTableInfo();\n var obj;\n if (this.tableDirectory.containsKey(name)) {\n obj = this.tableDirectory.getValue(name);\n }\n if (obj !== null && obj !== undefined) {\n table = obj;\n }\n return table;\n };\n /**\n * Returns width of the glyph.\n */\n TtfReader.prototype.getWidth = function (glyphCode) {\n glyphCode = (glyphCode < this.width.length) ? glyphCode : this.width.length - 1;\n return this.width[glyphCode];\n };\n /**\n * Gets CMAP encoding based on platform ID and encoding ID.\n */\n /* tslint:disable */\n TtfReader.prototype.getCmapEncoding = function (platformID, encodingID) {\n var format = TtfCmapEncoding.Unknown;\n if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Undefined) {\n // When building a symbol font for Windows,\n // the platform ID should be 3 and the encoding ID should be 0.\n format = TtfCmapEncoding.Symbol;\n }\n else if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Unicode) {\n // When building a Unicode font for Windows,\n // the platform ID should be 3 and the encoding ID should be 1.\n format = TtfCmapEncoding.Unicode;\n }\n else if (platformID == TtfPlatformID.Macintosh && encodingID == TtfMacintoshEncodingID.Roman) {\n // When building a font that will be used on the Macintosh,\n // the platform ID should be 1 and the encoding ID should be 0.\n format = TtfCmapEncoding.Macintosh;\n }\n return format;\n };\n /* tslint:enable */\n /**\n * Adds glyph to the collection.\n */\n TtfReader.prototype.addGlyph = function (glyph, encoding) {\n var collection = null;\n switch (encoding) {\n case TtfCmapEncoding.Unicode:\n collection = this.microsoftGlyphs;\n break;\n case TtfCmapEncoding.Macintosh:\n case TtfCmapEncoding.Symbol:\n collection = this.macintoshGlyphs;\n break;\n }\n collection.setValue(glyph.index, glyph);\n };\n /**\n * Initializes metrics.\n */\n /* tslint:disable */\n TtfReader.prototype.initializeMetrics = function (nameTable, headTable, horizontalHeadTable, os2Table, postTable, cmapTables) {\n /* tslint:enable */\n // if (cmapTables === null) {\n // throw new Error('ArgumentNullException : cmapTables');\n // }\n this.initializeFontName(nameTable);\n // Get font encoding.\n var bSymbol = false;\n for (var i = 0; i < cmapTables.length; i++) {\n var subTable = cmapTables[i];\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n if (encoding === TtfCmapEncoding.Symbol) {\n bSymbol = true;\n break;\n }\n }\n this.metrics.isSymbol = bSymbol;\n this.metrics.macStyle = headTable.macStyle;\n this.metrics.isFixedPitch = (postTable.isFixedPitch !== 0);\n this.metrics.italicAngle = postTable.italicAngle;\n var factor = 1000 / headTable.unitsPerEm;\n this.metrics.winAscent = os2Table.sTypoAscender * factor;\n this.metrics.macAscent = horizontalHeadTable.ascender * factor;\n //m_metrics.MacAscent = os2Table.UsWinAscent * factor;\n // NOTE: This is stange workaround. The value is good if os2Table.SCapHeight != 0, otherwise it should be properly computed.\n this.metrics.capHeight = (os2Table.sCapHeight !== 0) ? os2Table.sCapHeight : 0.7 * headTable.unitsPerEm * factor;\n this.metrics.winDescent = os2Table.sTypoDescender * factor;\n this.metrics.macDescent = horizontalHeadTable.descender * factor;\n //m_metrics.MacDescent = -os2Table.UsWinDescent * factor;\n this.metrics.leading = (os2Table.sTypoAscender - os2Table.sTypoDescender + os2Table.sTypoLineGap) * factor;\n this.metrics.lineGap = Math.ceil(horizontalHeadTable.lineGap * factor);\n var left = headTable.xMin * factor;\n var top = Math.ceil(this.metrics.macAscent + this.metrics.lineGap);\n var right = headTable.xMax * factor;\n var bottom = this.metrics.macDescent;\n this.metrics.fontBox = new Rectangle(left, top, right, bottom);\n // NOTE: Strange!\n this.metrics.stemV = 80;\n this.metrics.widthTable = this.updateWidth();\n this.metrics.contains = this.tableDirectory.containsKey('CFF');\n this.metrics.subScriptSizeFactor = headTable.unitsPerEm / os2Table.ySubscriptYSize;\n this.metrics.superscriptSizeFactor = headTable.unitsPerEm / os2Table.ySuperscriptYSize;\n };\n /**\n * Updates chars structure which is used in the case of ansi encoding (256 bytes).\n */\n TtfReader.prototype.updateWidth = function () {\n var count = 256;\n var bytes = [];\n if (this.metrics.isSymbol) {\n for (var i = 0; i < count; i++) {\n var glyphInfo = this.getGlyph(String.fromCharCode(i));\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n else {\n var byteToProcess = [];\n var unknown = '?';\n var space = String.fromCharCode(32);\n for (var i = 0; i < count; i++) {\n byteToProcess[0] = i;\n var text = this.getString(byteToProcess, 0, byteToProcess.length);\n var ch = (text.length > 0) ? text[0] : unknown;\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n bytes[i] = glyphInfo.width;\n }\n else {\n glyphInfo = this.getGlyph(space);\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n }\n return bytes;\n };\n /**\n * Returns default glyph.\n */\n TtfReader.prototype.getDefaultGlyph = function () {\n var glyph = this.getGlyph(StringTokenizer.whiteSpace);\n return glyph;\n };\n /**\n * Reads unicode string from byte array.\n */\n TtfReader.prototype.getString = function (byteToProcess, start, length) {\n var result = '';\n for (var index = 0; index < length; index++) {\n result += String.fromCharCode(byteToProcess[index + start]);\n }\n return result;\n };\n /**\n * Reads loca table.\n */\n TtfReader.prototype.readLocaTable = function (bShort) {\n var tableInfo = this.getTable('loca');\n this.offset = tableInfo.offset;\n var table = new TtfLocaTable();\n var buffer = null;\n if (bShort) {\n var len = tableInfo.length / 2;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt16(this.offset) * 2;\n }\n }\n else {\n var len = tableInfo.length / 4;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt32(this.offset);\n }\n }\n table.offsets = buffer;\n return table;\n };\n /**\n * Updates hash table of used glyphs.\n */\n TtfReader.prototype.updateGlyphChars = function (glyphChars, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Add zero key.\n if (!glyphChars.containsKey(0)) {\n glyphChars.setValue(0, 0);\n }\n var clone = new Dictionary();\n var glyphCharKeys = glyphChars.keys();\n for (var i = 0; i < glyphCharKeys.length; i++) {\n clone.setValue(glyphCharKeys[i], glyphChars.getValue(glyphCharKeys[i]));\n }\n for (var i = 0; i < glyphCharKeys.length; i++) {\n var nextKey = glyphCharKeys[i];\n this.processCompositeGlyph(glyphChars, nextKey, locaTable);\n }\n };\n /**\n * Checks if glyph is composite or not.\n */\n TtfReader.prototype.processCompositeGlyph = function (glyphChars, glyph, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Is in range.\n if (glyph < locaTable.offsets.length - 1) {\n var glyphOffset = locaTable.offsets[glyph];\n if (glyphOffset !== locaTable.offsets[glyph + 1]) {\n var tableInfo = this.getTable('glyf');\n this.offset = tableInfo.offset + glyphOffset;\n var glyphHeader = new TtfGlyphHeader();\n glyphHeader.numberOfContours = this.readInt16(this.offset);\n glyphHeader.xMin = this.readInt16(this.offset);\n glyphHeader.yMin = this.readInt16(this.offset);\n glyphHeader.xMax = this.readInt16(this.offset);\n glyphHeader.yMax = this.readInt16(this.offset);\n // Glyph is composite.\n if (glyphHeader.numberOfContours < 0) {\n var skipBytes = 0;\n var entry = true;\n while (entry) {\n var flags = this.readUInt16(this.offset);\n var glyphIndex = this.readUInt16(this.offset);\n if (!glyphChars.containsKey(glyphIndex)) {\n glyphChars.setValue(glyphIndex, 0);\n }\n if ((flags & TtfCompositeGlyphFlags.MoreComponents) === 0) {\n break;\n }\n skipBytes = ((flags & TtfCompositeGlyphFlags.Arg1And2AreWords) !== 0) ? 4 : 2;\n if ((flags & TtfCompositeGlyphFlags.WeHaveScale) !== 0) {\n skipBytes += 2;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveAnXyScale) !== 0) {\n skipBytes += 4;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveTwoByTwo) !== 0) {\n skipBytes += 2 * 4;\n }\n this.offset += skipBytes;\n }\n }\n }\n }\n };\n /**\n * Creates new glyph tables based on chars that are used for output.\n */\n /* tslint:disable */\n TtfReader.prototype.generateGlyphTable = function (glyphChars, locaTable, newLocaTable, newGlyphTable) {\n /* tslint:enable */\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n newLocaTable = [];\n // Sorting used glyphs keys.\n var activeGlyphs = glyphChars.keys();\n activeGlyphs.sort(function (a, b) { return a - b; });\n var glyphSize = 0;\n for (var i = 0; i < activeGlyphs.length; i++) {\n var glyphIndex = activeGlyphs[i];\n if (locaTable.offsets.length > 0) {\n glyphSize += locaTable.offsets[glyphIndex + 1] - locaTable.offsets[glyphIndex];\n }\n }\n var glyphSizeAligned = this.align(glyphSize);\n newGlyphTable = [];\n for (var i = 0; i < glyphSizeAligned; i++) {\n newGlyphTable.push(0);\n }\n var nextGlyphOffset = 0;\n var nextGlyphIndex = 0;\n var table = this.getTable('glyf');\n // Creating NewLocaTable - that would hold offsets for filtered glyphs.\n for (var i = 0; i < locaTable.offsets.length; i++) {\n newLocaTable.push(nextGlyphOffset);\n if (nextGlyphIndex < activeGlyphs.length && activeGlyphs[nextGlyphIndex] === i) {\n ++nextGlyphIndex;\n newLocaTable[i] = nextGlyphOffset;\n var oldGlyphOffset = locaTable.offsets[i];\n var oldNextGlyphOffset = locaTable.offsets[i + 1] - oldGlyphOffset;\n if (oldNextGlyphOffset > 0) {\n this.offset = table.offset + oldGlyphOffset;\n var result = this.read(newGlyphTable, nextGlyphOffset, oldNextGlyphOffset);\n newGlyphTable = result.buffer;\n nextGlyphOffset += oldNextGlyphOffset;\n }\n }\n }\n return { glyphTableSize: glyphSize, newLocaTable: newLocaTable, newGlyphTable: newGlyphTable };\n };\n /**\n * Updates new Loca table.\n */\n /* tslint:disable */\n TtfReader.prototype.updateLocaTable = function (newLocaTable, bLocaIsShort, newLocaTableOut) {\n /* tslint:enable */\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTable');\n }\n var size = (bLocaIsShort) ? newLocaTable.length * 2 : newLocaTable.length * 4;\n var count = this.align(size);\n //BigEndianWiter\n var writer = new BigEndianWriter(count);\n for (var i = 0; i < newLocaTable.length; i++) {\n var value = newLocaTable[i];\n if (bLocaIsShort) {\n value /= 2;\n writer.writeShort(value);\n }\n else {\n writer.writeInt(value);\n }\n }\n return { newLocaUpdated: writer.data, newLocaSize: size };\n };\n /**\n * Aligns number to be divisible on 4.\n */\n TtfReader.prototype.align = function (value) {\n return (value + 3) & (~3);\n };\n /**\n * Returns font program data.\n */\n /* tslint:disable */\n TtfReader.prototype.getFontProgram = function (newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var result = this.getFontProgramLength(newLocaTableOut, newGlyphTable, 0);\n var fontProgramLength = result.fontProgramLength;\n var numTables = result.numTables;\n var writer = new BigEndianWriter(fontProgramLength);\n writer.writeInt(0x10000);\n writer.writeShort(numTables);\n var entrySelector = this.entrySelectors[numTables];\n writer.writeShort((1 << (entrySelector & 31)) * 16);\n writer.writeShort(entrySelector);\n writer.writeShort((numTables - (1 << (entrySelector & 31))) * 16);\n // Writing to destination buffer - checksums && sizes of used tables.\n this.writeCheckSums(writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize);\n // // Writing to destination buffer - used glyphs.\n this.writeGlyphs(writer, newLocaTableOut, newGlyphTable);\n return writer.data;\n };\n /* tslint:disable */\n TtfReader.prototype.getFontProgramLength = function (newLocaTableOut, newGlyphTable, numTables) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n // glyf and loca are used by default;\n numTables = 2;\n var tableNames = this.tableNames;\n var fontProgramLength = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n if (tableName !== 'glyf' && tableName !== 'loca') {\n var table = this.getTable(tableName);\n if (!table.empty) {\n ++numTables;\n fontProgramLength += this.align(table.length);\n }\n }\n }\n fontProgramLength += newLocaTableOut.length;\n fontProgramLength += newGlyphTable.length;\n var usedTablesSize = numTables * 16 + (3 * 4);\n fontProgramLength += usedTablesSize;\n return { fontProgramLength: fontProgramLength, numTables: numTables };\n };\n /**\n * Writing to destination buffer - checksums and sizes of used tables.\n */\n /* tslint:disable */\n TtfReader.prototype.writeCheckSums = function (writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var usedTablesSize = numTables * 16 + (3 * 4);\n var nextTableSize = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n writer.writeString(tableName);\n if (tableName === 'glyf') {\n var checksum = this.calculateCheckSum(newGlyphTable);\n writer.writeInt(checksum);\n nextTableSize = glyphTableSize;\n }\n else if (tableName === 'loca') {\n var checksum = this.calculateCheckSum(newLocaTableOut);\n writer.writeInt(checksum);\n nextTableSize = locaTableSize;\n }\n else {\n writer.writeInt(tableInfo.checksum);\n nextTableSize = tableInfo.length;\n }\n writer.writeUInt(usedTablesSize);\n writer.writeUInt(nextTableSize);\n usedTablesSize += this.align(nextTableSize);\n }\n };\n /**\n * Gets checksum from source buffer.\n */\n TtfReader.prototype.calculateCheckSum = function (bytes) {\n if (bytes === null) {\n throw new Error('Argument Null Exception : bytes');\n }\n var pos = 0;\n var byte1 = 0;\n var byte2 = 0;\n var byte3 = 0;\n var byte4 = 0;\n for (var i = 0; i < (bytes.length + 1) / 4; i++) {\n byte4 += (bytes[pos++] & 255);\n byte3 += (bytes[pos++] & 255);\n byte2 += (bytes[pos++] & 255);\n byte1 += (bytes[pos++] & 255);\n }\n var result = byte1;\n result += (byte2 << 8);\n result += (byte3 << 16);\n result += (byte4 << 24);\n return result;\n };\n /**\n * Writing to destination buffer - used glyphs.\n */\n TtfReader.prototype.writeGlyphs = function (writer, newLocaTable, newGlyphTable) {\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n if (tableName === 'glyf') {\n writer.writeBytes(newGlyphTable);\n }\n else if (tableName === 'loca') {\n writer.writeBytes(newLocaTable);\n }\n else {\n var count = this.align(tableInfo.length);\n var buff = [];\n for (var i_1 = 0; i_1 < count; i_1++) {\n buff.push(0);\n }\n this.offset = tableInfo.offset;\n var result = this.read(buff, 0, tableInfo.length);\n writer.writeBytes(result.buffer);\n }\n }\n };\n //public methods\n /**\n * Sets position value of font data.\n */\n TtfReader.prototype.setOffset = function (offset) {\n this.offset = offset;\n };\n /**\n * Creates font Internals\n * @private\n */\n TtfReader.prototype.createInternals = function () {\n this.metrics = new TtfMetrics();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.bIsLocaShort = (headTable.indexToLocalFormat === 0);\n var horizontalHeadTable = this.readHorizontalHeaderTable();\n var os2Table = this.readOS2Table();\n var postTable = this.readPostTable();\n this.width = this.readWidthTable(horizontalHeadTable.numberOfHMetrics, headTable.unitsPerEm);\n var subTables = this.readCmapTable();\n this.initializeMetrics(nameTable, headTable, horizontalHeadTable, os2Table, postTable, subTables);\n };\n TtfReader.prototype.getGlyph = function (charCode) {\n if (typeof charCode === 'number') {\n var obj1 = null;\n if (!this.metrics.isSymbol && this.microsoftGlyphs != null) {\n if (this.microsoftGlyphs.containsKey(charCode)) {\n obj1 = this.microsoftGlyphs.getValue(charCode);\n }\n }\n else if (this.metrics.isSymbol && this.macintoshGlyphs != null) {\n if (this.macintoshGlyphs.containsKey(charCode)) {\n obj1 = this.macintoshGlyphs.getValue(charCode);\n }\n }\n var glyph = (obj1 != null) ? obj1 : this.getDefaultGlyph();\n return glyph;\n }\n else {\n var obj = null;\n var code = charCode.charCodeAt(0);\n if (!this.metrics.isSymbol && this.microsoft !== null) {\n if (this.microsoft.containsKey(code)) {\n obj = this.microsoft.getValue(code);\n if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = true;\n }\n }\n else if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = false;\n }\n }\n else if (this.metrics.isSymbol && this.macintosh !== null || this.isMacTTF) {\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n if (this.maxMacIndex !== 0) {\n code %= this.maxMacIndex + 1;\n }\n else {\n code = ((code & 0xff00) === 0xf000 ? code & 0xff : code);\n }\n if (this.macintosh.containsKey(code)) {\n obj = this.macintosh.getValue(code);\n this.isFontPresent = true;\n }\n }\n // Fix for StackOverFlow exception in XPS to PDF converter\n if (charCode === StringTokenizer.whiteSpace && obj === null) {\n obj = new TtfGlyphInfo();\n }\n var glyph = (obj !== null) ? obj : this.getDefaultGlyph();\n return glyph;\n }\n };\n /**\n * Gets hash table with chars indexed by glyph index.\n */\n TtfReader.prototype.getGlyphChars = function (chars) {\n if (chars === null || chars === undefined) {\n throw new Error('Argument Null Exception : chars');\n }\n var dictionary = new Dictionary();\n var charKeys = chars.keys();\n for (var i = 0; i < charKeys.length; i++) {\n var ch = charKeys[i];\n var glyph = this.getGlyph(ch);\n if (!glyph.empty) {\n dictionary.setValue(glyph.index, ch.charCodeAt(0));\n }\n }\n return dictionary;\n };\n /**\n * Gets all glyphs.\n */\n TtfReader.prototype.getAllGlyphs = function () {\n var allGlyphInfo = [];\n var info = new TtfGlyphInfo();\n var index = 0;\n for (var i = 0; i < this.width.length; i++) {\n var width = this.width[i];\n info.index = index;\n info.width = width;\n allGlyphInfo.push(info);\n index++;\n }\n return allGlyphInfo;\n };\n /**\n * Reads a font's program.\n * @private\n */\n TtfReader.prototype.readFontProgram = function (chars) {\n var glyphChars = this.getGlyphChars(chars);\n var locaTable = this.readLocaTable(this.bIsLocaShort);\n if (glyphChars.size() < chars.size()) {\n this.missedGlyphs = chars.size() - glyphChars.size();\n }\n this.updateGlyphChars(glyphChars, locaTable);\n /* tslint:disable */\n var result1 = this.generateGlyphTable(glyphChars, locaTable, null, null);\n /* tslint:enable */\n var glyphTableSize = result1.glyphTableSize;\n var newLocaTable = result1.newLocaTable;\n var newGlyphTable = result1.newGlyphTable;\n var result2 = this.updateLocaTable(newLocaTable, this.bIsLocaShort, null);\n var newLocaSize = result2.newLocaSize;\n var newLocaUpdated = result2.newLocaUpdated;\n var fontProgram = this.getFontProgram(newLocaUpdated, newGlyphTable, glyphTableSize, newLocaSize);\n return fontProgram;\n };\n /**\n * Reconverts string to be in proper format saved into PDF file.\n */\n TtfReader.prototype.convertString = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n var glyph = '';\n var i = 0;\n for (var k = 0; k < text.length; k++) {\n var ch = text[k];\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n glyph += String.fromCharCode(glyphInfo.index);\n i++;\n }\n }\n return glyph;\n };\n /**\n * Gets char width.\n */\n TtfReader.prototype.getCharWidth = function (code) {\n var glyphInfo = this.getGlyph(code);\n glyphInfo = (!glyphInfo.empty) ? glyphInfo : this.getDefaultGlyph();\n var codeWidth = (!glyphInfo.empty) ? glyphInfo.width : 0;\n return codeWidth;\n };\n TtfReader.prototype.readString = function (length, isUnicode) {\n if (isUnicode === undefined) {\n return this.readString(length, false);\n }\n else {\n //let buffer : number[] = this.readBytes(length);\n var result = '';\n if (isUnicode) {\n for (var i = 0; i < length; i++) {\n if (i % 2 !== 0) {\n result += String.fromCharCode(this.fontData[this.offset]);\n }\n this.offset += 1;\n }\n }\n else {\n for (var i = 0; i < length; i++) {\n result += String.fromCharCode(this.fontData[this.offset]);\n this.offset += 1;\n }\n }\n return result;\n }\n };\n TtfReader.prototype.readFixed = function (offset) {\n var integer = this.readInt16(offset);\n var sFraction = this.readInt16(offset + 2);\n var fraction = sFraction / 16384;\n return integer + fraction;\n };\n TtfReader.prototype.readInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return i1 + (i2 << 8) + (i3 << 16) + (i4 << 24);\n };\n TtfReader.prototype.readUInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return (i1 | i2 << 8 | i3 << 16 | i4 << 24);\n };\n // private readInt16(offset : number) : number {\n // let result : number = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n // this.offset += 2;\n // return result;\n // }\n TtfReader.prototype.readInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n result = result & (1 << 15) ? result - 0x10000 : result;\n this.offset += 2;\n return result;\n };\n TtfReader.prototype.readInt64 = function (offset) {\n var low = this.readInt32(offset + 4);\n var n = this.readInt32(offset) * 4294967296.0 + low;\n if (low < 0) {\n n += 4294967296;\n }\n return n;\n };\n TtfReader.prototype.readUInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) | this.fontData[offset + 1];\n this.offset += 2;\n return result;\n };\n /**\n * Reads ushort array.\n */\n TtfReader.prototype.readUshortArray = function (length) {\n var buffer = [];\n for (var i = 0; i < length; i++) {\n buffer[i] = this.readUInt16(this.offset);\n }\n return buffer;\n };\n TtfReader.prototype.readBytes = function (length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(this.fontData[this.offset]);\n this.offset += 1;\n }\n return result;\n };\n TtfReader.prototype.readByte = function (offset) {\n var result = this.fontData[offset];\n this.offset += 1;\n return result;\n };\n /**\n * Reads bytes to array in BigEndian order.\n * @private\n */\n TtfReader.prototype.read = function (buffer, index, count) {\n if (buffer === null) {\n throw new Error('Argument Null Exception : buffer');\n }\n var written = 0;\n var read = 0;\n do {\n for (var i = 0; (i < count - written) && (this.offset + i < this.fontData.length); i++) {\n buffer[index + i] = this.fontData[this.offset + i];\n }\n read = count - written;\n this.offset += read;\n written += read;\n } while (written < count);\n return { buffer: buffer, written: written };\n };\n return TtfReader;\n}());\nexport { TtfReader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFont } from './pdf-font';\nimport { PdfSubSuperScript } from './enum';\nimport { PdfArray } from './../../primitives/pdf-array';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar PdfFontMetrics = /** @class */ (function () {\n function PdfFontMetrics() {\n /**\n * `Line gap`.\n * @private\n */\n this.lineGap = 0;\n }\n // Public methods\n /**\n * Returns `ascent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getAscent = function (format) {\n var returnValue = this.ascent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `descent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getDescent = function (format) {\n var returnValue = this.descent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `Line gap` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getLineGap = function (format) {\n var returnValue = this.lineGap * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `height` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getHeight = function (format) {\n var height;\n var clearTypeFonts = ['cambria', 'candara', 'constantia', 'corbel', 'cariadings'];\n var clearTypeFontCollection = [];\n for (var index = 0; index < clearTypeFonts.length; index++) {\n var font = clearTypeFonts[index];\n clearTypeFontCollection.push(font);\n }\n if (this.getDescent(format) < 0) {\n // if ((clearTypeFontCollection.indexOf(this.name.toLowerCase()) !== -1) && !this.isUnicodeFont) {\n // height = (this.GetAscent(format) - this.GetDescent(format) - this.GetLineGap(format));\n // } else {\n height = (this.getAscent(format) - this.getDescent(format) + this.getLineGap(format));\n // }\n }\n else {\n height = (this.getAscent(format) + this.getDescent(format) + this.getLineGap(format));\n }\n return height;\n };\n /**\n * Calculates `size` of the font depending on the subscript/superscript value.\n * @private\n */\n PdfFontMetrics.prototype.getSize = function (format) {\n var size = this.size;\n if (format != null) {\n switch (format.subSuperScript) {\n case PdfSubSuperScript.SubScript:\n size /= this.subScriptSizeFactor;\n break;\n case PdfSubSuperScript.SuperScript:\n size /= this.superscriptSizeFactor;\n break;\n }\n }\n return size;\n };\n /**\n * `Clones` the metrics.\n * @private\n */\n PdfFontMetrics.prototype.clone = function () {\n var metrics = this;\n metrics.widthTable = WidthTable.clone();\n return metrics;\n };\n Object.defineProperty(PdfFontMetrics.prototype, \"widthTable\", {\n // Properies\n /**\n * Gets or sets the `width table`.\n * @private\n */\n get: function () {\n return this.internalWidthTable;\n },\n set: function (value) {\n this.internalWidthTable = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFontMetrics;\n}());\nexport { PdfFontMetrics };\nvar WidthTable = /** @class */ (function () {\n function WidthTable() {\n }\n /**\n * Static `clones` this instance of the WidthTable class.\n * @private\n */\n WidthTable.clone = function () {\n return null;\n };\n return WidthTable;\n}());\nexport { WidthTable };\nvar StandardWidthTable = /** @class */ (function (_super) {\n __extends(StandardWidthTable, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StandardWidthTable` class.\n * @private\n */\n function StandardWidthTable(widths) {\n var _this = _super.call(this) || this;\n if (widths == null) {\n throw new Error('ArgumentNullException:widths');\n }\n _this.widths = widths;\n return _this;\n }\n //Properties\n /**\n * Gets the `32 bit number` at the specified index.\n * @private\n */\n StandardWidthTable.prototype.items = function (index) {\n if (index < 0 || index >= this.widths.length) {\n throw new Error('ArgumentOutOfRangeException:index, The character is not supported by the font.');\n }\n var result = this.widths[index];\n return result;\n };\n Object.defineProperty(StandardWidthTable.prototype, \"length\", {\n /**\n * Gets the `length` of the internal array.\n * @private\n */\n get: function () {\n return this.widths.length;\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * `Clones` this instance of the WidthTable class.\n * @private\n */\n StandardWidthTable.prototype.clone = function () {\n var swt = this;\n swt.widths = this.widths;\n return swt;\n };\n /**\n * Converts width table to a `PDF array`.\n * @private\n */\n StandardWidthTable.prototype.toArray = function () {\n var arr = new PdfArray(this.widths);\n return arr;\n };\n return StandardWidthTable;\n}(WidthTable));\nexport { StandardWidthTable };\n","/**\n * TrueTypeFont.ts class for EJ2-PDF\n */\nimport { ByteArray } from './../../graphics/images/index';\nimport { TtfReader } from './ttf-reader';\nimport { PdfDictionary, SaveDescendantFontEventHandler, SaveFontDictionaryEventHandler } from './../../primitives/pdf-dictionary';\nimport { SaveFontProgramEventHandler, SaveCmapEventHandler } from './../../primitives/pdf-stream';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfString } from './../../primitives/pdf-string';\nimport { PdfReferenceHolder } from './../../primitives/pdf-reference';\nimport { PdfFontMetrics } from './pdf-font-metrics';\nimport { StandardWidthTable } from './pdf-font-metrics';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { Dictionary } from './../../collections/dictionary';\nimport { FontDescriptorFlags } from './enum';\nimport { RectangleF } from './../../drawing/pdf-drawing';\nimport { Operators } from './../../input-output/pdf-operators';\nvar UnicodeTrueTypeFont = /** @class */ (function () {\n /* tslint:enable */\n //Constructors\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n function UnicodeTrueTypeFont(base64String, size) {\n // Fields\n this.nameString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Indicates whether the font program is compressed or not.\n * @private\n */\n this.isCompress = false;\n /**\n * Indicates whether the font is embedded or not.\n */\n this.isEmbedFont = false;\n /**\n * Cmap table's start prefix.\n */\n /* tslint:disable */\n this.cmapPrefix = '/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap' + Operators.newLine + '/CIDSystemInfo << /Registry (Adobe)/Ordering (UCS)/Supplement 0>> def\\n/CMapName ' + '/Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange' + Operators.newLine;\n /* tslint:enable */\n /**\n * Cmap table's start suffix.\n */\n this.cmapEndCodespaceRange = 'endcodespacerange' + Operators.newLine;\n /**\n * Cmap's begin range marker.\n */\n this.cmapBeginRange = 'beginbfrange' + Operators.newLine;\n /**\n * Cmap's end range marker.\n */\n this.cmapEndRange = 'endbfrange' + Operators.newLine;\n /**\n * Cmap table's end\n */\n /* tslint:disable */\n this.cmapSuffix = 'endbfrange\\nendcmap\\nCMapName currentdict ' + '/CMap defineresource pop\\nend end' + Operators.newLine;\n if (base64String === null || base64String === undefined) {\n throw new Error('ArgumentNullException:base64String');\n }\n this.fontSize = size;\n this.fontString = base64String;\n this.Initialize();\n }\n //Implementation\n /**\n * Returns width of the char symbol.\n */\n UnicodeTrueTypeFont.prototype.getCharWidth = function (charCode) {\n var codeWidth = this.ttfReader.getCharWidth(charCode);\n return codeWidth;\n };\n /**\n * Returns width of the text line.\n */\n UnicodeTrueTypeFont.prototype.getLineWidth = function (line) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n var width = 0;\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidth(ch);\n width += charWidth;\n }\n return width;\n };\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n UnicodeTrueTypeFont.prototype.Initialize = function () {\n var byteArray = new ByteArray(this.fontString.length);\n byteArray.writeFromBase64String(this.fontString);\n this.fontData = byteArray.internalBuffer;\n this.ttfReader = new TtfReader(this.fontData);\n this.ttfMetrics = this.ttfReader.metrics;\n };\n UnicodeTrueTypeFont.prototype.createInternals = function () {\n this.fontDictionary = new PdfDictionary();\n this.fontProgram = new PdfStream();\n this.cmap = new PdfStream();\n this.descendantFont = new PdfDictionary();\n this.metrics = new PdfFontMetrics();\n this.ttfReader.createInternals();\n this.ttfMetrics = this.ttfReader.metrics;\n this.initializeMetrics();\n // Create all the dictionaries of the font.\n this.subsetName = this.getFontName();\n this.createDescendantFont();\n this.createCmap();\n this.createFontDictionary();\n this.createFontProgram();\n };\n UnicodeTrueTypeFont.prototype.getInternals = function () {\n return this.fontDictionary;\n };\n /**\n * Initializes metrics.\n */\n UnicodeTrueTypeFont.prototype.initializeMetrics = function () {\n var ttfMetrics = this.ttfReader.metrics;\n this.metrics.ascent = ttfMetrics.macAscent;\n this.metrics.descent = ttfMetrics.macDescent;\n this.metrics.height = ttfMetrics.macAscent - ttfMetrics.macDescent + ttfMetrics.lineGap;\n this.metrics.name = ttfMetrics.fontFamily;\n this.metrics.postScriptName = ttfMetrics.postScriptName;\n this.metrics.size = this.fontSize;\n this.metrics.widthTable = new StandardWidthTable(ttfMetrics.widthTable);\n this.metrics.lineGap = ttfMetrics.lineGap;\n this.metrics.subScriptSizeFactor = ttfMetrics.subScriptSizeFactor;\n this.metrics.superscriptSizeFactor = ttfMetrics.superscriptSizeFactor;\n this.metrics.isBold = ttfMetrics.isBold;\n };\n /**\n * Gets random string.\n */\n UnicodeTrueTypeFont.prototype.getFontName = function () {\n var builder = '';\n var name;\n // if (this.isEmbed === false) {\n for (var i = 0; i < 6; i++) {\n var index = Math.floor(Math.random() * (25 - 0 + 1)) + 0;\n builder += this.nameString[index];\n }\n builder += '+';\n // }\n builder += this.ttfReader.metrics.postScriptName;\n name = builder.toString();\n // if (name === '') {\n // name = this.ttfReader.metrics.fontFamily;\n // }\n name = this.formatName(name);\n return name;\n };\n /**\n * Generates name of the font.\n */\n UnicodeTrueTypeFont.prototype.formatName = function (fontName) {\n // if (fontName === null) {\n // throw new Error('ArgumentNullException : fontName');\n // }\n // if (fontName === '') {\n // throw new Error('ArgumentOutOfRangeException : fontName, Parameter can not be empty');\n // }\n var ret = fontName.replace('(', '#28');\n ret = ret.replace(')', '#29');\n ret = ret.replace('[', '#5B');\n ret = ret.replace(']', '#5D');\n ret = ret.replace('<', '#3C');\n ret = ret.replace('>', '#3E');\n ret = ret.replace('{', '#7B');\n ret = ret.replace('}', '#7D');\n ret = ret.replace('/', '#2F');\n ret = ret.replace('%', '#25');\n return ret.replace(' ', '#20');\n };\n /**\n * Creates descendant font.\n */\n UnicodeTrueTypeFont.prototype.createDescendantFont = function () {\n // Set property used to clone Font every time\n this.descendantFont.isFont = true;\n this.descendantFont.descendantFontBeginSave = new SaveDescendantFontEventHandler(this);\n this.descendantFont.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.descendantFont.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.cIDFontType2));\n this.descendantFont.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDToGIDMap, new PdfName(this.dictionaryProperties.identity));\n this.descendantFont.items.setValue(this.dictionaryProperties.dw, new PdfNumber(1000));\n this.fontDescriptor = this.createFontDescriptor();\n this.descendantFont.items.setValue(this.dictionaryProperties.fontDescriptor, new PdfReferenceHolder(this.fontDescriptor));\n var systemInfo = this.createSystemInfo();\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDSystemInfo, systemInfo);\n };\n /**\n * Creates font descriptor.\n */\n UnicodeTrueTypeFont.prototype.createFontDescriptor = function () {\n var descriptor = new PdfDictionary();\n var metrics = this.ttfReader.metrics;\n // Set property used to clone Font every time\n descriptor.isFont = true;\n descriptor.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.fontDescriptor));\n descriptor.items.setValue(this.dictionaryProperties.fontName, new PdfName(this.subsetName));\n descriptor.items.setValue(this.dictionaryProperties.flags, new PdfNumber(this.getDescriptorFlags()));\n descriptor.items.setValue(this.dictionaryProperties.fontBBox, PdfArray.fromRectangle(this.getBoundBox()));\n descriptor.items.setValue(this.dictionaryProperties.missingWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.stemV, new PdfNumber(metrics.stemV));\n descriptor.items.setValue(this.dictionaryProperties.italicAngle, new PdfNumber(metrics.italicAngle));\n descriptor.items.setValue(this.dictionaryProperties.capHeight, new PdfNumber(metrics.capHeight));\n descriptor.items.setValue(this.dictionaryProperties.ascent, new PdfNumber(metrics.winAscent));\n descriptor.items.setValue(this.dictionaryProperties.descent, new PdfNumber(metrics.winDescent));\n descriptor.items.setValue(this.dictionaryProperties.leading, new PdfNumber(metrics.leading));\n descriptor.items.setValue(this.dictionaryProperties.avgWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.fontFile2, new PdfReferenceHolder(this.fontProgram));\n descriptor.items.setValue(this.dictionaryProperties.maxWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.xHeight, new PdfNumber(0));\n descriptor.items.setValue(this.dictionaryProperties.stemH, new PdfNumber(0));\n return descriptor;\n };\n /**\n * Generates cmap.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createCmap = function () {\n this.cmap.cmapBeginSave = new SaveCmapEventHandler(this);\n };\n /**\n * Generates font dictionary.\n */\n UnicodeTrueTypeFont.prototype.createFontDictionary = function () {\n // Set property used to clone Font every time\n this.fontDictionary.isFont = true;\n this.fontDictionary.fontDictionaryBeginSave = new SaveFontDictionaryEventHandler(this);\n this.fontDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.fontDictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.fontDictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type0));\n this.fontDictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(this.dictionaryProperties.identityH));\n var descFonts = new PdfArray();\n var reference = new PdfReferenceHolder(this.descendantFont);\n // Set property used to clone Font every time\n descFonts.isFont = true;\n descFonts.add(reference);\n this.fontDictionary.items.setValue(this.dictionaryProperties.descendantFonts, descFonts);\n };\n /**\n * Creates font program.\n */\n UnicodeTrueTypeFont.prototype.createFontProgram = function () {\n this.fontProgram.fontProgramBeginSave = new SaveFontProgramEventHandler(this);\n };\n /**\n * Creates system info dictionary for CID font.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createSystemInfo = function () {\n var systemInfo = new PdfDictionary();\n systemInfo.items.setValue(this.dictionaryProperties.registry, new PdfString('Adobe'));\n systemInfo.items.setValue(this.dictionaryProperties.ordering, new PdfString(this.dictionaryProperties.identity));\n systemInfo.items.setValue(this.dictionaryProperties.supplement, new PdfNumber(0));\n return systemInfo;\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.descendantFontBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var width = this.getDescendantWidth();\n if (width !== null) {\n this.descendantFont.items.setValue(this.dictionaryProperties.w, width);\n }\n }\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.cmapBeginSave = function () {\n this.generateCmap();\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n /* tslint:disable */\n UnicodeTrueTypeFont.prototype.fontDictionaryBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0 && !this.fontDictionary.containsKey(this.dictionaryProperties.toUnicode)) {\n this.fontDictionary.items.setValue(this.dictionaryProperties.toUnicode, new PdfReferenceHolder(this.cmap));\n }\n };\n /* tslint:enable */\n /**\n * Runs before font program stream save.\n */\n UnicodeTrueTypeFont.prototype.fontProgramBeginSave = function () {\n this.isCompress = true;\n this.generateFontProgram();\n };\n /**\n * Gets width description pad array for c i d font.\n */\n UnicodeTrueTypeFont.prototype.getDescendantWidth = function () {\n var array = new PdfArray();\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphInfo = [];\n // if (!this.isEmbedFont) {\n var keys = this.usedChars.keys();\n for (var i = 0; i < keys.length; i++) {\n var chLen = keys[i];\n var glyph = this.ttfReader.getGlyph(chLen);\n if (glyph.empty) {\n continue;\n }\n glyphInfo.push(glyph);\n }\n // } else {\n // glyphInfo = this.ttfReader.getAllGlyphs();\n // }\n glyphInfo.sort(function (a, b) { return a.index - b.index; });\n var firstGlyphIndex = 0;\n var lastGlyphIndex = 0;\n var firstGlyphIndexWasSet = false;\n var widthDetails = new PdfArray();\n // if (!this.isEmbedFont) {\n for (var i = 0; i < glyphInfo.length; i++) {\n var glyph = glyphInfo[i];\n if (!firstGlyphIndexWasSet) {\n firstGlyphIndexWasSet = true;\n firstGlyphIndex = glyph.index;\n lastGlyphIndex = glyph.index - 1;\n }\n if ((lastGlyphIndex + 1 !== glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // Add glyph index / width.\n array.add(new PdfNumber(firstGlyphIndex));\n if (i !== 0) {\n array.add(widthDetails);\n }\n firstGlyphIndex = glyph.index;\n widthDetails = new PdfArray();\n }\n widthDetails.add(new PdfNumber(glyph.width));\n if (i + 1 === glyphInfo.length) {\n array.add(new PdfNumber(firstGlyphIndex));\n array.add(widthDetails);\n }\n lastGlyphIndex = glyph.index;\n }\n // } else {\n // for (let i : number = 0; i < glyphInfo.length; i++) {\n // let glyph : TtfGlyphInfo = glyphInfo[i];\n // if (!firstGlyphIndexWasSet) {\n // firstGlyphIndexWasSet = true;\n // lastGlyphIndex = glyph.index - 1;\n // }\n // firstGlyphIndex = glyph.index;\n // if ((lastGlyphIndex + 1 === glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // // Add glyph index / width.\n // widthDetails.add(new PdfNumber(glyph.width));\n // array.add(new PdfNumber(firstGlyphIndex));\n // array.add(widthDetails);\n // widthDetails = new PdfArray();\n // }\n // lastGlyphIndex = glyph.index;\n // }\n // }\n }\n return array;\n };\n /**\n * Creates cmap.\n */\n UnicodeTrueTypeFont.prototype.generateCmap = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphChars = this.ttfReader.getGlyphChars(this.usedChars);\n if (glyphChars.size() > 0) {\n var keys = glyphChars.keys().sort();\n // add first and last glyph indexes\n var first = keys[0];\n var last = keys[keys.length - 1];\n var middlePart = this.toHexString(first, false) + this.toHexString(last, false) + Operators.newLine;\n var builder = '';\n builder += this.cmapPrefix;\n builder += middlePart;\n builder += this.cmapEndCodespaceRange;\n var nextRange = 0;\n for (var i = 0; i < keys.length; i++) {\n if (nextRange === 0) {\n if (i !== 0) {\n builder += this.cmapEndRange;\n }\n nextRange = Math.min(100, keys.length - i);\n builder += nextRange;\n builder += Operators.whiteSpace;\n builder += this.cmapBeginRange;\n }\n nextRange -= 1;\n var key = keys[i];\n /* tslint:disable */\n builder += this.toHexString(key, true) + this.toHexString(key, true) + this.toHexString(glyphChars.getValue(key), true) + '\\n';\n /* tslint:enable */\n }\n builder += this.cmapSuffix;\n this.cmap.clearStream();\n this.cmap.isFont = true;\n this.cmap.write(builder);\n }\n }\n };\n /**\n * Generates font program.\n */\n UnicodeTrueTypeFont.prototype.generateFontProgram = function () {\n var fontProgram = null;\n this.usedChars = (this.usedChars === null || this.usedChars === undefined) ? new Dictionary() : this.usedChars;\n this.ttfReader.setOffset(0);\n fontProgram = this.ttfReader.readFontProgram(this.usedChars);\n this.fontProgram.clearStream();\n this.fontProgram.isFont = true;\n this.fontProgram.writeBytes(fontProgram);\n };\n /**\n * Calculates flags for the font descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getDescriptorFlags = function () {\n var flags = 0;\n var metrics = this.ttfReader.metrics;\n if (metrics.isFixedPitch) {\n flags |= FontDescriptorFlags.FixedPitch;\n }\n if (metrics.isSymbol) {\n flags |= FontDescriptorFlags.Symbolic;\n }\n else {\n flags |= FontDescriptorFlags.Nonsymbolic;\n }\n if (metrics.isItalic) {\n flags |= FontDescriptorFlags.Italic;\n }\n if (metrics.isBold) {\n flags |= FontDescriptorFlags.ForceBold;\n }\n return flags;\n };\n /**\n * Calculates BoundBox of the descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getBoundBox = function () {\n var rect = this.ttfReader.metrics.fontBox;\n var width = Math.abs(rect.right - rect.left);\n var height = Math.abs(rect.top - rect.bottom);\n var rectangle = new RectangleF(rect.left, rect.bottom, width, height);\n return rectangle;\n };\n /**\n * Converts integer of decimal system to hex integer.\n */\n UnicodeTrueTypeFont.prototype.toHexString = function (n, isCaseChange) {\n var s = n.toString(16);\n if (isCaseChange) {\n s = s.toUpperCase();\n }\n return '<0000'.substring(0, 5 - s.length) + s + '>';\n };\n /**\n * Stores used symbols.\n */\n UnicodeTrueTypeFont.prototype.setSymbols = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n if (this.usedChars === null || this.usedChars === undefined) {\n this.usedChars = new Dictionary();\n }\n for (var i = 0; i < text.length; i++) {\n var ch = text[i];\n this.usedChars.setValue(ch, String.fromCharCode(0));\n }\n // else {\n // if (text === null) {\n // throw new Error('Argument Null Exception : glyphs');\n // }\n // if (this.usedChars === null || this.usedChars === undefined) {\n // this.usedChars = new Dictionary();\n // }\n // for (let i : number = 0; i < text.length; i++) {\n // let glyphIndex : number = text[i];\n // let glyph : TtfGlyphInfo = this.ttfReader.getGlyph(glyphIndex);\n // if (!glyph == null) {\n // let c : string = glyph.charCode.toLocaleString();\n // this.usedChars.setValue(c, String.fromCharCode(0));\n // }\n // }\n // }\n if (this.isEmbedFont === false) {\n this.getDescendantWidth();\n }\n };\n return UnicodeTrueTypeFont;\n}());\nexport { UnicodeTrueTypeFont };\n","/**\n * ArabicShapeRenderer.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\nvar ArabicShapeRenderer = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function ArabicShapeRenderer() {\n //#region Constants\n this.arabicCharTable = [['\\u0621', '\\uFE80'], ['\\u0622', '\\uFE81', '\\uFE82'],\n ['\\u0623', '\\uFE83', '\\uFE84'],\n ['\\u0624', '\\uFE85', '\\uFE86'],\n ['\\u0625', '\\uFE87', '\\uFE88'],\n ['\\u0626', '\\uFE89', '\\uFE8A', '\\uFE8B', '\\uFE8C'],\n ['\\u0627', '\\uFE8D', '\\uFE8E'],\n ['\\u0628', '\\uFE8F', '\\uFE90', '\\uFE91', '\\uFE92'],\n ['\\u0629', '\\uFE93', '\\uFE94'],\n ['\\u062A', '\\uFE95', '\\uFE96', '\\uFE97', '\\uFE98'],\n ['\\u062B', '\\uFE99', '\\uFE9A', '\\uFE9B', '\\uFE9C'],\n ['\\u062C', '\\uFE9D', '\\uFE9E', '\\uFE9F', '\\uFEA0'],\n ['\\u062D', '\\uFEA1', '\\uFEA2', '\\uFEA3', '\\uFEA4'],\n ['\\u062E', '\\uFEA5', '\\uFEA6', '\\uFEA7', '\\uFEA8'],\n ['\\u062F', '\\uFEA9', '\\uFEAA'],\n ['\\u0630', '\\uFEAB', '\\uFEAC'],\n ['\\u0631', '\\uFEAD', '\\uFEAE'],\n ['\\u0632', '\\uFEAF', '\\uFEB0'],\n ['\\u0633', '\\uFEB1', '\\uFEB2', '\\uFEB3', '\\uFEB4'],\n ['\\u0634', '\\uFEB5', '\\uFEB6', '\\uFEB7', '\\uFEB8'],\n ['\\u0635', '\\uFEB9', '\\uFEBA', '\\uFEBB', '\\uFEBC'],\n ['\\u0636', '\\uFEBD', '\\uFEBE', '\\uFEBF', '\\uFEC0'],\n ['\\u0637', '\\uFEC1', '\\uFEC2', '\\uFEC3', '\\uFEC4'],\n ['\\u0638', '\\uFEC5', '\\uFEC6', '\\uFEC7', '\\uFEC8'],\n ['\\u0639', '\\uFEC9', '\\uFECA', '\\uFECB', '\\uFECC'],\n ['\\u063A', '\\uFECD', '\\uFECE', '\\uFECF', '\\uFED0'],\n ['\\u0640', '\\u0640', '\\u0640', '\\u0640', '\\u0640'],\n ['\\u0641', '\\uFED1', '\\uFED2', '\\uFED3', '\\uFED4'],\n ['\\u0642', '\\uFED5', '\\uFED6', '\\uFED7', '\\uFED8'],\n ['\\u0643', '\\uFED9', '\\uFEDA', '\\uFEDB', '\\uFEDC'],\n ['\\u0644', '\\uFEDD', '\\uFEDE', '\\uFEDF', '\\uFEE0'],\n ['\\u0645', '\\uFEE1', '\\uFEE2', '\\uFEE3', '\\uFEE4'],\n ['\\u0646', '\\uFEE5', '\\uFEE6', '\\uFEE7', '\\uFEE8'],\n ['\\u0647', '\\uFEE9', '\\uFEEA', '\\uFEEB', '\\uFEEC'],\n ['\\u0648', '\\uFEED', '\\uFEEE'],\n ['\\u0649', '\\uFEEF', '\\uFEF0', '\\uFBE8', '\\uFBE9'],\n ['\\u064A', '\\uFEF1', '\\uFEF2', '\\uFEF3', '\\uFEF4'],\n ['\\u0671', '\\uFB50', '\\uFB51'],\n ['\\u0679', '\\uFB66', '\\uFB67', '\\uFB68', '\\uFB69'],\n ['\\u067A', '\\uFB5E', '\\uFB5F', '\\uFB60', '\\uFB61'],\n ['\\u067B', '\\uFB52', '\\uFB53', '\\uFB54', '\\uFB55'],\n ['\\u067E', '\\uFB56', '\\uFB57', '\\uFB58', '\\uFB59'],\n ['\\u067F', '\\uFB62', '\\uFB63', '\\uFB64', '\\uFB65'],\n ['\\u0680', '\\uFB5A', '\\uFB5B', '\\uFB5C', '\\uFB5D'],\n ['\\u0683', '\\uFB76', '\\uFB77', '\\uFB78', '\\uFB79'],\n ['\\u0684', '\\uFB72', '\\uFB73', '\\uFB74', '\\uFB75'],\n ['\\u0686', '\\uFB7A', '\\uFB7B', '\\uFB7C', '\\uFB7D'],\n ['\\u0687', '\\uFB7E', '\\uFB7F', '\\uFB80', '\\uFB81'],\n ['\\u0688', '\\uFB88', '\\uFB89'],\n ['\\u068C', '\\uFB84', '\\uFB85'],\n ['\\u068D', '\\uFB82', '\\uFB83'],\n ['\\u068E', '\\uFB86', '\\uFB87'],\n ['\\u0691', '\\uFB8C', '\\uFB8D'],\n ['\\u0698', '\\uFB8A', '\\uFB8B'],\n ['\\u06A4', '\\uFB6A', '\\uFB6B', '\\uFB6C', '\\uFB6D'],\n ['\\u06A6', '\\uFB6E', '\\uFB6F', '\\uFB70', '\\uFB71'],\n ['\\u06A9', '\\uFB8E', '\\uFB8F', '\\uFB90', '\\uFB91'],\n ['\\u06AD', '\\uFBD3', '\\uFBD4', '\\uFBD5', '\\uFBD6'],\n ['\\u06AF', '\\uFB92', '\\uFB93', '\\uFB94', '\\uFB95'],\n ['\\u06B1', '\\uFB9A', '\\uFB9B', '\\uFB9C', '\\uFB9D'],\n ['\\u06B3', '\\uFB96', '\\uFB97', '\\uFB98', '\\uFB99'],\n ['\\u06BA', '\\uFB9E', '\\uFB9F'],\n ['\\u06BB', '\\uFBA0', '\\uFBA1', '\\uFBA2', '\\uFBA3'],\n ['\\u06BE', '\\uFBAA', '\\uFBAB', '\\uFBAC', '\\uFBAD'],\n ['\\u06C0', '\\uFBA4', '\\uFBA5'],\n ['\\u06C1', '\\uFBA6', '\\uFBA7', '\\uFBA8', '\\uFBA9'],\n ['\\u06C5', '\\uFBE0', '\\uFBE1'],\n ['\\u06C6', '\\uFBD9', '\\uFBDA'],\n ['\\u06C7', '\\uFBD7', '\\uFBD8'],\n ['\\u06C8', '\\uFBDB', '\\uFBDC'],\n ['\\u06C9', '\\uFBE2', '\\uFBE3'],\n ['\\u06CB', '\\uFBDE', '\\uFBDF'],\n ['\\u06CC', '\\uFBFC', '\\uFBFD', '\\uFBFE', '\\uFBFF'],\n ['\\u06D0', '\\uFBE4', '\\uFBE5', '\\uFBE6', '\\uFBE7'],\n ['\\u06D2', '\\uFBAE', '\\uFBAF'],\n ['\\u06D3', '\\uFBB0', '\\uFBB1']\n ];\n this.alef = '\\u0627';\n this.alefHamza = '\\u0623';\n this.alefHamzaBelow = '\\u0625';\n this.alefMadda = '\\u0622';\n this.lam = '\\u0644';\n this.hamza = '\\u0621';\n this.zeroWidthJoiner = '\\u200D';\n this.hamzaAbove = '\\u0654';\n this.hamzaBelow = '\\u0655';\n this.wawHamza = '\\u0624';\n this.yehHamza = '\\u0626';\n this.waw = '\\u0648';\n this.alefMaksura = '\\u0649';\n this.yeh = '\\u064A';\n this.farsiYeh = '\\u06CC';\n this.shadda = '\\u0651';\n this.madda = '\\u0653';\n this.lwa = '\\uFEFB';\n this.lwawh = '\\uFEF7';\n this.lwawhb = '\\uFEF9';\n this.lwawm = '\\uFEF5';\n this.bwhb = '\\u06D3';\n this.fathatan = '\\u064B';\n this.superScriptalef = '\\u0670';\n this.vowel = 0x1;\n // #endregion\n //#region Fields\n this.arabicMapTable = new Dictionary();\n for (var i = 0; i < this.arabicCharTable.length; i++) {\n this.arabicMapTable.setValue(this.arabicCharTable[i][0], this.arabicCharTable[i]);\n }\n }\n //#endregion\n //#region implementation\n ArabicShapeRenderer.prototype.getCharacterShape = function (input, index) {\n if ((input >= this.hamza) && (input <= this.bwhb)) {\n var value = [];\n if (this.arabicMapTable.getValue(input)) {\n value = this.arabicMapTable.getValue(input);\n return value[index + 1];\n }\n }\n else if (input >= this.lwawm && input <= this.lwa) {\n return (input);\n }\n return input;\n };\n ArabicShapeRenderer.prototype.shape = function (text, level) {\n var builder = '';\n var str2 = '';\n for (var i = 0; i < text.length; i++) {\n var c = text[i];\n if (c >= '؀' && c <= 'ۿ') {\n //if(c>= 0x0600.toString() && c<= 0x06FF.toString()) {\n str2 = str2 + c;\n }\n else {\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n str2 = '';\n }\n builder = builder + c;\n }\n }\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n }\n return builder.toString();\n };\n ArabicShapeRenderer.prototype.doShape = function (input, level) {\n var str = '';\n var ligature = 0;\n var len = 0;\n var i = 0;\n var next = '';\n var previous = new ArabicShape();\n var present = new ArabicShape();\n while (i < input.length) {\n next = input[i++];\n ligature = this.ligature(next, present);\n if (ligature === 0) {\n var shapeCount = this.getShapeCount(next);\n len = (shapeCount === 1) ? 0 : 2;\n if (previous.Shapes > 2) {\n len += 1;\n }\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n previous = present;\n present = new ArabicShape();\n present.Value = next;\n present.Shapes = shapeCount;\n present.Ligature++;\n }\n }\n len = (previous.Shapes > 2) ? 1 : 0;\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n str = this.append(str, present, level);\n return str.toString();\n };\n ArabicShapeRenderer.prototype.append = function (builder, shape, level) {\n if (shape.Value !== '') {\n builder = builder + shape.Value;\n shape.Ligature -= 1;\n if (shape.Type !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.Type;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n if (shape.vowel !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.vowel;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n }\n return builder;\n };\n ArabicShapeRenderer.prototype.ligature = function (value, shape) {\n if (shape.Value !== '') {\n var result = 0;\n if ((value >= this.fathatan && value <= this.hamzaBelow) || value === this.superScriptalef) {\n result = 1;\n if ((shape.vowel !== '') && (value !== this.shadda)) {\n result = 2;\n }\n if (value === this.shadda) {\n if (shape.Type == null) {\n shape.Type = this.shadda;\n }\n else {\n return 0;\n }\n }\n else if (value === this.hamzaBelow) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamzaBelow;\n result = 2;\n }\n else if (value === this.lwa) {\n shape.Value = this.lwawhb;\n result = 2;\n }\n else {\n shape.Type = this.hamzaBelow;\n }\n }\n else if (value === this.hamzaAbove) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamza;\n result = 2;\n }\n else if (shape.Value === this.lwa) {\n shape.Value = this.lwawh;\n result = 2;\n }\n else if (shape.Value === this.waw) {\n shape.Value = this.wawHamza;\n result = 2;\n }\n else if (shape.Value === this.yeh || shape.Value === this.alefMaksura || shape.Value === this.farsiYeh) {\n shape.Value = this.yehHamza;\n result = 2;\n }\n else {\n shape.Type = this.hamzaAbove;\n }\n }\n else if (value === this.madda) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefMadda;\n result = 2;\n }\n }\n else {\n shape.vowel = value;\n }\n if (result === 1) {\n shape.Ligature++;\n }\n return result;\n }\n if (shape.vowel !== '') {\n return 0;\n }\n if (shape.Value === this.lam) {\n if (value === this.alef) {\n shape.Value = this.lwa;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamza) {\n shape.Value = this.lwawh;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamzaBelow) {\n shape.Value = this.lwawhb;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefMadda) {\n shape.Value = this.lwawm;\n shape.Shapes = 2;\n result = 3;\n }\n }\n // else if (shape.Value === '') {\n // shape.Value = value;\n // shape.Shapes = this.getShapeCount(value);\n // result = 1;\n // }\n return result;\n }\n else {\n return 0;\n }\n };\n ArabicShapeRenderer.prototype.getShapeCount = function (shape) {\n if ((shape >= this.hamza) && (shape <= this.bwhb) && !((shape >= this.fathatan && shape <= this.hamzaBelow)\n || shape === this.superScriptalef)) {\n var c = [];\n if (this.arabicMapTable.getValue(shape)) {\n c = this.arabicMapTable.getValue(shape);\n return c.length - 1;\n }\n }\n else if (shape === this.zeroWidthJoiner) {\n return 4;\n }\n return 1;\n };\n return ArabicShapeRenderer;\n}());\nexport { ArabicShapeRenderer };\n//#endregion\n//#region Internals\nvar ArabicShape = /** @class */ (function () {\n function ArabicShape() {\n //#region Fields\n this.shapeValue = '';\n this.shapeType = '';\n this.shapeVowel = '';\n this.shapeLigature = 0;\n this.shapeShapes = 1;\n //#endregion\n }\n Object.defineProperty(ArabicShape.prototype, \"Value\", {\n //#endregion\n //#region Properties \n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeValue;\n },\n set: function (value) {\n this.shapeValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Type\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeType;\n },\n set: function (value) {\n this.shapeType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"vowel\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeVowel;\n },\n set: function (value) {\n this.shapeVowel = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Ligature\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeLigature;\n },\n set: function (value) {\n this.shapeLigature = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Shapes\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeShapes;\n },\n set: function (value) {\n this.shapeShapes = value;\n },\n enumerable: true,\n configurable: true\n });\n return ArabicShape;\n}());\nexport { ArabicShape };\n//#endregion\n","/**\n * Bidi.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar Bidi = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function Bidi() {\n //#region Fields\n this.indexes = [];\n this.indexLevels = [];\n this.mirroringShapeCharacters = new Dictionary();\n this.update();\n }\n //#endregion\n //#region implementation\n Bidi.prototype.doMirrorShaping = function (text) {\n var result = [];\n for (var i = 0; i < text.length; i++) {\n if (((this.indexLevels[i] & 1) === 1) && this.mirroringShapeCharacters.containsKey(text[i].charCodeAt(0))) {\n result[i] = String.fromCharCode(this.mirroringShapeCharacters.getValue(text[i].charCodeAt(0)));\n }\n else {\n result[i] = text[i].toString();\n }\n }\n var res = '';\n for (var j = 0; j < result.length; j++) {\n res = res + result[j];\n }\n return res;\n };\n Bidi.prototype.getLogicalToVisualString = function (inputText, isRtl) {\n var rtlCharacters = new RtlCharacters();\n this.indexLevels = rtlCharacters.getVisualOrder(inputText, isRtl);\n this.setDefaultIndexLevel();\n this.doOrder(0, this.indexLevels.length - 1);\n var text = this.doMirrorShaping(inputText);\n //let text : string = inputText;\n var resultBuilder = '';\n for (var i = 0; i < this.indexes.length; i++) {\n var index = this.indexes[i];\n resultBuilder += text[index];\n }\n return resultBuilder.toString();\n };\n Bidi.prototype.setDefaultIndexLevel = function () {\n for (var i = 0; i < this.indexLevels.length; i++) {\n this.indexes[i] = i;\n }\n };\n Bidi.prototype.doOrder = function (sIndex, eIndex) {\n var max = this.indexLevels[sIndex];\n var min = max;\n var odd = max;\n var even = max;\n for (var i = sIndex + 1; i <= eIndex; ++i) {\n var data = this.indexLevels[i];\n if (data > max) {\n max = data;\n }\n else if (data < min) {\n min = data;\n }\n odd &= data;\n even |= data;\n }\n if ((even & 1) === 0) {\n return;\n }\n if ((odd & 1) === 1) {\n this.reArrange(sIndex, eIndex + 1);\n return;\n }\n min |= 1;\n while (max >= min) {\n var pstart = sIndex;\n /*tslint:disable:no-constant-condition */\n while (true) {\n while (pstart <= eIndex) {\n if (this.indexLevels[pstart] >= max) {\n break;\n }\n pstart += 1;\n }\n if (pstart > eIndex) {\n break;\n }\n var pend = pstart + 1;\n while (pend <= eIndex) {\n if (this.indexLevels[pend] < max) {\n break;\n }\n pend += 1;\n }\n this.reArrange(pstart, pend);\n pstart = pend + 1;\n }\n max -= 1;\n }\n };\n Bidi.prototype.reArrange = function (i, j) {\n var length = (i + j) / 2;\n --j;\n for (; i < length; ++i, --j) {\n var temp = this.indexes[i];\n this.indexes[i] = this.indexes[j];\n this.indexes[j] = temp;\n }\n };\n Bidi.prototype.update = function () {\n this.mirroringShapeCharacters.setValue(40, 41);\n this.mirroringShapeCharacters.setValue(41, 40);\n this.mirroringShapeCharacters.setValue(60, 62);\n this.mirroringShapeCharacters.setValue(62, 60);\n this.mirroringShapeCharacters.setValue(91, 93);\n this.mirroringShapeCharacters.setValue(93, 91);\n this.mirroringShapeCharacters.setValue(123, 125);\n this.mirroringShapeCharacters.setValue(125, 123);\n this.mirroringShapeCharacters.setValue(171, 187);\n this.mirroringShapeCharacters.setValue(187, 171);\n this.mirroringShapeCharacters.setValue(8249, 8250);\n this.mirroringShapeCharacters.setValue(8250, 8249);\n this.mirroringShapeCharacters.setValue(8261, 8262);\n this.mirroringShapeCharacters.setValue(8262, 8261);\n this.mirroringShapeCharacters.setValue(8317, 8318);\n this.mirroringShapeCharacters.setValue(8318, 8317);\n this.mirroringShapeCharacters.setValue(8333, 8334);\n this.mirroringShapeCharacters.setValue(8334, 8333);\n this.mirroringShapeCharacters.setValue(8712, 8715);\n this.mirroringShapeCharacters.setValue(8713, 8716);\n this.mirroringShapeCharacters.setValue(8714, 8717);\n this.mirroringShapeCharacters.setValue(8715, 8712);\n this.mirroringShapeCharacters.setValue(8716, 8713);\n this.mirroringShapeCharacters.setValue(8717, 8714);\n this.mirroringShapeCharacters.setValue(8725, 10741);\n this.mirroringShapeCharacters.setValue(8764, 8765);\n this.mirroringShapeCharacters.setValue(8765, 8764);\n this.mirroringShapeCharacters.setValue(8771, 8909);\n this.mirroringShapeCharacters.setValue(8786, 8787);\n this.mirroringShapeCharacters.setValue(8787, 8786);\n this.mirroringShapeCharacters.setValue(8788, 8789);\n this.mirroringShapeCharacters.setValue(8789, 8788);\n this.mirroringShapeCharacters.setValue(8804, 8805);\n this.mirroringShapeCharacters.setValue(8805, 8804);\n this.mirroringShapeCharacters.setValue(8806, 8807);\n this.mirroringShapeCharacters.setValue(8807, 8806);\n this.mirroringShapeCharacters.setValue(8808, 8809);\n this.mirroringShapeCharacters.setValue(8809, 8808);\n this.mirroringShapeCharacters.setValue(8810, 8811);\n this.mirroringShapeCharacters.setValue(8811, 8810);\n this.mirroringShapeCharacters.setValue(8814, 8815);\n this.mirroringShapeCharacters.setValue(8815, 8814);\n this.mirroringShapeCharacters.setValue(8816, 8817);\n this.mirroringShapeCharacters.setValue(8817, 8816);\n this.mirroringShapeCharacters.setValue(8818, 8819);\n this.mirroringShapeCharacters.setValue(8819, 8818);\n this.mirroringShapeCharacters.setValue(8820, 8821);\n this.mirroringShapeCharacters.setValue(8821, 8820);\n this.mirroringShapeCharacters.setValue(8822, 8823);\n this.mirroringShapeCharacters.setValue(8823, 8822);\n this.mirroringShapeCharacters.setValue(8824, 8825);\n this.mirroringShapeCharacters.setValue(8825, 8824);\n this.mirroringShapeCharacters.setValue(8826, 8827);\n this.mirroringShapeCharacters.setValue(8827, 8826);\n this.mirroringShapeCharacters.setValue(8828, 8829);\n this.mirroringShapeCharacters.setValue(8829, 8828);\n this.mirroringShapeCharacters.setValue(8830, 8831);\n this.mirroringShapeCharacters.setValue(8831, 8830);\n this.mirroringShapeCharacters.setValue(8832, 8833);\n this.mirroringShapeCharacters.setValue(8833, 8832);\n this.mirroringShapeCharacters.setValue(8834, 8835);\n this.mirroringShapeCharacters.setValue(8835, 8834);\n this.mirroringShapeCharacters.setValue(8836, 8837);\n this.mirroringShapeCharacters.setValue(8837, 8836);\n this.mirroringShapeCharacters.setValue(8838, 8839);\n this.mirroringShapeCharacters.setValue(8839, 8838);\n this.mirroringShapeCharacters.setValue(8840, 8841);\n this.mirroringShapeCharacters.setValue(8841, 8840);\n this.mirroringShapeCharacters.setValue(8842, 8843);\n this.mirroringShapeCharacters.setValue(8843, 8842);\n this.mirroringShapeCharacters.setValue(8847, 8848);\n this.mirroringShapeCharacters.setValue(8848, 8847);\n this.mirroringShapeCharacters.setValue(8849, 8850);\n this.mirroringShapeCharacters.setValue(8850, 8849);\n this.mirroringShapeCharacters.setValue(8856, 10680);\n this.mirroringShapeCharacters.setValue(8866, 8867);\n this.mirroringShapeCharacters.setValue(8867, 8866);\n this.mirroringShapeCharacters.setValue(8870, 10974);\n this.mirroringShapeCharacters.setValue(8872, 10980);\n this.mirroringShapeCharacters.setValue(8873, 10979);\n this.mirroringShapeCharacters.setValue(8875, 10981);\n this.mirroringShapeCharacters.setValue(8880, 8881);\n this.mirroringShapeCharacters.setValue(8881, 8880);\n this.mirroringShapeCharacters.setValue(8882, 8883);\n this.mirroringShapeCharacters.setValue(8883, 8882);\n this.mirroringShapeCharacters.setValue(8884, 8885);\n this.mirroringShapeCharacters.setValue(8885, 8884);\n /*tslint:disable:max-func-body-length */\n this.mirroringShapeCharacters.setValue(8886, 8887);\n this.mirroringShapeCharacters.setValue(8887, 8886);\n this.mirroringShapeCharacters.setValue(8905, 8906);\n this.mirroringShapeCharacters.setValue(8906, 8905);\n this.mirroringShapeCharacters.setValue(8907, 8908);\n this.mirroringShapeCharacters.setValue(8908, 8907);\n this.mirroringShapeCharacters.setValue(8909, 8771);\n this.mirroringShapeCharacters.setValue(8912, 8913);\n this.mirroringShapeCharacters.setValue(8913, 8912);\n this.mirroringShapeCharacters.setValue(8918, 8919);\n this.mirroringShapeCharacters.setValue(8919, 8918);\n this.mirroringShapeCharacters.setValue(8920, 8921);\n this.mirroringShapeCharacters.setValue(8921, 8920);\n this.mirroringShapeCharacters.setValue(8922, 8923);\n this.mirroringShapeCharacters.setValue(8923, 8922);\n this.mirroringShapeCharacters.setValue(8924, 8925);\n this.mirroringShapeCharacters.setValue(8925, 8924);\n this.mirroringShapeCharacters.setValue(8926, 8927);\n this.mirroringShapeCharacters.setValue(8927, 8926);\n this.mirroringShapeCharacters.setValue(8928, 8929);\n this.mirroringShapeCharacters.setValue(8929, 8928);\n this.mirroringShapeCharacters.setValue(8930, 8931);\n this.mirroringShapeCharacters.setValue(8931, 8930);\n this.mirroringShapeCharacters.setValue(8932, 8933);\n this.mirroringShapeCharacters.setValue(8933, 8932);\n this.mirroringShapeCharacters.setValue(8934, 8935);\n this.mirroringShapeCharacters.setValue(8935, 8934);\n this.mirroringShapeCharacters.setValue(8936, 8937);\n this.mirroringShapeCharacters.setValue(8937, 8936);\n this.mirroringShapeCharacters.setValue(8938, 8939);\n this.mirroringShapeCharacters.setValue(8939, 8938);\n this.mirroringShapeCharacters.setValue(8940, 8941);\n this.mirroringShapeCharacters.setValue(8941, 8940);\n this.mirroringShapeCharacters.setValue(8944, 8945);\n this.mirroringShapeCharacters.setValue(8945, 8944);\n this.mirroringShapeCharacters.setValue(8946, 8954);\n this.mirroringShapeCharacters.setValue(8947, 8955);\n this.mirroringShapeCharacters.setValue(8948, 8956);\n this.mirroringShapeCharacters.setValue(8950, 8957);\n this.mirroringShapeCharacters.setValue(8951, 8958);\n this.mirroringShapeCharacters.setValue(8954, 8946);\n this.mirroringShapeCharacters.setValue(8955, 8947);\n this.mirroringShapeCharacters.setValue(8956, 8948);\n this.mirroringShapeCharacters.setValue(8957, 8950);\n this.mirroringShapeCharacters.setValue(8958, 8951);\n this.mirroringShapeCharacters.setValue(8968, 8969);\n this.mirroringShapeCharacters.setValue(8969, 8968);\n this.mirroringShapeCharacters.setValue(8970, 8971);\n this.mirroringShapeCharacters.setValue(8971, 8970);\n this.mirroringShapeCharacters.setValue(9001, 9002);\n this.mirroringShapeCharacters.setValue(9002, 9001);\n this.mirroringShapeCharacters.setValue(10088, 10089);\n this.mirroringShapeCharacters.setValue(10089, 10088);\n this.mirroringShapeCharacters.setValue(10090, 10091);\n this.mirroringShapeCharacters.setValue(10091, 10090);\n this.mirroringShapeCharacters.setValue(10092, 10093);\n this.mirroringShapeCharacters.setValue(10093, 10092);\n this.mirroringShapeCharacters.setValue(10094, 10095);\n this.mirroringShapeCharacters.setValue(10095, 10094);\n this.mirroringShapeCharacters.setValue(10096, 10097);\n this.mirroringShapeCharacters.setValue(10097, 10096);\n this.mirroringShapeCharacters.setValue(10098, 10099);\n this.mirroringShapeCharacters.setValue(10099, 10098);\n this.mirroringShapeCharacters.setValue(10100, 10101);\n this.mirroringShapeCharacters.setValue(10101, 10100);\n this.mirroringShapeCharacters.setValue(10197, 10198);\n this.mirroringShapeCharacters.setValue(10198, 10197);\n this.mirroringShapeCharacters.setValue(10205, 10206);\n this.mirroringShapeCharacters.setValue(10206, 10205);\n this.mirroringShapeCharacters.setValue(10210, 10211);\n this.mirroringShapeCharacters.setValue(10211, 10210);\n this.mirroringShapeCharacters.setValue(10212, 10213);\n this.mirroringShapeCharacters.setValue(10213, 10212);\n this.mirroringShapeCharacters.setValue(10214, 10215);\n this.mirroringShapeCharacters.setValue(10215, 10214);\n this.mirroringShapeCharacters.setValue(10216, 10217);\n this.mirroringShapeCharacters.setValue(10217, 10216);\n this.mirroringShapeCharacters.setValue(10218, 10219);\n this.mirroringShapeCharacters.setValue(10219, 10218);\n this.mirroringShapeCharacters.setValue(10627, 10628);\n this.mirroringShapeCharacters.setValue(10628, 10627);\n this.mirroringShapeCharacters.setValue(10629, 10630);\n this.mirroringShapeCharacters.setValue(10630, 10629);\n this.mirroringShapeCharacters.setValue(10631, 10632);\n this.mirroringShapeCharacters.setValue(10632, 10631);\n this.mirroringShapeCharacters.setValue(10633, 10634);\n this.mirroringShapeCharacters.setValue(10634, 10633);\n this.mirroringShapeCharacters.setValue(10635, 10636);\n this.mirroringShapeCharacters.setValue(10636, 10635);\n this.mirroringShapeCharacters.setValue(10637, 10640);\n this.mirroringShapeCharacters.setValue(10638, 10639);\n this.mirroringShapeCharacters.setValue(10639, 10638);\n this.mirroringShapeCharacters.setValue(10640, 10637);\n this.mirroringShapeCharacters.setValue(10641, 10642);\n this.mirroringShapeCharacters.setValue(10642, 10641);\n this.mirroringShapeCharacters.setValue(10643, 10644);\n this.mirroringShapeCharacters.setValue(10644, 10643);\n this.mirroringShapeCharacters.setValue(10645, 10646);\n this.mirroringShapeCharacters.setValue(10646, 10645);\n this.mirroringShapeCharacters.setValue(10647, 10648);\n this.mirroringShapeCharacters.setValue(10648, 10647);\n this.mirroringShapeCharacters.setValue(10680, 8856);\n this.mirroringShapeCharacters.setValue(10688, 10689);\n this.mirroringShapeCharacters.setValue(10689, 10688);\n this.mirroringShapeCharacters.setValue(10692, 10693);\n this.mirroringShapeCharacters.setValue(10693, 10692);\n this.mirroringShapeCharacters.setValue(10703, 10704);\n this.mirroringShapeCharacters.setValue(10704, 10703);\n this.mirroringShapeCharacters.setValue(10705, 10706);\n this.mirroringShapeCharacters.setValue(10706, 10705);\n this.mirroringShapeCharacters.setValue(10708, 10709);\n this.mirroringShapeCharacters.setValue(10709, 10708);\n this.mirroringShapeCharacters.setValue(10712, 10713);\n this.mirroringShapeCharacters.setValue(10713, 10712);\n this.mirroringShapeCharacters.setValue(10714, 10715);\n this.mirroringShapeCharacters.setValue(10715, 10714);\n this.mirroringShapeCharacters.setValue(10741, 8725);\n this.mirroringShapeCharacters.setValue(10744, 10745);\n this.mirroringShapeCharacters.setValue(10745, 10744);\n this.mirroringShapeCharacters.setValue(10748, 10749);\n this.mirroringShapeCharacters.setValue(10749, 10748);\n this.mirroringShapeCharacters.setValue(10795, 10796);\n this.mirroringShapeCharacters.setValue(10796, 10795);\n this.mirroringShapeCharacters.setValue(10797, 10796);\n this.mirroringShapeCharacters.setValue(10798, 10797);\n this.mirroringShapeCharacters.setValue(10804, 10805);\n this.mirroringShapeCharacters.setValue(10805, 10804);\n this.mirroringShapeCharacters.setValue(10812, 10813);\n this.mirroringShapeCharacters.setValue(10813, 10812);\n this.mirroringShapeCharacters.setValue(10852, 10853);\n this.mirroringShapeCharacters.setValue(10853, 10852);\n this.mirroringShapeCharacters.setValue(10873, 10874);\n this.mirroringShapeCharacters.setValue(10874, 10873);\n this.mirroringShapeCharacters.setValue(10877, 10878);\n this.mirroringShapeCharacters.setValue(10878, 10877);\n this.mirroringShapeCharacters.setValue(10879, 10880);\n this.mirroringShapeCharacters.setValue(10880, 10879);\n this.mirroringShapeCharacters.setValue(10881, 10882);\n this.mirroringShapeCharacters.setValue(10882, 10881);\n this.mirroringShapeCharacters.setValue(10883, 10884);\n this.mirroringShapeCharacters.setValue(10884, 10883);\n this.mirroringShapeCharacters.setValue(10891, 10892);\n this.mirroringShapeCharacters.setValue(10892, 10891);\n this.mirroringShapeCharacters.setValue(10897, 10898);\n this.mirroringShapeCharacters.setValue(10898, 10897);\n this.mirroringShapeCharacters.setValue(10899, 10900);\n this.mirroringShapeCharacters.setValue(10900, 10899);\n this.mirroringShapeCharacters.setValue(10901, 10902);\n this.mirroringShapeCharacters.setValue(10902, 10901);\n this.mirroringShapeCharacters.setValue(10903, 10904);\n this.mirroringShapeCharacters.setValue(10904, 10903);\n this.mirroringShapeCharacters.setValue(10905, 10906);\n this.mirroringShapeCharacters.setValue(10906, 10905);\n this.mirroringShapeCharacters.setValue(10907, 10908);\n this.mirroringShapeCharacters.setValue(10908, 10907);\n this.mirroringShapeCharacters.setValue(10913, 10914);\n this.mirroringShapeCharacters.setValue(10914, 10913);\n this.mirroringShapeCharacters.setValue(10918, 10919);\n this.mirroringShapeCharacters.setValue(10919, 10918);\n this.mirroringShapeCharacters.setValue(10920, 10921);\n this.mirroringShapeCharacters.setValue(10921, 10920);\n this.mirroringShapeCharacters.setValue(10922, 10923);\n this.mirroringShapeCharacters.setValue(10923, 10922);\n this.mirroringShapeCharacters.setValue(10924, 10925);\n this.mirroringShapeCharacters.setValue(10925, 10924);\n this.mirroringShapeCharacters.setValue(10927, 10928);\n this.mirroringShapeCharacters.setValue(10928, 10927);\n this.mirroringShapeCharacters.setValue(10931, 10932);\n this.mirroringShapeCharacters.setValue(10932, 10931);\n this.mirroringShapeCharacters.setValue(10939, 10940);\n this.mirroringShapeCharacters.setValue(10940, 10939);\n this.mirroringShapeCharacters.setValue(10941, 10942);\n this.mirroringShapeCharacters.setValue(10942, 10941);\n this.mirroringShapeCharacters.setValue(10943, 10944);\n this.mirroringShapeCharacters.setValue(10944, 10943);\n this.mirroringShapeCharacters.setValue(10945, 10946);\n this.mirroringShapeCharacters.setValue(10946, 10945);\n this.mirroringShapeCharacters.setValue(10947, 10948);\n this.mirroringShapeCharacters.setValue(10948, 10947);\n this.mirroringShapeCharacters.setValue(10949, 10950);\n this.mirroringShapeCharacters.setValue(10950, 10949);\n this.mirroringShapeCharacters.setValue(10957, 10958);\n this.mirroringShapeCharacters.setValue(10958, 10957);\n this.mirroringShapeCharacters.setValue(10959, 10960);\n this.mirroringShapeCharacters.setValue(10960, 10959);\n this.mirroringShapeCharacters.setValue(10961, 10962);\n this.mirroringShapeCharacters.setValue(10962, 10961);\n this.mirroringShapeCharacters.setValue(10963, 10964);\n this.mirroringShapeCharacters.setValue(10964, 10963);\n this.mirroringShapeCharacters.setValue(10965, 10966);\n this.mirroringShapeCharacters.setValue(10966, 10965);\n this.mirroringShapeCharacters.setValue(10974, 8870);\n this.mirroringShapeCharacters.setValue(10979, 8873);\n this.mirroringShapeCharacters.setValue(10980, 8872);\n this.mirroringShapeCharacters.setValue(10981, 8875);\n this.mirroringShapeCharacters.setValue(10988, 10989);\n this.mirroringShapeCharacters.setValue(10989, 10988);\n this.mirroringShapeCharacters.setValue(10999, 11000);\n this.mirroringShapeCharacters.setValue(11000, 10999);\n this.mirroringShapeCharacters.setValue(11001, 11002);\n this.mirroringShapeCharacters.setValue(11002, 11001);\n this.mirroringShapeCharacters.setValue(12296, 12297);\n this.mirroringShapeCharacters.setValue(12297, 12296);\n this.mirroringShapeCharacters.setValue(12298, 12299);\n this.mirroringShapeCharacters.setValue(12299, 12298);\n this.mirroringShapeCharacters.setValue(12300, 12301);\n this.mirroringShapeCharacters.setValue(12301, 12300);\n this.mirroringShapeCharacters.setValue(12302, 12303);\n this.mirroringShapeCharacters.setValue(12303, 12302);\n this.mirroringShapeCharacters.setValue(12304, 12305);\n this.mirroringShapeCharacters.setValue(12305, 12304);\n this.mirroringShapeCharacters.setValue(12308, 12309);\n this.mirroringShapeCharacters.setValue(12309, 12308);\n this.mirroringShapeCharacters.setValue(12310, 12311);\n this.mirroringShapeCharacters.setValue(12311, 12310);\n this.mirroringShapeCharacters.setValue(12312, 12313);\n this.mirroringShapeCharacters.setValue(12313, 12312);\n this.mirroringShapeCharacters.setValue(12314, 12315);\n this.mirroringShapeCharacters.setValue(12315, 12314);\n this.mirroringShapeCharacters.setValue(65288, 65289);\n this.mirroringShapeCharacters.setValue(65289, 65288);\n this.mirroringShapeCharacters.setValue(65308, 65310);\n this.mirroringShapeCharacters.setValue(65310, 65308);\n this.mirroringShapeCharacters.setValue(65339, 65341);\n this.mirroringShapeCharacters.setValue(65341, 65339);\n this.mirroringShapeCharacters.setValue(65371, 65373);\n this.mirroringShapeCharacters.setValue(65373, 65371);\n this.mirroringShapeCharacters.setValue(65375, 65376);\n this.mirroringShapeCharacters.setValue(65376, 65375);\n this.mirroringShapeCharacters.setValue(65378, 65379);\n this.mirroringShapeCharacters.setValue(65379, 65378);\n };\n return Bidi;\n}());\nexport { Bidi };\nvar RtlCharacters = /** @class */ (function () {\n //#endregion\n //#region constructors\n function RtlCharacters() {\n //#region fields\n /// \n /// Specifies the character types.\n /// \n this.types = [];\n /// \n /// Specifies the text order (RTL or LTR).\n /// \n this.textOrder = -1;\n /// \n /// Specifies the RTL character types.\n /// \n /* tslint:disable-next-line:prefer-array-literal */\n this.rtlCharacterTypes = new Array(65536);\n //#endregion\n //#region constants\n /// \n /// Left-to-Right (Non-European or non-Arabic digits).\n /// \n this.L = 0;\n /// \n /// Left-to-Right Embedding\n /// \n this.LRE = 1;\n /// \n /// Left-to-Right Override\n /// \n this.LRO = 2;\n /// \n /// Right-to-Left (Hebrew alphabet, and related punctuation).\n /// \n this.R = 3;\n /// \n /// Right-to-Left Arabic \n /// \n this.AL = 4;\n /// \n /// Right-to-Left Embedding.\n /// \n this.RLE = 5;\n /// \n /// Right-to-Left Override\n /// \n this.RLO = 6;\n /// \n /// Pop Directional Format\n /// \n this.PDF = 7;\n /// \n /// European Number (European digits, Eastern Arabic-Indic digits).\n /// \n this.EN = 8;\n /// \n /// European Number Separator (Plus sign, Minus sign).\n /// \n this.ES = 9;\n /// \n /// European Number Terminator (Degree sign, currency symbols).\n /// \n this.ET = 10;\n /// \n /// Arabic Number (Arabic-Indic digits, Arabic decimal and thousands separators).\n /// \n this.AN = 11;\n /// \n /// Common Number Separator (Colon, Comma, Full Stop, No-Break Space.\n /// \n this.CS = 12;\n /// \n /// Nonspacing Mark (Characters with the General_Category values).\n /// \n this.NSM = 13;\n /// \n /// Boundary Neutral (Default ignorables, non-characters, and control characters, other than those explicitly given other types.)\n /// \n this.BN = 14;\n /// \n /// Paragraph Separator (Paragraph separator, appropriate Newline Functions, higher-level protocol paragraph determination).\n /// \n this.B = 15;\n /// \n /// \tSegment Separator (tab).\n /// \n this.S = 16;\n /// \n /// Whitespace (Space, Figure space, Line separator, Form feed, General Punctuation spaces).\n /// \n this.WS = 17;\n /// \n /// Other Neutrals (All other characters, including object replacement character).\n /// \n this.ON = 18;\n /// \n /// RTL character types.\n /// \n this.charTypes = [\n this.L, this.EN, this.BN, this.ES, this.ES, this.S, this.ET, this.ET, this.B, this.AN, this.AN, this.S, this.CS, this.CS,\n this.WS, this.NSM, this.NSM, this.B, this.BN, 27, this.BN, 28, 30, this.B, 31, 31, this.S, 32, 32, this.WS, 33, 34,\n this.ON, 35, 37, this.ET, 38, 42, this.ON, 43, 43, this.ET, 44, 44, this.CS, 45, 45, this.ET, 46, 46, this.CS,\n 47, 47, this.CS, 48, 57, this.EN, 58, 58, this.CS, 59, 64, this.ON, 65, 90, this.L, 91, 96, this.ON, 97, 122, this.L,\n 123, 126, this.ON, 127, 132, this.BN, 133, 133, this.B, 134, 159, this.BN, 160, 160, this.CS,\n 161, 161, this.ON, 162, 165, this.ET, 166, 169, this.ON, 170, 170, this.L, 171, 175, this.ON,\n 176, 177, this.ET, 178, 179, this.EN, 180, 180, this.ON, 181, 181, this.L, 182, 184, this.ON,\n 185, 185, this.EN, 186, 186, this.L, 187, 191, this.ON, 192, 214, this.L, 215, 215, this.ON,\n 216, 246, this.L, 247, 247, this.ON, 248, 696, this.L, 697, 698, this.ON, 699, 705, this.L,\n 706, 719, this.ON, 720, 721, this.L, 722, 735, this.ON, 736, 740, this.L, 741, 749, this.ON,\n 750, 750, this.L, 751, 767, this.ON, 768, 855, this.NSM, 856, 860, this.L, 861, 879, this.NSM,\n 880, 883, this.L, 884, 885, this.ON, 886, 893, this.L, 894, 894, this.ON, 895, 899, this.L,\n 900, 901, this.ON, 902, 902, this.L, 903, 903, this.ON, 904, 1013, this.L, 1014, 1014, this.ON,\n 1015, 1154, this.L, 1155, 1158, this.NSM, 1159, 1159, this.L, 1160, 1161, this.NSM,\n 1162, 1417, this.L, 1418, 1418, this.ON, 1419, 1424, this.L, 1425, 1441, this.NSM,\n 1442, 1442, this.L, 1443, 1465, this.NSM, 1466, 1466, this.L, 1467, 1469, this.NSM,\n 1470, 1470, this.R, 1471, 1471, this.NSM, 1472, 1472, this.R, 1473, 1474, this.NSM,\n 1475, 1475, this.R, 1476, 1476, this.NSM, 1477, 1487, this.L, 1488, 1514, this.R,\n 1515, 1519, this.L, 1520, 1524, this.R, 1525, 1535, this.L, 1536, 1539, this.AL,\n 1540, 1547, this.L, 1548, 1548, this.CS, 1549, 1549, this.AL, 1550, 1551, this.ON,\n 1552, 1557, this.NSM, 1558, 1562, this.L, 1563, 1563, this.AL, 1564, 1566, this.L,\n 1567, 1567, this.AL, 1568, 1568, this.L, 1569, 1594, this.AL, 1595, 1599, this.L,\n 1600, 1610, this.AL, 1611, 1624, this.NSM, 1625, 1631, this.L, 1632, 1641, this.AN,\n 1642, 1642, this.ET, 1643, 1644, this.AN, 1645, 1647, this.AL, 1648, 1648, this.NSM,\n 1649, 1749, this.AL, 1750, 1756, this.NSM, 1757, 1757, this.AL, 1758, 1764, this.NSM,\n 1765, 1766, this.AL, 1767, 1768, this.NSM, 1769, 1769, this.ON, 1770, 1773, this.NSM,\n 1774, 1775, this.AL, 1776, 1785, this.EN, 1786, 1805, this.AL, 1806, 1806, this.L,\n 1807, 1807, this.BN, 1808, 1808, this.AL, 1809, 1809, this.NSM, 1810, 1839, this.AL,\n 1840, 1866, this.NSM, 1867, 1868, this.L, 1869, 1871, this.AL, 1872, 1919, this.L,\n 1920, 1957, this.AL, 1958, 1968, this.NSM, 1969, 1969, this.AL, 1970, 2304, this.L,\n 2305, 2306, this.NSM, 2307, 2363, this.L, 2364, 2364, this.NSM, 2365, 2368, this.L,\n 2369, 2376, this.NSM, 2377, 2380, this.L, 2381, 2381, this.NSM, 2382, 2384, this.L,\n 2385, 2388, this.NSM, 2389, 2401, this.L, 2402, 2403, this.NSM, 2404, 2432, this.L,\n 2433, 2433, this.NSM, 2434, 2491, this.L, 2492, 2492, this.NSM, 2493, 2496, this.L,\n 2497, 2500, this.NSM, 2501, 2508, this.L, 2509, 2509, this.NSM, 2510, 2529, this.L,\n 2530, 2531, this.NSM, 2532, 2545, this.L, 2546, 2547, this.ET, 2548, 2560, this.L,\n 2561, 2562, this.NSM, 2563, 2619, this.L, 2620, 2620, this.NSM, 2621, 2624, this.L,\n 2625, 2626, this.NSM, 2627, 2630, this.L, 2631, 2632, this.NSM, 2633, 2634, this.L,\n 2635, 2637, this.NSM, 2638, 2671, this.L, 2672, 2673, this.NSM, 2674, 2688, this.L,\n 2689, 2690, this.NSM, 2691, 2747, this.L, 2748, 2748, this.NSM, 2749, 2752, this.L,\n 2753, 2757, this.NSM, 2758, 2758, this.L, 2759, 2760, this.NSM, 2761, 2764, this.L,\n 2765, 2765, this.NSM, 2766, 2785, this.L, 2786, 2787, this.NSM, 2788, 2800, this.L,\n 2801, 2801, this.ET, 2802, 2816, this.L, 2817, 2817, this.NSM, 2818, 2875, this.L,\n 2876, 2876, this.NSM, 2877, 2878, this.L, 2879, 2879, this.NSM, 2880, 2880, this.L,\n 2881, 2883, this.NSM, 2884, 2892, this.L, 2893, 2893, this.NSM, 2894, 2901, this.L,\n 2902, 2902, this.NSM, 2903, 2945, this.L, 2946, 2946, this.NSM, 2947, 3007, this.L,\n 3008, 3008, this.NSM, 3009, 3020, this.L, 3021, 3021, this.NSM, 3022, 3058, this.L,\n 3059, 3064, this.ON, 3065, 3065, this.ET, 3066, 3066, this.ON, 3067, 3133, this.L,\n 3134, 3136, this.NSM, 3137, 3141, this.L, 3142, 3144, this.NSM, 3145, 3145, this.L,\n 3146, 3149, this.NSM, 3150, 3156, this.L, 3157, 3158, this.NSM, 3159, 3259, this.L,\n 3260, 3260, this.NSM, 3261, 3275, this.L, 3276, 3277, this.NSM, 3278, 3392, this.L,\n 3393, 3395, this.NSM, 3396, 3404, this.L, 3405, 3405, this.NSM, 3406, 3529, this.L,\n 3530, 3530, this.NSM, 3531, 3537, this.L, 3538, 3540, this.NSM, 3541, 3541, this.L,\n 3542, 3542, this.NSM, 3543, 3632, this.L, 3633, 3633, this.NSM, 3634, 3635, this.L,\n 3636, 3642, this.NSM, 3643, 3646, this.L, 3647, 3647, this.ET, 3648, 3654, this.L,\n 3655, 3662, this.NSM, 3663, 3760, this.L, 3761, 3761, this.NSM, 3762, 3763, this.L,\n 3764, 3769, this.NSM, 3770, 3770, this.L, 3771, 3772, this.NSM, 3773, 3783, this.L,\n 3784, 3789, this.NSM, 3790, 3863, this.L, 3864, 3865, this.NSM, 3866, 3892, this.L,\n 3893, 3893, this.NSM, 3894, 3894, this.L, 3895, 3895, this.NSM, 3896, 3896, this.L,\n 3897, 3897, this.NSM, 3898, 3901, this.ON, 3902, 3952, this.L, 3953, 3966, this.NSM,\n 3967, 3967, this.L, 3968, 3972, this.NSM, 3973, 3973, this.L, 3974, 3975, this.NSM,\n 3976, 3983, this.L, 3984, 3991, this.NSM, 3992, 3992, this.L, 3993, 4028, this.NSM,\n 4029, 4037, this.L, 4038, 4038, this.NSM, 4039, 4140, this.L, 4141, 4144, this.NSM,\n 4145, 4145, this.L, 4146, 4146, this.NSM, 4147, 4149, this.L, 4150, 4151, this.NSM,\n 4152, 4152, this.L, 4153, 4153, this.NSM, 4154, 4183, this.L, 4184, 4185, this.NSM,\n 4186, 5759, this.L, 5760, 5760, this.WS, 5761, 5786, this.L, 5787, 5788, this.ON,\n 5789, 5905, this.L, 5906, 5908, this.NSM, 5909, 5937, this.L, 5938, 5940, this.NSM,\n 5941, 5969, this.L, 5970, 5971, this.NSM, 5972, 6001, this.L, 6002, 6003, this.NSM,\n 6004, 6070, this.L, 6071, 6077, this.NSM, 6078, 6085, this.L, 6086, 6086, this.NSM,\n 6087, 6088, this.L, 6089, 6099, this.NSM, 6100, 6106, this.L, 6107, 6107, this.ET,\n 6108, 6108, this.L, 6109, 6109, this.NSM, 6110, 6127, this.L, 6128, 6137, this.ON,\n 6138, 6143, this.L, 6144, 6154, this.ON, 6155, 6157, this.NSM, 6158, 6158, this.WS,\n 6159, 6312, this.L, 6313, 6313, this.NSM, 6314, 6431, this.L, 6432, 6434, this.NSM,\n 6435, 6438, this.L, 6439, 6443, this.NSM, 6444, 6449, this.L, 6450, 6450, this.NSM,\n 6451, 6456, this.L, 6457, 6459, this.NSM, 6460, 6463, this.L, 6464, 6464, this.ON,\n 6465, 6467, this.L, 6468, 6469, this.ON, 6470, 6623, this.L, 6624, 6655, this.ON,\n 6656, 8124, this.L, 8125, 8125, this.ON, 8126, 8126, this.L, 8127, 8129, this.ON,\n 8130, 8140, this.L, 8141, 8143, this.ON, 8144, 8156, this.L, 8157, 8159, this.ON,\n 8160, 8172, this.L, 8173, 8175, this.ON, 8176, 8188, this.L, 8189, 8190, this.ON,\n 8191, 8191, this.L, 8192, 8202, this.WS, 8203, 8205, this.BN, 8206, 8206, this.L,\n 8207, 8207, this.R, 8208, 8231, this.ON, 8232, 8232, this.WS, 8233, 8233, this.B,\n 8234, 8234, this.LRE, 8235, 8235, this.RLE, 8236, 8236, this.PDF, 8237, 8237, this.LRO,\n 8238, 8238, this.RLO, 8239, 8239, this.WS, 8240, 8244, this.ET, 8245, 8276, this.ON,\n 8277, 8278, this.L, 8279, 8279, this.ON, 8280, 8286, this.L, 8287, 8287, this.WS,\n 8288, 8291, this.BN, 8292, 8297, this.L, 8298, 8303, this.BN, 8304, 8304, this.EN,\n 8305, 8307, this.L, 8308, 8313, this.EN, 8314, 8315, this.ET, 8316, 8318, this.ON,\n 8319, 8319, this.L, 8320, 8329, this.EN, 8330, 8331, this.ET, 8332, 8334, this.ON,\n 8335, 8351, this.L, 8352, 8369, this.ET, 8370, 8399, this.L, 8400, 8426, this.NSM,\n 8427, 8447, this.L, 8448, 8449, this.ON, 8450, 8450, this.L, 8451, 8454, this.ON,\n 8455, 8455, this.L, 8456, 8457, this.ON, 8458, 8467, this.L, 8468, 8468, this.ON,\n 8469, 8469, this.L, 8470, 8472, this.ON, 8473, 8477, this.L, 8478, 8483, this.ON,\n 8484, 8484, this.L, 8485, 8485, this.ON, 8486, 8486, this.L, 8487, 8487, this.ON,\n 8488, 8488, this.L, 8489, 8489, this.ON, 8490, 8493, this.L, 8494, 8494, this.ET,\n 8495, 8497, this.L, 8498, 8498, this.ON, 8499, 8505, this.L, 8506, 8507, this.ON,\n 8508, 8511, this.L, 8512, 8516, this.ON, 8517, 8521, this.L, 8522, 8523, this.ON,\n 8524, 8530, this.L, 8531, 8543, this.ON, 8544, 8591, this.L, 8592, 8721, this.ON,\n 8722, 8723, this.ET, 8724, 9013, this.ON, 9014, 9082, this.L, 9083, 9108, this.ON,\n 9109, 9109, this.L, 9110, 9168, this.ON, 9169, 9215, this.L, 9216, 9254, this.ON,\n 9255, 9279, this.L, 9280, 9290, this.ON, 9291, 9311, this.L, 9312, 9371, this.EN,\n 9372, 9449, this.L, 9450, 9450, this.EN, 9451, 9751, this.ON, 9752, 9752, this.L,\n 9753, 9853, this.ON, 9854, 9855, this.L, 9856, 9873, this.ON, 9874, 9887, this.L,\n 9888, 9889, this.ON, 9890, 9984, this.L, 9985, 9988, this.ON, 9989, 9989, this.L,\n 9990, 9993, this.ON, 9994, 9995, this.L, 9996, 10023, this.ON, 10024, 10024, this.L,\n 10025, 10059, this.ON, 10060, 10060, this.L, 10061, 10061, this.ON, 10062, 10062, this.L,\n 10063, 10066, this.ON, 10067, 10069, this.L, 10070, 10070, this.ON, 10071, 10071, this.L,\n 10072, 10078, this.ON, 10079, 10080, this.L, 10081, 10132, this.ON, 10133, 10135, this.L,\n 10136, 10159, this.ON, 10160, 10160, this.L, 10161, 10174, this.ON, 10175, 10191, this.L,\n 10192, 10219, this.ON, 10220, 10223, this.L, 10224, 11021, this.ON, 11022, 11903, this.L,\n 11904, 11929, this.ON, 11930, 11930, this.L, 11931, 12019, this.ON, 12020, 12031, this.L,\n 12032, 12245, this.ON, 12246, 12271, this.L, 12272, 12283, this.ON, 12284, 12287, this.L,\n 12288, 12288, this.WS, 12289, 12292, this.ON, 12293, 12295, this.L, 12296, 12320, this.ON,\n 12321, 12329, this.L, 12330, 12335, this.NSM, 12336, 12336, this.ON, 12337, 12341, this.L,\n 12342, 12343, this.ON, 12344, 12348, this.L, 12349, 12351, this.ON, 12352, 12440, this.L,\n 12441, 12442, this.NSM, 12443, 12444, this.ON, 12445, 12447, this.L, 12448, 12448, this.ON,\n 12449, 12538, this.L, 12539, 12539, this.ON, 12540, 12828, this.L, 12829, 12830, this.ON,\n 12831, 12879, this.L, 12880, 12895, this.ON, 12896, 12923, this.L, 12924, 12925, this.ON,\n 12926, 12976, this.L, 12977, 12991, this.ON, 12992, 13003, this.L, 13004, 13007, this.ON,\n 13008, 13174, this.L, 13175, 13178, this.ON, 13179, 13277, this.L, 13278, 13279, this.ON,\n 13280, 13310, this.L, 13311, 13311, this.ON, 13312, 19903, this.L, 19904, 19967, this.ON,\n 19968, 42127, this.L, 42128, 42182, this.ON, 42183, 64284, this.L, 64285, 64285, this.R,\n 64286, 64286, this.NSM, 64287, 64296, this.R, 64297, 64297, this.ET, 64298, 64310, this.R,\n 64311, 64311, this.L, 64312, 64316, this.R, 64317, 64317, this.L, 64318, 64318, this.R,\n 64319, 64319, this.L, 64320, 64321, this.R, 64322, 64322, this.L, 64323, 64324, this.R,\n 64325, 64325, this.L, 64326, 64335, this.R, 64336, 64433, this.AL, 64434, 64466, this.L,\n 64467, 64829, this.AL, 64830, 64831, this.ON, 64832, 64847, this.L, 64848, 64911, this.AL,\n 64912, 64913, this.L, 64914, 64967, this.AL, 64968, 65007, this.L, 65008, 65020, this.AL,\n 65021, 65021, this.ON, 65022, 65023, this.L, 65024, 65039, this.NSM, 65040, 65055, this.L,\n 65056, 65059, this.NSM, 65060, 65071, this.L, 65072, 65103, this.ON, 65104, 65104, this.CS,\n 65105, 65105, this.ON, 65106, 65106, this.CS, 65107, 65107, this.L, 65108, 65108, this.ON,\n 65109, 65109, this.CS, 65110, 65118, this.ON, 65119, 65119, this.ET, 65120, 65121, this.ON,\n 65122, 65123, this.ET, 65124, 65126, this.ON, 65127, 65127, this.L, 65128, 65128, this.ON,\n 65129, 65130, this.ET, 65131, 65131, this.ON, 65132, 65135, this.L, 65136, 65140, this.AL,\n 65141, 65141, this.L, 65142, 65276, this.AL, 65277, 65278, this.L, 65279, 65279, this.BN,\n 65280, 65280, this.L, 65281, 65282, this.ON, 65283, 65285, this.ET, 65286, 65290, this.ON,\n 65291, 65291, this.ET, 65292, 65292, this.CS, 65293, 65293, this.ET, 65294, 65294, this.CS,\n 65295, 65295, this.ES, 65296, 65305, this.EN, 65306, 65306, this.CS, 65307, 65312, this.ON,\n 65313, 65338, this.L, 65339, 65344, this.ON, 65345, 65370, this.L, 65371, 65381, this.ON,\n 65382, 65503, this.L, 65504, 65505, this.ET, 65506, 65508, this.ON, 65509, 65510, this.ET,\n 65511, 65511, this.L, 65512, 65518, this.ON, 65519, 65528, this.L, 65529, 65531, this.BN,\n 65532, 65533, this.ON, 65534, 65535, this.L\n ];\n for (var i = 0; i < this.charTypes.length; ++i) {\n var start = this.charTypes[i];\n var end = this.charTypes[++i];\n var b = this.charTypes[++i];\n while (start <= end) {\n this.rtlCharacterTypes[start++] = b;\n }\n }\n }\n //#endregion\n //#region implementation\n RtlCharacters.prototype.getVisualOrder = function (inputText, isRtl) {\n this.types = this.getCharacterCode(inputText);\n this.textOrder = isRtl ? this.LRE : this.L;\n this.doVisualOrder();\n var result = [];\n for (var i = 0; i < this.levels.length; i++) {\n result[i] = this.levels[i];\n }\n return result;\n };\n RtlCharacters.prototype.getCharacterCode = function (text) {\n var characterCodes = [];\n for (var i = 0; i < text.length; i++) {\n characterCodes[i] = this.rtlCharacterTypes[text[i].charCodeAt(0)];\n }\n return characterCodes;\n };\n RtlCharacters.prototype.setDefaultLevels = function () {\n for (var i = 0; i < this.length; i++) {\n this.levels[i] = this.textOrder;\n }\n };\n RtlCharacters.prototype.setLevels = function () {\n this.setDefaultLevels();\n for (var n = 0; n < this.length; ++n) {\n var level = this.levels[n];\n if ((level & 0x80) !== 0) {\n level &= 0x7f;\n this.result[n] = ((level & 0x1) === 0) ? this.L : this.R;\n }\n this.levels[n] = level;\n }\n };\n RtlCharacters.prototype.updateLevels = function (index, level, length) {\n if ((level & 1) === 0) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.R) {\n this.levels[i] += 1;\n }\n else if (this.result[i] !== this.L) {\n this.levels[i] += 2;\n }\n }\n }\n else {\n for (var i = index; i < length; ++i) {\n if (this.result[i] !== this.R) {\n this.levels[i] += 1;\n }\n }\n }\n };\n RtlCharacters.prototype.doVisualOrder = function () {\n this.length = this.types.length;\n this.result = this.types;\n this.levels = [];\n this.setLevels();\n this.length = this.getEmbeddedCharactersLength();\n var preview = this.textOrder;\n var i = 0;\n while (i < this.length) {\n var level = this.levels[i];\n var preType = ((Math.max(preview, level) & 0x1) === 0) ? this.L : this.R;\n var length_1 = i + 1;\n while (length_1 < this.length && this.levels[length_1] === level) {\n ++length_1;\n }\n var success = length_1 < this.length ? this.levels[length_1] : this.textOrder;\n var type = ((Math.max(success, level) & 0x1) === 0) ? this.L : this.R;\n this.checkNSM(i, length_1, level, preType, type);\n this.updateLevels(i, level, length_1);\n preview = level;\n i = length_1;\n }\n this.checkEmbeddedCharacters(this.length);\n };\n RtlCharacters.prototype.getEmbeddedCharactersLength = function () {\n var index = 0;\n for (var i = 0; i < this.length; ++i) {\n if (!(this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN)) {\n this.result[index] = this.result[i];\n this.levels[index] = this.levels[i];\n index++;\n }\n }\n return index;\n };\n RtlCharacters.prototype.checkEmbeddedCharacters = function (length) {\n for (var i = this.types.length - 1; i >= 0; --i) {\n if (this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN) {\n this.result[i] = this.types[i];\n this.levels[i] = -1;\n }\n else {\n length -= 1;\n this.result[i] = this.result[length];\n this.levels[i] = this.levels[length];\n }\n }\n for (var i = 0; i < this.types.length; i++) {\n if (this.levels[i] === -1) {\n if (i === 0) {\n this.levels[i] = this.textOrder;\n }\n else {\n this.levels[i] = this.levels[i - 1];\n }\n }\n }\n };\n RtlCharacters.prototype.checkNSM = function (index, length, level, startType, endType) {\n var charType = startType;\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.NSM) {\n this.result[i] = charType;\n }\n else {\n charType = this.result[i];\n }\n }\n this.checkEuropeanDigits(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanDigits = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R || this.result[j] === this.AL) {\n if (this.result[j] === this.AL) {\n this.result[i] = this.AN;\n }\n break;\n }\n }\n }\n }\n this.checkArabicCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkArabicCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.AL) {\n this.result[i] = this.R;\n }\n }\n this.checkEuropeanNumberSeparator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberSeparator = function (index, length, level, startType, endType) {\n for (var i = index + 1; i < length - 1; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.CS) {\n var preview = this.result[i - 1];\n var success = this.result[i + 1];\n if (preview === this.EN && success === this.EN) {\n this.result[i] = this.EN;\n }\n else if (this.result[i] === this.CS && preview === this.AN && success === this.AN) {\n this.result[i] = this.AN;\n }\n }\n }\n this.checkEuropeanNumberTerminator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberTerminator = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ET) {\n var s = i;\n var b = [];\n b.push(this.ET);\n var l = this.getLength(s, length, b);\n var data = s === index ? startType : this.result[s - 1];\n if (data !== this.EN) {\n data = (l === length) ? endType : this.result[l];\n }\n if (data === this.EN) {\n for (var j = s; j < l; ++j) {\n this.result[j] = this.EN;\n }\n }\n i = l;\n }\n }\n this.checkOtherNeutrals(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherNeutrals = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.ET || this.result[i] === this.CS) {\n this.result[i] = this.ON;\n }\n }\n this.checkOtherCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n var pst = startType;\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R) {\n pst = this.result[j];\n break;\n }\n }\n if (pst === this.L) {\n this.result[i] = this.L;\n }\n }\n }\n this.checkCommanCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.getLength = function (index, length, validSet) {\n --index;\n while (++index < length) {\n var t = this.result[index];\n for (var i = 0; i < validSet.length; ++i) {\n if (t === validSet[i]) {\n index = this.getLength(++index, length, validSet);\n }\n }\n return index;\n }\n return length;\n };\n RtlCharacters.prototype.checkCommanCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.WS || this.result[i] === this.ON || this.result[i] === this.B ||\n this.result[i] === this.S) {\n var s = i;\n var byte = [this.B, this.S, this.WS, this.ON];\n var l = this.getLength(s, length, byte);\n var lt = 0;\n var tt = 0;\n var rt = 0;\n if (s === index) {\n lt = startType;\n }\n else {\n lt = this.result[s - 1];\n if (lt === this.AN) {\n lt = this.R;\n }\n else if (lt === this.EN) {\n lt = this.R;\n }\n }\n if (l === length) {\n tt = endType;\n }\n else {\n tt = this.result[l];\n if (tt === this.AN) {\n tt = this.R;\n }\n else if (tt === this.EN) {\n tt = this.R;\n }\n }\n if (lt === tt) {\n rt = lt;\n }\n else {\n rt = ((level & 0x1) === 0) ? this.L : this.R;\n }\n for (var j = s; j < l; ++j) {\n this.result[j] = rt;\n }\n i = l;\n }\n }\n };\n return RtlCharacters;\n}());\nexport { RtlCharacters };\n","import { PdfString } from './../../primitives/pdf-string';\nimport { ArabicShapeRenderer } from './rtl/rtl-text-shape';\nimport { PdfTextDirection } from './../enum';\nimport { Bidi } from './rtl/rtl-bidirectional';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar RtlRenderer = /** @class */ (function () {\n function RtlRenderer() {\n //region Constants\n /// Open bracket symbol.\n /// \n this.openBracket = '(';\n /// \n /// Close bracket symbol.\n /// \n this.closeBracket = ')';\n //#endregion\n }\n //#region Constructors\n /// \n /// Initializes a new instance of the class.\n /// \n // public constructor() {\n // }\n //#region Public Methods\n /// \n /// Layouts text. Changes blocks position in the RTL text.\n /// Ligates the text if needed.\n /// \n /// Line of the text.\n /// Font to be used for string printing.\n /// Font alignment.\n /// Indicates whether Word Spacing used or not.\n /// Layout string.\n RtlRenderer.prototype.layout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var result = [];\n if (font.Unicode) {\n result = this.customLayout(line, rtl, format, font, wordSpace);\n }\n else {\n result = [];\n result[0] = line;\n }\n return result;\n };\n /// \n /// Layouts a string and splits it by the words and using correct lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n RtlRenderer.prototype.splitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var words = [];\n var system = false;\n if (!system || words == null) {\n words = this.customSplitLayout(line, font, rtl, wordSpace, format);\n }\n return words;\n };\n //#endregion\n //#region Implementation\n // private isEnglish( word : string) : boolean\n // {\n // let c : string = (word.length > 0) ? word[0] : '';\n // return (c >= '0' && c < 'ÿ');\n // }\n // private keepOrder( words : string, startIndex : number, count: number, result : string[], resultIndex : number) : void\n // {\n // for (let i : number = 0, ri = resultIndex - count + 1; i < count; ++i, ++ri) {\n // result[ri] = words[i + startIndex];\n // }\n // }\n /// \n /// Uses system API to layout the text.\n /// \n /// Line of the text to be layouted.\n /// Font which is used for text printing.\n /// Indicates whether we use RTL or RTL lay outing of the text container.\n /// Layout string.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.getGlyphIndex = function (line, font, rtl, /*out*/ glyphs, custom) {\n var success = true;\n var fail = false;\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n glyphs = null;\n if (line.length === 0) {\n return { success: fail, glyphs: glyphs };\n }\n var renderer = new ArabicShapeRenderer();\n var text = renderer.shape(line, 0);\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n glyphs = new Uint16Array(text.length);\n var i = 0;\n for (var k = 0, len = text.length; k < len; k++) {\n var ch = text[k];\n var glyphInfo = ttfReader.getGlyph(ch);\n if (glyphInfo !== null && typeof glyphInfo !== 'undefined') {\n glyphs[i++] = (glyphInfo).index;\n }\n }\n return { success: success, glyphs: glyphs };\n };\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customLayout = function (line, rtl, format, font, wordSpace) {\n if (wordSpace === null || typeof wordSpace === 'undefined') {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var result = null;\n //bidirectional order.\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var bidi = new Bidi();\n result = bidi.getLogicalToVisualString(line, rtl);\n }\n return result;\n }\n else {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var layouted = null;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var renderer = new ArabicShapeRenderer();\n var txt = renderer.shape(line, 0);\n layouted = this.customLayout(txt, rtl, format);\n }\n // else {\n // layouted = this.customLayout(line, rtl, format);\n // }\n // We have unicode font, but from the file. \n var result = [];\n // Split the text by words if word spacing is not default.\n if (wordSpace) {\n var words = layouted.split('');\n var count = words.length;\n for (var i = 0; i < count; i++) {\n words[i] = this.addChars(font, words[i]);\n }\n result = words;\n }\n else {\n result = [];\n result[0] = this.addChars(font, layouted);\n }\n return result;\n }\n };\n /// \n /// Add information about used glyphs to the font.\n /// \n /// Font used for text rendering.\n /// Array of used glyphs.\n /// String in the form to be written to the file.\n RtlRenderer.prototype.addChars = function (font, glyphs) {\n var line = glyphs;\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var text = line;\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n font.setSymbols(text);\n // Reconvert string according to unicode standard.\n text = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(text, false);\n text = PdfString.byteToString(bytes);\n return text;\n // else {\n // if (font == null) {\n // throw new Error('ArgumentNullException : font');\n // }\n // if (glyphs == null) {\n // throw new Error('ArgumentNullException : glyphs');\n // }\n // // Mark the chars as used.\n // let text : string = '';\n // font.setSymbols(glyphs);\n // // Create string from the glyphs.\n // \n // let chars : string[] = [];\n // for (let i : number = 0; i < glyphs.length; i++) {\n // chars[i] = glyphs[i].toString();\n // }\n // for (let j : number = 0 ; j < chars.length; j++) {\n // text = text + chars[j];\n // }\n // let bytes : number[] = PdfString.toUnicodeArray(text, false);\n // text = PdfString.byteToString(bytes);\n // return text;\n // }\n };\n /// \n /// Layouts a string and splits it by the words by using custom lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customSplitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var reversedLine = this.customLayout(line, rtl, format);\n var words = reversedLine.split('');\n return words;\n };\n return RtlRenderer;\n}());\nexport { RtlRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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.isImage = true;\n var tempString = '';\n var decodedString = '';\n for (var i = 0; i < this.imageDataAsNumberArray.byteLength; i++) {\n tempString += String.fromCharCode(null, this.mStream.readByte(i));\n }\n for (var i = 0; i < tempString.length; i++) {\n if (i % 2 !== 0) {\n decodedString += tempString[i];\n }\n }\n this.imageStream.data = [decodedString];\n this.imageStream.compress = false;\n this.imageStream.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.xObject));\n this.imageStream.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.image));\n this.imageStream.items.setValue(this.dictionaryProperties.width, new PdfNumber(this.width));\n this.imageStream.items.setValue(this.dictionaryProperties.height, new PdfNumber(this.height));\n this.imageStream.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n this.imageStream.items.setValue(this.dictionaryProperties.filter, new PdfName(this.dictionaryProperties.dctdecode));\n this.imageStream.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(this.getColorSpace()));\n this.imageStream.items.setValue(this.dictionaryProperties.decodeParms, this.getDecodeParams());\n return this.imageStream;\n }\n else {\n return this.imageStream;\n }\n };\n /**\n * Return `colorSpace` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getColorSpace = function () {\n return this.dictionaryProperties.deviceRgb;\n };\n /**\n * Return `decode parameters` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getDecodeParams = function () {\n var decodeParams = new PdfDictionary();\n decodeParams.items.setValue(this.dictionaryProperties.columns, new PdfNumber(this.width));\n decodeParams.items.setValue(this.dictionaryProperties.blackIs1, new PdfBoolean(true));\n decodeParams.items.setValue(this.dictionaryProperties.k, new PdfNumber(-1));\n decodeParams.items.setValue(this.dictionaryProperties.predictor, new PdfNumber(15));\n decodeParams.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n return decodeParams;\n };\n /**\n * 'readExceededJPGImage' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.readExceededJPGImage = function (stream) {\n this.mStream = stream;\n var isContinueReading = true;\n while (isContinueReading) {\n var marker = this.getMarker(stream);\n switch (marker) {\n case this.sof1Marker:\n case this.sof2Marker:\n case this.sof3Marker:\n case this.sof5Marker:\n case this.sof6Marker:\n case this.sof7Marker:\n case this.sof9Marker:\n case this.sof10Marker:\n case this.sof11Marker:\n case this.sof13Marker:\n case this.sof14Marker:\n case this.sof15Marker:\n stream.position += 3;\n this.mHeight = this.mStream.readNextTwoBytes(stream);\n this.mWidth = this.mStream.readNextTwoBytes(stream);\n isContinueReading = false;\n break;\n default:\n this.skipStream(stream);\n break;\n }\n }\n };\n /**\n * 'skip' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skip = function (stream, noOfBytes) {\n this.mStream = stream;\n var temp = new ByteArray(noOfBytes);\n this.mStream.read(temp, 0, temp.count);\n };\n /**\n * 'getMarker' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getMarker = function (stream) {\n var skippedByte = 0;\n var marker = 32;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n while (marker !== 255) {\n skippedByte++;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n }\n do {\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n } while (marker === 255);\n return marker;\n };\n /**\n * 'skipStream' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skipStream = function (stream) {\n var markerLength = this.mStream.readNextTwoBytes(stream) - 2;\n if (markerLength > 0) {\n stream.position += markerLength;\n }\n };\n /**\n * Number array for `png header`.\n * @hidden\n * @private\n */\n ImageDecoder.mPngHeader = [137, 80, 78, 71, 13, 10, 26, 10];\n /**\n * Number Array for `jpeg header`.\n * @hidden\n * @private\n */\n ImageDecoder.mJpegHeader = [255, 216];\n /**\n * Number array for `gif header`.\n * @hidden\n * @private\n */\n ImageDecoder.GIF_HEADER = 'G,I,F,8';\n /**\n * Number array for `bmp header.`\n * @hidden\n * @private\n */\n ImageDecoder.BMP_HEADER = 'B,M';\n return ImageDecoder;\n}());\nexport { ImageDecoder };\n","/**\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 * Used to perform `convertion between pixels and points`.\n * @private\n */\nvar PdfUnitConverter = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `UnitConvertor` class with DPI value.\n * @private\n */\n function PdfUnitConverter(dpi) {\n this.updateProportionsHelper(dpi);\n }\n /**\n * `Converts` the value, from one graphics unit to another graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertUnits = function (value, from, to) {\n return this.convertFromPixels(this.convertToPixels(value, from), to);\n };\n /**\n * Converts the value `to pixel` from specified graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertToPixels = function (value, from) {\n var index = from;\n var result = (value * this.proportions[index]);\n return result;\n };\n /**\n * Converts value, to specified graphics unit `from Pixel`.\n * @private\n */\n PdfUnitConverter.prototype.convertFromPixels = function (value, to) {\n var index = to;\n var result = (value / this.proportions[index]);\n return result;\n };\n /**\n * `Update proportions` matrix according to Graphics settings.\n * @private\n */\n PdfUnitConverter.prototype.updateProportionsHelper = function (pixelPerInch) {\n this.proportions = [\n pixelPerInch / 2.54,\n pixelPerInch / 6.0,\n 1,\n pixelPerInch / 72.0,\n pixelPerInch,\n pixelPerInch / 300.0,\n pixelPerInch / 25.4 // Millimeter\n ];\n };\n //Fields\n /**\n * Indicates default `horizontal resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.horizontalResolution = 96;\n /**\n * Indicates default `vertical resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.verticalResolution = 96;\n return PdfUnitConverter;\n}());\nexport { PdfUnitConverter };\n","import { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfGraphicsUnit } from './../enum';\nimport { PdfUnitConverter } from './../unit-convertor';\n/**\n * `PdfImage` class represents the base class for images and provides functionality for the 'PdfBitmap' class.\n * @private\n */\nvar PdfImage = /** @class */ (function () {\n function PdfImage() {\n }\n Object.defineProperty(PdfImage.prototype, \"width\", {\n /**\n * Gets and Sets the `width` of an image.\n * @private\n */\n get: function () {\n return this.imageWidth;\n },\n set: function (value) {\n this.imageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"height\", {\n /**\n * Gets and Sets the `height` of an image.\n * @private\n */\n get: function () {\n return this.imageHeight;\n },\n set: function (value) {\n this.imageHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"size\", {\n /**\n * Gets or sets the size of the image.\n * @private\n */\n set: function (value) {\n this.width = value.width;\n this.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"physicalDimension\", {\n /**\n * Gets the `physical dimension` of an image.\n * @private\n */\n get: function () {\n this.imagePhysicalDimension = this.getPointSize(this.width, this.height, this.horizontalResolution, this.verticalResolution);\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"element\", {\n // /**\n // * Gets the `image stream as string`.\n // * @private\n // */\n // public static fromString(string : string) : PdfImage {\n // let image : PdfImage = new PdfBitmap(string);\n // return image;\n // }\n /**\n * Gets the `element` image stream.\n * @private\n */\n get: function () {\n return this.imageStream;\n },\n enumerable: true,\n configurable: true\n });\n PdfImage.prototype.getPointSize = function (width, height, horizontalResolution, verticalResolution) {\n if (typeof horizontalResolution === 'undefined') {\n var dpiX = PdfUnitConverter.horizontalResolution;\n var dpiY = PdfUnitConverter.verticalResolution;\n var size = this.getPointSize(width, height, dpiX, dpiY);\n return size;\n }\n else {\n var ucX = new PdfUnitConverter(horizontalResolution);\n var ucY = new PdfUnitConverter(verticalResolution);\n var ptWidth = ucX.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var ptHeight = ucY.convertUnits(height, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var size = new SizeF(ptWidth, ptHeight);\n return size;\n }\n };\n return PdfImage;\n}());\nexport { PdfImage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfBitmap.ts class for EJ2-PDF\n */\nimport { ImageDecoder } from './../../graphics/images/image-decoder';\nimport { ByteArray } from './../../graphics/images/byte-array';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfImage } from './pdf-image';\n/**\n * The 'PdfBitmap' contains methods and properties to handle the Bitmap images.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBitmap = /** @class */ (function (_super) {\n __extends(PdfBitmap, _super);\n /**\n * Create an instance for `PdfBitmap` class.\n * @param encodedString Base64 string of an image.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * //\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * //\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n function PdfBitmap(encodedString) {\n var _this = _super.call(this) || this;\n //Fields\n /**\n * Specifies the `status` of an image.\n * @default true.\n * @hidden\n * @private\n */\n _this.imageStatus = true;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.loadImage(encodedString);\n return _this;\n }\n /**\n * `Load image`.\n * @hidden\n * @private\n */\n PdfBitmap.prototype.loadImage = function (encodedString) {\n var task = this.initializeAsync(encodedString);\n };\n /**\n * `Initialize` image parameters.\n * @private\n */\n PdfBitmap.prototype.initializeAsync = function (encodedString) {\n var byteArray = new ByteArray(encodedString.length);\n byteArray.writeFromBase64String(encodedString);\n this.decoder = new ImageDecoder(byteArray);\n this.height = this.decoder.height;\n this.width = this.decoder.width;\n // FrameCount = BitmapImageDecoder.FrameCount;\n this.bitsPerComponent = this.decoder.bitsPerComponent;\n };\n /**\n * `Saves` the image into stream.\n * @private\n */\n PdfBitmap.prototype.save = function () {\n this.imageStatus = true;\n this.imageStream = this.decoder.getImageDictionary();\n };\n return PdfBitmap;\n}(PdfImage));\nexport { PdfBitmap };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfResources.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTemplate } from './figures/pdf-template';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfBitmap } from './../graphics/images/pdf-bitmap';\nimport { PdfImage } from './../graphics/images/pdf-image';\nimport { PdfGradientBrush } from './brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfResources` class used to set resource contents like font, image.\n * @private\n */\nvar PdfResources = /** @class */ (function (_super) {\n __extends(PdfResources, _super);\n function PdfResources(baseDictionary) {\n var _this = _super.call(this, baseDictionary) || this;\n /**\n * Dictionary for the `properties names`.\n * @private\n */\n _this.properties = new PdfDictionary();\n return _this;\n }\n Object.defineProperty(PdfResources.prototype, \"names\", {\n //Properties\n /**\n * Gets the `font names`.\n * @private\n */\n get: function () {\n return this.getNames();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfResources.prototype, \"document\", {\n /**\n * Get or set the `page document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public Methods\n /**\n * `Generates name` for the object and adds to the resource if the object is new.\n * @private\n */\n PdfResources.prototype.getName = function (obj) {\n var primitive = obj.element;\n var name = null;\n if (this.names.containsKey(primitive)) {\n name = this.names.getValue(primitive);\n }\n // Object is new.\n if (name == null) {\n var sName = this.generateName();\n name = new PdfName(sName);\n this.names.setValue(primitive, name);\n if (obj instanceof PdfFont) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTemplate) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfGradientBrush || obj instanceof PdfTilingBrush) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTransparency) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfImage || obj instanceof PdfBitmap) {\n this.add(obj, name);\n }\n }\n return name;\n };\n /**\n * Gets `resource names` to font dictionaries.\n * @private\n */\n PdfResources.prototype.getNames = function () {\n if (this.pdfNames == null) {\n this.pdfNames = new TemporaryDictionary();\n }\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n var dictionary = fonts;\n dictionary = PdfCrossTable.dereference(fonts);\n }\n return this.pdfNames;\n };\n /**\n * Add `RequireProcedureSet` into procset array.\n * @private\n */\n PdfResources.prototype.requireProcedureSet = function (procedureSetName) {\n if (procedureSetName == null) {\n throw new Error('ArgumentNullException:procedureSetName');\n }\n var procSets = this.items.getValue(this.dictionaryProperties.procset);\n if (procSets == null) {\n procSets = new PdfArray();\n this.items.setValue(this.dictionaryProperties.procset, procSets);\n }\n var name = new PdfName(procedureSetName);\n if (!procSets.contains(name)) {\n procSets.add(name);\n }\n };\n //Helper Methods\n /**\n * `Remove font` from array.\n * @private\n */\n PdfResources.prototype.removeFont = function (name) {\n var key = null;\n var keys = this.pdfNames.keys();\n for (var index = 0; index < this.pdfNames.size(); index++) {\n if (this.pdfNames.getValue(keys[index]) === new PdfName(name)) {\n key = keys[index];\n break;\n }\n }\n if (key != null) {\n this.pdfNames.remove(key);\n }\n };\n /**\n * Generates `Unique string name`.\n * @private\n */\n PdfResources.prototype.generateName = function () {\n var name = Guid.getNewGuidString();\n return name;\n };\n PdfResources.prototype.add = function (arg1, arg2) {\n if (arg1 instanceof PdfFont) {\n var dictionary = null;\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n dictionary = fonts;\n dictionary = fonts;\n }\n else {\n dictionary = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.font, dictionary);\n }\n dictionary.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfTemplate) {\n var xobjects = void 0;\n xobjects = this.items.getValue(this.dictionaryProperties.xObject);\n // Create fonts dictionary.\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n xobjects.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfBrush) {\n if (arg1 instanceof PdfGradientBrush || arg1 instanceof PdfTilingBrush) {\n var savable = arg1.element;\n if (savable != null) {\n var pattern = this.items.getValue(this.dictionaryProperties.pattern);\n // Create a new pattern dictionary.\n if (pattern == null) {\n pattern = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.pattern, pattern);\n }\n pattern.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n }\n }\n else if (arg1 instanceof PdfTransparency) {\n var savable = arg1.element;\n var transDic = null;\n transDic = this.items.getValue(this.dictionaryProperties.extGState);\n // Create a new pattern dictionary.\n if (transDic == null) {\n transDic = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.extGState, transDic);\n }\n transDic.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n else {\n /* tslint:disable */\n var xobjects = this.Dictionary.items.getValue(this.dictionaryProperties.xObject);\n var parentXObjects = void 0;\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects = this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.getValue(this.dictionaryProperties.xObject);\n }\n var values = this.Dictionary.items.values();\n var hasSameImageStream = false;\n var oldReference = void 0;\n if (typeof this.pdfDocument !== 'undefined' && (typeof parentXObjects === undefined || parentXObjects == null)) {\n parentXObjects = new PdfDictionary();\n this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.setValue(this.dictionaryProperties.xObject, parentXObjects);\n }\n else if (typeof this.pdfDocument !== 'undefined') {\n var values_1 = parentXObjects.items.values();\n for (var i = 0; i < values_1.length; i++) {\n if (typeof values_1[i] !== 'undefined' && typeof values_1[i].element !== 'undefined') {\n if (values_1[i].element.data[0] === arg1.element.data[0]) {\n oldReference = values_1[i];\n hasSameImageStream = true;\n }\n }\n }\n }\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.Dictionary.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n if (hasSameImageStream && typeof oldReference !== 'undefined') {\n xobjects.items.setValue(arg2.value, oldReference);\n }\n else {\n var reference = new PdfReferenceHolder(arg1.element);\n xobjects.items.setValue(arg2.value, reference);\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects.items.setValue(arg2.value, reference);\n }\n }\n /* tslint:enable */\n }\n };\n return PdfResources;\n}(PdfDictionary));\nexport { PdfResources };\n/* tslint:disable */\n/**\n * Used to create new guid for resources.\n * @private\n */\nvar Guid = /** @class */ (function () {\n function Guid() {\n }\n /**\n * Generate `new GUID`.\n * @private\n */\n Guid.getNewGuidString = function () {\n return 'aaaaaaaa-aaaa-4aaa-baaa-aaaaaaaaaaaa'.replace(/[ab]/g, function (c) {\n var random = Math.random() * 16 | 0;\n var result = c === 'a' ? random : (random & 0x3 | 0x8);\n return result.toString(16);\n });\n };\n return Guid;\n}());\nexport { Guid };\n/* tslint:enable */ \n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { GetResourceEventHandler } from './../pdf-graphics';\nimport { PdfBrush } from './pdf-brush';\nimport { PointF, SizeF, RectangleF, Rectangle } from './../../drawing/pdf-drawing';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfPage } from './../../pages/pdf-page';\n/**\n * `PdfTilingBrush` Implements a colored tiling brush.\n */\nvar PdfTilingBrush = /** @class */ (function (_super) {\n __extends(PdfTilingBrush, _super);\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @public\n */\n function PdfTilingBrush(arg1, arg2) {\n var _this = _super.call(this) || this;\n /**\n * Local variable to store Stroking.\n * @private\n */\n _this.mStroking = false;\n /**\n * Local variable to store the tile start location.\n * @private\n */\n _this.mLocation = new PointF(0, 0);\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n var rect = null;\n if (arg1 instanceof Rectangle) {\n rect = arg1;\n }\n else if (arg1 instanceof SizeF) {\n rect = new Rectangle(0, 0, arg1.width, arg1.height);\n }\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n }\n _this.brushStream = new PdfStream();\n _this.mResources = new PdfResources();\n _this.brushStream.items.setValue(_this.mDictionaryProperties.resources, _this.mResources);\n _this.setBox(rect);\n _this.setObligatoryFields();\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n _this.graphics.colorSpace = arg2.document.colorSpace;\n }\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @private\n * @param rectangle The size of the smallest brush cell.\n * @param page The Current Page Object.\n * @param location The Tile start location.\n * @param matrix The matrix.\n */\n PdfTilingBrush.prototype.initialize = function (rectangle, page, location, matrix) {\n this.mPage = page;\n this.mLocation = location;\n this.mTransformationMatrix = matrix;\n this.tempBrushStream = this.brushStream;\n this.brushStream = new PdfStream();\n var tempResource = new PdfResources();\n this.brushStream.items.setValue(this.mDictionaryProperties.resources, tempResource);\n this.setBox(rectangle);\n this.setObligatoryFields();\n return this;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"location\", {\n //Properties\n /**\n * Location representing the start position of the tiles.\n * @public\n */\n get: function () {\n return this.mLocation;\n },\n set: function (value) {\n this.mLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the obligatory fields.\n * @private\n */\n PdfTilingBrush.prototype.setObligatoryFields = function () {\n this.brushStream.items.setValue(this.mDictionaryProperties.patternType, new PdfNumber(1));\n // Tiling brush.\n this.brushStream.items.setValue(this.mDictionaryProperties.paintType, new PdfNumber(1));\n // Coloured.\n this.brushStream.items.setValue(this.mDictionaryProperties.tilingType, new PdfNumber(1));\n // Constant spacing.\n this.brushStream.items.setValue(this.mDictionaryProperties.xStep, new PdfNumber((this.mBox.right - this.mBox.left)));\n this.brushStream.items.setValue(this.mDictionaryProperties.yStep, new PdfNumber((this.mBox.bottom - this.mBox.top)));\n if ((this.mPage != null) && (this.mLocation != null)) {\n if ((this.mTransformationMatrix == null && typeof this.mTransformationMatrix === 'undefined')) {\n // Transform the tile origin to fit the location\n var tileTransform = (this.mPage.size.height % this.rectangle.size.height) - (this.mLocation.y);\n /* tslint:disable-next-line:max-line-length */\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([1, 0, 0, 1, this.mLocation.x, tileTransform]));\n }\n else {\n var tileTransform = 0;\n // Transform the tile origin to fit the location\n var elements = this.mTransformationMatrix.matrix.elements;\n if ((this.mPage.size.height > this.rectangle.size.height)) {\n tileTransform = (this.mTransformationMatrix.matrix.offsetY\n - (this.mPage.size.height % this.rectangle.size.height));\n }\n else {\n tileTransform = ((this.mPage.size.height % this.rectangle.size.height) + this.mTransformationMatrix.matrix.offsetY);\n }\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([\n elements[0], elements[1], elements[2], elements[3], elements[4], tileTransform\n ]));\n }\n }\n };\n /**\n * Sets the BBox coordinates.\n * @private\n */\n PdfTilingBrush.prototype.setBox = function (box) {\n this.mBox = box;\n var rect = new RectangleF(this.mBox.left, this.mBox.top, this.mBox.right, this.mBox.bottom);\n this.brushStream.items.setValue(this.mDictionaryProperties.bBox, PdfArray.fromRectangle(rect));\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"rectangle\", {\n //Properties\n /**\n * Gets the boundary box of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"size\", {\n /**\n * Gets the size of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"graphics\", {\n /**\n * Gets Graphics context of the brush.\n */\n get: function () {\n if ((this.mGraphics == null && typeof this.mGraphics === 'undefined')) {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.brushStream);\n this.mGraphics = g;\n this.mResources = this.getResources();\n this.mGraphics.initializeCoordinates();\n }\n return this.mGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @public\n */\n PdfTilingBrush.prototype.getResources = function () {\n return this.mResources;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfTilingBrush\n * is used for stroking operations.\n */\n get: function () {\n return this.mStroking;\n },\n set: function (value) {\n this.mStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n //PdfBrush methods\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfTilingBrush.prototype.clone = function () {\n var brush = this.initialize(this.rectangle, this.mPage, this.location, this.mTransformationMatrix);\n if ((this.mTransformationMatrix != null) && (this.mTransformationMatrix.matrix != null)) {\n /* tslint:disable-next-line:max-line-length */\n brush.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray(this.mTransformationMatrix.matrix.elements));\n }\n brush.brushStream.data = this.tempBrushStream.data;\n brush.mResources = new PdfResources(this.mResources);\n brush.brushStream.items.setValue(this.mDictionaryProperties.resources, brush.mResources);\n return brush;\n };\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush\n * @param streamWriter The stream writer\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfTilingBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush !== this) {\n // Set the Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources1 = getResources.getResources();\n var name1 = resources1.getName(this);\n streamWriter.setColourWithPattern(null, name1, this.mStroking);\n diff = true;\n }\n else if (brush instanceof PdfTilingBrush) {\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfTilingBrush.prototype.resetChanges = function (streamWriter) {\n // We shouldn't do anything to reset changes.\n // All changes will be reset automatically by setting a new colour space.\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @public\n */\n get: function () {\n return this.brushStream;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTilingBrush;\n}(PdfBrush));\nexport { PdfTilingBrush };\n","/**\n * PdfGraphics.ts class for EJ2-PDF\n */\nimport { PdfColorSpace, TextRenderingMode, PdfFillMode, PdfTextAlignment } from './enum';\nimport { PdfVerticalAlignment, PdfBlendMode } from './enum';\nimport { PdfSubSuperScript } from './fonts/enum';\nimport { PdfStreamWriter } from './../input-output/pdf-stream-writer';\nimport { PdfPen } from './pdf-pen';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTransformationMatrix } from './pdf-transformation-matrix';\nimport { PointF, SizeF, RectangleF } from './../drawing/pdf-drawing';\nimport { ProcedureSets } from './constants';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfStringFormat } from './fonts/pdf-string-format';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfStringLayouter, LineType } from './fonts/string-layouter';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { StringTokenizer } from './fonts/string-tokenizer';\nimport { PdfAutomaticFieldInfoCollection } from './../document/automatic-fields/automatic-field-info-collection';\nimport { PdfAutomaticFieldInfo } from './../document/automatic-fields/automatic-field-info';\nimport { Operators } from './../input-output/pdf-operators';\nimport { UnicodeTrueTypeFont } from './fonts/unicode-true-type-font';\nimport { InternalEnum } from './../primitives/pdf-string';\nimport { RtlRenderer } from './fonts/rtl-renderer';\nimport { PdfTextDirection } from './enum';\nimport { PathPointType } from './figures/enum';\nimport { PdfGradientBrush } from './../../implementation/graphics/brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfGraphics` class represents a graphics context of the objects.\n * It's used for performing all the graphics operations.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * //graphics of the page\n * let page1Graphics : PdfGraphics = page1.graphics;\n * // draw the text on the page1 graphics\n * page1Graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfGraphics = /** @class */ (function () {\n function PdfGraphics(arg1, arg2, arg3) {\n /**\n * Represents the `Current color space`.\n * @private\n */\n this.currentColorSpace = PdfColorSpace.Rgb;\n /**\n * Stores `previous rendering mode`.\n * @private\n */\n this.previousTextRenderingMode = TextRenderingMode.Fill;\n /**\n * Previous `character spacing` value or 0.\n * @private\n */\n this.previousCharacterSpacing = 0.0;\n /**\n * Previous `word spacing` value or 0.\n * @private\n */\n this.previousWordSpacing = 0.0;\n /**\n * The `previously used text scaling` value.\n * @private\n */\n this.previousTextScaling = 100.0;\n /**\n * Instance of `ProcedureSets` class.\n * @private\n */\n this.procedureSets = new ProcedureSets();\n /**\n * To check wihether it is a `direct text rendering`.\n * @default true\n * @private\n */\n this.isNormalRender = true;\n /**\n * check whether to `use font size` to calculate the shift.\n * @default false\n * @private\n */\n this.isUseFontSize = false;\n /**\n * check whether the font is in `italic type`.\n * @default false\n * @private\n */\n this.isItalic = false;\n /**\n * Check whether it is an `emf Text Matrix`.\n * @default false\n * @private\n */\n this.isEmfTextScaled = false;\n /**\n * Check whether it is an `emf` call.\n * @default false\n * @private\n */\n this.isEmf = false;\n /**\n * Check whether it is an `emf plus` call.\n * @default false\n * @private\n */\n this.isEmfPlus = false;\n /**\n * Check whether it is in `base line format`.\n * @default true\n * @private\n */\n this.isBaselineFormat = true;\n /**\n * Emf Text `Scaling Factor`.\n * @private\n */\n this.emfScalingFactor = new SizeF(0, 0);\n /**\n * To check whether the `last color space` of document and garphics is saved.\n * @private\n */\n this.colorSpaceChanged = false;\n /**\n * Stores an instance of `DictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isPointOverload = false;\n /**\n * Current colorspaces.\n * @hidden\n * @private\n */\n this.currentColorSpaces = ['RGB', 'CMYK', 'GrayScale', 'Indexed'];\n /**\n * Checks the current image `is optimized` or not.\n * @default false.\n * @private\n */\n this.isImageOptimized = false;\n /**\n * Stores the `graphics states`.\n * @private\n */\n this.graphicsState = [];\n /**\n * Indicates whether the object `had trasparency`.\n * @default false\n * @private\n */\n this.istransparencySet = false;\n /**\n * Stores the instance of `PdfAutomaticFieldInfoCollection` class .\n * @default null\n * @private\n */\n this.internalAutomaticFields = null;\n /**\n * Stores the index of the start line that should draw with in the next page.\n * @private\n */\n this.startCutIndex = -1;\n this.getResources = arg2;\n this.canvasSize = arg1;\n if (arg3 instanceof PdfStreamWriter) {\n this.pdfStreamWriter = arg3;\n }\n else {\n this.pdfStreamWriter = new PdfStreamWriter(arg3);\n }\n this.initialize();\n }\n Object.defineProperty(PdfGraphics.prototype, \"stringLayoutResult\", {\n // Properties\n /**\n * Returns the `result` after drawing string.\n * @private\n */\n get: function () {\n return this.pdfStringLayoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"size\", {\n /**\n * Gets the `size` of the canvas.\n * @private\n */\n get: function () {\n return this.canvasSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"mediaBoxUpperRightBound\", {\n /**\n * Gets and Sets the value of `MediaBox upper right bound`.\n * @private\n */\n get: function () {\n if (typeof this.internalMediaBoxUpperRightBound === 'undefined') {\n this.internalMediaBoxUpperRightBound = 0;\n }\n return this.internalMediaBoxUpperRightBound;\n },\n set: function (value) {\n this.internalMediaBoxUpperRightBound = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"clientSize\", {\n /**\n * Gets the `size` of the canvas reduced by margins and page templates.\n * @private\n */\n get: function () {\n return new SizeF(this.clipBounds.width, this.clipBounds.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"colorSpace\", {\n /**\n * Gets or sets the current `color space` of the document\n * @private\n */\n get: function () {\n return this.currentColorSpace;\n },\n set: function (value) {\n this.currentColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"streamWriter\", {\n /**\n * Gets the `stream writer`.\n * @private\n */\n get: function () {\n return this.pdfStreamWriter;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"matrix\", {\n /**\n * Gets the `transformation matrix` reflecting current transformation.\n * @private\n */\n get: function () {\n if (this.transformationMatrix == null) {\n this.transformationMatrix = new PdfTransformationMatrix();\n }\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"layer\", {\n /**\n * Gets the `layer` for the graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"page\", {\n /**\n * Gets the `page` for this graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer.page;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"automaticFields\", {\n get: function () {\n if (this.internalAutomaticFields == null || typeof this.internalAutomaticFields === 'undefined') {\n this.internalAutomaticFields = new PdfAutomaticFieldInfoCollection();\n }\n return this.internalAutomaticFields;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` this instance.\n * @private\n */\n PdfGraphics.prototype.initialize = function () {\n this.bStateSaved = false;\n this.currentPen = null;\n this.currentBrush = null;\n this.currentFont = null;\n this.currentColorSpace = PdfColorSpace.Rgb;\n this.bCSInitialized = false;\n this.transformationMatrix = null;\n this.previousTextRenderingMode = (-1); //.Fill;\n this.previousCharacterSpacing = -1.0;\n this.previousWordSpacing = -1.0;\n this.previousTextScaling = -100.0;\n // this.m_trasparencies = null;\n this.currentStringFormat = null;\n this.clipBounds = new RectangleF(new PointF(0, 0), this.size);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n };\n PdfGraphics.prototype.drawPdfTemplate = function (template, location, size) {\n if (typeof size === 'undefined') {\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n this.drawPdfTemplate(template, location, template.size);\n }\n else {\n // let crossTable : PdfCrossTable = null;\n // if (this.pageLayer != null) {\n // crossTable = (this.page as PdfPage).section.parentDocument.crossTable;\n // }\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n var scaleX = (template.width > 0) ? size.width / template.width : 1;\n var scaleY = (template.height > 0) ? size.height / template.height : 1;\n var bNeedScale = !(scaleX === 1 && scaleY === 1);\n // Save state.\n var state = this.save();\n // Take into consideration that rect location is bottom/left.\n var matrix = new PdfTransformationMatrix();\n if (this.pageLayer != null) {\n this.getTranslateTransform(location.x, location.y + size.height, matrix);\n }\n if (bNeedScale) {\n this.getScaleTransform(scaleX, scaleY, matrix);\n }\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n var name_1 = resources.getName(template);\n this.pdfStreamWriter.executeObject(name_1);\n // Restore state.\n this.restore(state);\n //Transfer automatic fields from template.\n var g = template.graphics;\n if (g != null) {\n for (var index = 0; index < g.automaticFields.automaticFields.length; index++) {\n var fieldInfo = g.automaticFields.automaticFields[index];\n var newLocation = new PointF(fieldInfo.location.x + location.x, fieldInfo.location.y + location.y);\n var scalingX = template.size.width == 0 ? 0 : size.width / template.size.width;\n var scalingY = template.size.height == 0 ? 0 : size.height / template.size.height;\n this.automaticFields.add(new PdfAutomaticFieldInfo(fieldInfo.field, newLocation, scalingX, scalingY));\n this.page.dictionary.modify();\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageB);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageC);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageI);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n }\n };\n /* tslint:disable */\n /**\n * @public\n */\n PdfGraphics.prototype.drawString = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n if (typeof arg1 === 'string' && arg2 instanceof PdfFont && (arg3 instanceof PdfPen || arg3 === null) && (arg4 instanceof PdfBrush || arg4 === null) && typeof arg5 === 'number' && typeof arg6 === 'number' && (arg7 instanceof PdfStringFormat || arg7 === null) && typeof arg8 === 'undefined') {\n this.isOverloadWithPosition = true;\n this.drawString(arg1, arg2, arg3, arg4, arg5, arg6, (this.clientSize.width - arg5), 0, arg7);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n var temparg7 = arg7;\n var temparg8 = arg8;\n var temparg9 = arg9;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(arg1, arg2, temparg9, new SizeF(temparg7, temparg8), this.isOverloadWithPosition, this.clientSize);\n if (!result.empty) {\n var rect = this.checkCorrectLayoutRectangle(result.actualSize, temparg5, temparg6, temparg9);\n if (temparg7 <= 0) {\n temparg5 = rect.x;\n temparg7 = rect.width;\n }\n if (temparg8 <= 0) {\n temparg6 = rect.y;\n temparg8 = rect.height;\n }\n this.drawStringLayoutResult(result, arg2, temparg3, temparg4, new RectangleF(temparg5, temparg6, temparg7, temparg8), temparg9);\n this.isEmfTextScaled = false;\n this.emfScalingFactor = new SizeF(0, 0);\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n this.isNormalRender = true;\n this.pdfStringLayoutResult = result;\n this.isUseFontSize = false;\n }\n }; /* tslint:enable */\n PdfGraphics.prototype.drawLine = function (arg1, arg2, arg3, arg4, arg5) {\n if (arg2 instanceof PointF) {\n var temparg2 = arg2;\n var temparg3 = arg3;\n this.drawLine(arg1, temparg2.x, temparg2.y, temparg3.x, temparg3.y);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n this.stateControl(arg1, null, null);\n var sw = this.streamWriter;\n sw.beginPath(temparg2, temparg3);\n sw.appendLineSegment(temparg4, temparg5);\n sw.strokePath();\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n }\n };\n /* tslint:disable */\n PdfGraphics.prototype.drawRectangle = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PdfPen && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(arg1, null, arg2, temparg3, arg4, arg5);\n }\n else if (arg1 instanceof PdfBrush && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(null, arg1, arg2, temparg3, arg4, arg5);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n if ((arg2 instanceof PdfTilingBrush)) {\n this.bCSInitialized = false;\n var xOffset = (this.matrix.matrix.offsetX + temparg3);\n var yOffset = void 0;\n if (((this.layer != null) && (this.layer.page != null))) {\n yOffset = ((this.layer.page.size.height - this.matrix.matrix.offsetY) + temparg4);\n }\n else {\n yOffset = ((this.clientSize.height - this.matrix.matrix.offsetY) + temparg4);\n }\n (arg2).location = new PointF(xOffset, yOffset);\n (arg2).graphics.colorSpace = this.colorSpace;\n }\n else if ((arg2 instanceof PdfGradientBrush)) {\n arg2.colorSpace = this.colorSpace;\n }\n if (arg2 instanceof PdfSolidBrush && arg2.color.isEmpty) {\n arg2 = null;\n }\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.stateControl(temparg1, temparg2, null);\n this.streamWriter.appendRectangle(temparg3, temparg4, temparg5, temparg6);\n this.drawPathHelper(temparg1, temparg2, false);\n }\n };\n PdfGraphics.prototype.drawPathHelper = function (arg1, arg2, arg3, arg4) {\n if (typeof arg3 === 'boolean') {\n var temparg3 = arg3;\n this.drawPathHelper(arg1, arg2, PdfFillMode.Winding, temparg3);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var isPen = arg1 != null;\n var isBrush = arg2 != null;\n var isEvenOdd = (temparg3 === PdfFillMode.Alternate);\n if (isPen && isBrush) {\n this.streamWriter.fillStrokePath(isEvenOdd);\n }\n else if (!isPen && !isBrush) {\n this.streamWriter.endPath();\n }\n else if (isPen) {\n this.streamWriter.strokePath();\n }\n else {\n this.streamWriter.fillPath(isEvenOdd);\n }\n }\n };\n /* tslint:disable */\n PdfGraphics.prototype.drawImage = function (arg1, arg2, arg3, arg4, arg5) {\n if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n var size = arg1.physicalDimension;\n this.drawImage(arg1, arg2, arg3, size.width, size.height);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n arg1.save();\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(temparg2, (temparg3 + temparg5), matrix);\n this.getScaleTransform(arg4, arg5, matrix);\n this.pdfStreamWriter.write('q');\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n if (typeof this.pageLayer !== 'undefined' && this.page != null) {\n resources.document = this.page.document;\n }\n var name_2 = resources.getName(arg1);\n if (typeof this.pageLayer !== 'undefined') {\n this.page.setResources(resources);\n }\n this.pdfStreamWriter.executeObject(name_2);\n this.pdfStreamWriter.write(Operators.restoreState);\n this.pdfStreamWriter.write(Operators.newLine);\n var resource = this.getResources.getResources();\n resource.requireProcedureSet(this.procedureSets.imageB);\n resource.requireProcedureSet(this.procedureSets.imageC);\n resource.requireProcedureSet(this.procedureSets.imageI);\n resource.requireProcedureSet(this.procedureSets.text);\n }\n };\n //Implementation\n /* tslint:disable */\n /**\n * Returns `bounds` of the line info.\n * @private\n */\n PdfGraphics.prototype.getLineBounds = function (lineIndex, result, font, layoutRectangle, format) {\n var bounds;\n if (!result.empty && lineIndex < result.lineCount && lineIndex >= 0) {\n var line = result.lines[lineIndex];\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var y = vShift + layoutRectangle.y + (result.lineHeight * lineIndex);\n var lineWidth = line.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(line, format, layoutRectangle, (lineIndex === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x = layoutRectangle.x + hShift;\n /* tslint:disable */\n var width = (!this.shouldJustify(line, layoutRectangle.width, format)) ? lineWidth - lineIndent : layoutRectangle.width - lineIndent; /* tslint:enable */\n var height = result.lineHeight;\n bounds = new RectangleF(x, y, width, height);\n }\n else {\n bounds = new RectangleF(0, 0, 0, 0);\n }\n return bounds;\n };\n /**\n * Creates `lay outed rectangle` depending on the text settings.\n * @private\n */\n PdfGraphics.prototype.checkCorrectLayoutRectangle = function (textSize, x, y, format) {\n var layoutedRectangle = new RectangleF(x, y, textSize.width, textSize.width);\n if (format != null) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n layoutedRectangle.x -= layoutedRectangle.width / 2;\n break;\n case PdfTextAlignment.Right:\n layoutedRectangle.x -= layoutedRectangle.width;\n break;\n }\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n layoutedRectangle.y -= layoutedRectangle.height / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n layoutedRectangle.y -= layoutedRectangle.height;\n break;\n }\n }\n return layoutedRectangle;\n };\n /**\n * Sets the `layer` for the graphics.\n * @private\n */\n PdfGraphics.prototype.setLayer = function (layer) {\n this.pageLayer = layer;\n var page = layer.page;\n if (page != null && typeof page !== 'undefined') {\n page.beginSave = this.pageSave;\n }\n };\n /**\n * Adding page number field before page saving.\n * @private\n */\n /* tslint:disable */\n PdfGraphics.prototype.pageSave = function (page) {\n if (page.graphics.automaticFields != null) {\n for (var i = 0; i < page.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = page.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(page.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n };\n /**\n * `Draws a layout result`.\n * @private\n */\n PdfGraphics.prototype.drawStringLayoutResult = function (result, font, pen, brush, layoutRectangle, format) {\n if (!result.empty) {\n this.applyStringSettings(font, pen, brush, format, layoutRectangle);\n // Set text scaling\n var textScaling = (format != null) ? format.horizontalScalingFactor : 100.0;\n if (textScaling !== this.previousTextScaling && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setTextScaling(textScaling);\n this.previousTextScaling = textScaling;\n }\n var height = (format == null || format.lineSpacing === 0) ? font.height : format.lineSpacing + font.height;\n var subScript = (format != null && format.subSuperScript === PdfSubSuperScript.SubScript);\n var shift = 0;\n shift = (subScript) ? height - (font.height + font.metrics.getDescent(format)) : (height - font.metrics.getAscent(format));\n this.shift = shift;\n this.pdfStreamWriter.startNextLine(layoutRectangle.x, layoutRectangle.y - shift);\n this.pdfStreamWriter.setLeading(+height);\n var resultHeight = 0;\n var remainingString = '';\n for (var i = 0; i < result.lines.length; i++) {\n resultHeight += result.lineHeight;\n if ((layoutRectangle.y + resultHeight) > this.clientSize.height) {\n this.startCutIndex = i;\n break;\n }\n }\n for (var j = this.startCutIndex; (j < result.lines.length && j >= 0); j++) {\n remainingString += result.lines[j].text;\n }\n var bounds = new RectangleF(layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height);\n this.drawLayoutResult(result, font, format, layoutRectangle);\n this.underlineStrikeoutText(pen, brush, result, font, bounds, format);\n this.isEmfPlus = false;\n this.isUseFontSize = false;\n if (this.startCutIndex !== -1) {\n var page = this.getNextPage();\n page.graphics.drawString(remainingString, font, pen, brush, layoutRectangle.x, 0, layoutRectangle.width, 0, format);\n }\n }\n else {\n throw new Error('ArgumentNullException:result');\n }\n };\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGraphics.prototype.getNextPage = function () {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n return nextPage;\n };\n PdfGraphics.prototype.setClip = function (rectangle, mode) {\n if (typeof mode === 'undefined') {\n this.setClip(rectangle, PdfFillMode.Winding);\n }\n else {\n this.pdfStreamWriter.appendRectangle(rectangle);\n this.pdfStreamWriter.clipPath((mode === PdfFillMode.Alternate));\n }\n };\n /**\n * Applies all the `text settings`.\n * @private\n */\n PdfGraphics.prototype.applyStringSettings = function (font, pen, brush, format, bounds) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if ((brush instanceof PdfGradientBrush)) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n var setLineWidth = false;\n var tm = this.getTextRenderingMode(pen, brush, format);\n this.stateControl(pen, brush, font, format);\n this.pdfStreamWriter.beginText();\n if ((tm) !== this.previousTextRenderingMode) {\n this.pdfStreamWriter.setTextRenderingMode(tm);\n this.previousTextRenderingMode = tm;\n }\n // Set character spacing.\n var cs = (format != null) ? format.characterSpacing : 0;\n if (cs !== this.previousCharacterSpacing && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setCharacterSpacing(cs);\n this.previousCharacterSpacing = cs;\n }\n // Set word spacing.\n // NOTE: it works only if the space code is equal to 32 (0x20).\n var ws = (format != null) ? format.wordSpacing : 0;\n if (ws !== this.previousWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(ws);\n this.previousWordSpacing = ws;\n }\n };\n /**\n * Calculates `shift value` if the text is vertically aligned.\n * @private\n */\n PdfGraphics.prototype.getTextVerticalAlignShift = function (textHeight, boundsHeight, format) {\n var shift = 0;\n if (boundsHeight >= 0 && format != null && format.lineAlignment !== PdfVerticalAlignment.Top) {\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n shift = (boundsHeight - textHeight) / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n shift = boundsHeight - textHeight;\n break;\n }\n }\n return shift;\n };\n /* tslint:disable */\n /**\n * `Draws layout result`.\n * @private\n */\n PdfGraphics.prototype.drawLayoutResult = function (result, font, format, layoutRectangle) {\n var vAlignShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, vAlignShift);\n }\n var ttfFont = font;\n var unicode = (ttfFont != null && ttfFont.isUnicode);\n var embed = (ttfFont != null && ttfFont.isEmbedFont);\n var lines = result.lines;\n for (var i = 0, len = lines.length; (i < len && i !== this.startCutIndex); i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hAlignShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hAlignShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(hAlignShift, 0);\n }\n if (unicode) {\n this.drawUnicodeLine(lineInfo, layoutRectangle, font, format);\n }\n else {\n this.drawAsciiLine(lineInfo, layoutRectangle, font, format);\n }\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(-hAlignShift, 0);\n }\n if (this.isOverloadWithPosition && lines.length > 1) {\n this.pdfStreamWriter.startNextLine(-(layoutRectangle.x), 0);\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n this.isOverloadWithPosition = false;\n this.isPointOverload = true;\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, -(vAlignShift - result.lineHeight));\n }\n this.pdfStreamWriter.endText();\n };\n /**\n * `Draws Ascii line`.\n * @private\n */\n PdfGraphics.prototype.drawAsciiLine = function (lineInfo, layoutRectangle, font, format) {\n this.justifyLine(lineInfo, layoutRectangle.width, format);\n var value = '';\n if (lineInfo.text.indexOf('(') !== -1 || lineInfo.text.indexOf(')') !== -1) {\n for (var i = 0; i < lineInfo.text.length; i++) {\n if (lineInfo.text[i] === '(') {\n value += '\\\\\\(';\n }\n else if (lineInfo.text[i] === ')') {\n value += '\\\\\\)';\n }\n else {\n value += lineInfo.text[i];\n }\n }\n }\n if (value === '') {\n value = lineInfo.text;\n }\n var line = '(' + value + ')';\n this.pdfStreamWriter.showNextLineText(new PdfString(line));\n };\n /**\n * Draws unicode line.\n * @private\n */\n PdfGraphics.prototype.drawUnicodeLine = function (lineInfo, layoutRectangle, font, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n var useWordSpace = (format !== null && typeof format !== 'undefined' && (format.wordSpacing !== 0 || format.alignment === PdfTextAlignment.Justify));\n var ttfFont = font;\n var wordSpacing = this.justifyLine(lineInfo, layoutRectangle.width, format);\n var rtlRender = new RtlRenderer();\n if (rtl || (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None)) {\n var blocks = null;\n var rightAlign = (format !== null && typeof format !== 'undefined' && format.alignment === PdfTextAlignment.Right);\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n blocks = rtlRender.layout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n blocks = rtlRender.layout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n var words = null;\n if (blocks.length > 1) {\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n words = rtlRender.splitLayout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n words = rtlRender.splitLayout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n }\n else {\n words = [line];\n }\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n if (useWordSpace) {\n var result = this.breakUnicodeLine(line, ttfFont, null);\n var blocks = result.tokens;\n var words = result.words;\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n var token = this.convertToUnicode(line, ttfFont);\n var value = this.getUnicodeString(token);\n this.streamWriter.showNextLineText(value);\n }\n }\n };\n /**\n * Draws array of unicode tokens.\n */\n /* tslint:disable */\n PdfGraphics.prototype.drawUnicodeBlocks = function (blocks, words, font, format, wordSpacing) {\n /* tslint:enable */\n if (blocks == null) {\n throw new Error('Argument Null Exception : blocks');\n }\n if (words == null) {\n throw new Error('Argument Null Exception : words');\n }\n if (font == null) {\n throw new Error('Argument Null Exception : font');\n }\n this.streamWriter.startNextLine();\n var x = 0;\n var xShift = 0;\n var firstLineIndent = 0;\n var paragraphIndent = 0;\n try {\n if (format !== null && typeof format !== 'undefined') {\n firstLineIndent = format.firstLineIndent;\n paragraphIndent = format.paragraphIndent;\n format.firstLineIndent = 0;\n format.paragraphIndent = 0;\n }\n var spaceWidth = font.getCharWidth(StringTokenizer.whiteSpace, format) + wordSpacing;\n var characterSpacing = (format != null) ? format.characterSpacing : 0;\n var wordSpace = (format !== null && typeof format !== 'undefined' && wordSpacing === 0) ? format.wordSpacing : 0;\n spaceWidth += characterSpacing + wordSpace;\n for (var i = 0; i < blocks.length; i++) {\n var token = blocks[i];\n var word = words[i];\n var tokenWidth = 0;\n if (x !== 0) {\n this.streamWriter.startNextLine(x, 0);\n }\n if (word.length > 0) {\n tokenWidth += /*Utils.Round(*/ font.measureString(word, format).width /*)*/;\n tokenWidth += characterSpacing;\n var val = this.getUnicodeString(token);\n this.streamWriter.showText(val);\n }\n if (i !== blocks.length - 1) {\n x = tokenWidth + spaceWidth;\n xShift += x;\n }\n }\n // Rolback current line position.\n if (xShift > 0) {\n this.streamWriter.startNextLine(-xShift, 0);\n }\n }\n finally {\n if (format !== null && typeof format !== 'undefined') {\n format.firstLineIndent = firstLineIndent;\n format.paragraphIndent = paragraphIndent;\n }\n }\n };\n /**\n * Breakes the unicode line to the words and converts symbols to glyphs.\n */\n PdfGraphics.prototype.breakUnicodeLine = function (line, ttfFont, words) {\n if (line === null) {\n throw new Error('Argument Null Exception : line');\n }\n words = line.split(null);\n var tokens = [];\n for (var i = 0; i < words.length; i++) {\n // Reconvert string according to unicode standard.\n var word = words[i];\n var token = this.convertToUnicode(word, ttfFont);\n tokens[i] = token;\n }\n return { tokens: tokens, words: words };\n };\n /**\n * Creates PdfString from the unicode text.\n */\n PdfGraphics.prototype.getUnicodeString = function (token) {\n if (token === null) {\n throw new Error('Argument Null Exception : token');\n }\n var val = new PdfString(token);\n val.converted = true;\n val.encode = InternalEnum.ForceEncoding.Ascii;\n return val;\n };\n /**\n * Converts to unicode format.\n */\n PdfGraphics.prototype.convertToUnicode = function (text, ttfFont) {\n var token = null;\n if (text == null) {\n throw new Error('Argument Null Exception : text');\n }\n if (ttfFont == null) {\n throw new Error('Argument Null Exception : ttfFont');\n }\n if (ttfFont.fontInternal instanceof UnicodeTrueTypeFont) {\n var ttfReader = ttfFont.fontInternal.ttfReader;\n ttfFont.setSymbols(text);\n token = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(token, false);\n token = PdfString.byteToString(bytes);\n }\n return token;\n };\n /**\n * `Justifies` the line if needed.\n * @private\n */\n PdfGraphics.prototype.justifyLine = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var shouldJustify = this.shouldJustify(lineInfo, boundsWidth, format);\n var hasWordSpacing = (format != null && format.wordSpacing !== 0);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var wordSpace = 0;\n if (shouldJustify) {\n // Correct line width.\n if (hasWordSpacing) {\n lineWidth -= (whitespacesCount * format.wordSpacing);\n }\n var difference = boundsWidth - lineWidth;\n wordSpace = difference / whitespacesCount;\n this.pdfStreamWriter.setWordSpacing(wordSpace);\n }\n else {\n // If there is justifying, but the line shouldn't be justified, restore default word spacing.\n if (hasWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(format.wordSpacing);\n }\n else {\n this.pdfStreamWriter.setWordSpacing(0);\n }\n }\n return wordSpace;\n };\n /**\n * `Reset` or reinitialize the current graphic value.\n * @private\n */\n PdfGraphics.prototype.reset = function (size) {\n this.canvasSize = size;\n this.streamWriter.clear();\n this.initialize();\n this.initializeCoordinates();\n };\n /**\n * Checks whether the line should be `justified`.\n * @private\n */\n PdfGraphics.prototype.shouldJustify = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var justifyStyle = (format != null && format.alignment === PdfTextAlignment.Justify);\n var goodWidth = (boundsWidth >= 0 && lineWidth < boundsWidth);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var hasSpaces = (whitespacesCount > 0 && line[0] !== StringTokenizer.whiteSpace);\n var goodLineBreakStyle = ((lineInfo.lineType & LineType.LayoutBreak) > 0);\n /* tslint:disable */\n var shouldJustify = (justifyStyle && goodWidth && hasSpaces && (goodLineBreakStyle || format.alignment === PdfTextAlignment.Justify)); /* tslint:enable */\n return shouldJustify;\n };\n /* tslint:disable */\n /**\n * Emulates `Underline, Strikeout` of the text if needed.\n * @private\n */\n PdfGraphics.prototype.underlineStrikeoutText = function (pen, brush, result, font, layoutRectangle, format) {\n if (font.underline || font.strikeout) {\n // Calculate line width.\n var linePen = this.createUnderlineStikeoutPen(pen, brush, font, format);\n if (linePen != null) {\n // Approximate line positions.\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var underlineYOffset = 0;\n underlineYOffset = layoutRectangle.y + vShift + font.metrics.getAscent(format) + 1.5 * linePen.width;\n var strikeoutYOffset = layoutRectangle.y + vShift + font.metrics.getHeight(format) / 2 + 1.5 * linePen.width;\n var lines = result.lines;\n // Run through the text and draw lines.\n for (var i = 0, len = result.lineCount; i < len; i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x1 = layoutRectangle.x + hShift;\n /* tslint:disable */\n var x2 = (!this.shouldJustify(lineInfo, layoutRectangle.width, format)) ? x1 + lineWidth - lineIndent : x1 + layoutRectangle.width - lineIndent;\n /* tslint:enable */\n if (font.underline) {\n var y = underlineYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n underlineYOffset += result.lineHeight;\n }\n if (font.strikeout) {\n var y = strikeoutYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n strikeoutYOffset += result.lineHeight;\n }\n if (this.isPointOverload && lines.length > 1) {\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n }\n }\n this.isPointOverload = false;\n }\n }\n };\n /**\n * `Creates a pen` for drawing lines in the text.\n * @private\n */\n PdfGraphics.prototype.createUnderlineStikeoutPen = function (pen, brush, font, format) {\n // Calculate line width.\n var lineWidth = font.metrics.getSize(format) / 20;\n var linePen = null;\n // Create a pen fo the lines.\n if (pen != null) {\n linePen = new PdfPen(pen.color, lineWidth);\n }\n else if (brush != null) {\n linePen = new PdfPen(brush, lineWidth);\n }\n return linePen;\n };\n /**\n * Return `text rendering mode`.\n * @private\n */\n PdfGraphics.prototype.getTextRenderingMode = function (pen, brush, format) {\n var tm = TextRenderingMode.None;\n if (pen != null && brush != null) {\n tm = TextRenderingMode.FillStroke;\n }\n else if (pen != null) {\n tm = TextRenderingMode.Stroke;\n }\n else {\n tm = TextRenderingMode.Fill;\n }\n if (format != null && format.clipPath) {\n tm |= TextRenderingMode.ClipFlag;\n }\n return tm;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfGraphics.prototype.getLineIndent = function (lineInfo, format, layoutBounds, firstLine) {\n var lineIndent = 0;\n var firstParagraphLine = ((lineInfo.lineType & LineType.FirstParagraphLine) > 0);\n if (format != null && firstParagraphLine) {\n lineIndent = (firstLine) ? format.firstLineIndent : format.paragraphIndent;\n lineIndent = (layoutBounds.width > 0) ? Math.min(layoutBounds.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates shift value if the line is `horizontaly aligned`.\n * @private\n */\n PdfGraphics.prototype.getHorizontalAlignShift = function (lineWidth, boundsWidth, format) {\n var shift = 0;\n if (boundsWidth >= 0 && format != null && format.alignment !== PdfTextAlignment.Left) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n shift = (boundsWidth - lineWidth) / 2;\n break;\n case PdfTextAlignment.Right:\n shift = boundsWidth - lineWidth;\n break;\n }\n }\n return shift;\n };\n /**\n * Gets or sets the value that indicates `text direction` mode.\n * @private\n */\n PdfGraphics.prototype.rightToLeft = function (format) {\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n if (format !== null && typeof format !== 'undefined') {\n if (format.textDirection !== PdfTextDirection.None && typeof format.textDirection !== 'undefined') {\n rtl = true;\n }\n }\n return rtl;\n };\n PdfGraphics.prototype.stateControl = function (pen, brush, font, format) {\n if (typeof format === 'undefined') {\n this.stateControl(pen, brush, font, null);\n }\n else {\n if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n var saveState = false;\n if (brush !== null) {\n var solidBrush = brush;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n if (this.colorSpaceChanged === false) {\n this.lastDocumentCS = this.pageLayer.page.document.colorSpace;\n this.lastGraphicsCS = this.pageLayer.page.graphics.colorSpace;\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n this.colorSpaceChanged = true;\n }\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n else if (pen != null) {\n var pdfPen = pen;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n /* tslint:disable */\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n this.penControl(pen, saveState);\n this.brushControl(brush, saveState);\n this.fontControl(font, format, saveState);\n }\n };\n /**\n * Initializes the `current color space`.\n * @private\n */\n PdfGraphics.prototype.initCurrentColorSpace = function (colorspace) {\n var re = this.getResources.getResources();\n if (!this.bCSInitialized) {\n if (this.currentColorSpace != PdfColorSpace.GrayScale) {\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], true);\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], false);\n this.bCSInitialized = true;\n }\n else {\n this.pdfStreamWriter.setColorSpace('DeviceGray', true);\n this.pdfStreamWriter.setColorSpace('DeviceGray', false);\n this.bCSInitialized = true;\n }\n }\n };\n /**\n * Controls the `pen state`.\n * @private\n */\n PdfGraphics.prototype.penControl = function (pen, saveState) {\n if (pen != null) {\n this.currentPen = pen;\n /* tslint:disable */\n pen.monitorChanges(this.currentPen, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace, this.matrix.clone());\n /* tslint:enable */\n this.currentPen = pen.clone();\n }\n };\n /**\n * Controls the `brush state`.\n * @private\n */\n PdfGraphics.prototype.brushControl = function (brush, saveState) {\n if (brush != null && typeof brush !== 'undefined') {\n var b = brush.clone();\n var lgb = b;\n if (lgb !== null && typeof lgb !== 'undefined' && !(brush instanceof PdfSolidBrush) && !(brush instanceof PdfTilingBrush)) {\n var m = lgb.matrix;\n var matrix = this.matrix.clone();\n if ((m != null)) {\n m.multiply(matrix);\n matrix = m;\n }\n lgb.matrix = matrix;\n }\n this.currentBrush = lgb;\n var br = (brush);\n /* tslint:disable */\n b.monitorChanges(this.currentBrush, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace);\n /* tslint:enable */\n this.currentBrush = brush;\n brush = null;\n }\n };\n /**\n * Saves the font and other `font settings`.\n * @private\n */\n PdfGraphics.prototype.fontControl = function (font, format, saveState) {\n if (font != null) {\n var curSubSuper = (format != null) ? format.subSuperScript : PdfSubSuperScript.None;\n /* tslint:disable */\n var prevSubSuper = (this.currentStringFormat != null) ? this.currentStringFormat.subSuperScript : PdfSubSuperScript.None; /* tslint:enable */\n if (saveState || font !== this.currentFont || curSubSuper !== prevSubSuper) {\n var resources = this.getResources.getResources();\n this.currentFont = font;\n this.currentStringFormat = format;\n var size = font.metrics.getSize(format);\n /* tslint:disable */\n this.isEmfTextScaled = false;\n var fontName = resources.getName(font);\n this.pdfStreamWriter.setFont(font, fontName, size);\n }\n }\n };\n PdfGraphics.prototype.setTransparency = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n this.istransparencySet = true;\n this.setTransparency(arg1, arg1, PdfBlendMode.Normal);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.setTransparency(arg1, arg2, PdfBlendMode.Normal);\n }\n else {\n if (this.trasparencies == null) {\n this.trasparencies = new TemporaryDictionary();\n }\n var transp = null;\n var td = new TransparencyData(arg1, arg2, arg3);\n if (this.trasparencies.containsKey(td)) {\n transp = this.trasparencies.getValue(td);\n }\n if (transp == null) {\n transp = new PdfTransparency(arg1, arg2, arg3);\n this.trasparencies.setValue(td, transp);\n }\n var resources = this.getResources.getResources();\n var name_3 = resources.getName(transp);\n var sw = this.streamWriter;\n sw.setGraphicsState(name_3);\n }\n };\n PdfGraphics.prototype.clipTranslateMargins = function (x, y, left, top, right, bottom) {\n if (x instanceof RectangleF && typeof y === 'undefined') {\n this.clipBounds = x;\n this.pdfStreamWriter.writeComment('Clip margins.');\n this.pdfStreamWriter.appendRectangle(x);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment('Translate co-ordinate system.');\n this.translateTransform(x.x, x.y);\n }\n else if (typeof x === 'number') {\n var clipArea = new RectangleF(left, top, this.size.width - left - right, this.size.height - top - bottom);\n this.clipBounds = clipArea;\n this.pdfStreamWriter.writeComment(\"Clip margins.\");\n this.pdfStreamWriter.appendRectangle(clipArea);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment(\"Translate co-ordinate system.\");\n this.translateTransform(x, y);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfGraphics.prototype.updateY = function (y) {\n return -y;\n };\n /**\n * Used to `translate the transformation`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set translate transform\n * page1.graphics.translateTransform(100, 100);\n * //\n * // draw the rectangle after applying translate transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param offsetX The x-coordinate of the translation.\n * @param offsetY The y-coordinate of the translation.\n */\n PdfGraphics.prototype.translateTransform = function (offsetX, offsetY) {\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(offsetX, offsetY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Translates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getTranslateTransform = function (x, y, input) {\n input.translate(x, this.updateY(y));\n return input;\n };\n /* tslint:disable */\n /**\n * Applies the specified `scaling operation` to the transformation matrix of this Graphics by prepending it to the object's transformation matrix.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // apply scaling trasformation\n * page1.graphics.scaleTransform(1.5, 2);\n * //\n * // draw the rectangle after applying scaling transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param scaleX Scale factor in the x direction.\n * @param scaleY Scale factor in the y direction.\n */\n /* tslint:enable */\n PdfGraphics.prototype.scaleTransform = function (scaleX, scaleY) {\n var matrix = new PdfTransformationMatrix();\n this.getScaleTransform(scaleX, scaleY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Scales` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getScaleTransform = function (x, y, input) {\n if (input == null) {\n input = new PdfTransformationMatrix();\n }\n input.scale(x, y);\n return input;\n };\n /**\n * Applies the specified `rotation` to the transformation matrix of this Graphics.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set RotateTransform with 25 degree of angle\n * page1.graphics.rotateTransform(25);\n * //\n * // draw the rectangle after RotateTransformation\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param angle Angle of rotation in degrees.\n */\n PdfGraphics.prototype.rotateTransform = function (angle) {\n var matrix = new PdfTransformationMatrix();\n this.getRotateTransform(angle, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Initializes coordinate system`.\n * @private\n */\n PdfGraphics.prototype.initializeCoordinates = function () {\n // Matrix equation: TM(T-1)=M', where T=[1 0 0 -1 0 h]\n this.pdfStreamWriter.writeComment('Change co-ordinate system to left/top.');\n // Translate co-ordinates only, don't flip.\n if (this.mediaBoxUpperRightBound !== -(this.size.height)) {\n if (this.cropBox == null) {\n if (this.mediaBoxUpperRightBound === this.size.height || this.mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, this.updateY(this.size.height));\n }\n else {\n this.translateTransform(0, this.updateY(this.mediaBoxUpperRightBound));\n }\n }\n }\n };\n /**\n * `Rotates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getRotateTransform = function (angle, input) {\n if (input == null || typeof input === 'undefined') {\n input = new PdfTransformationMatrix();\n }\n input.rotate(this.updateY(angle));\n return input;\n };\n /**\n * `Saves` the current state of this Graphics and identifies the saved state with a GraphicsState.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // save the graphics state\n * let state1 : PdfGraphicsState = page1.graphics.save();\n * //\n * page1.graphics.scaleTransform(1.5, 2);\n * // draw the rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // restore the graphics state\n * page1.graphics.restore(state1);\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.save = function () {\n var state = new PdfGraphicsState(this, this.matrix.clone());\n state.brush = this.currentBrush;\n state.pen = this.currentPen;\n state.font = this.currentFont;\n state.colorSpace = this.currentColorSpace;\n state.characterSpacing = this.previousCharacterSpacing;\n state.wordSpacing = this.previousWordSpacing;\n state.textScaling = this.previousTextScaling;\n state.textRenderingMode = this.previousTextRenderingMode;\n this.graphicsState.push(state);\n this.pdfStreamWriter.saveGraphicsState();\n return state;\n };\n PdfGraphics.prototype.restore = function (state) {\n if (typeof state === 'undefined') {\n if (this.graphicsState.length > 0) {\n this.doRestoreState();\n }\n }\n else {\n if (this.graphicsState.indexOf(state) !== -1) {\n for (;;) {\n if (this.graphicsState.length === 0) {\n break;\n }\n var popState = this.doRestoreState();\n if (popState === state) {\n break;\n }\n }\n }\n }\n };\n /**\n * `Restores graphics state`.\n * @private\n */\n PdfGraphics.prototype.doRestoreState = function () {\n var state = this.graphicsState.pop();\n this.transformationMatrix = state.matrix;\n this.currentBrush = state.brush;\n this.currentPen = state.pen;\n this.currentFont = state.font;\n this.currentColorSpace = state.colorSpace;\n this.previousCharacterSpacing = state.characterSpacing;\n this.previousWordSpacing = state.wordSpacing;\n this.previousTextScaling = state.textScaling;\n this.previousTextRenderingMode = state.textRenderingMode;\n this.pdfStreamWriter.restoreGraphicsState();\n return state;\n };\n /* tslint:enable */\n /**\n * `Draws the specified path`, using its original physical size, at the location specified by a coordinate pair.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * //Create new PDF path.\n * let path : PdfPath = new PdfPath();\n * //Add line path points.\n * path.addLine(new PointF(10, 100), new PointF(10, 200));\n * path.addLine(new PointF(100, 100), new PointF(100, 200));\n * path.addLine(new PointF(100, 200), new PointF(55, 150));\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(255, 0, 0));\n * // set brush\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the path\n * page1.graphics.drawPath(pen, brush, path);\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Color of the text.\n * @param brush Color of the text.\n * @param path Draw path.\n */\n PdfGraphics.prototype.drawPath = function (pen, brush, path) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n this.stateControl(pen, brush, null);\n this.buildUpPath(path.pathPoints, path.pathTypes);\n this.drawPathHelper(pen, brush, path.fillMode, false);\n };\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.drawArc = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg2 instanceof RectangleF) {\n this.drawArc(arg1, arg2.x, arg2.y, arg2.width, arg2.height, arg3, arg4);\n }\n else {\n if ((arg7 !== 0)) {\n this.stateControl(arg1, null, null);\n this.constructArcPath(arg2, arg3, (arg2 + arg4), (arg3 + arg5), arg6, arg7);\n this.drawPathHelper(arg1, null, false);\n }\n }\n };\n /**\n * Builds up the path.\n * @private\n */\n PdfGraphics.prototype.buildUpPath = function (arg1, arg2) {\n var cnt = arg1.length;\n for (var i = 0; i < cnt; ++i) {\n var typeValue = 0;\n var point = arg1[i];\n switch (((arg2[i] & (PdfGraphics.pathTypesValuesMask)))) {\n case PathPointType.Start:\n this.pdfStreamWriter.beginPath(point.x, point.y);\n break;\n case PathPointType.Bezier3:\n var p2 = new PointF(0, 0);\n var p3 = new PointF(0, 0);\n var result1 = this.getBezierPoints(arg1, arg2, i, p2, p3);\n this.pdfStreamWriter.appendBezierSegment(point, result1.p2, result1.p3);\n i = result1.i;\n break;\n case PathPointType.Line:\n this.pdfStreamWriter.appendLineSegment(point);\n break;\n default:\n throw new Error('ArithmeticException - Incorrect path formation.');\n }\n typeValue = arg2[i];\n this.checkFlags(typeValue);\n }\n };\n /**\n * Gets the bezier points from respective arrays.\n * @private\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.getBezierPoints = function (points, types, i, p2, p3) {\n var errorMsg = 'Malforming path.';\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p2 = points[i];\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p3 = points[i];\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n return { i: i, p2: p2, p3: p3 };\n };\n /**\n * Checks path point type flags.\n * @private\n */\n PdfGraphics.prototype.checkFlags = function (type) {\n if ((((type & (PathPointType.CloseSubpath))) === PathPointType.CloseSubpath)) {\n this.pdfStreamWriter.closePath();\n }\n };\n /**\n * Constructs the arc path using Bezier curves.\n * @private\n */\n PdfGraphics.prototype.constructArcPath = function (x1, y1, x2, y2, startAng, sweepAngle) {\n var points = this.getBezierArc(x1, y1, x2, y2, startAng, sweepAngle);\n if ((points.length === 0)) {\n return;\n }\n var pt = [points[0], points[1], points[2], points[3], points[4], points[5], points[6], points[7]];\n this.pdfStreamWriter.beginPath(pt[0], pt[1]);\n var i = 0;\n for (i = 0; i < points.length; i = i + 8) {\n pt = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.pdfStreamWriter.appendBezierSegment(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);\n }\n };\n /**\n * Gets the bezier points for arc constructing.\n * @private\n */\n PdfGraphics.prototype.getBezierArc = function (numX1, numY1, numX2, numY2, s1, e1) {\n if ((numX1 > numX2)) {\n var tmp = void 0;\n tmp = numX1;\n numX1 = numX2;\n numX2 = tmp;\n }\n if ((numY2 > numY1)) {\n var tmp = void 0;\n tmp = numY1;\n numY1 = numY2;\n numY2 = tmp;\n }\n var fragAngle1;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle1 = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle1 = (e1 / numFragments);\n }\n var xcen = ((numX1 + numX2) / 2);\n var ycen = ((numY1 + numY2) / 2);\n var rx = ((numX2 - numX1) / 2);\n var ry = ((numY2 - numY1) / 2);\n var halfAng = ((fragAngle1 * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointsList = [];\n for (var i = 0; (i < numFragments); i++) {\n var thetaValue0 = (((s1 + (i * fragAngle1)) * (Math.PI / 180)));\n var thetaValue1 = (((s1 + ((i + 1) * fragAngle1)) * (Math.PI / 180)));\n var cos0 = (Math.cos(thetaValue0));\n var cos1 = (Math.cos(thetaValue1));\n var sin0 = (Math.sin(thetaValue0));\n var sin1 = (Math.sin(thetaValue1));\n if ((fragAngle1 > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointsList;\n };\n // Constants\n /**\n * Specifies the mask of `path type values`.\n * @private\n */\n PdfGraphics.pathTypesValuesMask = 0xf;\n /**\n * Checks whether the object is `transparencyObject`.\n * @hidden\n * @private\n */\n PdfGraphics.transparencyObject = false;\n return PdfGraphics;\n}());\nexport { PdfGraphics };\n/**\n * `GetResourceEventHandler` class is alternate for event handlers and delegates.\n * @private\n * @hidden\n */\nvar GetResourceEventHandler = /** @class */ (function () {\n /**\n * Initialize instance of `GetResourceEventHandler` class.\n * Alternate for event handlers and delegates.\n * @private\n */\n function GetResourceEventHandler(sender) {\n this.sender = sender;\n }\n /**\n * Return the instance of `PdfResources` class.\n * @private\n */\n GetResourceEventHandler.prototype.getResources = function () {\n return this.sender.getResources();\n };\n return GetResourceEventHandler;\n}());\nexport { GetResourceEventHandler };\nvar PdfGraphicsState = /** @class */ (function () {\n function PdfGraphicsState(graphics, matrix) {\n /**\n * Stores `previous rendering mode`.\n * @default TextRenderingMode.Fill\n * @private\n */\n this.internalTextRenderingMode = TextRenderingMode.Fill;\n /**\n * `Previous character spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalCharacterSpacing = 0.0;\n /**\n * `Previous word spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalWordSpacing = 0.0;\n /**\n * The previously used `text scaling value`.\n * @default 100.0\n * @private\n */\n this.internalTextScaling = 100.0;\n /**\n * `Current color space`.\n * @default PdfColorSpace.Rgb\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n if (typeof graphics !== 'undefined') {\n this.pdfGraphics = graphics;\n this.transformationMatrix = matrix;\n }\n }\n Object.defineProperty(PdfGraphicsState.prototype, \"graphics\", {\n // Properties\n /**\n * Gets the parent `graphics object`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"matrix\", {\n /**\n * Gets the `current matrix`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"characterSpacing\", {\n /**\n * Gets or sets the `current character spacing`.\n * @private\n */\n get: function () {\n return this.internalCharacterSpacing;\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"wordSpacing\", {\n /**\n * Gets or sets the `word spacing` value.\n * @private\n */\n get: function () {\n return this.internalWordSpacing;\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textScaling\", {\n /**\n * Gets or sets the `text scaling` value.\n * @private\n */\n get: function () {\n return this.internalTextScaling;\n },\n set: function (value) {\n this.internalTextScaling = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"pen\", {\n /**\n * Gets or sets the `current pen` object.\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"brush\", {\n /**\n * Gets or sets the `brush`.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"font\", {\n /**\n * Gets or sets the `current font` object.\n * @private\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"colorSpace\", {\n /**\n * Gets or sets the `current color space` value.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textRenderingMode\", {\n /**\n * Gets or sets the `text rendering mode`.\n * @private\n */\n get: function () {\n return this.internalTextRenderingMode;\n },\n set: function (value) {\n this.internalTextRenderingMode = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGraphicsState;\n}());\nexport { PdfGraphicsState };\nvar TransparencyData = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `TransparencyData` class.\n * @private\n */\n function TransparencyData(alphaPen, alphaBrush, blendMode) {\n this.alphaPen = alphaPen;\n this.alphaBrush = alphaBrush;\n this.blendMode = blendMode;\n }\n return TransparencyData;\n}());\n","import { PdfStream } from './../primitives/pdf-stream';\nimport { PdfGraphics, GetResourceEventHandler } from './../graphics/pdf-graphics';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * The `PdfPageLayer` used to create layers in PDF document.\n * @private\n */\nvar PdfPageLayer = /** @class */ (function () {\n function PdfPageLayer(page, streamClipPageTemplates) {\n // private bSaved : boolean;\n /**\n * Local Variable to store the `color space` of the document.\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n /**\n * Local Variable to set `visibility`.\n * @default true\n * @private\n */\n this.isVisible = true;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n this.sublayer = false;\n /**\n * Local variable to store `length` of the graphics.\n * @default 0\n * @private\n */\n this.contentLength = 0;\n /**\n * Instance for `PdfDictionaryProperties` Class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n if (page === null) {\n throw new Error('ArgumentNullException:page');\n }\n this.pdfPage = page;\n this.clipPageTemplates = true;\n if (typeof streamClipPageTemplates === 'undefined') {\n this.content = new PdfStream();\n }\n else if (streamClipPageTemplates instanceof PdfStream || streamClipPageTemplates === null) {\n if (streamClipPageTemplates === null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.content = streamClipPageTemplates;\n }\n else {\n this.content = new PdfStream();\n this.clipPageTemplates = streamClipPageTemplates;\n }\n }\n Object.defineProperty(PdfPageLayer.prototype, \"colorSpace\", {\n // Properties\n /**\n * Get or set the `color space`.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"page\", {\n /**\n * Gets parent `page` of the layer.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layerId\", {\n /**\n * Gets and Sets the `id of the layer`.\n * @private\n */\n get: function () {\n return this.layerid;\n },\n set: function (value) {\n this.layerid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"name\", {\n /**\n * Gets or sets the `name` of the layer.\n * @private\n */\n get: function () {\n return this.layerName;\n },\n set: function (value) {\n this.layerName = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"visible\", {\n /**\n * Gets or sets the `visibility` of the layer.\n * @private\n */\n get: function () {\n return this.isVisible;\n },\n set: function (value) {\n this.isVisible = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"graphics\", {\n /**\n * Gets `Graphics` context of the layer, used to draw various graphical content on layer.\n * @private\n */\n get: function () {\n if ((this.pdfGraphics == null)) {\n this.initializeGraphics(this.page);\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layers\", {\n /**\n * Gets the collection of `PdfPageLayer`, this collection handle by the class 'PdfPageLayerCollection'.\n * @private\n */\n get: function () {\n if (this.layer == null) {\n this.layer = new PdfPageLayerCollection(this.page);\n this.layer.sublayer = true;\n return this.layer;\n }\n else {\n return this.layer;\n }\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Adds` a new PDF Page layer.\n * @private\n */\n PdfPageLayer.prototype.add = function () {\n var layer = new PdfPageLayer(this.pdfPage);\n layer.name = '';\n return layer;\n };\n /**\n * Returns a value indicating the `sign` of a single-precision floating-point number.\n * @private\n */\n PdfPageLayer.prototype.sign = function (number) {\n if (number === 0) {\n return 0;\n }\n else if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n };\n /**\n * `Initializes Graphics context` of the layer.\n * @private\n */\n PdfPageLayer.prototype.initializeGraphics = function (page) {\n var oPage = page;\n var gr = new GetResourceEventHandler(this.page);\n var cropBox = null;\n this.pdfGraphics = new PdfGraphics(page.size, gr, this.content);\n this.pdfGraphics.mediaBoxUpperRightBound = 0;\n if (oPage != null) {\n var sc = oPage.section.parent;\n if (sc != null) {\n this.pdfGraphics.colorSpace = sc.document.colorSpace;\n this.colorSpace = sc.document.colorSpace;\n }\n }\n // Transform coordinates to the left/top and activate margins.\n var isSame = (this.sign(page.origin.y) === this.sign(page.origin.x));\n // if (page != null) {\n if (page.origin.x >= 0 && page.origin.y >= 0 || !(isSame)) {\n this.pdfGraphics.initializeCoordinates();\n }\n else {\n // this.m_graphics.InitializeCoordinates(page);\n }\n var clipRect = oPage.section.getActualBounds(oPage, true);\n var margins = oPage.section.pageSettings.margins;\n if (this.clipPageTemplates) {\n if (page.origin.x >= 0 && page.origin.y >= 0) {\n this.pdfGraphics.clipTranslateMargins(clipRect);\n }\n }\n else {\n this.graphics.clipTranslateMargins(clipRect.x, clipRect.y, margins.left, margins.top, margins.right, margins.bottom);\n }\n this.pdfGraphics.setLayer(this);\n // this.bSaved = false;\n };\n Object.defineProperty(PdfPageLayer.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPageLayer;\n}());\nexport { PdfPageLayer };\n","/**\n * PdfCollection.ts class for EJ2-PDF\n * The class used to handle the collection of PdF objects.\n */\nvar PdfCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `Collection` class.\n * @private\n */\n function PdfCollection() {\n //\n }\n Object.defineProperty(PdfCollection.prototype, \"count\", {\n // Properties\n /**\n * Gets the `Count` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCollection.prototype, \"list\", {\n /**\n * Gets the `list` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCollection;\n}());\nexport { PdfCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfPageLayerCollection.ts class for EJ2-PDF\n */\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfPageLayer } from './pdf-page-layer';\nimport { PdfCollection } from './../general/pdf-collection';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfStream } from './../primitives/pdf-stream';\n/**\n * The class provides methods and properties to handle the collections of `PdfPageLayer`.\n */\nvar PdfPageLayerCollection = /** @class */ (function (_super) {\n __extends(PdfPageLayerCollection, _super);\n function PdfPageLayerCollection(page) {\n var _this = _super.call(this) || this;\n /**\n * Stores the `number of first level layers` in the document.\n * @default 0\n * @private\n */\n _this.parentLayerCount = 0;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n _this.sublayer = false;\n /**\n * Stores the `optional content dictionary`.\n * @private\n */\n _this.optionalContent = new PdfDictionary();\n if (page instanceof PdfPageBase) {\n // if (page == null) {\n // throw new Error('ArgumentNullException:page');\n // }\n _this.page = page;\n var lPage = page;\n // if (lPage != null) {\n _this.parseLayers(lPage);\n // }\n }\n return _this;\n }\n PdfPageLayerCollection.prototype.items = function (index, value) {\n if (typeof index === 'number' && typeof value === 'undefined') {\n var obj = this.list[index];\n return obj;\n }\n else {\n if (value == null) {\n throw new Error('ArgumentNullException: layer');\n }\n if (value.page !== this.page) {\n throw new Error('ArgumentException: The layer belongs to another page');\n }\n // // Add/remove the layer.\n // let layer : PdfPageLayer = this.items(index);\n // if (layer != null) {\n // this.RemoveLayer(layer);\n // }\n // this.List[index] = value;\n // this.InsertLayer(index, value);\n }\n };\n PdfPageLayerCollection.prototype.add = function (firstArgument, secondArgument) {\n if (typeof firstArgument === 'undefined') {\n var layer = new PdfPageLayer(this.page);\n layer.name = '';\n this.add(layer);\n return layer;\n }\n else if (firstArgument instanceof PdfPageLayer) {\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var index = this.list.push(firstArgument);\n // Register layer.\n this.addLayer(index, firstArgument);\n return index;\n }\n else {\n return 0;\n }\n };\n /**\n * Registers `layer` at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.addLayer = function (index, layer) {\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.add(reference);\n };\n // private RemoveLayer(layer : PdfPageLayer) : void {\n // if (layer == null) {\n // throw new Error('ArgumentNullException:layer');\n // }\n // let reference : PdfReferenceHolder = new PdfReferenceHolder(layer);\n // if (this.page != null) {\n // this.page.Contents.Remove(reference);\n // }\n // }\n /**\n * Inserts `PdfPageLayer` into the collection at specified index.\n * @private\n */\n PdfPageLayerCollection.prototype.insert = function (index, layer) {\n // if (index < 0)\n // throw new ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\");\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var list = [];\n var length = this.list.length;\n for (var i = index; i < length; i++) {\n list.push(this.list.pop());\n }\n this.list.push(layer);\n for (var i = 0; i < list.length; i++) {\n this.list.push(list[i]);\n }\n // Register layer.\n this.insertLayer(index, layer);\n };\n /**\n * Registers layer at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.insertLayer = function (index, layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException:layer');\n }\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.insert(index, reference);\n };\n // tslint:disable\n /**\n * `Parses the layers`.\n * @private\n */\n PdfPageLayerCollection.prototype.parseLayers = function (loadedPage) {\n // if (loadedPage == null) {\n // throw new Error('ArgumentNullException:loadedPage');\n // }\n var contents = this.page.contents;\n var resource = this.page.getResources();\n var crossTable = null;\n var ocproperties = null;\n var propertie = null;\n var isLayerAdded = false;\n // if (loadedPage instanceof PdfPage) {\n crossTable = loadedPage.crossTable;\n // } else {\n // crossTable = (loadedPage as PdfLoadedPage).CrossTable;\n // Propertie = PdfCrossTable.Dereference(Resource[DictionaryProperties.Properties]) as PdfDictionary;\n // ocproperties = PdfCrossTable.Dereference((loadedPage as PdfLoadedPage).\n // Document.Catalog[DictionaryProperties.OCProperties]) as PdfDictionary;\n // }\n var saveStream = new PdfStream();\n var restoreStream = new PdfStream();\n var saveState = 'q';\n var newLine = '\\n';\n var restoreState = 'Q';\n // for (let index : number = 0; index < contents.Items.length; index++) {\n // let obj : IPdfPrimitive = contents[index];\n // let stream : PdfStream = crossTable.GetObject(obj) as PdfStream;\n // if (stream == null)\n // throw new PdfDocumentException(\"Invalid contents array.\");\n // // if (stream.Compress)\n // {\n // if (!loadedPage.Imported)\n // stream.Decompress();\n // }\n // byte[] contentId = stream.Data;\n // string str = PdfString.ByteToString(contentId);\n // if (!loadedPage.Imported && (contents.Count == 1) && ((stream.Data[stream.Data.Length - 2] ==\n // RestoreState) || (stream.Data[stream.Data.Length - 1] == RestoreState)))\n // {\n // byte[] content = stream.Data;\n // byte[] data = new byte[content.Length + 4];\n // data[0] = SaveState;\n // data[1] = NewLine;\n // content.CopyTo(data, 2);\n // data[data.Length - 2] = NewLine;\n // data[data.Length - 1] = RestoreState;\n // stream.Data = data;\n // }\n // if (ocproperties != null)\n // {\n // if (Propertie != null)\n // {\n // foreach (KeyValuePair prop in Propertie.Items)\n // {\n // String Key = prop.Key.ToString();\n // PdfReferenceHolder refh = prop.Value as PdfReferenceHolder;\n // PdfDictionary Dict = null;\n // if (refh != null)\n // {\n // Dict = refh.Object as PdfDictionary;\n // }\n // else\n // {\n // Dict = prop.Value as PdfDictionary;\n // }\n // PdfDictionary m_usage = PdfCrossTable.Dereference(Dict[DictionaryProperties.Usage]) as PdfDictionary;\n // if (m_usage != null)\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // PdfDictionary printoption = PdfCrossTable.Dereference(m_usage[DictionaryProperties.Print])\n // as PdfDictionary;\n // if (printoption != null)\n // {\n // layer.m_printOption = printoption;\n // foreach (KeyValuePair value in printoption.Items)\n // {\n // if (value.Key.Value.Equals(DictionaryProperties.PrintState))\n // {\n // string printState = (value.Value as PdfName).Value;\n // if (printState.Equals(DictionaryProperties.OCGON))\n // {\n // layer.PrintState = PdfPrintState.AlwaysPrint;\n // break;\n // }\n // else\n // {\n // layer.PrintState = PdfPrintState.NeverPrint;\n // break;\n // }\n // }\n // }\n // }\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // List.add(layer);\n // isLayerAdded = true;\n // if(!str.Contains(\"EMC\"))\n // break;\n // }\n // }\n // else\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // if(Dict.ContainsKey(DictionaryProperties.Name))\n // {\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // }\n // isLayerAdded = true;\n // break;\n // }\n // }\n // }\n // }\n // }\n // if (!isLayerAdded)\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // }\n // else\n // isLayerAdded = false;\n // }\n var saveData = [];\n saveData.push(saveState);\n saveStream.data = saveData;\n contents.insert(0, new PdfReferenceHolder(saveStream));\n saveData = [];\n saveData.push(restoreState);\n restoreStream.data = saveData;\n contents.insert(contents.count, new PdfReferenceHolder(restoreStream));\n };\n /**\n * Returns `index of` the `PdfPageLayer` in the collection if exists, -1 otherwise.\n * @private\n */\n PdfPageLayerCollection.prototype.indexOf = function (layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException: layer');\n }\n var index = this.list.indexOf(layer);\n return index;\n };\n return PdfPageLayerCollection;\n}(PdfCollection));\nexport { PdfPageLayerCollection };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfResources } from './../graphics/pdf-resources';\n/**\n * The abstract base class for all pages,\n * `PdfPageBase` class provides methods and properties to create PDF pages and its elements.\n * @private\n */\nvar PdfPageBase = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `PdfPageBase` class.\n * @private\n */\n function PdfPageBase(dictionary) {\n /**\n * `Index` of the default layer.\n * @default -1.\n * @private\n */\n this.defLayerIndex = -1;\n /**\n * Local variable to store if page `updated`.\n * @default false.\n * @private\n */\n this.modified = false;\n /**\n * Instance of `DictionaryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pageDictionary = dictionary;\n }\n Object.defineProperty(PdfPageBase.prototype, \"section\", {\n //Properties\n /**\n * Gets the `section` of a page.\n * @private\n */\n get: function () {\n // if (this.pdfSection === null) {\n // throw new Error('PdfException : Page must be added to some section before using.');\n // }\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"dictionary\", {\n /**\n * Gets the page `dictionary`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayer\", {\n /**\n * Gets the `default layer` of the page (Read only).\n * @private\n */\n get: function () {\n var layer = this.layers;\n var index = this.defaultLayerIndex;\n var returnlayer = layer.items(index);\n return returnlayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayerIndex\", {\n /**\n * Gets or sets `index of the default layer`.\n * @private\n */\n get: function () {\n if (this.layerCollection.count === 0 || this.defLayerIndex === -1) {\n var layer = this.layerCollection.add();\n this.defLayerIndex = this.layerCollection.indexOf(layer);\n }\n return this.defLayerIndex;\n },\n /**\n * Gets or sets` index of the default layer`.\n * @private\n */\n set: function (value) {\n if (value < 0 || value > this.layers.count - 1) {\n throw new Error('ArgumentOutOfRangeException : value, Index can not be less 0 and greater Layers.Count - 1');\n }\n else {\n this.defLayerIndex = value;\n this.modified = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"layers\", {\n /**\n * Gets the collection of the page's `layers` (Read only).\n * @private\n */\n get: function () {\n if (this.layerCollection == null || typeof this.layerCollection === 'undefined') {\n this.layerCollection = new PdfPageLayerCollection(this);\n }\n return this.layerCollection;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return an instance of `PdfResources` class.\n * @private\n */\n PdfPageBase.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n Object.defineProperty(PdfPageBase.prototype, \"contents\", {\n /**\n * Gets `array of page's content`.\n * @private\n */\n get: function () {\n var obj = this.pageDictionary.items.getValue(this.dictionaryProperties.contents);\n var contents = obj;\n var rh = obj;\n if (contents == null) {\n contents = new PdfArray();\n this.pageDictionary.items.setValue(this.dictionaryProperties.contents, contents);\n }\n return contents;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `resources`.\n * @private\n */\n PdfPageBase.prototype.setResources = function (res) {\n this.resources = res;\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n this.modified = true;\n };\n return PdfPageBase;\n}());\nexport { PdfPageBase };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { SizeF, RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * `PdfAnnotationCollection` class represents the collection of 'PdfAnnotation' objects.\n * @private\n */\nvar PdfAnnotationCollection = /** @class */ (function () {\n function PdfAnnotationCollection(page) {\n // Constants\n /**\n * `Error` constant message.\n * @private\n */\n this.alreadyExistsAnnotationError = 'This annotatation had been already added to page';\n /**\n * `Error` constant message.\n * @private\n */\n this.missingAnnotationException = 'Annotation is not contained in collection.';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Array of the `annotations`.\n * @private\n */\n this.internalAnnotations = new PdfArray();\n /**\n * privte `list` for the annotations.\n * @private\n */\n this.lists = [];\n if (typeof page !== 'undefined') {\n this.page = page;\n }\n }\n Object.defineProperty(PdfAnnotationCollection.prototype, \"annotations\", {\n /**\n * Gets the `PdfAnnotation` object at the specified index. Read-Only.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n set: function (value) {\n this.internalAnnotations = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Adds` a new annotation to the collection.\n * @private\n */\n PdfAnnotationCollection.prototype.add = function (annotation) {\n // this.SetPrint(annotation);\n this.doAdd(annotation);\n };\n /**\n * `Adds` a Annotation to collection.\n * @private\n */\n /* tslint:disable */\n PdfAnnotationCollection.prototype.doAdd = function (annotation) {\n if (typeof annotation.destination !== 'undefined') {\n var layout = new PdfStringLayouter();\n var layoutResult = layout.layout(annotation.text, annotation.font, annotation.stringFormat, new SizeF((annotation.bounds.width), 0), false, new SizeF(0, 0));\n var lastPosition = annotation.bounds.y;\n if (layoutResult.lines.length === 1) {\n var size = annotation.font.measureString(layoutResult.lines[0].text);\n annotation.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annotation.text = layoutResult.lines[0].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, annotation.bounds.y, annotation.bounds.width, annotation.bounds.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n }\n else {\n for (var i = 0; i < layoutResult.lines.length; i++) {\n var size = annotation.font.measureString(layoutResult.lines[i].text);\n if (i === 0) {\n annotation.bounds = new RectangleF(annotation.bounds.x, lastPosition, size.width, size.height);\n annotation.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, lastPosition, size.width, size.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n //Update y for drawing next line of the text.\n lastPosition += annotation.bounds.height;\n }\n else {\n var annot = annotation.clone();\n annot.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annot.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annot.text, annot.font, null, annot.brush, annot.bounds.x, annot.bounds.y, annot.bounds.width, annot.bounds.height, null);\n //Add annotation to dictionary.\n annot.setPage(this.page);\n this.setColor(annot);\n this.internalAnnotations.add(new PdfReferenceHolder(annot));\n this.lists.push(annot);\n //Update y for drawing next line of the text.\n lastPosition += annot.bounds.height;\n }\n }\n }\n }\n else {\n annotation.setPage(this.page);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n return this.lists.push(annotation);\n }\n };\n /* tslint:enable */\n /**\n * `Set a color of an annotation`.\n * @private\n */\n PdfAnnotationCollection.prototype.setColor = function (annotation) {\n var cs = PdfColorSpace.Rgb;\n var colours = annotation.color.toArray(cs);\n annotation.dictionary.items.setValue(this.dictionaryProperties.c, colours);\n };\n Object.defineProperty(PdfAnnotationCollection.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` representing this object.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotationCollection;\n}());\nexport { PdfAnnotationCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary, SaveTemplateEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { SizeF } from './../drawing/pdf-drawing';\nimport { PdfAnnotationCollection } from './../annotations/annotation-collection';\nimport { PdfPageLayer } from './pdf-page-layer';\n/**\n * Provides methods and properties to create pages and its elements.\n * `PdfPage` class inherited from the `PdfPageBase` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPage = /** @class */ (function (_super) {\n __extends(PdfPage, _super);\n //constructors\n /**\n * Initialize the new instance for `PdfPage` class.\n * @private\n */\n function PdfPage() {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Stores the instance of `PdfAnnotationCollection` class.\n * @hidden\n * @default null\n * @private\n */\n _this.annotationCollection = null;\n /**\n * Stores the instance of `PageBeginSave` event for Page Number Field.\n * @default null\n * @private\n */\n _this.beginSave = null;\n _this.initialize();\n return _this;\n }\n Object.defineProperty(PdfPage.prototype, \"document\", {\n //Properties\n /**\n * Gets current `document`.\n * @private\n */\n get: function () {\n if (this.section !== null && this.section.parent !== null) {\n return this.section.parent.document;\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"graphics\", {\n /**\n * Get the current `graphics`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // get graphics\n * let graphics : PdfGraphics = page1.graphics;\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var result = this.defaultLayer.graphics;\n result.currentPage = this;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"crossTable\", {\n /**\n * Gets the `cross table`.\n * @private\n */\n get: function () {\n if (this.section === null) {\n throw new Error('PdfDocumentException : Page is not created');\n }\n return this.section.parent === null ? this.section.parentDocument.crossTable : this.section.parent.document.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"size\", {\n /**\n * Gets the size of the PDF page- Read only.\n * @public\n */\n get: function () {\n return this.section.pageSettings.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"origin\", {\n /**\n * Gets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.section.pageSettings.origin;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"annotations\", {\n /**\n * Gets a collection of the `annotations` of the page- Read only.\n * @private\n */\n get: function () {\n if (this.annotationCollection == null) {\n this.annotationCollection = new PdfAnnotationCollection(this);\n // if (!this.Dictionary.ContainsKey(this.dictionaryProperties.annots)) {\n this.dictionary.items.setValue(this.dictionaryProperties.annots, this.annotationCollection.element);\n // }\n this.annotationCollection.annotations = this.dictionary.items.getValue(this.dictionaryProperties.annots);\n }\n return this.annotationCollection;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` a page.\n * @private\n */\n PdfPage.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName('Page'));\n this.dictionary.pageBeginDrawTemplate = new SaveTemplateEventHandler(this);\n };\n /**\n * Sets parent `section` to the page.\n * @private\n */\n PdfPage.prototype.setSection = function (section) {\n this.section = section;\n this.dictionary.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(section));\n };\n /**\n * `Resets the progress`.\n * @private\n */\n PdfPage.prototype.resetProgress = function () {\n this.isProgressOn = false;\n };\n /**\n * Get the page size reduced by page margins and page template dimensions.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the specified point using `getClientSize` method\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfPage.prototype.getClientSize = function () {\n var returnValue = this.section.getActualBounds(this, true);\n return new SizeF(returnValue.width, returnValue.height);\n };\n /**\n * Helper method to retrive the instance of `PageBeginSave` event for header and footer elements.\n * @private\n */\n PdfPage.prototype.pageBeginSave = function () {\n var doc = this.document;\n if (typeof doc !== undefined && doc != null) {\n this.drawPageTemplates(doc);\n }\n if (this.beginSave != null && typeof this.beginSave !== 'undefined') {\n this.beginSave(this);\n }\n };\n /**\n * Helper method to draw template elements.\n * @private\n */\n PdfPage.prototype.drawPageTemplates = function (document) {\n // Draw Background templates.\n var hasBackTemplates = this.section.containsTemplates(document, this, false);\n if (hasBackTemplates) {\n var backLayer = new PdfPageLayer(this, false);\n this.layers.insert(0, backLayer);\n this.section.drawTemplates(this, backLayer, document, false);\n if (backLayer.graphics !== null && typeof backLayer.graphics !== 'undefined') {\n for (var i = 0; i < backLayer.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = backLayer.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(backLayer.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n }\n // Draw Foreground templates.\n var hasFrontTemplates = this.section.containsTemplates(document, this, true);\n if (hasFrontTemplates) {\n var frontLayer = new PdfPageLayer(this, false);\n this.layers.add(frontLayer);\n this.section.drawTemplates(this, frontLayer, document, true);\n }\n };\n return PdfPage;\n}(PdfPageBase));\nexport { PdfPage };\n","/**\n * Provides data for `PageAddedEventHandler` event.\n * This event raises when adding the new PDF page to the PDF document.\n */\nvar PageAddedEventArgs = /** @class */ (function () {\n function PageAddedEventArgs(page) {\n if (typeof page !== 'undefined') {\n this.pdfPage = page;\n }\n else {\n this.pdfPage = null;\n }\n }\n Object.defineProperty(PageAddedEventArgs.prototype, \"page\", {\n /**\n * Gets the `newly added page`.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return PageAddedEventArgs;\n}());\nexport { PageAddedEventArgs };\n","/**\n * Represents the `collection of pages in a section`.\n * @private\n */\nvar PdfSectionPageCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfSectionPageCollection` class.\n * @private\n */\n function PdfSectionPageCollection(section) {\n // Fields\n /**\n * @hidden\n * @private\n */\n this.pdfSection = null;\n if (section == null) {\n throw Error('ArgumentNullException(\"section\")');\n }\n this.section = section;\n }\n Object.defineProperty(PdfSectionPageCollection.prototype, \"section\", {\n // Properties\n /**\n * Gets the `PdfPage` at the specified index.\n * @private\n */\n get: function () {\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public Methods\n /**\n * `Determines` whether the specified page is within the collection.\n * @private\n */\n PdfSectionPageCollection.prototype.contains = function (page) {\n return this.section.contains(page);\n };\n /**\n * `Removes` the specified page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.remove = function (page) {\n this.section.remove(page);\n };\n /**\n * `Adds` a new page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.add = function () {\n return this.section.add();\n };\n return PdfSectionPageCollection;\n}());\nexport { PdfSectionPageCollection };\n","import { TemplateType } from './../pages/enum';\n// import { PdfStampCollection } from `./../Pages/PdfStampCollection`;\n/**\n * `PdfDocumentTemplate` class encapsulates a page template for all the pages in the document.\n * @private\n */\nvar PdfDocumentTemplate = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfDocumentTemplate` class.\n * @public\n */\n function PdfDocumentTemplate() {\n //\n }\n Object.defineProperty(PdfDocumentTemplate.prototype, \"left\", {\n // private m_stamps : PdfStampCollection;\n // Properties\n /**\n * `Left` page template object.\n * @public\n */\n get: function () {\n return this.leftTemplate;\n },\n set: function (value) {\n this.leftTemplate = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"top\", {\n /**\n * `Top` page template object.\n * @public\n */\n get: function () {\n return this.topTemplate;\n },\n set: function (value) {\n this.topTemplate = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"right\", {\n /**\n * `Right` page template object.\n * @public\n */\n get: function () {\n return this.rightTemplate;\n },\n set: function (value) {\n this.rightTemplate = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"bottom\", {\n /**\n * `Bottom` page template object.\n * @public\n */\n get: function () {\n return this.bottomTemplate;\n },\n set: function (value) {\n this.bottomTemplate = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenLeft\", {\n /**\n * `EvenLeft` page template object.\n * @public\n */\n get: function () {\n return this.evenLeft;\n },\n set: function (value) {\n this.evenLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenTop\", {\n /**\n * `EvenTop` page template object.\n * @public\n */\n get: function () {\n return this.evenTop;\n },\n set: function (value) {\n this.evenTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenRight\", {\n /**\n * `EvenRight` page template object.\n * @public\n */\n get: function () {\n return this.evenRight;\n },\n set: function (value) {\n this.evenRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenBottom\", {\n /**\n * `EvenBottom` page template object.\n * @public\n */\n get: function () {\n return this.evenBottom;\n },\n set: function (value) {\n this.evenBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddLeft\", {\n /**\n * `OddLeft` page template object.\n * @public\n */\n get: function () {\n return this.oddLeft;\n },\n set: function (value) {\n this.oddLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddTop\", {\n /**\n * `OddTop` page template object.\n * @public\n */\n get: function () {\n return this.oddTop;\n },\n set: function (value) {\n this.oddTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddRight\", {\n /**\n * `OddRight` page template object.\n * @public\n */\n get: function () {\n return this.oddRight;\n },\n set: function (value) {\n this.oddRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddBottom\", {\n /**\n * `OddBottom` page template object.\n * @public\n */\n get: function () {\n return this.oddBottom;\n },\n set: function (value) {\n this.oddBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Returns `left` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getLeft = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenLeft != null) ? this.EvenLeft : this.left;\n }\n else {\n template = (this.OddLeft != null) ? this.OddLeft : this.left;\n }\n // }\n return template;\n };\n /**\n * Returns `top` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getTop = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenTop != null) ? this.EvenTop : this.top;\n }\n else {\n template = (this.OddTop != null) ? this.OddTop : this.top;\n }\n // }\n return template;\n };\n /**\n * Returns `right` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getRight = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenRight != null) ? this.EvenRight : this.right;\n }\n else {\n template = (this.OddRight != null) ? this.OddRight : this.right;\n }\n // }\n return template;\n };\n /**\n * Returns `bottom` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getBottom = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenBottom != null) ? this.EvenBottom : this.bottom;\n }\n else {\n template = (this.OddBottom != null) ? this.OddBottom : this.bottom;\n }\n // }\n return template;\n };\n /**\n * Checks whether the page `is even`.\n * @private\n */\n PdfDocumentTemplate.prototype.isEven = function (page) {\n var pages = page.section.document.pages;\n var index = 0;\n if (pages.pageCollectionIndex.containsKey(page)) {\n index = pages.pageCollectionIndex.getValue(page) + 1;\n }\n else {\n index = pages.indexOf(page) + 1;\n }\n var even = ((index % 2) === 0);\n return even;\n };\n /**\n * Checks a `template element`.\n * @private\n */\n PdfDocumentTemplate.prototype.checkElement = function (templateElement, type) {\n if (templateElement != null) {\n if ((typeof templateElement.type !== 'undefined') && (templateElement.type !== TemplateType.None)) {\n throw new Error('NotSupportedException:Can not reassign the template element. Please, create new one.');\n }\n templateElement.type = type;\n }\n return templateElement;\n };\n return PdfDocumentTemplate;\n}());\nexport { PdfDocumentTemplate };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfSectionTemplate.ts class for EJ2-PDF\n */\nimport { PdfDocumentTemplate } from './../document/pdf-document-template';\n/**\n * Represents a `page template` for all the pages in the section.\n */\nvar PdfSectionTemplate = /** @class */ (function (_super) {\n __extends(PdfSectionTemplate, _super);\n // Constructors\n /**\n * `Creates a new object`.\n * @private\n */\n function PdfSectionTemplate() {\n var _this = _super.call(this) || this;\n _this.leftValue = _this.topValue = _this.rightValue = _this.bottomValue = _this.stampValue = true;\n return _this;\n }\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentLeftTemplate\", {\n // Properties\n /**\n * Gets or sets value indicating whether parent `Left page template should be used or not`.\n * @private\n */\n get: function () {\n return this.leftValue;\n },\n set: function (value) {\n this.leftValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentTopTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Top page template should be used or not`.\n * @private\n */\n get: function () {\n return this.topValue;\n },\n set: function (value) {\n this.topValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentRightTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Right page template should be used or not`.\n * @private\n */\n get: function () {\n return this.rightValue;\n },\n set: function (value) {\n this.rightValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentBottomTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Bottom page template should be used or not`.\n * @private\n */\n get: function () {\n return this.bottomValue;\n },\n set: function (value) {\n this.bottomValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentStamps\", {\n /**\n * Gets or sets value indicating whether the `stamp value` is true or not.\n * @private\n */\n get: function () {\n return this.stampValue;\n },\n set: function (value) {\n this.stampValue = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfSectionTemplate;\n}(PdfDocumentTemplate));\nexport { PdfSectionTemplate };\n","import { PdfPage } from './pdf-page';\nimport { PageAddedEventArgs } from './page-added-event-arguments';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { SaveSectionEventHandler } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfSectionCollection } from './pdf-section-collection';\nimport { PdfSectionPageCollection } from './pdf-section-page-collection';\nimport { RectangleF } from './../drawing/pdf-drawing';\nimport { PdfSectionTemplate } from './pdf-section-templates';\n/**\n * Represents a `section` entity. A section it's a set of the pages with similar page settings.\n */\nvar PdfSection = /** @class */ (function () {\n function PdfSection(document, pageSettings) {\n //Fields\n //public PageAdded() : PageAddedEventArgs.PageAddedEventHandler = new PageAddedEventArgs.PageAddedEventHandler(Object,args)\n /**\n * @hidden\n * @private\n */\n this.pageAdded = new PageAddedEventArgs();\n /**\n * @hidden\n * @private\n */\n this.pdfPages = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pdfDocument = document;\n if (typeof pageSettings === 'undefined') {\n this.settings = document.pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n else {\n this.settings = pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n this.initialize();\n }\n Object.defineProperty(PdfSection.prototype, \"parent\", {\n //Property\n /**\n * Gets or sets the `parent`.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n set: function (value) {\n this.sectionCollection = value;\n this.section.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"parentDocument\", {\n /**\n * Gets the `parent document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pageSettings\", {\n /**\n * Gets or sets the `page settings` of the section.\n * @private\n */\n get: function () {\n return this.settings;\n },\n set: function (value) {\n if (value != null) {\n this.settings = value;\n }\n else {\n throw Error('Value can not be null.');\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.section;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"count\", {\n /**\n * Gets the `count` of the pages in the section.\n * @private\n */\n get: function () {\n return this.pagesReferences.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"template\", {\n /**\n * Gets or sets a `template` for the pages in the section.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfSectionTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"document\", {\n /**\n * Gets the `document`.\n * @private\n */\n get: function () {\n return this.sectionCollection.document;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pages\", {\n /**\n * Gets the collection of `pages` in a section (Read only)\n * @private\n */\n get: function () {\n if (this.pagesCollection == null || typeof this.pagesCollection === 'undefined') {\n this.pagesCollection = new PdfSectionPageCollection(this);\n }\n return this.pagesCollection;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * `Return the page collection` of current section.\n * @private\n */\n PdfSection.prototype.getPages = function () {\n return this.pdfPages;\n };\n /**\n * `Translates` point into native coordinates of the page.\n * @private\n */\n PdfSection.prototype.pointToNativePdf = function (page, point) {\n var bounds = this.getActualBounds(page, true);\n point.x += bounds.x;\n point.y = this.pageSettings.height - (point.y);\n return point;\n };\n /**\n * Sets the page setting of the current section.\n * @public\n * @param settings Instance of `PdfPageSettings`\n */\n PdfSection.prototype.setPageSettings = function (settings) {\n this.settings = settings;\n this.state.orientation = settings.orientation;\n this.state.rotate = settings.rotate;\n this.state.size = settings.size;\n this.state.origin = settings.origin;\n };\n /**\n * `Initializes` the object.\n * @private\n */\n PdfSection.prototype.initialize = function () {\n this.pagesReferences = new PdfArray();\n this.section = new PdfDictionary();\n this.state = new PageSettingsState(this.pdfDocument);\n this.section.sectionBeginSave = new SaveSectionEventHandler(this, this.state);\n this.pageCount = new PdfNumber(0);\n this.section.items.setValue(this.dictionaryProperties.count, this.pageCount);\n this.section.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.pages));\n this.section.items.setValue(this.dictionaryProperties.kids, this.pagesReferences);\n };\n /**\n * Checks whether any template should be printed on this layer.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground Layer z-order.\n * @returns True - if some content should be printed on the layer, False otherwise.\n */\n PdfSection.prototype.containsTemplates = function (document, page, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionTemplates = this.getSectionTemplates(page, foreground);\n return (documentHeaders.length > 0 || sectionTemplates.length > 0);\n };\n /**\n * Returns array of the document templates.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param headers If true - return headers/footers, if false - return simple templates.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the document templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getDocumentTemplates = function (document, page, foreground) {\n var templates = [];\n if (this.template.applyDocumentTopTemplate && document.template.getTop(page) != null) {\n if ((!(document.template.getTop(page).foreground || foreground)) || (document.template.getTop(page).foreground && foreground)) {\n templates.push(document.template.getTop(page));\n }\n }\n if (this.template.applyDocumentBottomTemplate && document.template.getBottom(page) != null) {\n if ((!(document.template.getBottom(page).foreground || foreground)) || (document.template.getBottom(page).foreground && foreground)) {\n templates.push(document.template.getBottom(page));\n }\n }\n if (this.template.applyDocumentLeftTemplate && document.template.getLeft(page) != null) {\n if ((!(document.template.getLeft(page).foreground || foreground)) || (document.template.getLeft(page).foreground && foreground)) {\n templates.push(document.template.getLeft(page));\n }\n }\n if (this.template.applyDocumentRightTemplate && document.template.getRight(page) != null) {\n if ((!(document.template.getRight(page).foreground || foreground)) || (document.template.getRight(page).foreground && foreground)) {\n templates.push(document.template.getRight(page));\n }\n }\n return templates;\n };\n /**\n * Returns array of the section templates.\n * @private\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the section templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getSectionTemplates = function (page, foreground) {\n var templates = [];\n if (this.template.getTop(page) != null) {\n var pageTemplate = this.template.getTop(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getBottom(page) != null) {\n var pageTemplate = this.template.getBottom(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getLeft(page) != null) {\n var pageTemplate = this.template.getLeft(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getRight(page) != null) {\n var pageTemplate = this.template.getRight(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n return templates;\n };\n /* tslint:enable */\n /**\n * `Adds` the specified page.\n * @private\n */\n PdfSection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var r = this.checkPresence(page);\n this.pdfPages.push(page);\n this.pagesReferences.add(r);\n page.setSection(this);\n page.resetProgress();\n this.pageAddedMethod(page);\n }\n };\n /**\n * `Checks the presence`.\n * @private\n */\n PdfSection.prototype.checkPresence = function (page) {\n var rh = new PdfReferenceHolder(page);\n var contains = false;\n var sc = this.parent;\n for (var index = 0; index < sc.section.length; index++) {\n var section = sc.section[index];\n contains = contains || section.contains(page);\n }\n return rh;\n };\n /**\n * `Determines` whether the page in within the section.\n * @private\n */\n PdfSection.prototype.contains = function (page) {\n var index = this.indexOf(page);\n return (0 <= index);\n };\n /**\n * Get the `index of` the page.\n * @private\n */\n PdfSection.prototype.indexOf = function (page) {\n for (var index = 0; index < this.pdfPages.length; index++) {\n if (this.pdfPages[index] === page) {\n return this.pdfPages.indexOf(page);\n }\n }\n var r = new PdfReferenceHolder(page);\n return this.pagesReferences.indexOf(r);\n };\n /**\n * Call two event's methods.\n * @hidden\n * @private\n */\n PdfSection.prototype.pageAddedMethod = function (page) {\n //Create event's arguments\n var args = new PageAddedEventArgs(page);\n this.onPageAdded(args);\n var parent = this.parent;\n parent.document.pages.onPageAdded(args);\n this.pageCount.intValue = this.count;\n };\n /**\n * Called when the page has been added.\n * @hidden\n * @private\n */\n PdfSection.prototype.onPageAdded = function (args) {\n //\n };\n PdfSection.prototype.getActualBounds = function (arg1, arg2, arg3) {\n if (arg1 instanceof PdfPage && typeof arg2 === 'boolean') {\n var result = void 0;\n var document_1 = this.parent.document;\n result = this.getActualBounds(document_1, arg1, arg2);\n return result;\n }\n else {\n arg1 = arg1;\n arg2 = arg2;\n arg3 = arg3;\n var bounds = new RectangleF(0, 0, 0, 0);\n bounds.height = (arg3) ? this.pageSettings.size.height : this.pageSettings.getActualSize().height;\n bounds.width = (arg3) ? this.pageSettings.size.width : this.pageSettings.getActualSize().width;\n var left = this.getLeftIndentWidth(arg1, arg2, arg3);\n var top_1 = this.getTopIndentHeight(arg1, arg2, arg3);\n var right = this.getRightIndentWidth(arg1, arg2, arg3);\n var bottom = this.getBottomIndentHeight(arg1, arg2, arg3);\n bounds.x += left;\n bounds.y += top_1;\n bounds.width -= (left + right);\n bounds.height -= (top_1 + bottom);\n return bounds;\n }\n };\n /**\n * Calculates width of the `left indent`.\n * @private\n */\n PdfSection.prototype.getLeftIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.left : 0;\n var templateWidth = (this.template.getLeft(page) != null) ? this.template.getLeft(page).width : 0;\n var docTemplateWidth = (document.template.getLeft(page) != null) ? document.template.getLeft(page).width : 0;\n value += (this.template.applyDocumentLeftTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the top indent.\n * @private\n */\n PdfSection.prototype.getTopIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.top : 0;\n var templateHeight = (this.template.getTop(page) != null) ? this.template.getTop(page).height : 0;\n var docTemplateHeight = (document.template.getTop(page) != null) ? document.template.getTop(page).height : 0;\n value += (this.template.applyDocumentTopTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * Calculates `width` of the right indent.\n * @private\n */\n PdfSection.prototype.getRightIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.right : 0;\n var templateWidth = (this.template.getRight(page) != null) ? this.template.getRight(page).width : 0;\n var docTemplateWidth = (document.template.getRight(page) != null) ? document.template.getRight(page).width : 0;\n value += (this.template.applyDocumentRightTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the bottom indent.\n * @private\n */\n PdfSection.prototype.getBottomIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.bottom : 0;\n var templateHeight = (this.template.getBottom(page) != null) ? this.template.getBottom(page).height : 0;\n var docTemplateHeight = (document.template.getBottom(page) != null) ? document.template.getBottom(page).height : 0;\n value += (this.template.applyDocumentBottomTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * `Removes` the page from the section.\n * @private\n */\n PdfSection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var index = this.pdfPages.indexOf(page);\n this.pagesReferences.removeAt(index);\n var temproaryPages = [];\n for (var j = 0; j < index; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n for (var j = index + 1; j < this.pdfPages.length; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n this.pdfPages = temproaryPages;\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSection.prototype.applyPageSettings = function (container, parentSettings, state) {\n var bounds = new RectangleF(state.origin, state.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n var rotate = 0;\n rotate = PdfSectionCollection.rotateFactor * state.rotate;\n var angle = new PdfNumber(rotate);\n container.items.setValue(this.dictionaryProperties.rotate, angle);\n };\n /**\n * Catches the Save event of the dictionary.\n * @hidden\n * @private\n */\n PdfSection.prototype.beginSave = function (state, writer) {\n var doc = writer.document;\n this.applyPageSettings(this.section, doc.pageSettings, state);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplates = function (page, layer, document, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionHeaders = this.getSectionTemplates(page, foreground);\n this.drawTemplatesHelper(layer, document, documentHeaders);\n this.drawTemplatesHelper(layer, document, sectionHeaders);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplatesHelper = function (layer, document, templates) {\n if (templates != null && templates.length > 0) {\n var len = templates.length;\n for (var i = 0; i < len; i++) {\n var template = templates[i];\n template.draw(layer, document);\n }\n }\n };\n return PdfSection;\n}());\nexport { PdfSection };\nvar PageSettingsState = /** @class */ (function () {\n //Public Constructor\n /**\n * New instance to store the `PageSettings`.\n * @private\n */\n function PageSettingsState(document) {\n this.pageOrientation = document.pageSettings.orientation;\n this.pageRotate = document.pageSettings.rotate;\n this.pageSize = document.pageSettings.size;\n this.pageOrigin = document.pageSettings.origin;\n }\n Object.defineProperty(PageSettingsState.prototype, \"orientation\", {\n //public Properties\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (value) {\n this.pageOrientation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"rotate\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageRotate;\n },\n set: function (value) {\n this.pageRotate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"size\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.pageSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"origin\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n return PageSettingsState;\n}());\nexport { PageSettingsState };\n","import { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfDictionary, SaveSectionCollectionEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfSection } from './pdf-section';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents the `collection of the sections`.\n * @private\n */\nvar PdfSectionCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n function PdfSectionCollection(document) {\n /**\n * @hidden\n * @private\n */\n this.sections = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (document === null) {\n // throw new Error('ArgumentNullException : document');\n // }\n this.pdfDocument = document.clone();\n this.initialize();\n }\n Object.defineProperty(PdfSectionCollection.prototype, \"section\", {\n //Properties\n /**\n * Gets the `Section` collection.\n */\n get: function () {\n return this.sections;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"document\", {\n /**\n * Gets a parent `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"count\", {\n /**\n * Gets the `number of sections` in a document.\n * @private\n */\n get: function () {\n return this.sections.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pages;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Initializes the object`.\n * @private\n */\n PdfSectionCollection.prototype.initialize = function () {\n this.sectionCount = new PdfNumber(0);\n this.sectionCollection = new PdfArray();\n this.pages = new PdfDictionary();\n this.pages.beginSave = new SaveSectionCollectionEventHandler(this);\n this.pages.items.setValue(this.dictionaryProperties.type, new PdfName('Pages'));\n this.pages.items.setValue(this.dictionaryProperties.kids, this.sectionCollection);\n this.pages.items.setValue(this.dictionaryProperties.count, this.sectionCount);\n this.pages.items.setValue(this.dictionaryProperties.resources, new PdfDictionary());\n this.setPageSettings(this.pages, this.pdfDocument.pageSettings);\n };\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n PdfSectionCollection.prototype.pdfSectionCollection = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException()');\n }\n return this.sections[index];\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSectionCollection.prototype.setPageSettings = function (container, pageSettings) {\n // if (container === null) {\n // throw new Error('ArgumentNullException : container');\n // }\n // if (pageSettings === null) {\n // throw new Error('ArgumentNullException : pageSettings');\n // }\n var bounds = new RectangleF(new PointF(), pageSettings.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n };\n /**\n * `Adds` the specified section.\n * @private\n */\n PdfSectionCollection.prototype.add = function (section) {\n if (typeof section === 'undefined') {\n var section_1 = new PdfSection(this.pdfDocument);\n this.add(section_1);\n return section_1;\n }\n else {\n // if (section === null) {\n // throw new Error('ArgumentNullException : section');\n // }\n var r = this.checkSection(section);\n this.sections.push(section);\n section.parent = this;\n this.sectionCollection.add(r);\n return this.sections.indexOf(section);\n }\n };\n /**\n * `Checks` if the section is within the collection.\n * @private\n */\n PdfSectionCollection.prototype.checkSection = function (section) {\n var r = new PdfReferenceHolder(section);\n var contains = this.sectionCollection.contains(r);\n // if (contains) {\n // throw new Error('ArgumentException : The object can not be added twice to the collection,section');\n // }\n return r;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @private\n */\n PdfSectionCollection.prototype.countPages = function () {\n var count = 0;\n this.sections.forEach(function (n) { return (count += n.count); });\n return count;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @hidden\n * @private\n */\n PdfSectionCollection.prototype.beginSave = function () {\n this.sectionCount.intValue = this.countPages();\n };\n //Fields\n /**\n * Rotate factor for page `rotation`.\n * @default 90\n * @private\n */\n PdfSectionCollection.rotateFactor = 90;\n return PdfSectionCollection;\n}());\nexport { PdfSectionCollection };\n","import { PdfPage } from './pdf-page';\nimport { Dictionary } from './../collections/dictionary';\n/**\n * Represents a virtual collection of all the pages in the document.\n * @private\n */\nvar PdfDocumentPageCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfPageCollection` class.\n * @private\n */\n function PdfDocumentPageCollection(document) {\n /**\n * It holds the page collection with the `index`.\n * @private\n */\n this.pdfPageCollectionIndex = new Dictionary();\n this.document = document;\n }\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"count\", {\n //Property\n /**\n * Gets the total `number of the pages`.\n * @private\n */\n get: function () {\n return this.countPages();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"pageCollectionIndex\", {\n /**\n * Gets a `page index` from the document.\n * @private\n */\n get: function () {\n return this.pdfPageCollectionIndex;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocumentPageCollection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var section = this.getLastSection();\n section.add(page);\n }\n };\n /**\n * Returns `last section` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getLastSection = function () {\n var sc = this.document.sections;\n if (sc.section.length === 0) {\n sc.add();\n }\n var section = sc.section[sc.section.length - 1];\n return section;\n };\n /**\n * Called when `new page has been added`.\n * @private\n */\n PdfDocumentPageCollection.prototype.onPageAdded = function (args) {\n // if (PageAdded !== null)\n // {\n // PageAdded(this, args);\n // }\n };\n /**\n * Gets the `total number of pages`.\n * @private\n */\n PdfDocumentPageCollection.prototype.countPages = function () {\n var sc = this.document.sections;\n var count = 0;\n for (var index = 0; index < sc.section.length; index++) {\n count += sc.section[index].count;\n }\n return count;\n };\n /**\n * Gets the `page object` from page index.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPageByIndex = function (index) {\n return this.getPage(index);\n };\n /**\n * Gets a page by its `index` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPage = function (index) {\n if ((index < 0) || (index >= this.count)) {\n throw Error('ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\")');\n }\n var page = null;\n var sectionStartIndex = 0;\n var sectionCount = 0;\n var pageIndex = 0;\n var length = this.document.sections.count;\n for (var i = 0; i < length; i++) {\n var section = this.document.sections.section[i];\n sectionCount = section.count;\n pageIndex = index - sectionStartIndex;\n // We found a section containing the page.\n if ((index >= sectionStartIndex && pageIndex < sectionCount)) {\n page = section.getPages()[pageIndex];\n break;\n }\n sectionStartIndex += sectionCount;\n }\n return page;\n };\n /**\n * Gets the `index of` the page in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.indexOf = function (page) {\n var index = -1;\n if (page == null) {\n throw new Error('ArgumentNullException: page');\n }\n else {\n var numPages = 0;\n for (var i = 0, len = this.document.sections.count; i < len; i++) {\n var section = this.document.sections.pdfSectionCollection(i);\n index = section.indexOf(page);\n if (index >= 0) {\n index += numPages;\n break;\n }\n else {\n index = -1;\n }\n numPages += section.count;\n }\n }\n return index;\n };\n /**\n * `Removes` the specified page.\n * @private\n */\n PdfDocumentPageCollection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var section = null;\n var len;\n for (var i = 0, len_1 = this.document.sections.count; i < len_1; i++) {\n section = this.document.sections.pdfSectionCollection(i);\n if (section.pages.contains(page)) {\n section.pages.remove(page);\n break;\n }\n }\n return section;\n };\n return PdfDocumentPageCollection;\n}());\nexport { PdfDocumentPageCollection };\n","/**\n * PdfCacheCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\n/**\n * `Collection of the cached objects`.\n * @private\n */\nvar PdfCacheCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfCacheCollection` class.\n * @private\n */\n function PdfCacheCollection() {\n this.referenceObjects = [];\n this.pdfFontCollection = new Dictionary();\n }\n // Public methods\n /**\n * `Searches` for the similar cached object. If is not found - adds the object to the cache.\n * @private\n */\n PdfCacheCollection.prototype.search = function (obj) {\n var result = null;\n var group = this.getGroup(obj);\n if (group == null) {\n group = this.createNewGroup();\n }\n else if (group.length > 0) {\n result = group[0];\n }\n group.push(obj);\n return result;\n };\n // Implementation\n /**\n * `Creates` a new group.\n * @private\n */\n PdfCacheCollection.prototype.createNewGroup = function () {\n var group = [];\n this.referenceObjects.push(group);\n return group;\n };\n /**\n * `Find and Return` a group.\n * @private\n */\n PdfCacheCollection.prototype.getGroup = function (result) {\n var group = null;\n if (result !== null) {\n var len = this.referenceObjects.length;\n for (var i = 0; i < len; i++) {\n if (this.referenceObjects.length > 0) {\n var tGroup = this.referenceObjects[i];\n if (tGroup.length > 0) {\n var representative = tGroup[0];\n if (result.equalsTo(representative)) {\n group = tGroup;\n break;\n }\n }\n else {\n this.removeGroup(tGroup);\n }\n }\n len = this.referenceObjects.length;\n }\n }\n return group;\n };\n /**\n * Remove a group from the storage.\n */\n PdfCacheCollection.prototype.removeGroup = function (group) {\n if (group !== null) {\n var index = this.referenceObjects.indexOf(group);\n this.referenceObjects.slice(index, index + 1);\n }\n };\n PdfCacheCollection.prototype.destroy = function () {\n this.pdfFontCollection = undefined;\n this.referenceObjects = undefined;\n };\n return PdfCacheCollection;\n}());\nexport { PdfCacheCollection };\n","/**\n * PdfStandardFontMetricsFactory.ts class for EJ2-PDF\n */\nimport { PdfFontStyle, PdfFontFamily } from './enum';\nimport { PdfFontMetrics, StandardWidthTable } from './pdf-font-metrics';\n/**\n * @private\n * `Factory of the standard fonts metrics`.\n */\nvar PdfStandardFontMetricsFactory = /** @class */ (function () {\n function PdfStandardFontMetricsFactory() {\n }\n /**\n * Returns `metrics` of the font.\n * @private\n */\n PdfStandardFontMetricsFactory.getMetrics = function (fontFamily, fontStyle, size) {\n var metrics = null;\n switch (fontFamily) {\n case PdfFontFamily.Helvetica:\n metrics = this.getHelveticaMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Courier:\n metrics = this.getCourierMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.TimesRoman:\n metrics = this.getTimesMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Symbol:\n metrics = this.getSymbolMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.ZapfDingbats:\n metrics = this.getZapfDingbatsMetrics(fontFamily, fontStyle, size);\n break;\n default:\n metrics = this.getHelveticaMetrics(PdfFontFamily.Helvetica, fontStyle, size);\n break;\n }\n metrics.name = fontFamily.toString();\n metrics.subScriptSizeFactor = this.subSuperScriptFactor;\n metrics.superscriptSizeFactor = this.subSuperScriptFactor;\n return metrics;\n };\n // Implementation\n /**\n * Creates `Helvetica font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getHelveticaMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaBoldItalicAscent;\n metrics.descent = this.helveticaBoldItalicDescent;\n metrics.postScriptName = this.helveticaBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.helveticaBoldAscent;\n metrics.descent = this.helveticaBoldDescent;\n metrics.postScriptName = this.helveticaBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaItalicAscent;\n metrics.descent = this.helveticaItalicDescent;\n metrics.postScriptName = this.helveticaItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.helveticaAscent;\n metrics.descent = this.helveticaDescent;\n metrics.postScriptName = this.helveticaName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Courier font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getCourierMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierBoldItalicAscent;\n metrics.descent = this.courierBoldItalicDescent;\n metrics.postScriptName = this.courierBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.courierBoldAscent;\n metrics.descent = this.courierBoldDescent;\n metrics.postScriptName = this.courierBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierItalicAscent;\n metrics.descent = this.courierItalicDescent;\n metrics.postScriptName = this.courierItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.courierAscent;\n metrics.descent = this.courierDescent;\n metrics.postScriptName = this.courierName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Times font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getTimesMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesBoldItalicAscent;\n metrics.descent = this.timesBoldItalicDescent;\n metrics.postScriptName = this.timesBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldItalicWidths);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.timesBoldAscent;\n metrics.descent = this.timesBoldDescent;\n metrics.postScriptName = this.timesBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesItalicAscent;\n metrics.descent = this.timesItalicDescent;\n metrics.postScriptName = this.timesItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanItalicWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.timesAscent;\n metrics.descent = this.timesDescent;\n metrics.postScriptName = this.timesName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Symbol font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getSymbolMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.symbolAscent;\n metrics.descent = this.symbolDescent;\n metrics.postScriptName = this.symbolName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.symbolWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * Creates `ZapfDingbats font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getZapfDingbatsMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.zapfDingbatsAscent;\n metrics.descent = this.zapfDingbatsDescent;\n metrics.postScriptName = this.zapfDingbatsName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.zapfDingbatsWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * `Multiplier` os subscript superscript.\n * @private\n */\n PdfStandardFontMetricsFactory.subSuperScriptFactor = 1.52;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaName = 'Helvetica';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldName = 'Helvetica-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicName = 'Helvetica-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicName = 'Helvetica-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierName = 'Courier';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldName = 'Courier-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicName = 'Courier-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicName = 'Courier-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesAscent = 898;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesName = 'Times-Roman';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldAscent = 935;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldName = 'Times-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicAscent = 883;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicDescent = -217;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicName = 'Times-Italic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicAscent = 921;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicName = 'Times-BoldItalic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolAscent = 1010;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolDescent = -293;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolName = 'Symbol';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsAscent = 820;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsDescent = -143;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsName = 'ZapfDingbats';\n /**\n * `Arial` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialWidth = [\n 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,\n 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278,\n 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833,\n 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334,\n 584, 0, 556, 0, 222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 222, 222, 333, 333, 350, 556, 1000, 333, 1000, 500, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 556, 537, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Arial bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialBoldWidth = [\n 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,\n 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333,\n 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889,\n 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389,\n 584, 0, 556, 0, 278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 278, 278, 500, 500, 350, 556, 1000, 333, 1000, 556, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 611, 556, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278,\n 278, 278, 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, 611, 611, 611, 556,\n 611, 556\n ];\n /**\n * `Fixed` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.fixedWidth = [\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600\n ];\n /**\n * `Times` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanWidth = [\n 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564,\n 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889,\n 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333,\n 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778,\n 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444, 480, 200, 480,\n 541, 0, 500, 0, 333, 500, 444, 1000, 500, 500, 333, 1000, 556, 333, 889, 0,\n 611, 0, 0, 333, 333, 444, 444, 350, 500, 1000, 333, 980, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 200, 500, 333, 760, 276, 500, 564, 0,\n 760, 333, 400, 564, 300, 300, 333, 500, 453, 250, 333, 300, 310, 500, 750, 750,\n 750, 444, 722, 722, 722, 722, 722, 722, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 722, 722, 722, 722, 722, 722, 564, 722, 722, 722, 722, 722, 722,\n 556, 500, 444, 444, 444, 444, 444, 444, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 564, 500, 500, 500, 500, 500, 500,\n 500, 500\n ];\n /**\n * `Times bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldWidth = [\n 250, 333, 555, 500, 500, 1000, 833, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944,\n 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333, 278, 333,\n 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833,\n 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444, 394, 220, 394,\n 520, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 1000, 0,\n 667, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 220, 500, 333, 747, 300, 500, 570, 0,\n 747, 333, 400, 570, 300, 300, 333, 556, 540, 250, 333, 300, 330, 500, 750, 750,\n 750, 500, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 778, 778, 778, 778, 778, 570, 778, 722, 722, 722, 722, 722,\n 611, 556, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Times italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanItalicWidth = [\n 250, 333, 420, 500, 500, 833, 778, 214, 333, 333, 500, 675, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675,\n 675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833,\n 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389, 278, 389,\n 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722,\n 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389, 400, 275, 400,\n 541, 0, 500, 0, 333, 500, 556, 889, 500, 500, 333, 1000, 500, 333, 944, 0,\n 556, 0, 0, 333, 333, 556, 556, 350, 500, 889, 333, 980, 389, 333, 667, 0,\n 389, 556, 0, 389, 500, 500, 500, 500, 275, 500, 333, 760, 276, 500, 675, 0,\n 760, 333, 400, 675, 300, 300, 333, 500, 523, 250, 333, 300, 310, 500, 750, 750,\n 750, 500, 611, 611, 611, 611, 611, 611, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 667, 722, 722, 722, 722, 722, 675, 722, 722, 722, 722, 722, 556,\n 611, 500, 500, 500, 500, 500, 500, 500, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 675, 500, 500, 500, 500, 500, 444,\n 500, 444\n ];\n /**\n * `Times bold italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldItalicWidths = [\n 250, 389, 555, 500, 500, 833, 778, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889,\n 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333, 278, 333,\n 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778,\n 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389, 348, 220, 348,\n 570, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 944, 0,\n 611, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 389, 611, 0, 389, 500, 500, 500, 500, 220, 500, 333, 747, 266, 500, 606, 0,\n 747, 333, 400, 570, 300, 300, 333, 576, 500, 250, 333, 300, 300, 500, 750, 750,\n 750, 500, 667, 667, 667, 667, 667, 667, 944, 667, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 722, 722, 722, 722, 722, 570, 722, 722, 722, 722, 722, 611,\n 611, 500, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 444,\n 500, 444\n ];\n /**\n * `Symbol` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolWidth = [\n 250, 333, 713, 500, 549, 833, 778, 439, 333, 333, 500, 549, 250, 549,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278,\n 549, 549, 549, 444, 549, 722, 667, 722, 612, 611, 763, 603, 722, 333,\n 631, 722, 686, 889, 722, 722, 768, 741, 556, 592, 611, 690, 439, 768,\n 645, 795, 611, 333, 863, 333, 658, 500, 500, 631, 549, 549, 494, 439,\n 521, 411, 603, 329, 603, 549, 549, 576, 521, 549, 549, 521, 549, 603,\n 439, 576, 713, 686, 493, 686, 494, 480, 200, 480, 549, 750, 620, 247,\n 549, 167, 713, 500, 753, 753, 753, 753, 1042, 987, 603, 987, 603, 400,\n 549, 411, 549, 549, 713, 494, 460, 549, 549, 549, 549, 1000, 603, 1000,\n 658, 823, 686, 795, 987, 768, 768, 823, 768, 768, 713, 713, 713, 713,\n 713, 713, 713, 768, 713, 790, 790, 890, 823, 549, 250, 713, 603, 603,\n 1042, 987, 603, 987, 603, 494, 329, 790, 790, 786, 713, 384, 384, 384,\n 384, 384, 384, 494, 494, 494, 494, 329, 274, 686, 686, 686, 384, 384,\n 384, 384, 384, 384, 494, 494, 494, -1\n ];\n /**\n * `Zip dingbats` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsWidth = [\n 278, 974, 961, 974, 980, 719, 789, 790, 791, 690, 960, 939, 549, 855,\n 911, 933, 911, 945, 974, 755, 846, 762, 761, 571, 677, 763, 760, 759,\n 754, 494, 552, 537, 577, 692, 786, 788, 788, 790, 793, 794, 816, 823,\n 789, 841, 823, 833, 816, 831, 923, 744, 723, 749, 790, 792, 695, 776,\n 768, 792, 759, 707, 708, 682, 701, 826, 815, 789, 789, 707, 687, 696,\n 689, 786, 787, 713, 791, 785, 791, 873, 761, 762, 762, 759, 759, 892,\n 892, 788, 784, 438, 138, 277, 415, 392, 392, 668, 668, 390, 390, 317,\n 317, 276, 276, 509, 509, 410, 410, 234, 234, 334, 334, 732, 544, 544,\n 910, 667, 760, 760, 776, 595, 694, 626, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 894, 838, 1016, 458, 748, 924, 748, 918,\n 927, 928, 928, 834, 873, 828, 924, 924, 917, 930, 931, 463, 883, 836,\n 836, 867, 867, 696, 696, 874, 874, 760, 946, 771, 865, 771, 888, 967,\n 888, 831, 873, 927, 970, 918\n ];\n return PdfStandardFontMetricsFactory;\n}());\nexport { PdfStandardFontMetricsFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFontFamily, PdfFontStyle, FontEncoding } from './enum';\nimport { PdfFont } from './pdf-font';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStandardFontMetricsFactory } from './pdf-standard-font-metrics-factory';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\n/**\n * Represents one of the 14 standard fonts.\n * It's used to create a standard PDF font to draw the text in to the PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStandardFont = /** @class */ (function (_super) {\n __extends(PdfStandardFont, _super);\n function PdfStandardFont(fontFamilyPrototype, size, style) {\n var _this = _super.call(this, size, (typeof style === 'undefined') ? ((fontFamilyPrototype instanceof PdfStandardFont) ? fontFamilyPrototype.style : PdfFontStyle.Regular) : style) || this;\n /**\n * Gets `ascent` of the font.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n /**\n * Gets `encodings` for internal class use.\n * @hidden\n * @private\n */\n _this.encodings = ['Unknown', 'StandardEncoding', 'MacRomanEncoding', 'MacExpertEncoding',\n 'WinAnsiEncoding', 'PDFDocEncoding', 'IdentityH'];\n if (typeof fontFamilyPrototype === 'undefined') {\n _this.pdfFontFamily = PdfFontFamily.Helvetica;\n }\n else if ((fontFamilyPrototype instanceof PdfStandardFont)) {\n _this.pdfFontFamily = fontFamilyPrototype.fontFamily;\n }\n else {\n _this.pdfFontFamily = fontFamilyPrototype;\n }\n _this.checkStyle();\n _this.initializeInternals();\n return _this;\n }\n Object.defineProperty(PdfStandardFont.prototype, \"fontFamily\", {\n /* tslint:enable */\n //Properties\n /**\n * Gets the `FontFamily`.\n * @private\n */\n get: function () {\n return this.pdfFontFamily;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * Checks font `style` of the font.\n * @private\n */\n PdfStandardFont.prototype.checkStyle = function () {\n if (this.fontFamily === PdfFontFamily.Symbol || this.fontFamily === PdfFontFamily.ZapfDingbats) {\n var style = this.style;\n style &= ~(PdfFontStyle.Bold | PdfFontStyle.Italic);\n this.setStyle(style);\n }\n };\n /**\n * Returns `width` of the line.\n * @public\n */\n PdfStandardFont.prototype.getLineWidth = function (line, format) {\n if (line == null) {\n throw new Error('ArgumentNullException:line');\n }\n var width = 0;\n var name = this.name;\n line = PdfStandardFont.convert(line);\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidthInternal(ch, format);\n width += charWidth;\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Checks whether fonts are `equals`.\n * @private\n */\n PdfStandardFont.prototype.equalsToFont = function (font) {\n var equal = false;\n var stFont = font;\n if (stFont != null) {\n var fontFamilyEqual = (this.fontFamily === stFont.fontFamily);\n var lineReducer = (~(PdfFontStyle.Underline | PdfFontStyle.Strikeout));\n var styleEqual = (this.style & lineReducer) === (stFont.style & lineReducer);\n equal = (fontFamilyEqual && styleEqual);\n }\n return equal;\n };\n /**\n * `Initializes` font internals..\n * @private\n */\n PdfStandardFont.prototype.initializeInternals = function () {\n var equalFont = null;\n // if (PdfDocument.EnableCache) {\n equalFont = PdfDocument.cache.search(this);\n // }\n var internals = null;\n // if (equalFont == null) {\n // Create font metrics.\n var metrics = PdfStandardFontMetricsFactory.getMetrics(this.pdfFontFamily, this.style, this.size);\n this.metrics = metrics;\n internals = this.createInternals();\n this.setInternals(internals);\n };\n /**\n * `Creates` font`s dictionary.\n * @private\n */\n PdfStandardFont.prototype.createInternals = function () {\n var dictionary = new PdfDictionary();\n dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type1));\n dictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.metrics.postScriptName));\n if (this.fontFamily !== PdfFontFamily.Symbol && this.fontFamily !== PdfFontFamily.ZapfDingbats) {\n var encoding = this.encodings[FontEncoding.WinAnsiEncoding];\n dictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(encoding));\n }\n return dictionary;\n };\n /**\n * Returns `width` of the char. This methods doesn`t takes into consideration font`s size.\n * @private\n */\n PdfStandardFont.prototype.getCharWidthInternal = function (charCode, format) {\n var width = 0;\n var code = 0;\n code = charCode.charCodeAt(0);\n if (this.name === '0' || this.name === '1' || this.name === '2' ||\n this.name === '3' || this.name === '4') {\n code = code - PdfStandardFont.charOffset;\n }\n code = (code >= 0 && code !== 128) ? code : 0;\n var metrics = this.metrics;\n var widthTable = metrics.widthTable;\n width = widthTable.items(code);\n return width;\n };\n /**\n * `Converts` the specified text.\n * @private\n */\n PdfStandardFont.convert = function (text) {\n return text;\n };\n //Constants\n /**\n * First character `position`.\n * @private\n */\n PdfStandardFont.charOffset = 32;\n return PdfStandardFont;\n}(PdfFont));\nexport { PdfStandardFont };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfWriter } from './../input-output/pdf-writer';\nimport { PdfMainObjectCollection } from './../input-output/pdf-main-object-collection';\nimport { PdfDocumentBase } from './pdf-document-base';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfCatalog } from './pdf-catalog';\nimport { PdfPageSettings } from './../pages/pdf-page-settings';\nimport { PdfSectionCollection } from './../pages/pdf-section-collection';\nimport { PdfDocumentPageCollection } from './../pages/pdf-document-page-collection';\nimport { PdfCacheCollection } from './../general/pdf-cache-collection';\nimport { PdfColorSpace } from './../graphics/enum';\nimport { PdfDocumentTemplate } from './pdf-document-template';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\n/**\n * Represents a PDF document and can be used to create a new PDF document from the scratch.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocument = /** @class */ (function (_super) {\n __extends(PdfDocument, _super);\n function PdfDocument(isMerging) {\n var _this = _super.call(this) || this;\n /**\n * Default `margin` value.\n * @default 40.0\n * @private\n */\n _this.defaultMargin = 40.0;\n /**\n * Internal variable to store instance of `StreamWriter` classes..\n * @default null\n * @private\n */\n _this.streamWriter = null;\n _this.document = _this;\n var isMerge = false;\n if (typeof isMerging === 'undefined') {\n PdfDocument.cacheCollection = new PdfCacheCollection();\n isMerge = false;\n }\n else {\n isMerge = isMerging;\n }\n var objects = new PdfMainObjectCollection();\n _this.setMainObjectCollection(objects);\n var crossTable = new PdfCrossTable();\n crossTable.isMerging = isMerge;\n crossTable.document = _this;\n _this.setCrossTable(crossTable);\n var catalog = new PdfCatalog();\n _this.setCatalog(catalog);\n objects.add(catalog);\n catalog.position = -1;\n _this.sectionCollection = new PdfSectionCollection(_this);\n _this.documentPageCollection = new PdfDocumentPageCollection(_this);\n catalog.pages = _this.sectionCollection;\n return _this;\n }\n Object.defineProperty(PdfDocument, \"defaultFont\", {\n //Properties\n /**\n * Gets the `default font`. It is used for complex objects when font is not explicitly defined.\n * @private\n */\n get: function () {\n if (this.defaultStandardFont == null) {\n this.defaultStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 8);\n }\n return this.defaultStandardFont;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"sections\", {\n /**\n * Gets the collection of the `sections` in the document.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pageSettings\", {\n /**\n * Gets the document's page setting.\n * @public\n */\n get: function () {\n if (this.settings == null) {\n this.settings = new PdfPageSettings(this.defaultMargin);\n }\n return this.settings;\n },\n /**\n * Sets the document's page setting.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n *\n * // sets the right margin of the page\n * document.pageSettings.margins.right = 0;\n * // set the page size.\n * document.pageSettings.size = new SizeF(500, 500);\n * // change the page orientation to landscape\n * document.pageSettings.orientation = PdfPageOrientation.Landscape;\n * // apply 90 degree rotation on the page\n * document.pageSettings.rotate = PdfPageRotateAngle.RotateAngle90;\n *\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set the specified Point\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this.settings = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pages\", {\n /**\n * Represents the collection of pages in the PDF document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // get the collection of pages in the document\n * let pageCollection : PdfDocumentPageCollection = document.pages;\n * //\n * // add pages\n * let page1 : PdfPage = pageCollection.add();\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.documentPageCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"cache\", {\n /**\n * Gets collection of the `cached objects`.\n * @private\n */\n get: function () {\n if (typeof PdfDocument.cacheCollection === 'undefined' || PdfDocument.cacheCollection == null) {\n return new PdfCacheCollection();\n }\n return PdfDocument.cacheCollection;\n },\n /**\n * Sets collection of the `cached objects`.\n * @private\n */\n set: function (value) {\n this.cacheCollection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"enableCache\", {\n /**\n * Gets the value of enable cache.\n * @private\n */\n get: function () {\n return this.isCacheEnabled;\n },\n /**\n * Sets thie value of enable cache.\n * @private\n */\n set: function (value) {\n this.isCacheEnabled = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"colorSpace\", {\n /* tslint:disable */\n /**\n * Gets or sets the `color space` of the document. This property can be used to create PDF document in RGB, Gray scale or CMYK color spaces.\n * @private\n */\n get: function () {\n if ((this.pdfColorSpace === PdfColorSpace.Rgb) || ((this.pdfColorSpace === PdfColorSpace.Cmyk)\n || (this.pdfColorSpace === PdfColorSpace.GrayScale))) {\n return this.pdfColorSpace;\n }\n else {\n return PdfColorSpace.Rgb;\n }\n },\n set: function (value) {\n if ((value === PdfColorSpace.Rgb) || ((value === PdfColorSpace.Cmyk) ||\n (value === PdfColorSpace.GrayScale))) {\n this.pdfColorSpace = value;\n }\n else {\n this.pdfColorSpace = PdfColorSpace.Rgb;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"template\", {\n /* tslint:enable */\n /**\n * Gets or sets a `template` to all pages in the document.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfDocumentTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocument.prototype.docSave = function (stream, arg2, arg3) {\n this.checkPagesPresence();\n if (stream === null) {\n throw new Error('ArgumentNullException : stream');\n }\n this.streamWriter = stream;\n var writer = new PdfWriter(stream);\n writer.document = this;\n if (typeof arg2 === 'boolean' && typeof arg3 === 'undefined') {\n return this.crossTable.save(writer);\n }\n else {\n this.crossTable.save(writer, arg2);\n }\n };\n /**\n * Checks the pages `presence`.\n * @private\n */\n PdfDocument.prototype.checkPagesPresence = function () {\n if (this.pages.count === 0) {\n this.pages.add();\n }\n };\n /**\n * disposes the current instance of `PdfDocument` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfDocument.prototype.destroy = function () {\n this.catalog = undefined;\n this.colorSpace = undefined;\n this.currentSavingObj = undefined;\n this.documentPageCollection = undefined;\n this.isStreamCopied = undefined;\n this.pageSettings = undefined;\n this.pageTemplate = undefined;\n this.pdfColorSpace = undefined;\n this.sectionCollection = undefined;\n PdfDocument.cache.destroy();\n this.crossTable.pdfObjects.destroy();\n PdfDocument.cache = undefined;\n this.streamWriter.destroy();\n };\n /**\n * `Font` used in complex objects to draw strings and text when it is not defined explicitly.\n * @default null\n * @private\n */\n PdfDocument.defaultStandardFont = null;\n /**\n * Indicates whether enable cache or not\n * @default true\n * @private\n */\n PdfDocument.isCacheEnabled = true;\n return PdfDocument;\n}(PdfDocumentBase));\nexport { PdfDocument };\n","/**\n * PdfPageTemplateElement.ts class for EJ2-Pdf\n */\nimport { PdfDockStyle, PdfAlignmentStyle, TemplateType } from './enum';\nimport { PointF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTemplate } from './../graphics/figures/pdf-template';\nimport { PdfPage } from './pdf-page';\nimport { RectangleF } from './../drawing/pdf-drawing';\n/**\n * Describes a `page template` object that can be used as header/footer, watermark or stamp.\n */\nvar PdfPageTemplateElement = /** @class */ (function () {\n /* tslint:disable */\n function PdfPageTemplateElement(arg1, arg2, arg3, arg4, arg5) {\n if (arg1 instanceof RectangleF && typeof arg2 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, null);\n }\n else if (arg1 instanceof RectangleF && arg2 instanceof PdfPage && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, arg2);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, null);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, arg3);\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.InitiateBounds(0, 0, arg1.width, arg1.height, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, arg3);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n }\n else {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n }\n /* tslint:enable */\n }\n Object.defineProperty(PdfPageTemplateElement.prototype, \"dock\", {\n // Properties\n /**\n * Gets or sets the `dock style` of the page template element.\n * @private\n */\n get: function () {\n return this.dockStyle;\n },\n set: function (value) {\n // if (this.dockStyle !== value && this.Type === TemplateType.None) {\n this.dockStyle = value;\n // Reset alignment.\n this.resetAlignment();\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"alignment\", {\n /**\n * Gets or sets `alignment` of the page template element.\n * @private\n */\n get: function () {\n return this.alignmentStyle;\n },\n set: function (value) {\n // if (this.alignmentStyle !== value) {\n this.setAlignment(value);\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"foreground\", {\n /**\n * Indicates whether the page template is located `in front of the page layers or behind of it`.\n * @private\n */\n get: function () {\n return this.isForeground;\n },\n set: function (value) {\n // if (this.foreground !== value) {\n this.isForeground = value;\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"background\", {\n /**\n * Indicates whether the page template is located `behind of the page layers or in front of it`.\n * @private\n */\n get: function () {\n return !this.isForeground;\n },\n set: function (value) {\n this.isForeground = !value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"location\", {\n /**\n * Gets or sets `location` of the page template element.\n * @private\n */\n get: function () {\n return this.currentLocation;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"x\", {\n /**\n * Gets or sets `X` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.x : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.x = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"y\", {\n /**\n * Gets or sets `Y` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.y : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.y = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"size\", {\n /**\n * Gets or sets `size` of the page template element.\n * @private\n */\n get: function () {\n return this.template.size;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.template.reset(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"width\", {\n /**\n * Gets or sets `width` of the page template element.\n * @private\n */\n get: function () {\n return this.template.width;\n },\n set: function (value) {\n if (this.template.width !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.width = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"height\", {\n /**\n * Gets or sets `height` of the page template element.\n * @private\n */\n get: function () {\n return this.template.height;\n },\n set: function (value) {\n if (this.template.height !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.height = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"graphics\", {\n /**\n * Gets `graphics` context of the page template element.\n * @private\n */\n get: function () {\n return this.template.graphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"template\", {\n /**\n * Gets Pdf `template` object.\n * @private\n */\n get: function () {\n // if (typeof this.pdfTemplate === 'undefined' || this.pdfTemplate == null) {\n // this.pdfTemplate = new PdfTemplate(this.size);\n // }\n return this.pdfTemplate;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"type\", {\n /**\n * Gets or sets `type` of the usage of this page template.\n * @private\n */\n get: function () {\n return this.templateType;\n },\n set: function (value) {\n this.updateDocking(value);\n this.templateType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"bounds\", {\n /**\n * Gets or sets `bounds` of the page template.\n * @public\n */\n get: function () {\n return new RectangleF(new PointF(this.x, this.y), this.size);\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.location = new PointF(value.x, value.y);\n this.size = new SizeF(value.width, value.height);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize Bounds` Initialize the bounds value of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.InitiateBounds = function (arg1, arg2, arg3, arg4, arg5) {\n this.x = arg1;\n this.y = arg2;\n this.pdfTemplate = new PdfTemplate(arg3, arg4);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n };\n /**\n * `Updates Dock` property if template is used as header/footer.\n * @private\n */\n PdfPageTemplateElement.prototype.updateDocking = function (type) {\n if (type !== TemplateType.None) {\n switch (type) {\n case TemplateType.Top:\n this.dock = PdfDockStyle.Top;\n break;\n case TemplateType.Bottom:\n this.dock = PdfDockStyle.Bottom;\n break;\n case TemplateType.Left:\n this.dock = PdfDockStyle.Left;\n break;\n case TemplateType.Right:\n this.dock = PdfDockStyle.Right;\n break;\n }\n this.resetAlignment();\n }\n };\n /**\n * `Resets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.resetAlignment = function () {\n this.alignment = PdfAlignmentStyle.None;\n };\n /**\n * `Sets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.setAlignment = function (alignment) {\n if (this.dock === PdfDockStyle.None) {\n this.alignmentStyle = alignment;\n }\n else {\n // Template is docked and alignment has been changed.\n var canBeSet = false;\n switch (this.dock) {\n case PdfDockStyle.Left:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.MiddleLeft ||\n alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Top:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.TopCenter ||\n alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Right:\n canBeSet = (alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.MiddleRight ||\n alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Bottom:\n canBeSet = (alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.BottomCenter\n || alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Fill:\n canBeSet = (alignment === PdfAlignmentStyle.MiddleCenter || alignment === PdfAlignmentStyle.None);\n break;\n }\n if (canBeSet) {\n this.alignmentStyle = alignment;\n }\n }\n };\n /**\n * Draws the template.\n * @private\n */\n PdfPageTemplateElement.prototype.draw = function (layer, document) {\n var page = layer.page;\n var bounds = this.calculateBounds(page, document);\n if (bounds.x === -0) {\n bounds.x = 0;\n }\n layer.graphics.drawPdfTemplate(this.template, new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n };\n /**\n * Calculates bounds of the page template.\n * @private\n */\n PdfPageTemplateElement.prototype.calculateBounds = function (page, document) {\n var result = this.bounds;\n if (this.alignmentStyle !== PdfAlignmentStyle.None) {\n result = this.getAlignmentBounds(page, document);\n }\n else if (this.dockStyle !== PdfDockStyle.None) {\n result = this.getDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getAlignmentBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleAlignmentBounds(page, document);\n }\n else {\n result = this.getTemplateAlignmentBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleAlignmentBounds = function (page, document) {\n var bounds = this.bounds;\n var pdfSection = page.section;\n var actualBounds = pdfSection.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n x = 0;\n y = 0;\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = 0;\n break;\n case PdfAlignmentStyle.TopRight:\n x = actualBounds.width - this.width;\n y = 0;\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = 0;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n x = 0;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n x = actualBounds.width - this.width;\n y = actualBounds.height - this.height;\n break;\n }\n bounds.x = x;\n bounds.y = y;\n return bounds;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateAlignmentBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = -actualBounds.x;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = -actualBounds.y;\n break;\n case PdfAlignmentStyle.TopRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = -actualBounds.x;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n }\n result.x = x;\n result.y = y;\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getDockBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleDockBounds(page, document);\n }\n else {\n result = this.getTemplateDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = 0;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = 0;\n y = 0;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = 0;\n y = actualBounds.height - this.height;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n /**\n * Calculates template bounds basing on docking if template is a page template.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var actualSize = section.pageSettings.getActualSize();\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = -actualBounds.x;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = -actualBounds.x;\n y = -actualBounds.y;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y = -actualBounds.y + actualSize.height;\n }\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y -= actualSize.height;\n }\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n return PdfPageTemplateElement;\n}());\nexport { PdfPageTemplateElement };\n","import { print as printWindow, createElement, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { getElement, removeElement } from '../utils/helper';\nimport { beforePrint, afterExport } from '../model/constants';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap, SizeF, PdfStandardFont, PdfPageTemplateElement, PdfSolidBrush, PdfColor } from '@syncfusion/ej2-pdf-export';\nvar ExportUtils = /** @class */ (function () {\n /**\n * Constructor for chart and accumulation annotation\n *\n * @param control\n */\n function ExportUtils(control) {\n this.control = control;\n }\n /**\n * To print the accumulation and chart elements.\n *\n * @param elements\n */\n ExportUtils.prototype.print = function (elements) {\n this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWindow.moveTo(0, 0);\n this.printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(elements), name: beforePrint\n };\n this.control.trigger(beforePrint, argsData);\n if (!argsData.cancel) {\n printWindow(argsData.htmlContent, this.printWindow);\n }\n };\n /**\n * To get the html string of the chart and accumulation\n *\n * @param elements\n * @private\n */\n ExportUtils.prototype.getHTMLContent = function (elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n for (var j = 0; j < elements.length; j++) {\n var value = elements[j];\n div.appendChild(getElement(value).cloneNode(true));\n }\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n div.appendChild(this.control.element.cloneNode(true));\n }\n return div;\n };\n /**\n * To export the file as image/svg format.\n *\n * @param type\n * @param fileName\n */\n ExportUtils.prototype.export = function (type, fileName, orientation, controls, width, height, isVertical, header, footer) {\n var _this = this;\n var controlValue = this.getControlsValue(controls, isVertical);\n width = width ? width : controlValue.width;\n height = height ? height : controlValue.height;\n var element = this.control.svgObject;\n var isCanvas = this.control.enableCanvas;\n var image;\n if (!isCanvas) {\n element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': width.toString(),\n 'height': height.toString()\n }\n });\n }\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var svgData = '' +\n controlValue.svg.outerHTML +\n '';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (Browser.info.name === 'msie') {\n var svg = new Blob([(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'application/octet-stream' });\n window.navigator.msSaveOrOpenBlob(svg, fileName + '.' + type.toLocaleLowerCase());\n }\n else {\n this.triggerDownload(fileName, type, url, isDownload);\n }\n }\n else if (Browser.info.name === 'msie') {\n var canvas = element;\n if (!isCanvas) {\n canvas = this.createCanvas();\n }\n image = canvas.toDataURL();\n if (type === 'PDF') {\n this.exportPdf(canvas, orientation, width, height, isDownload, fileName, header, footer);\n }\n else {\n this.doexport(type, image, fileName);\n }\n }\n else {\n var image_1 = new Image();\n var ctx_1 = element.getContext('2d');\n image_1.onload = (function () {\n ctx_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (type === 'PDF') {\n _this.exportPdf(element, orientation, width, height, isDownload, fileName, header, footer);\n }\n else {\n if (window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveOrOpenBlob(element.toBlob(null), fileName + '.' + type.toLocaleLowerCase());\n }\n else {\n _this.triggerDownload(fileName, type, element.toDataURL('image/' + type.toLowerCase()), isDownload);\n }\n }\n });\n image_1.src = url;\n }\n if (!isCanvas) {\n removeElement(document.getElementById(this.control.element.id + '_canvas'));\n }\n };\n /**\n * To get data url for charts.\n *\n * @param chart\n */\n ExportUtils.prototype.getDataUrl = function (chart) {\n var controlValue = this.getControlsValue([chart]);\n var element = this.control.svgObject;\n var isCanvas = this.control.enableCanvas;\n if (!isCanvas) {\n element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': controlValue.width.toString(),\n 'height': controlValue.height.toString()\n }\n });\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'image/svg+xml' }));\n if (Browser.info.name === 'msie') {\n var canvas = element;\n if (!isCanvas) {\n canvas = this.createCanvas();\n }\n var argsData = {\n name: afterExport, cancel: false, dataUrl: element.toDataURL('image/png')\n };\n chart.trigger(afterExport, argsData);\n return { element: canvas, dataUrl: canvas.toDataURL() };\n }\n else {\n var image_2 = new Image();\n var ctx_2 = element.getContext('2d');\n image_2.onload = (function () {\n ctx_2.drawImage(image_2, 0, 0);\n window.URL.revokeObjectURL(url);\n var argsData = {\n name: afterExport, cancel: false, dataUrl: element.toDataURL('image/png')\n };\n chart.trigger(afterExport, argsData);\n return argsData.dataUrl;\n });\n image_2.src = url;\n return { element: element, blobUrl: url };\n }\n };\n /**\n * To trigger the download element.\n *\n * @param fileName\n * @param type\n * @param url\n */\n ExportUtils.prototype.triggerDownload = function (fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n };\n /**\n * To get the maximum size value\n *\n * @param controls\n * @param name\n */\n // eslint-disable-next-line max-len\n ExportUtils.prototype.getControlsValue = function (controls, isVertical) {\n var width = 0;\n var height = 0;\n var isCanvas = this.control.enableCanvas;\n var svgObject = new SvgRenderer('').createSvg({\n id: 'Svg_Export_Element',\n width: 200, height: 200\n });\n var backgroundColor;\n controls.map(function (control) {\n var svg = control.svgObject.cloneNode(true);\n var groupEle = control.renderer.createGroup({\n style: (isNullOrUndefined(isVertical) || isVertical) ? 'transform: translateY(' + height + 'px)' :\n 'transform: translateX(' + width + 'px)'\n });\n backgroundColor = svg.childNodes[0] ? svg.childNodes[0].getAttribute('fill') : 'transparent';\n if (backgroundColor === 'transparent') {\n if (control.theme.indexOf('Dark') > -1 || control.theme === 'HighContrast') {\n backgroundColor = 'rgba(0, 0, 0, 1)';\n }\n else {\n backgroundColor = 'rgba(255, 255, 255, 1)';\n }\n }\n if (!isCanvas) {\n groupEle.appendChild(svg);\n }\n var top = 0;\n var left = 0;\n if (control.stockLegendModule && control.legendSettings.visible) {\n if (control.legendSettings.position === 'Bottom' || control.legendSettings.position === 'Top'\n || control.legendSettings.position === 'Auto') {\n top += control.stockLegendModule.legendBounds.height;\n }\n else if (control.legendSettings.position === 'Left' || control.legendSettings.position === 'Right') {\n left += control.stockLegendModule.legendBounds.width;\n }\n }\n width = (isNullOrUndefined(isVertical) || isVertical) ? Math.max(control.availableSize.width + left, width) :\n width + control.availableSize.width + left;\n height = (isNullOrUndefined(isVertical) || isVertical) ? height + control.availableSize.height + top :\n Math.max(control.availableSize.height + top, height);\n if (!isCanvas) {\n svgObject.appendChild(groupEle);\n }\n });\n if (!isCanvas) {\n svgObject.setAttribute('width', width + '');\n svgObject.setAttribute('height', height + '');\n svgObject.setAttribute('style', 'background-color: ' + backgroundColor + ';');\n }\n return {\n 'width': width,\n 'height': height,\n 'svg': svgObject\n };\n };\n ExportUtils.prototype.createCanvas = function () {\n var chart = this.control;\n this.canvasRender(true, chart);\n var canvas = chart.svgObject;\n this.canvasRender(false, chart);\n return canvas;\n };\n /**\n * To convert svg chart into canvas chart to fix export issue in IE\n * We cant export svg to other formats in IE\n *\n * @param enableCanvas\n * @param chart\n * @param enableCanvas\n * @param chart\n */\n ExportUtils.prototype.canvasRender = function (enableCanvas, chart) {\n chart.enableCanvas = enableCanvas;\n chart['preRender']();\n chart['render']();\n };\n // eslint-disable-next-line max-len\n ExportUtils.prototype.exportPdf = function (element, orientation, width, height, isDownload, fileName, header, footer) {\n var document = new PdfDocument();\n var margin = document.pageSettings.margins;\n var pdfDefaultWidth = document.pageSettings.width;\n var pdfDefaultHeight = document.pageSettings.height;\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n var exactWidth = (pdfDefaultWidth < width) ? (width + margin.left + margin.right) : pdfDefaultWidth;\n var exactHeight = (pdfDefaultHeight < height) ? (height + margin.top + margin.bottom) : pdfDefaultHeight;\n if (header !== undefined) {\n var font = new PdfStandardFont(1, header.fontSize || 15);\n var pdfHeader = new PdfPageTemplateElement(exactWidth, 40);\n pdfHeader.graphics.drawString(header.content + '', font, null, new PdfSolidBrush(new PdfColor(0, 0, 0)), header.x, header.y, null);\n document.template.top = pdfHeader;\n }\n if (footer !== undefined) {\n var font = new PdfStandardFont(1, footer.fontSize || 15);\n var pdfFooter = new PdfPageTemplateElement(exactWidth, 40);\n pdfFooter.graphics.drawString(footer.content + '', font, null, new PdfSolidBrush(new PdfColor(0, 0, 0)), footer.x, footer.y, null);\n document.template.bottom = pdfFooter;\n }\n document.pageSettings.size = new SizeF(exactWidth, exactHeight);\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, width, height);\n if (isDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n };\n ExportUtils.prototype.doexport = function (type, image, fileName) {\n var images = [];\n var fileType = type || 'JPG';\n images = [image];\n this.exportImage(images, fileName, fileType, image);\n };\n ExportUtils.prototype.exportImage = function (images, fileName, fileType, image) {\n var buffers = [];\n var length = (!(images instanceof HTMLElement)) ? images.length : 0;\n for (var g = 0; g < length; g++) {\n image = images[g];\n image = image.replace(/^data:[a-z]*;,/, '');\n var image1 = image.split(',');\n var byteString = atob(image1[1]);\n var buffer = new ArrayBuffer(byteString.length);\n var intArray = new Uint8Array(buffer);\n for (var i = 0; i < byteString.length; i++) {\n intArray[i] = byteString.charCodeAt(i);\n }\n buffers.push(buffer);\n }\n for (var j = 0; j < buffers.length; j++) {\n var b = new Blob([buffers[j]], { type: 'application/octet-stream' });\n if (Browser.info.name === 'msie') {\n window.navigator.msSaveOrOpenBlob(b, fileName + '.' + fileType.toLocaleLowerCase());\n }\n }\n };\n return ExportUtils;\n}());\nexport { ExportUtils };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 jsdoc/valid-types */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable jsdoc/require-param-type */\n/* eslint-disable jsdoc/require-returns-description */\n/* eslint-disable @typescript-eslint/no-this-alias */\n/* eslint-disable curly */\n/* eslint-disable @typescript-eslint/tslint/config */\n/* eslint-disable no-case-declarations */\n/* eslint-disable max-len */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\nimport { Component, Property, NotifyPropertyChanges, Internationalization } from '@syncfusion/ej2-base';\nimport { L10n, setValue, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { ChildProperty } from '@syncfusion/ej2-base';\nimport { remove, extend } from '@syncfusion/ej2-base';\nimport { Browser, Touch } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, Complex, Collection } from '@syncfusion/ej2-base';\nimport { findClipRect, showTooltip, ImageOption, removeElement, appendChildElement, blazorTemplatesReset } from '../common/utils/helper';\nimport { textElement, RectOption, createSvg, firstToLowerCase, titlePositionX, redrawElement, getTextAnchor } from '../common/utils/helper';\nimport { appendClipElement, ChartLocation } from '../common/utils/helper';\nimport { getSeriesColor, getThemeColor } from '../common/model/theme';\nimport { Margin, Border, ChartArea, Font, Indexes, TooltipSettings } from '../common/model/base';\nimport { Row, Column, Axis } from './axis/axis';\nimport { CartesianAxisLayoutPanel } from './axis/cartesian-panel';\nimport { Rect, measureText, TextOption, Size, SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { ChartData } from './utils/get-data';\nimport { Series } from './series/chart-series';\nimport { Data } from '../common/model/data';\nimport { Marker, markerShapes } from './series/marker';\nimport { LegendSettings } from '../common/legend/legend';\nimport { TechnicalIndicator } from './technical-indicators/technical-indicator';\nimport { chartMouseClick, chartDoubleClick, pointClick, pointDoubleClick, axisLabelClick, beforeResize } from '../common/model/constants';\nimport { chartMouseDown, chartMouseMove, chartMouseUp, load, pointMove, chartMouseLeave, resized } from '../common/model/constants';\nimport { ChartAnnotationSettings } from './model/chart-base';\nimport { getElement, getTitle } from '../common/utils/helper';\nimport { ExportUtils } from '../common/utils/export';\n/**\n * Configures the RangeColorSetting in the chart.\n */\nvar RangeColorSetting = /** @class */ (function (_super) {\n __extends(RangeColorSetting, _super);\n function RangeColorSetting() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RangeColorSetting.prototype, \"start\", void 0);\n __decorate([\n Property()\n ], RangeColorSetting.prototype, \"end\", void 0);\n __decorate([\n Property([])\n ], RangeColorSetting.prototype, \"colors\", void 0);\n __decorate([\n Property('')\n ], RangeColorSetting.prototype, \"label\", void 0);\n return RangeColorSetting;\n}(ChildProperty));\nexport { RangeColorSetting };\n/**\n * Configures the crosshair in the chart.\n */\nvar CrosshairSettings = /** @class */ (function (_super) {\n __extends(CrosshairSettings, _super);\n function CrosshairSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Complex({ color: null, width: 1 }, Border)\n ], CrosshairSettings.prototype, \"line\", void 0);\n __decorate([\n Property('Both')\n ], CrosshairSettings.prototype, \"lineType\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"verticalLineColor\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"horizontalLineColor\", void 0);\n __decorate([\n Property(1)\n ], CrosshairSettings.prototype, \"opacity\", void 0);\n return CrosshairSettings;\n}(ChildProperty));\nexport { CrosshairSettings };\n/**\n * Configures the zooming behavior for the chart.\n */\nvar ZoomSettings = /** @class */ (function (_super) {\n __extends(ZoomSettings, _super);\n function ZoomSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableSelectionZooming\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enablePinchZooming\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"showToolbar\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableMouseWheelZooming\", void 0);\n __decorate([\n Property(true)\n ], ZoomSettings.prototype, \"enableDeferredZooming\", void 0);\n __decorate([\n Property('XY')\n ], ZoomSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(['Zoom', 'ZoomIn', 'ZoomOut', 'Pan', 'Reset'])\n ], ZoomSettings.prototype, \"toolbarItems\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enablePan\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableScrollbar\", void 0);\n return ZoomSettings;\n}(ChildProperty));\nexport { ZoomSettings };\nvar titleSettings = /** @class */ (function (_super) {\n __extends(titleSettings, _super);\n function titleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], titleSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('15px')\n ], titleSettings.prototype, \"size\", void 0);\n __decorate([\n Property('500')\n ], titleSettings.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('')\n ], titleSettings.prototype, \"color\", void 0);\n __decorate([\n Property('Center')\n ], titleSettings.prototype, \"textAlignment\", void 0);\n __decorate([\n Property('Segoe UI')\n ], titleSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(1)\n ], titleSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('Wrap')\n ], titleSettings.prototype, \"textOverflow\", void 0);\n __decorate([\n Property('Top')\n ], titleSettings.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], titleSettings.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], titleSettings.prototype, \"y\", void 0);\n return titleSettings;\n}(ChildProperty));\nexport { titleSettings };\n/**\n * Represents the Chart control.\n * ```html\n *
\n * \n * ```\n *\n * @public\n */\nvar Chart = /** @class */ (function (_super) {\n __extends(Chart, _super);\n /**\n * Constructor for creating the widget\n *\n * @hidden\n */\n function Chart(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @private */\n _this.rotatedDataLabelCollections = [];\n /** @public */\n _this.animated = false;\n /** @private */\n _this.isPointMouseDown = false;\n /** @private */\n _this.isScrolling = false;\n /** @private */\n _this.checkResize = 0;\n /** @private */\n _this.visible = 0;\n /** @private */\n _this.clickCount = 0;\n /** @private */\n _this.maxPointCount = 0;\n /** @private */\n _this.singleClickTimer = 0;\n /** @private */\n _this.chartAreaType = 'Cartesian';\n /** @private */\n _this.isRtlEnabled = false;\n /** @private */\n _this.scaleX = 1;\n /** @private */\n _this.scaleY = 1;\n _this.chartid = 57723;\n /** @private */\n _this.isLegendClicked = false;\n _this.isZoomed = false;\n _this.previousTargetId = '';\n _this.currentPointIndex = 0;\n _this.currentSeriesIndex = 0;\n _this.currentLegendIndex = 0;\n _this.previousPageX = null;\n _this.previousPageY = null;\n _this.allowPan = false;\n setValue('mergePersistData', _this.mergePersistChartData, _this);\n return _this;\n }\n /**\n * To manage persist chart data\n */\n Chart.prototype.mergePersistChartData = function () {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === ''))) {\n var dataObj = JSON.parse(data);\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 extend(this[key], dataObj[key]);\n }\n else {\n this[key] = dataObj[key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /**\n *\n * @param elementId\n * Return the proper ID when the special character exist in the ID\n */\n Chart.prototype.isIdHasSpecialCharacter = function (elementId) {\n var regex = /^[A-Za-z ]+$/;\n var numberRegex = /^[0-9 ]+$/;\n var childElementId = '';\n if (!regex.test(elementId)) {\n var start = 0;\n if (numberRegex.test(elementId[0])) {\n childElementId += ('\\\\3' + elementId[0]);\n start = 1;\n }\n for (var i = start; i < elementId.length; i++) {\n if (!regex.test(elementId[i]) && elementId.indexOf('-') === -1 &&\n elementId.indexOf('_') === -1 && elementId.indexOf('\\\\') === -1 && !numberRegex.test(elementId[i])) {\n childElementId += ('\\\\' + elementId[i]);\n }\n else {\n childElementId += elementId[i];\n }\n }\n return childElementId;\n }\n else {\n return elementId;\n }\n };\n /**\n * Initialize the event handler.\n */\n Chart.prototype.preRender = function () {\n this.element.id = this.isIdHasSpecialCharacter(this.element.id);\n // It is used for checking blazor framework or not.\n var blazor = 'Blazor';\n this.isBlazor = window[blazor];\n this.allowServerDataBinding = false;\n this.markerIndex = 0;\n this.unWireEvents();\n this.initPrivateVariable();\n this.setCulture();\n this.wireEvents();\n if (this.stockChart) {\n if (this.stockChart.tooltip.header === null) {\n this.tooltip.header = '${point.x}';\n }\n if (this.stockChart.tooltip.format === null) {\n this.tooltip.format = 'High : ${point.high}
Low :' +\n ' ${point.low}
Open : ${point.open}
Close : ${point.close}';\n }\n this.animateSeries = false;\n }\n this.element.setAttribute('dir', this.enableRtl ? 'rtl' : '');\n };\n Chart.prototype.initPrivateVariable = function () {\n this.animateSeries = true;\n this.delayRedraw = false;\n this.dragY = null;\n this.horizontalAxes = [];\n this.verticalAxes = [];\n this.refreshAxis();\n this.refreshDefinition(this.rows);\n this.refreshDefinition(this.columns);\n if (this.tooltipModule) {\n this.tooltipModule.previousPoints = [];\n }\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('tabindex', '0');\n this.element.setAttribute('aria-label', this.description || this.title + '. Syncfusion interactive chart.');\n if (!(this.element.classList.contains(\"e-chart-focused\"))) {\n this.element.setAttribute('class', this.element.getAttribute('class') + ' e-chart-focused');\n }\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-chart').length;\n this.element.id = 'chart_' + this.chartid + '_' + collection;\n }\n //seperate ID to differentiate chart and stock chart\n this.svgId = this.stockChart ? this.stockChart.element.id + '_stockChart_chart' :\n this.element.id + (this.enableCanvas ? '_canvas' : '_svg');\n };\n /**\n * To Initialize the control rendering.\n */\n Chart.prototype.render = function () {\n var _this = this;\n this.svgRenderer = new SvgRenderer(this.element.id);\n var loadEventData = {\n chart: this.isBlazor ? {} : this, theme: this.theme, name: load, cancel: false\n };\n if (!this.stockChart) {\n /**\n * Load event for the chart will be triggered only chart componet, if this is stock chart, load event did not triggered.\n */\n this.trigger(load, loadEventData, function () {\n if (!loadEventData.cancel) {\n _this.cartesianChartRendering(loadEventData);\n }\n });\n }\n else {\n // The fix is specific for nextjs app, as window is set as not defined for server side application like nextjs.\n this.isRtlEnabled = (window.getComputedStyle(document.querySelector('body')).direction === 'rtl');\n this.cartesianChartRendering(loadEventData);\n }\n this.applyZoomkit();\n };\n Chart.prototype.cartesianChartRendering = function (beforeRenderData) {\n this.theme = this.isBlazor ? beforeRenderData.theme : this.theme;\n this.setTheme();\n this.createChartSvg();\n this.markerRender = new Marker(this);\n this.calculateAreaType();\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.calculateVisibleAxis();\n this.processData();\n this.renderComplete();\n this.mouseMoveEvent();\n this.allowServerDataBinding = true;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key key\n * @returns {string} localized label\n */\n Chart.prototype.getLocalizedLabel = function (key) {\n return this.localeObject.getConstant(key);\n };\n /**\n * Animate the series bounds.\n *\n * @private\n */\n Chart.prototype.animate = function (duration) {\n this.redraw = true;\n this.animated = true; //used to set duration as 1000 for animation at default 300\n this.duration = duration ? duration : 1000;\n };\n /**\n * Refresh the chart bounds.\n *\n * @private\n */\n Chart.prototype.refreshBound = function () {\n this.rotatedDataLabelCollections = [];\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.getLegendOptions(this.visibleSeries, this);\n }\n /**\n * I264230, EJ2-36761\n * Issue: Tooltip doesnot appears after zooming and hovering on same point\n * Root cause: While performing zoom, previous points in tooltip restore.\n * Fix: previous points set to empty array\n */\n if (this.tooltip.enable && this.tooltipModule) {\n this.tooltipModule.previousPoints = [];\n }\n this.calculateStackValues();\n this.calculateBounds();\n //this prevents the initial rendering of stock chart\n if (this.stockChart && !this.stockChart.rangeFound) {\n if (this.stockChart.enablePeriodSelector || this.stockChart.enableSelector) {\n return null;\n }\n }\n this.renderElements();\n removeElement('chartmeasuretext');\n this.removeSelection();\n if (this.markerRender) {\n this.markerRender.mergeXvalues(this.visibleSeries);\n }\n };\n /**\n * To calcualte the stack values\n */\n Chart.prototype.calculateStackValues = function () {\n var series;\n var isCalculateStacking = false;\n for (var i = 0, len = this.visibleSeries.length; i < len; i++) {\n series = this.visibleSeries[i];\n series.position = series.rectCount = undefined;\n if (((series.type.indexOf('Stacking') !== -1) || (series.drawType.indexOf('Stacking') !== -1\n && this.chartAreaType === 'PolarRadar')) && !isCalculateStacking) {\n series.calculateStackedValue(series.type.indexOf('100') > -1, this);\n isCalculateStacking = true;\n }\n }\n };\n Chart.prototype.removeSelection = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible) {\n for (var _b = 0, _c = series.points; _b < _c.length; _b++) {\n var point = _c[_b];\n point.isSelect = false;\n }\n }\n }\n if (getElement(this.element.id + '_ej2_drag_multi_group')) {\n if (this.selectionMode.indexOf('Drag') > -1) {\n this.selectionModule.filterArray = [];\n }\n removeElement(this.element.id + '_ej2_drag_multi_group');\n this.selectionModule.calculateDragSelectedElements(this, new Rect(0, 0, 0, 0), true);\n }\n else if (getElement(this.element.id + '_ej2_drag_group')) {\n if (this.selectionMode !== 'Lasso') {\n this.selectionModule.filterArray = [];\n }\n removeElement(this.element.id + '_ej2_drag_group');\n this.selectionModule.calculateDragSelectedElements(this, new Rect(0, 0, 0, 0), true);\n }\n };\n Chart.prototype.renderElements = function () {\n this.renderBorder();\n this.renderTitle();\n this.renderAreaBorder();\n this.renderSeriesElements(this.renderAxes());\n this.renderLegend();\n this.applyZoomkit();\n this.performSelection();\n this.setSecondaryElementPosition();\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var value = _a[_i];\n updateBlazorTemplate(this.element.id + '_DataLabel', 'Template', value.marker.dataLabel);\n }\n this.renderAnnotation();\n };\n /**\n * To render the legend\n *\n * @private\n */\n Chart.prototype.renderAxes = function () {\n this.yAxisElements = this.renderer.createGroup({ id: this.element.id + 'yAxisCollection' });\n var axisElement;\n if (this.rows.length > 0 && this.columns.length > 0) {\n axisElement = this.chartAxisLayoutPanel.renderAxes();\n }\n if (this.stripLineModule) {\n this.stripLineModule.renderStripLine(this, 'Behind', this.axisCollections);\n }\n return axisElement;\n };\n /**\n * To render the legend\n */\n Chart.prototype.renderLegend = function () {\n if (this.legendModule && this.legendModule.legendCollections.length && this.legendSettings.visible) {\n this.legendModule.calTotalPage = true;\n var borderWidth = this.legendSettings.border.width;\n var bounds = this.legendModule.legendBounds;\n var rect = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n if (this.enableCanvas) {\n rect = new Rect(rect.x - borderWidth / 2, rect.y - borderWidth / 2, rect.width + borderWidth, rect.height + borderWidth);\n this.renderer.canvasClip(rect);\n }\n this.legendModule.renderLegend(this, this.legendSettings, bounds);\n if (this.enableCanvas) {\n this.renderer.canvasRestore();\n }\n }\n if (!this.redraw) {\n if (!this.stockChart) {\n this.element.appendChild(this.svgObject);\n }\n else {\n if (!getElement(this.stockChart.chartObject.id)) {\n this.stockChart.mainObject.appendChild(this.svgObject);\n }\n }\n }\n };\n /**\n * To set the left and top position for data label template for center aligned chart\n */\n Chart.prototype.setSecondaryElementPosition = function () {\n var element = getElement(this.element.id + '_Secondary_Element');\n if (!element) {\n return;\n }\n var rect = this.element.getBoundingClientRect();\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n element.style.left = Math.max(svgRect.left - rect.left, 0) + 'px';\n element.style.top = Math.max(svgRect.top - rect.top, 0) + 'px';\n };\n Chart.prototype.initializeModuleElements = function () {\n this.dataLabelCollections = [];\n var elementId = this.element.id;\n if (this.series.length) {\n this.seriesElements = this.svgRenderer.createGroup({ id: elementId + 'SeriesCollection' });\n }\n if (this.indicators.length) {\n this.indicatorElements = this.renderer.createGroup({ id: elementId + 'IndicatorCollection' });\n }\n if (this.hasTrendlines()) {\n this.trendLineElements = this.renderer.createGroup({ id: elementId + 'TrendLineCollection' });\n }\n this.dataLabelElements = this.renderer.createGroup({ id: elementId + 'DataLabelCollection' });\n };\n Chart.prototype.hasTrendlines = function () {\n var isTrendline;\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n isTrendline = series.trendlines.length ? true : false;\n if (isTrendline) {\n break;\n }\n }\n return isTrendline;\n };\n Chart.prototype.renderSeriesElements = function (axisElement) {\n // Initialize the series elements values\n this.initializeModuleElements();\n var elementId = this.element.id;\n if (this.element.tagName !== 'g') {\n var tooltipDiv = redrawElement(this.redraw, elementId + '_Secondary_Element') ||\n this.createElement('div');\n tooltipDiv.id = elementId + '_Secondary_Element';\n tooltipDiv.style.cssText = 'position: relative';\n appendChildElement(false, this.element, tooltipDiv, this.redraw);\n }\n // For canvas\n if (this.enableCanvas) {\n var tooltipdiv = document.getElementById(elementId + '_Secondary_Element');\n tooltipdiv = !tooltipdiv ? this.createElement('div', { id: elementId + '_Secondary_Element',\n attrs: { 'style': 'position: relative; left:0px; top:0px' } }) : tooltipdiv;\n var svg = this.svgRenderer.createSvg({\n id: elementId + '_tooltip_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n svg.style.cssText = 'position: absolute; pointer-events: none';\n tooltipdiv.appendChild(svg);\n }\n // For userInteraction\n if (this.tooltip.enable) {\n appendChildElement(this.enableCanvas, this.svgObject, this.renderer.createGroup({ id: elementId + '_UserInteraction', style: 'pointer-events:none;' }), this.redraw);\n }\n if (this.rows.length > 0 && this.columns.length > 0) {\n this.initializeIndicator();\n this.initializeTrendLine();\n this.renderSeries();\n // Trendline is append to DOM after the series\n if (this.trendLineElements) {\n appendChildElement(this.enableCanvas, this.svgObject, this.trendLineElements, this.redraw);\n }\n this.appendElementsAfterSeries(axisElement);\n }\n };\n /**\n * @private\n */\n Chart.prototype.renderSeries = function () {\n var visibility;\n if (this.enableCanvas) {\n // To clip the series rect for canvas\n this.renderer.canvasClip(this.chartAxisLayoutPanel.seriesClipRect);\n }\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.category === 'TrendLine') {\n visibility = this.series[item.sourceIndex].trendlines[item.index].visible;\n }\n else {\n visibility = item.visible;\n }\n if (visibility) {\n this.visible++;\n findClipRect(item, this.enableCanvas);\n if (this.enableCanvas) {\n // To render scatter and bubble series in canvas\n this.renderCanvasSeries(item);\n }\n item.renderSeries(this);\n }\n }\n if (this.enableCanvas) {\n this.renderer.canvasRestore();\n }\n this.visible = 0;\n var options = {\n 'id': this.element.id + '_ChartAreaClipRect_',\n 'x': this.chartAxisLayoutPanel.seriesClipRect.x,\n 'y': this.chartAxisLayoutPanel.seriesClipRect.y,\n 'width': this.chartAxisLayoutPanel.seriesClipRect.width,\n 'height': this.chartAxisLayoutPanel.seriesClipRect.height,\n 'fill': 'transparent',\n 'stroke-width': 1,\n 'stroke': 'Gray'\n };\n if (!this.seriesElements) {\n return;\n }\n var clipRectElement;\n if (this.chartAreaType === 'PolarRadar') {\n clipRectElement = appendClipElement(this.redraw, options, this.renderer, 'drawCircularClipPath');\n }\n else {\n clipRectElement = appendClipElement(this.redraw, options, this.renderer);\n }\n if (!this.enableCanvas) {\n this.seriesElements.appendChild(clipRectElement);\n }\n var seriesSvg = document.getElementById(this.element.id + '_series_svg');\n if (seriesSvg) {\n appendChildElement(false, seriesSvg, this.seriesElements, this.redraw);\n }\n else {\n appendChildElement(this.enableCanvas, this.svgObject, this.seriesElements, this.redraw);\n }\n };\n Chart.prototype.renderCanvasSeries = function (item) {\n var svgElement;\n // eslint-disable-next-line prefer-const\n svgElement = (this.enableCanvas) ?\n svgElement : this.svgObject;\n var canvas = (this.enableCanvas) ?\n false : this.enableCanvas;\n };\n Chart.prototype.initializeIndicator = function () {\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n if (this[firstToLowerCase(indicator.type) + 'IndicatorModule']) {\n this[firstToLowerCase(indicator.type) + 'IndicatorModule'].createIndicatorElements(this, indicator, indicator.index);\n }\n }\n if (this.indicatorElements) {\n appendChildElement(this.enableCanvas, this.svgObject, this.indicatorElements, this.redraw);\n }\n };\n Chart.prototype.initializeTrendLine = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.trendlines.length) {\n this.trendLineModule.getTrendLineElements(series, this);\n }\n }\n };\n Chart.prototype.appendElementsAfterSeries = function (axisElement) {\n if (this.chartAreaType === 'PolarRadar') {\n appendChildElement(this.enableCanvas, this.svgObject, this.yAxisElements, this.redraw);\n }\n appendChildElement(this.enableCanvas, this.svgObject, axisElement, this.redraw);\n if ((this.zoomModule && this.zoomSettings.enableScrollbar && this.scrollElement.childElementCount) ||\n (this.scrollElement && this.scrollElement.childElementCount)) {\n appendChildElement(false, getElement(this.element.id + '_Secondary_Element'), this.scrollElement, this.redraw);\n }\n if (this.stripLineModule) {\n this.stripLineModule.renderStripLine(this, 'Over', this.axisCollections);\n }\n if (!this.tooltip.enable) {\n appendChildElement(this.enableCanvas, this.svgObject, this.renderer.createGroup({ id: this.element.id + '_UserInteraction', style: 'pointer-events:none;' }), this.redraw);\n }\n if (this.stockChart) {\n this.stockChart.calculateStockEvents();\n }\n };\n Chart.prototype.applyZoomkit = function () {\n /**\n * Issue: Zoomkit not visible after performing refresh()\n * Fix: this method called without checking `zoomModule.isZoomed`\n */\n if (this.chartAreaType === 'PolarRadar') {\n return;\n }\n if (!this.redraw && this.zoomModule && (!this.zoomSettings.enablePan || this.zoomModule.performedUI || this.zoomSettings.showToolbar)) {\n this.zoomModule.applyZoomToolkit(this, this.axisCollections);\n }\n };\n /**\n * Render annotation perform here\n *\n * @private\n */\n Chart.prototype.renderAnnotation = function () {\n if (this.annotationModule) {\n //for stock chart, stock chart's id is added to render the annotations\n this.annotationModule.renderAnnotations(getElement((this.stockChart ? this.stockChart.element.id : this.element.id) + '_Secondary_Element'));\n }\n };\n Chart.prototype.performSelection = function () {\n var selectedDataIndexes = [];\n if (this.selectionModule) {\n selectedDataIndexes = extend([], this.selectionModule.selectedDataIndexes, null, true);\n this.selectionModule.invokeSelection(this);\n }\n if (this.highlightModule) {\n this.highlightModule.invokeHighlight(this);\n }\n if (selectedDataIndexes.length > 0) {\n this.selectionModule.selectedDataIndexes = selectedDataIndexes;\n this.selectionModule.redrawSelection(this, this.selectionMode);\n }\n };\n Chart.prototype.processData = function (render) {\n if (render === void 0) { render = true; }\n this.visibleSeriesCount = 0;\n var check = true;\n var prevPointCount = 0;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.visible && !this.legendSettings.visible) {\n this.visibleSeriesCount++;\n continue;\n }\n if (series.category !== 'Indicator' && series.category !== 'TrendLine') {\n this.initializeDataModule(series);\n }\n }\n for (var _b = 0, _c = this.indicators; _b < _c.length; _b++) {\n var indicator = _c[_b];\n if (indicator.dataSource) {\n var techIndicator = indicator;\n this.initializeDataModule(techIndicator);\n check = false;\n }\n }\n if (render && (!this.visibleSeries.length || this.visibleSeriesCount === this.visibleSeries.length && check)) {\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n if (!this.stockChart && this.visibleSeries.length > 0) {\n for (var _d = 0, _e = this.visibleSeries; _d < _e.length; _d++) {\n var series = _e[_d];\n if (!isNullOrUndefined(series.points)) {\n this.maxPointCount = Math.max(prevPointCount, series.points.length);\n prevPointCount = series.points.length;\n }\n }\n }\n };\n Chart.prototype.initializeDataModule = function (series) {\n series.xData = [];\n series.yData = [];\n var dataSource;\n var isAngular = 'isAngular';\n if (this[isAngular]) {\n dataSource = Object.keys(series.dataSource).length ? series.dataSource : this.dataSource;\n }\n else {\n dataSource = series.dataSource || this.dataSource;\n }\n series.dataModule = new Data(dataSource, series.query);\n series.points = [];\n series.refreshDataManager(this);\n };\n Chart.prototype.calculateBounds = function () {\n var margin = this.margin;\n // Title Height;\n var titleHeight = 0;\n var subTitleHeight = 0;\n var titleWidth = 0;\n var padding = this.titleStyle.position === 'Top' || (this.titleStyle.position === 'Bottom' && !this.legendSettings.visible) ? 15 : 5;\n var left = margin.left + this.border.width;\n var width = this.availableSize.width - left - margin.right - this.border.width;\n var elementSpacing = 0;\n this.titleCollection = [];\n this.subTitleCollection = [];\n if (this.title) {\n this.titleCollection = getTitle(this.title, this.titleStyle, width, this.themeStyle.chartTitleFont);\n titleHeight = (measureText(this.title, this.titleStyle, this.themeStyle.chartTitleFont).height * this.titleCollection.length) + padding;\n if (this.subTitle) {\n var maxWidth = 0;\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle, this.themeStyle.chartSubTitleFont).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n this.subTitleCollection = getTitle(this.subTitle, this.subTitleStyle, maxWidth, this.themeStyle.chartSubTitleFont);\n subTitleHeight = (measureText(this.subTitle, this.subTitleStyle, this.themeStyle.chartSubTitleFont).height * this.subTitleCollection.length) +\n padding;\n }\n }\n else if (this.legendSettings.position !== 'Top' && this.border.width) {\n elementSpacing = 10;\n }\n var top = margin.top + elementSpacing + this.border.width + this.chartArea.border.width * 0.5;\n var height = this.availableSize.height - top - this.border.width - margin.bottom;\n switch (this.titleStyle.position) {\n case 'Top':\n top += subTitleHeight + titleHeight;\n height -= (titleHeight + subTitleHeight);\n break;\n case 'Bottom':\n height -= (titleHeight + subTitleHeight);\n break;\n case 'Left':\n left += titleHeight + subTitleHeight;\n width -= (titleHeight + subTitleHeight);\n break;\n case 'Right':\n width -= (titleHeight + subTitleHeight);\n break;\n }\n if (this.stockChart && this.stockChart.legendSettings.visible && this.stockChart.stockLegendModule) {\n if (this.stockChart.legendSettings.position === 'Top') {\n top += this.stockChart.stockLegendModule.legendBounds.height;\n }\n else if (this.stockChart.legendSettings.position === 'Left') {\n left += this.stockChart.stockLegendModule.legendBounds.width;\n }\n }\n this.initialClipRect = new Rect(left, top, width, height);\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.calculateLegendBounds(this.initialClipRect, this.availableSize, null);\n }\n this.chartAxisLayoutPanel.measureAxis(this.initialClipRect);\n };\n /**\n * Handles the print method for chart control.\n */\n Chart.prototype.print = function (id) {\n var exportChart = new ExportUtils(this);\n var width = this.width;\n if (this.getModuleName() == 'chart' && parseInt(this.width) >= 80 && this.width.indexOf('%') > -1) {\n this.width = '80%';\n this.dataBind();\n }\n exportChart.print(id);\n if (this.getModuleName() == 'chart' && parseInt(this.width) >= 80 && this.width.indexOf('%') > -1) {\n this.width = width;\n this.dataBind();\n }\n };\n /**\n * Defines the trendline initialization\n */\n Chart.prototype.initTrendLines = function () {\n this.isProtectedOnChange = true;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n var trendIndex = 0;\n for (var _b = 0, _c = series.trendlines; _b < _c.length; _b++) {\n var trendline = _c[_b];\n var trendLine = trendline;\n if (this.trendLineModule) {\n trendLine.index = trendIndex;\n trendLine.sourceIndex = series.index;\n this.trendLineModule.initSeriesCollection(trendLine, this);\n if (trendLine.targetSeries) {\n trendLine.targetSeries.xAxisName = series.xAxisName;\n trendLine.targetSeries.yAxisName = series.yAxisName;\n this.visibleSeries.push(trendLine.targetSeries);\n }\n }\n trendIndex++;\n }\n }\n this.isProtectedOnChange = false;\n };\n Chart.prototype.calculateAreaType = function () {\n var series = this.series[0];\n this.chartArea.border.width = this.stockChart ? 0 : this.chartArea.border.width;\n if (series) {\n this.requireInvertedAxis = ((series.type.indexOf('Bar') !== -1) && !this.isTransposed) ||\n ((series.type.indexOf('Bar') === -1) && this.isTransposed && this.chartAreaType !== 'PolarRadar');\n }\n this.chartAxisLayoutPanel = this.chartAreaType === 'PolarRadar' ? (this.polarSeriesModule || this.radarSeriesModule)\n : new CartesianAxisLayoutPanel(this);\n };\n /**\n * Calculate the visible axis\n *\n * @private\n */\n Chart.prototype.calculateVisibleAxis = function () {\n var axis;\n var axes = [this.primaryXAxis, this.primaryYAxis];\n axes = this.chartAreaType === 'Cartesian' ? axes.concat(this.axes) : axes;\n if (this.paretoSeriesModule && this.series[0].type === 'Pareto') {\n axes = axes.concat(this.paretoSeriesModule.paretoAxes);\n }\n this.axisCollections = [];\n if (this.zoomModule) {\n this.zoomModule.isPanning = this.zoomModule.isAxisZoomed(axes) && this.zoomSettings.enablePan;\n this.svgObject.setAttribute('cursor', this.zoomModule.isPanning ? 'pointer' : 'auto');\n if (this.scrollBarModule) {\n this.scrollBarModule.axes = axes;\n }\n }\n if (this.scrollSettingEnabled) {\n if (this.scrollBarModule) {\n this.scrollBarModule.axes = axes;\n }\n }\n for (var i = 0, len = axes.length; i < len; i++) {\n axis = axes[i];\n axis.series = [];\n axis.labels = [];\n axis.indexLabels = {};\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n this.initAxis(series, axis, true);\n if (series.category == 'Pareto' && series.type == 'Line' && series.yAxis) {\n series.yAxis.internalVisibility = series.paretoOptions.showAxis;\n }\n }\n for (var _b = 0, _c = this.indicators; _b < _c.length; _b++) {\n var indicator = _c[_b];\n this.initAxis(indicator, axis, false);\n }\n if (this.scrollBarModule && !axis.zoomingScrollBar) {\n this.scrollBarModule.injectTo(axis, this);\n }\n if (axis.orientation != null) {\n this.axisCollections.push(axis);\n }\n }\n if (this.rows.length > 0 && this.columns.length > 0) {\n this.chartAxisLayoutPanel.measure();\n }\n };\n Chart.prototype.initAxis = function (series, axis, isSeries) {\n if (series.xAxisName === axis.name || (series.xAxisName == null && axis.name === 'primaryXAxis')) {\n axis.orientation = this.requireInvertedAxis ? 'Vertical' : 'Horizontal';\n series.xAxis = axis;\n if (isSeries) {\n axis.series.push(series);\n }\n }\n else if (series.yAxisName === axis.name || (series.yAxisName == null && axis.name === 'primaryYAxis')) {\n axis.orientation = this.requireInvertedAxis ? 'Horizontal' : 'Vertical';\n series.yAxis = axis;\n if (isSeries) {\n axis.series.push(series);\n }\n }\n };\n Chart.prototype.initTechnicalIndicators = function () {\n var i = 0;\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n var techIndicator = indicator;\n var type = firstToLowerCase(techIndicator.type);\n if (this[type + 'IndicatorModule']) {\n techIndicator.index = i;\n this[type + 'IndicatorModule'].initSeriesCollection(techIndicator, this);\n for (var _b = 0, _c = techIndicator.targetSeries; _b < _c.length; _b++) {\n var targetSeries = _c[_b];\n if (indicator.seriesName || indicator.dataSource) {\n this.visibleSeries.push(targetSeries);\n }\n }\n }\n i++;\n }\n };\n /** @private */\n Chart.prototype.refreshTechnicalIndicator = function (series) {\n if (this.indicators.length) {\n var targetIndicator = null;\n if (series instanceof Series && series.category !== 'Indicator') {\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n if (indicator.seriesName === series.name && !indicator.dataSource) {\n targetIndicator = indicator;\n targetIndicator.setDataSource(series, this);\n }\n }\n }\n else if (series instanceof TechnicalIndicator) {\n targetIndicator = series;\n targetIndicator.setDataSource(series instanceof Series ? series : null, this);\n }\n }\n };\n Chart.prototype.calculateVisibleSeries = function () {\n var series;\n this.visibleSeries = [];\n var colors = this.palettes.length ? this.palettes : getSeriesColor(this.theme);\n var count = colors.length;\n var seriesCollection = this.series.sort(function (a, b) { return a.zOrder - b.zOrder; });\n for (var i = 0, len = seriesCollection.length; i < len; i++) {\n series = seriesCollection[i];\n // for y axis label issue during chart navigation\n series.category = seriesCollection[0].type === 'Pareto' ? 'Pareto' : 'Series';\n series.index = i;\n series.interior = series.fill || colors[i % count];\n if (!series.marker.shape && (series.marker.visible || series.type === 'Scatter' || series.drawType === 'Scatter')) {\n series.marker.shape = markerShapes[this.markerIndex % 10];\n this.markerIndex++;\n }\n if (this.isSecondaryAxis(series.xAxis)) {\n series.xAxis.internalVisibility = series.xAxis.series.some(function (value) { return (value.visible); });\n }\n if (this.isSecondaryAxis(series.yAxis)) {\n series.yAxis.internalVisibility = series.yAxis.series.some(function (value) { return (value.visible); });\n }\n switch (series.type) {\n case 'Bar':\n case 'StackingBar':\n case 'StackingBar100':\n if (seriesCollection[0].type.indexOf('Bar') === -1) {\n continue;\n }\n break;\n case 'Polar':\n case 'Radar':\n if (this.chartAreaType !== 'PolarRadar') {\n continue;\n }\n if (this.chartAreaType === 'PolarRadar' && ((series.xAxisName === null && series.yAxisName !== null) ||\n (series.xAxisName !== null && series.yAxisName === null) ||\n (series.xAxisName !== null && series.yAxisName !== null))) {\n continue;\n }\n break;\n case 'Pareto':\n this.visibleSeries.push(series);\n this.paretoSeriesModule.initSeries(series, this);\n continue;\n default:\n if (this.chartAreaType === 'PolarRadar' || seriesCollection[0].type.indexOf('Bar') > -1) {\n continue;\n }\n break;\n }\n this.visibleSeries.push(series);\n seriesCollection[i] = series;\n }\n };\n Chart.prototype.isSecondaryAxis = function (axis) {\n return (this.axes.indexOf(axis) > -1);\n };\n Chart.prototype.renderTitle = function () {\n var rect;\n var margin = this.margin;\n if (this.title) {\n var getAnchor = getTextAnchor(this.titleStyle.textAlignment, this.enableRtl);\n var elementSize = measureText(this.title, this.titleStyle, this.themeStyle.chartTitleFont);\n rect = new Rect(margin.left, 0, this.availableSize.width - margin.left - margin.right, 0);\n var positionY = this.margin.top + ((elementSize.height) * 3 / 4);\n var positionX = titlePositionX(rect, this.titleStyle || this.themeStyle.chartTitleFont);\n var rotation = void 0;\n var alignment = this.titleStyle.textAlignment;\n switch (this.titleStyle.position) {\n case 'Bottom':\n positionY = this.availableSize.height - this.margin.bottom - (elementSize.height);\n break;\n case 'Left':\n positionX = this.margin.left + ((elementSize.height) * 3 / 4);\n positionY = alignment == 'Near' ? margin.bottom : alignment == 'Far' ? this.availableSize.height - margin.bottom : this.availableSize.height / 2;\n getAnchor = alignment == 'Near' ? 'end' : alignment == 'Far' ? 'start' : 'middle';\n getAnchor = this.enableRtl ? (getAnchor === 'end' ? 'start' : getAnchor === 'start' ? 'end' : getAnchor) : getAnchor;\n rotation = 'rotate(' + -90 + ',' + positionX + ',' + positionY + ')';\n break;\n case 'Right':\n positionX = this.availableSize.width - this.margin.right - ((elementSize.height) * 3 / 4);\n positionY = alignment == 'Near' ? margin.bottom : alignment == 'Far' ? this.availableSize.height - margin.bottom : this.availableSize.height / 2;\n getAnchor = alignment == 'Near' ? 'start' : alignment == 'Far' ? 'end' : 'middle';\n getAnchor = this.enableRtl ? (getAnchor === 'end' ? 'start' : getAnchor === 'start' ? 'end' : getAnchor) : getAnchor;\n rotation = 'rotate(' + 90 + ',' + positionX + ',' + positionY + ')';\n break;\n case 'Custom':\n positionX = this.titleStyle.x;\n positionY = this.titleStyle.y;\n getAnchor = 'middle';\n break;\n }\n var options = new TextOption(this.element.id + '_ChartTitle', positionX, positionY, getAnchor, this.titleCollection, rotation, 'auto');\n var element = redrawElement(this.redraw, this.element.id + '_ChartTitle', options, this.renderer) ||\n textElement(this.renderer, options, this.titleStyle, this.titleStyle.color || this.themeStyle.chartTitleFont.color, this.svgObject, null, null, null, null, null, null, null, null, this.enableCanvas, null, this.themeStyle.chartTitleFont);\n if (element) {\n element.setAttribute('tabindex', '0');\n element.setAttribute('class', 'e-chart-focused');\n }\n if (this.subTitle) {\n this.renderSubTitle(options);\n }\n }\n };\n Chart.prototype.renderSubTitle = function (options) {\n var maxWidth = 0;\n var titleWidth = 0;\n var padding = 10;\n var alignment = this.titleStyle.textAlignment;\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle, this.themeStyle.chartSubTitleFont).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n var subTitleElementSize = measureText(this.subTitle, this.subTitleStyle, this.themeStyle.chartSubTitleFont);\n var rect = new Rect(alignment === 'Center' ? (options.x - maxWidth * 0.5) : alignment === 'Far' ? options.x - maxWidth : options.x, 0, maxWidth, 0);\n if (this.titleStyle.position === 'Left') {\n rect.x = alignment === 'Center' ? (options.x - maxWidth * 0.5) : alignment == 'Far' ? this.margin.left + ((subTitleElementSize.height) * 3 / 4) : (options.x - maxWidth);\n }\n var subTitleOptions = new TextOption(this.element.id + '_ChartSubTitle', titlePositionX(rect, this.subTitleStyle), options.y * options.text.length + ((subTitleElementSize.height) * 3 / 4) + padding, getTextAnchor(this.subTitleStyle.textAlignment, this.enableRtl), this.subTitleCollection, options.transform, 'auto');\n var element = redrawElement(this.redraw, this.element.id + '_ChartSubTitle', subTitleOptions, this.renderer) ||\n textElement(this.renderer, subTitleOptions, this.subTitleStyle, this.subTitleStyle.color || this.themeStyle.chartSubTitleFont.color, this.svgObject, null, null, null, null, null, null, null, null, this.enableCanvas, null, this.themeStyle.chartSubTitleFont);\n };\n Chart.prototype.renderBorder = function () {\n var x = 0;\n var y = 0;\n var width = this.border.width;\n var backGroundImage = this.backgroundImage;\n var fillColor = backGroundImage ? 'transparent' : (this.background || this.themeStyle.background);\n if (this.stockChart && this.stockChart.legendSettings.visible && this.stockChart.stockLegendModule) {\n if (this.stockChart.legendSettings.position === 'Top') {\n y += this.stockChart.stockLegendModule.legendBounds.height;\n }\n else if (this.stockChart.legendSettings.position === 'Left') {\n x += this.stockChart.stockLegendModule.legendBounds.width;\n }\n }\n var rect = new RectOption(this.element.id + '_ChartBorder', fillColor, this.border, 1, new Rect(width * 0.5 + x, width * 0.5 + y, this.availableSize.width - width, this.availableSize.height - width));\n this.htmlObject = redrawElement(this.redraw, this.element.id + '_ChartBorder', rect, this.renderer)\n || this.renderer.drawRectangle(rect);\n this.htmlObject.setAttribute('aria-hidden', 'true');\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw);\n // to draw back ground image for chart\n if (backGroundImage) {\n var image = new ImageOption(this.availableSize.height - width, this.availableSize.width - width, backGroundImage, 0, 0, this.element.id + '_ChartBackground', 'visible', 'none');\n this.htmlObject = redrawElement(this.redraw, this.element.id + '_ChartBackground', image, this.renderer)\n || this.renderer.drawImage(image);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw);\n }\n };\n /**\n * @private\n */\n Chart.prototype.renderAreaBorder = function () {\n if (this.chartAreaType === 'PolarRadar') {\n return null;\n }\n else {\n var element = getElement(this.element.id + '_ChartAreaBorder');\n var previousRect = element ?\n new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')) : null;\n var rect = new RectOption(this.element.id + '_ChartAreaBorder', this.chartArea.background, { width: this.chartArea.border.width, color: this.chartArea.border.color || this.themeStyle.areaBorder }, this.chartArea.opacity, this.chartAxisLayoutPanel.seriesClipRect);\n this.htmlObject = this.renderer.drawRectangle(rect);\n this.htmlObject.setAttribute('aria-hidden', 'true');\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw, true, 'x', 'y', null, null, true, true, previousRect);\n this.htmlObject = null;\n }\n // to draw back ground image for chart area\n var backGroundImage = this.chartArea.backgroundImage;\n if (backGroundImage) {\n var width = this.chartArea.border.width;\n var image = new ImageOption(this.initialClipRect.height - width, this.initialClipRect.width - width, backGroundImage, this.initialClipRect.x, this.initialClipRect.y, this.element.id + '_ChartAreaBackground', 'visible', 'none');\n this.htmlObject = this.renderer.drawImage(image);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw, true, 'x', 'y', null, null, true, true);\n }\n };\n /**\n * To add series for the chart\n *\n * @param {SeriesModel[]} seriesCollection - Defines the series collection to be added in chart.\n * @returns {void}.\n */\n Chart.prototype.addSeries = function (seriesCollection) {\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n series = new Series(this, 'series', series);\n this.series.push(series);\n }\n this.refresh();\n };\n /**\n * To Remove series for the chart\n *\n * @param {number} index - Defines the series index to be remove in chart series\n * @returns {void}\n */\n Chart.prototype.removeSeries = function (index) {\n this.redraw = false; //fix for remove svg not working when use animatemethod.\n if (this.visibleSeries[index]) {\n this.visibleSeries[index].xAxis.orientation = null;\n this.visibleSeries[index].yAxis.orientation = null;\n }\n for (var i = 0; i < this.axes.length; i++) {\n if (this.axes[i].orientation === null) {\n this.axes.splice(i, 1);\n }\n }\n this.series.splice(index, 1);\n this.refresh();\n };\n /**\n * To Clear all series for the chart\n *\n * @returns {void}.\n */\n Chart.prototype.clearSeries = function () {\n this.series = [];\n this.refresh();\n };\n /**\n * To add secondary axis for the chart\n *\n * @param {AxisModel[]} axisCollection - Defines the axis collection to be added in chart.\n * @returns {void}.\n */\n Chart.prototype.addAxes = function (axisCollection) {\n for (var _i = 0, axisCollection_1 = axisCollection; _i < axisCollection_1.length; _i++) {\n var axis = axisCollection_1[_i];\n axis = new Axis(this, 'axes', axis);\n if (this.isBlazor) {\n axis.interval = isNaN(axis.interval) ? null : axis.interval;\n axis.desiredIntervals = isNaN(axis.desiredIntervals) ? null : axis.desiredIntervals;\n }\n this.axes.push(axis);\n }\n this.refresh();\n };\n /**\n * To remove secondary axis for the chart\n *\n * @param {number} index - Defines the axis collection to be removed in chart.\n * @returns {void}\n */\n Chart.prototype.removeAxis = function (index) {\n this.redraw = false;\n this.axes.splice(index, 1);\n this.refresh();\n };\n /**\n * To destroy the widget\n *\n * @function destroy\n * @returns {void}.\n * @member of Chart\n */\n Chart.prototype.destroy = function () {\n if (this.scrollBarModule) {\n this.scrollBarModule.destroy();\n }\n if (this.markerRender) {\n this.markerRender.removeEventListener();\n this.markerRender = null;\n }\n this.horizontalAxes = [];\n this.verticalAxes = [];\n this.visibleSeries = [];\n this.axisCollections = [];\n this.rotatedDataLabelCollections = [];\n this.seriesElements = null;\n this.chartAxisLayoutPanel = null;\n this.dataLabelCollections = null;\n this.dataLabelElements = null;\n this.yAxisElements = null;\n var element = document.getElementById(this.element.id + 'Keyboard_chart_focus');\n if (element) {\n element.remove();\n }\n var highlightElement = document.getElementById(this.element.id + '_ej2_chart_highlight');\n if (highlightElement) {\n highlightElement.remove();\n }\n /**\n * To fix react timeout destroy issue.\n */\n if (this.element) {\n this.unWireEvents();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.destroy.call(this);\n if (!this.enableCanvas) {\n this.removeSvg();\n this.svgObject = null;\n }\n }\n };\n /**\n * Get component name\n */\n Chart.prototype.getModuleName = function () {\n return 'chart';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Chart.prototype.getPersistData = function () {\n var keyEntity = ['loaded', 'animationComplete', 'primaryXAxis', 'primaryYAxis'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Method to create SVG element.\n */\n Chart.prototype.createChartSvg = function () {\n this.removeSvg();\n createSvg(this);\n };\n /**\n * Method to bind events for chart\n */\n Chart.prototype.unWireEvents = function () {\n var startEvent = Browser.touchStartEvent;\n var moveEvent = Browser.touchMoveEvent;\n var stopEvent = Browser.touchEndEvent;\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n /*! UnBind the Event handler */\n EventHandler.remove(this.element, startEvent, this.chartOnMouseDown);\n EventHandler.remove(this.element, moveEvent, this.mouseMove);\n EventHandler.remove(this.element, stopEvent, this.mouseEnd);\n EventHandler.remove(this.element, 'click', this.chartOnMouseClick);\n EventHandler.remove(this.element, 'dblclick', this.chartOnDoubleClick);\n EventHandler.remove(this.element, 'contextmenu', this.chartRightClick);\n EventHandler.remove(this.element, cancelEvent, this.mouseLeave);\n EventHandler.remove(this.element, 'keydown', this.chartKeyDown);\n EventHandler.remove(document.body, 'keydown', this.documentKeyHandler);\n EventHandler.remove(this.element, 'keyup', this.chartKeyUp);\n window.removeEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeBound);\n /**\n * To fix memory issue\n */\n if (this.touchObject) {\n this.touchObject.destroy();\n this.touchObject = null;\n }\n };\n Chart.prototype.wireEvents = function () {\n /**\n * To fix react timeout destroy issue.\n */\n if (!this.element) {\n return;\n }\n /*! Find the Events type */\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n /*! Bind the Event handler */\n EventHandler.add(this.element, Browser.touchStartEvent, this.chartOnMouseDown, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMove, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEnd, this);\n EventHandler.add(this.element, 'click', this.chartOnMouseClick, this);\n EventHandler.add(this.element, 'dblclick', this.chartOnDoubleClick, this);\n EventHandler.add(this.element, 'contextmenu', this.chartRightClick, this);\n EventHandler.add(this.element, cancelEvent, this.mouseLeave, this);\n EventHandler.add(this.element, 'keydown', this.chartKeyDown, this);\n EventHandler.add(document.body, 'keydown', this.documentKeyHandler, this);\n EventHandler.add(this.element, 'keyup', this.chartKeyUp, this);\n this.resizeBound = this.chartResize.bind(this);\n window.addEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeBound);\n this.longPressBound = this.longPress.bind(this);\n this.touchObject = new Touch(this.element, { tapHold: this.longPressBound, tapHoldThreshold: 500 });\n /*! Apply the style for chart */\n this.setStyle(this.element);\n };\n Chart.prototype.chartRightClick = function (event) {\n if (this.crosshair.enable && this.crosshairModule &&\n (event.buttons === 2 || event.which === 0 || event.pointerType === 'touch')) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n return true;\n };\n Chart.prototype.setStyle = function (element) {\n var zooming = this.zoomSettings;\n var disableScroll = zooming.enableSelectionZooming || zooming.enablePinchZooming ||\n this.selectionMode !== 'None' || this.crosshair.enable || this.highlightMode !== 'None';\n element.style.touchAction = disableScroll ? 'none' : 'element';\n element.style.msTouchAction = disableScroll ? 'none' : 'element';\n element.style.msContentZooming = 'none';\n element.style.msUserSelect = 'none';\n element.style.webkitUserSelect = 'none';\n element.style.position = 'relative';\n element.style.display = 'block';\n // To fix angular and react tooltip div scrollbar issue\n element.style.overflow = 'hidden';\n element.style.height = (element.style.height || (this.height && this.height.indexOf('%') === -1)) ? element.style.height : 'inherit';\n };\n /**\n * Finds the orientation.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.isOrientation = function () {\n return ('orientation' in window && 'onorientationchange' in window);\n };\n /**\n * Handles the long press on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.longPress = function (e) {\n this.mouseX = (e && e.originalEvent.changedTouches) ? (e.originalEvent.changedTouches[0].clientX) : 0;\n this.mouseY = (e && e.originalEvent.changedTouches) ? (e.originalEvent.changedTouches[0].clientY) : 0;\n this.startMove = true;\n this.setMouseXY(this.mouseX, this.mouseY);\n this.notify('tapHold', e);\n return false;\n };\n /**\n * To find mouse x, y for aligned chart element svg position\n */\n Chart.prototype.setMouseXY = function (pageX, pageY) {\n if (getElement(this.svgId)) {\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n var rect = this.element.getBoundingClientRect();\n this.mouseY = ((pageY - rect.top) - Math.max(svgRect.top - rect.top, 0) / this.scaleX);\n this.mouseX = ((pageX - rect.left) - Math.max(svgRect.left - rect.left, 0) / this.scaleY);\n if (this.stockChart) {\n this.mouseX += this.stockChart.legendSettings.position === 'Left' ? this.stockChart.stockLegendModule.legendBounds.width : 0;\n this.mouseY += this.stockChart.legendSettings.position === 'Top' ? this.stockChart.stockLegendModule.legendBounds.height : 0;\n }\n }\n };\n /**\n * Export method for the chart.\n */\n Chart.prototype.export = function (type, fileName) {\n if (this.exportModule) {\n this.exportModule.export(type, fileName);\n if (this.afterExport) {\n this.exportModule.getDataUrl(this);\n }\n }\n };\n /**\n * Handles the chart resize.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartResize = function () {\n var _this = this;\n this.animateSeries = false;\n var arg = {\n chart: this.isBlazor ? {} : this,\n name: resized,\n currentSize: new Size(0, 0),\n previousSize: new Size(this.availableSize.width, this.availableSize.height)\n };\n var beforeResizeArgs = { name: 'beforeResize', cancelResizedEvent: false };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n this.trigger(beforeResize, beforeResizeArgs);\n if (!beforeResizeArgs.cancelResizedEvent) {\n this.resizeTo = +setTimeout(function () {\n if (_this.isDestroyed || _this.stockChart) {\n clearTimeout(_this.resizeTo);\n return;\n }\n _this.createChartSvg();\n arg.currentSize = _this.availableSize;\n _this.trigger(resized, arg);\n _this.refreshAxis();\n _this.refreshBound();\n _this.trigger('loaded', { chart: _this.isBlazor ? {} : _this });\n }, 500);\n }\n return false;\n };\n /**\n * Handles the mouse move.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseMove = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n if (this.allowPan) {\n return false;\n }\n if (e.type === 'touchmove') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2' || this.isTouch;\n pageX = e.clientX;\n pageY = e.clientY;\n }\n this.previousPageX = pageX;\n this.previousPageY = pageY;\n if (getElement(this.svgId)) {\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseMove(e);\n }\n return false;\n };\n /**\n * Handles the mouse leave.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseLeave = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n if (this.stockChart && this.stockChart.onPanning) {\n return false;\n }\n if (e.type === 'touchleave') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n pageX = e.clientX;\n pageY = e.clientY;\n }\n this.previousPageX = null;\n this.previousPageY = null;\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseLeave(e);\n return false;\n };\n /**\n * Handles the mouse leave on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseLeave = function (e) {\n var element = e.target;\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n this.trigger(chartMouseLeave, { target: element.id, x: this.mouseX, y: this.mouseY });\n removeElement(this.element.id + '_EJ2_AxisLabel_Tooltip');\n this.isChartDrag = this.isPointMouseDown = false;\n this.notify(cancelEvent, e);\n return false;\n };\n /**\n * Handles the mouse double click on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnDoubleClick = function (e) {\n var element = e.target;\n this.trigger(chartDoubleClick, { target: element.id, x: this.mouseX, y: this.mouseY });\n return false;\n };\n /**\n * Handles the keyboard onkeydown on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartKeyDown = function (e) {\n var actionKey = '';\n if ((this.isZoomed && e.code === 'Tab') || e.code === 'Space') {\n e.preventDefault();\n }\n if (this.tooltip.enable && ((e.code === 'Tab' && this.previousTargetId.indexOf('Series') > -1) || e.code === 'Escape')) {\n actionKey = 'ESC';\n }\n if (this.highlightMode !== 'None' && e.code === 'Tab' && this.previousTargetId.indexOf('_chart_legend_') > -1) {\n if (this.highlightModule) {\n this.highlightModule.removeLegendHighlightStyles();\n }\n }\n if (e.ctrlKey && (e.key === '+' || e.code === 'Equal' || e.key === '-' || e.code === 'Minus')) {\n e.preventDefault();\n this.isZoomed = this.zoomModule && (this.zoomSettings.enableDeferredZooming || this.zoomSettings.enableSelectionZooming ||\n this.zoomSettings.enablePinchZooming || this.zoomSettings.enableMouseWheelZooming);\n //this.tooltipModule.fadeOut(this.element);\n actionKey = this.isZoomed ? e.code : '';\n }\n else if (e['keyCode'] === 82 && this.isZoomed) { // KeyCode 82 (R) for reseting\n e.preventDefault();\n this.isZoomed = false;\n actionKey = 'R';\n }\n else if (e.code.indexOf('Arrow') > -1) {\n e.preventDefault();\n actionKey = this.isZoomed ? e.code : '';\n }\n if (e.ctrlKey && (e.key === 'p')) {\n e.preventDefault();\n actionKey = 'CtrlP';\n }\n if (actionKey !== '')\n this.chartKeyboardNavigations(e, e.target.id, actionKey);\n return false;\n };\n /**\n * Handles the keyboard onkeydown on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartKeyUp = function (e) {\n var actionKey = '';\n var targetId = e.target['id'];\n var groupElement;\n var markerGroup;\n var targetElement = e.target;\n var titleElement = getElement(this.element.id + '_ChartTitle');\n var seriesElement = getElement(this.element.id + 'SeriesCollection');\n var legendElement = getElement(this.element.id + '_chart_legend_translate_g');\n var pagingElement = getElement(this.element.id + '_chart_legend_pageup');\n if (titleElement) {\n titleElement.setAttribute('class', 'e-chart-focused');\n }\n if (seriesElement && seriesElement.firstElementChild && seriesElement.firstElementChild.children[1]) {\n var firstChild = seriesElement.firstElementChild.children[1];\n var className = firstChild.getAttribute('class');\n if (className && className.indexOf('e-chart-focused') === -1) {\n className = className + ' e-chart-focused';\n }\n else if (!className) {\n className = 'e-chart-focused';\n }\n firstChild.setAttribute('class', className);\n }\n if (legendElement) {\n var firstChild = legendElement.firstElementChild;\n var className = firstChild.getAttribute('class');\n if (className && className.indexOf('e-chart-focused') === -1) {\n className = className + ' e-chart-focused';\n }\n else if (!className) {\n className = 'e-chart-focused';\n }\n firstChild.setAttribute('class', className);\n }\n if (pagingElement) {\n pagingElement.setAttribute('class', 'e-chart-focused');\n }\n if (e.code === 'Tab') {\n if (this.previousTargetId !== '') {\n if ((this.previousTargetId.indexOf('_Series_') > -1 && targetId.indexOf('_Series_') === -1)) {\n groupElement = getElement(this.element.id + 'SeriesCollection');\n var previousElement = this.previousTargetId.indexOf('_Symbol') > -1 ?\n getElement(this.element.id + 'SymbolGroup' + this.currentSeriesIndex).children[this.currentPointIndex + 1] :\n (this.previousTargetId.indexOf('_Point_') > -1 ?\n groupElement.children[this.currentSeriesIndex].children[this.currentPointIndex + 1] :\n groupElement.children[this.currentSeriesIndex]);\n this.setTabIndex(previousElement, groupElement.firstElementChild);\n this.currentPointIndex = 0;\n this.currentSeriesIndex = 0;\n }\n else if (this.previousTargetId.indexOf('_chart_legend_page') > -1 && targetId.indexOf('_chart_legend_page') === -1\n && targetId.indexOf('_chart_legend_g_') === -1) {\n this.setTabIndex(e.target, getElement(this.element.id + '_chart_legend_pageup'));\n }\n else if (this.previousTargetId.indexOf('_chart_legend_g_') > -1 && targetId.indexOf('_chart_legend_g_') === -1) {\n groupElement = getElement(this.element.id + '_chart_legend_translate_g');\n this.setTabIndex(groupElement.children[this.currentLegendIndex], groupElement.firstElementChild);\n }\n }\n this.previousTargetId = targetId;\n if (targetId.indexOf('SeriesGroup') > -1) {\n this.currentSeriesIndex = +targetId.split('SeriesGroup')[1];\n targetElement.removeAttribute('tabindex');\n targetElement.blur();\n if (targetElement.children[1].id.indexOf('_Point_') === -1) {\n markerGroup = getElement(this.element.id + 'SymbolGroup' + targetId.split('SeriesGroup')[1]);\n }\n targetId = this.focusChild((markerGroup != null ? markerGroup.children[1] : targetElement.children[1]));\n }\n actionKey = this.highlightMode !== 'None' || this.tooltip.enable ? 'Tab' : '';\n }\n else if (e.code.indexOf('Arrow') > -1) {\n e.preventDefault();\n this.previousTargetId = targetId;\n if (targetId.indexOf('_chart_legend_page') > -1) {\n if (e.code === 'ArrowLeft') {\n getElement(this.element.id + '_chart_legend_pagedown').removeAttribute('tabindex');\n this.focusChild(getElement(this.element.id + '_chart_legend_pageup'));\n }\n else if (e.code === 'ArrowRight') {\n getElement(this.element.id + '_chart_legend_pageup').removeAttribute('tabindex');\n this.focusChild(getElement(this.element.id + '_chart_legend_pagedown'));\n }\n }\n else if ((targetId.indexOf('_chart_legend_') > -1)) {\n var legendElement_1 = targetElement.parentElement.children;\n legendElement_1[this.currentLegendIndex].removeAttribute('tabindex');\n this.currentLegendIndex += (e.code === 'ArrowUp' || e.code === 'ArrowRight') ? +1 : -1;\n this.currentLegendIndex = this.getActualIndex(this.currentLegendIndex, legendElement_1.length);\n var currentLegend = legendElement_1[this.currentLegendIndex];\n this.focusChild(currentLegend);\n targetId = currentLegend.children[1].id;\n actionKey = this.highlightMode !== 'None' ? 'ArrowMove' : '';\n }\n else if (targetId.indexOf('_Series_') > -1) {\n groupElement = targetElement.parentElement.parentElement;\n var currentPoint = e.target;\n targetElement.removeAttribute('tabindex');\n targetElement.blur();\n if (e.code === 'ArrowRight' || e.code === 'ArrowLeft') {\n var seriesIndexes = [];\n for (var i = 0; i < groupElement.children.length; i++) {\n if (groupElement.children[i].id.indexOf('SeriesGroup') > -1) {\n seriesIndexes.push(+groupElement.children[i].id.split('SeriesGroup')[1]);\n }\n }\n this.currentSeriesIndex = seriesIndexes.indexOf(this.currentSeriesIndex) + (e.code === 'ArrowRight' ? 1 : -1);\n this.currentPointIndex = 0;\n this.currentSeriesIndex = seriesIndexes[this.getActualIndex(this.currentSeriesIndex, seriesIndexes.length)];\n groupElement = getElement(this.element.id + 'SeriesGroup' + this.currentSeriesIndex);\n markerGroup = getElement(this.element.id + 'SymbolGroup' + this.currentSeriesIndex);\n currentPoint = groupElement.children[1].id.indexOf('_Point_') === -1 && markerGroup ? markerGroup.children[1] :\n groupElement.children[1];\n }\n else {\n this.currentPointIndex += e.code === 'ArrowUp' ? 1 : -1;\n if (targetId.indexOf('_Symbol') > -1) {\n this.currentPointIndex = this.getActualIndex(this.currentPointIndex, getElement(this.element.id + 'SymbolGroup' + this.currentSeriesIndex).childElementCount - 1);\n currentPoint = getElement(this.element.id + '_Series_' + this.currentSeriesIndex + '_Point_' +\n this.currentPointIndex + '_Symbol');\n }\n else if (targetId.indexOf('_Point_') > -1) {\n this.currentPointIndex = this.getActualIndex(this.currentPointIndex, getElement(this.element.id + 'SeriesGroup' + this.currentSeriesIndex).childElementCount - 1);\n currentPoint = getElement(this.element.id + '_Series_' + this.currentSeriesIndex + '_Point_' +\n this.currentPointIndex);\n }\n }\n targetId = this.focusChild(currentPoint);\n actionKey = this.tooltip.enable || this.highlightMode !== 'None' ? 'ArrowMove' : '';\n }\n }\n else if ((e.code === 'Enter' || e.code === 'Space') && ((targetId.indexOf('_chart_legend_') > -1) ||\n (targetId.indexOf('_Point_') > -1))) {\n targetId = (targetId.indexOf('_chart_legend_page') > -1) ? targetId : ((targetId.indexOf('_chart_legend_') > -1) ?\n targetElement.children[1].id : targetId);\n actionKey = 'Enter';\n }\n if (actionKey !== '') {\n this.chartKeyboardNavigations(e, targetId, actionKey);\n }\n return false;\n };\n Chart.prototype.setTabIndex = function (previousElement, currentElement) {\n if (previousElement) {\n previousElement.removeAttribute('tabindex');\n }\n if (currentElement) {\n currentElement.setAttribute('tabindex', '0');\n }\n };\n Chart.prototype.getActualIndex = function (index, totalLength) {\n return index > totalLength - 1 ? 0 : (index < 0 ? totalLength - 1 : index);\n };\n Chart.prototype.focusChild = function (element) {\n element.setAttribute('tabindex', '0');\n var className = element.getAttribute('class');\n element.setAttribute('tabindex', '0');\n if (className && className.indexOf('e-chart-focused') === -1) {\n className = 'e-chart-focused ' + className;\n }\n else if (!className) {\n className = 'e-chart-focused';\n }\n element.setAttribute('class', className);\n element.focus();\n return element.id;\n };\n /**\n * Handles the document onkey.\n *\n * @private\n */\n Chart.prototype.documentKeyHandler = function (e) {\n // 74 - J\n if (e.altKey && e.keyCode === 74 && !isNullOrUndefined(this.element)) {\n this.element.focus();\n }\n };\n Chart.prototype.chartKeyboardNavigations = function (e, targetId, actionKey) {\n this.isLegendClicked = false;\n switch (actionKey) {\n case 'Tab':\n case 'ArrowMove':\n if (this.highlightModule) {\n this.highlightModule.removeLegendHighlightStyles();\n }\n if (targetId.indexOf('_Point_') > -1) {\n var seriesIndex = +(targetId.split('_Series_')[1].split('_Point_')[0]);\n var pointIndex = +(targetId.split('_Series_')[1].replace('_Symbol', '').split('_Point_')[1]);\n var pointRegion = this.visibleSeries[seriesIndex].points[pointIndex].symbolLocations[0];\n this.mouseX = pointRegion.x + this.initialClipRect.x;\n this.mouseY = pointRegion.y + this.initialClipRect.y;\n if (this.highlightModule) {\n this.highlightModule.highlightChart(document.getElementById(targetId), 'mousemove');\n this.highlightModule.completeSelection(document.getElementById(targetId), 'mousemove');\n }\n if (this.tooltipModule) {\n this.tooltipModule.tooltip();\n }\n }\n if (this.highlightModule && this.highlightMode !== 'None') {\n targetId = targetId.indexOf('_chart_legend_g_') > -1 ? document.getElementById(targetId).firstChild['id'] : targetId;\n var legendID = this.element.id + '_chart_legend';\n var legendItemsId = [legendID + '_text_', legendID + '_shape_marker_',\n legendID + '_shape_'];\n for (var i = 0; i < legendItemsId.length; i++) {\n var id = legendItemsId[i];\n if (targetId.indexOf(id) > -1) {\n document.getElementById(targetId).setAttribute('class', '');\n this.highlightModule.legendSelection(this, parseInt(targetId.split(id)[1], 10), document.getElementById(targetId), 'mousemove');\n break;\n }\n }\n }\n break;\n case 'Enter':\n case 'Space':\n if (targetId.indexOf('_chart_legend_') > -1) {\n this.isLegendClicked = true;\n this.legendModule.click(e);\n this.focusChild(document.getElementById(targetId).parentElement);\n }\n else {\n this.selectionModule.calculateSelectedElements(document.getElementById(targetId), 'click');\n }\n break;\n case 'CtrlP':\n this.print();\n break;\n case 'ESC':\n this.tooltipModule.removeTooltip(1);\n break;\n case 'Equal':\n case 'Minus':\n this.zoomModule.isZoomed = this.zoomModule.performedUI = true;\n this.zoomModule.isPanning = this.isChartDrag = false;\n if (actionKey === 'Equal') {\n this.zoomModule.toolkit.zoomInOutCalculation(1, this, this.axisCollections, this.zoomSettings.mode);\n }\n else {\n this.zoomModule.toolkit.zoomInOutCalculation(-1, this, this.axisCollections, this.zoomSettings.mode);\n }\n this.zoomModule.performZoomRedraw(this);\n this.element.focus();\n break;\n case 'ArrowUp':\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n var yArrowPadding = actionKey === 'ArrowUp' ? 10 : (actionKey === 'ArrowDown' ? -10 : 0);\n var xArrowPadding = actionKey === 'ArrowLeft' ? -10 : (actionKey === 'ArrowRight' ? 10 : 0);\n this.zoomModule.isPanning = this.isChartDrag = true;\n this.zoomModule.doPan(this, this.axisCollections, xArrowPadding, yArrowPadding);\n this.zoomModule.performZoomRedraw(this);\n this.element.focus();\n break;\n case 'R':\n this.zoomModule.toolkit.reset(e);\n break;\n }\n };\n /**\n * Handles the mouse click on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseClick = function (e) {\n var _this = this;\n var element = e.target;\n var chart = this;\n this.clickCount++;\n var timeInterval = 400;\n if (this.clickCount === 1) {\n this.singleClickTimer = +setTimeout(function () {\n chart.clickCount = 0;\n chart.trigger(chartMouseClick, { target: element.id, x: chart.mouseX, y: chart.mouseY });\n }, timeInterval);\n }\n else if (this.clickCount === 2 && !this.pointDoubleClick) {\n clearTimeout(this.singleClickTimer);\n this.clickCount = 0;\n }\n var isAngular = 'isAngular';\n if (this[isAngular]) {\n var observers = 'observers';\n timeInterval = this.pointDoubleClick[observers].length > 0 ? 400 : 0;\n }\n else {\n timeInterval = this.pointDoubleClick ? 400 : 0;\n }\n if (this.clickCount === 1 && this.pointClick) {\n this.singleClickTimer = +setTimeout(function () {\n _this.clickCount = 0;\n _this.triggerPointEvent(pointClick, e);\n }, timeInterval);\n }\n else if (this.clickCount === 2 && this.pointDoubleClick) {\n clearTimeout(this.singleClickTimer);\n this.clickCount = 0;\n this.triggerPointEvent(pointDoubleClick, e);\n }\n if (this.axisLabelClick) {\n this.triggerAxisLabelClickEvent(axisLabelClick, e);\n }\n this.notify('click', e);\n return false;\n };\n Chart.prototype.triggerPointEvent = function (event, e) {\n var evt = e;\n var data = new ChartData(this);\n var pointData = data.getData();\n if (pointData.series && pointData.point) {\n this.trigger(event, {\n series: this.isBlazor ? {} : pointData.series,\n point: pointData.point,\n seriesIndex: pointData.series.index, pointIndex: pointData.point.index,\n x: this.mouseX, y: this.mouseY, pageX: evt.pageX, pageY: evt.pageY\n });\n }\n };\n Chart.prototype.triggerAxisLabelClickEvent = function (event, e) {\n var targetElement = e.target;\n var clickEvt = e;\n if (targetElement.id.indexOf('_AxisLabel_') !== -1) {\n var index = targetElement.id.split('_AxisLabel_');\n var axisIndex = +index[0].slice(-1);\n var labelIndex = +index[1];\n var currentAxis = this.axisCollections[axisIndex];\n if (currentAxis.visible && (axisIndex === 0 || axisIndex === 1)) {\n this.trigger(event, {\n chart: this,\n axis: currentAxis,\n text: currentAxis.visibleLabels[labelIndex].text,\n labelID: targetElement.id,\n index: labelIndex,\n location: new ChartLocation(clickEvt.pageX, clickEvt.pageY),\n value: currentAxis.visibleLabels[labelIndex].value\n });\n }\n }\n };\n /**\n * Handles the mouse move on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseMove = function (e) {\n var element = e.target;\n this.trigger(chartMouseMove, { target: element.id, x: this.mouseX, y: this.mouseY });\n if (this.pointMove) {\n this.triggerPointEvent(pointMove, e);\n }\n // Tooltip for chart series.\n if (!this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY);\n this.axisTooltip(e, this.mouseX, this.mouseY);\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseMove(e);\n }\n this.notify(Browser.touchMoveEvent, e);\n this.isTouch = false;\n return false;\n };\n Chart.prototype.titleTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n var id = (targetId === (this.element.id + '_ChartTitle') || targetId === (this.element.id + '_ChartSubTitle') ||\n targetId.indexOf('_AxisTitle') > -1 || targetId.indexOf('_legend_title') > -1);\n var index = 0;\n if (targetId.indexOf('_AxisTitle') > -1) {\n index = parseInt(((targetId.replace(this.element.id, '')).replace('AxisLabel_', '')).split('_')[2], 10);\n }\n if (id && (event.target.textContent.indexOf('...') > -1)) {\n var title = (targetId === (this.element.id + '_ChartTitle')) ? this.title :\n targetId.indexOf('_AxisTitle') > -1 ? this.axisCollections[index].title :\n targetId.indexOf('_ChartSubTitle') > -1 ? this.subTitle : this.legendSettings.title;\n showTooltip(title, x, y, this.element.offsetWidth, this.element.id + '_EJ2_Title_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch);\n }\n else {\n removeElement(this.element.id + '_EJ2_Title_Tooltip');\n }\n };\n Chart.prototype.axisTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n if (((targetId.indexOf('AxisLabel') > -1) || targetId.indexOf('Axis_MultiLevelLabel') > -1) &&\n (event.target.textContent.indexOf('...') > -1)) {\n var isTitleOrLegendEnabled = (this.legendSettings.visible || this.primaryXAxis.title === '');\n showTooltip(this.findAxisLabel(targetId), x, y, this.element.offsetWidth, this.element.id + '_EJ2_AxisLabel_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch, isTitleOrLegendEnabled);\n }\n else {\n removeElement(this.element.id + '_EJ2_AxisLabel_Tooltip');\n }\n };\n Chart.prototype.findAxisLabel = function (text) {\n var texts;\n if (text.indexOf('AxisLabel') > -1) {\n texts = ((text.replace(this.element.id, '')).replace('AxisLabel_', '')).split('_');\n return this.axisCollections[parseInt(texts[0], 10)].visibleLabels[parseInt(texts[1], 10)].originalText;\n }\n else {\n texts = ((text.replace(this.element.id, '')).replace('Axis_MultiLevelLabel_Level_', '').replace('Text_', '')).split('_');\n return (this.axisCollections[parseInt(texts[0], 10)].multiLevelLabels[parseInt(texts[1], 10)]\n .categories[parseInt(texts[2], 10)].text);\n }\n };\n /**\n * Handles the mouse down on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseDown = function (e) {\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var offset = Browser.isDevice ? 20 : 30;\n var rect = this.element.getBoundingClientRect();\n var element = e.target;\n if (this.stockChart && this.stockChart.zoomSettings.enablePan) {\n this.allowPan = true;\n }\n this.trigger(chartMouseDown, { target: element.id, x: this.mouseX, y: this.mouseY });\n if (e.type === 'touchstart') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.clientX;\n pageY = e.clientY;\n target = e.target;\n }\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n this.mouseDownX = this.previousMouseMoveX = (pageX - rect.left) - Math.max(svgRect.left - rect.left, 0);\n this.mouseDownY = this.previousMouseMoveY = (pageY - rect.top) - Math.max(svgRect.top - rect.top, 0);\n if (this.isTouch) {\n this.isDoubleTap = (new Date().getTime() < this.threshold && target.id.indexOf(this.element.id + '_Zooming_') === -1 &&\n (this.mouseDownX - offset >= this.mouseX || this.mouseDownX + offset >= this.mouseX) &&\n (this.mouseDownY - offset >= this.mouseY || this.mouseDownY + offset >= this.mouseY) &&\n (this.mouseX - offset >= this.mouseDownX || this.mouseX + offset >= this.mouseDownX) &&\n (this.mouseY - offset >= this.mouseDownY || this.mouseY + offset >= this.mouseDownY));\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseDown();\n }\n this.notify(Browser.touchStartEvent, e);\n return false;\n };\n /**\n * Handles the mouse up.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseEnd = function (e) {\n var pageY;\n var pageX;\n var touchArg;\n if (e.type === 'touchend') {\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n this.isTouch = true;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n pageY = e.clientY;\n pageX = e.clientX;\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n }\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseUp(e);\n return false;\n };\n /**\n * Handles the mouse up.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.chartOnMouseUp = function (e) {\n var element = e.target;\n this.trigger(chartMouseUp, { target: element.id, x: this.mouseX, y: this.mouseY });\n this.isChartDrag = false;\n this.allowPan = false;\n if (this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n this.axisTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n this.threshold = new Date().getTime() + 300;\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseUp();\n }\n if (!this.enableCanvas && this.seriesElements) {\n this.seriesElements.removeAttribute('clip-path');\n }\n this.notify(Browser.touchEndEvent, e);\n return false;\n };\n /**\n * Method to set culture for chart\n */\n Chart.prototype.setCulture = function () {\n this.intl = new Internationalization();\n this.setLocaleConstants();\n this.localeObject = new L10n(this.getModuleName(), this.defaultLocalConstants, this.locale);\n };\n /**\n * Method to set the annotation content dynamically for chart.\n */\n Chart.prototype.setAnnotationValue = function (annotationIndex, content) {\n var parentNode = getElement(this.element.id + '_Annotation_Collections');\n var annotation = this.annotations[annotationIndex];\n var element;\n if (content !== null) {\n annotation.content = content;\n if (parentNode) {\n removeElement(this.element.id + '_Annotation_' + annotationIndex);\n element = this.createElement('div');\n this.annotationModule.processAnnotation(annotation, annotationIndex, element);\n parentNode.appendChild(element.children[0]);\n }\n else {\n this.annotationModule.renderAnnotations(getElement(this.element.id + '_Secondary_Element'));\n }\n }\n };\n /**\n * Method to set locale constants\n */\n Chart.prototype.setLocaleConstants = function () {\n this.defaultLocalConstants = {\n ZoomIn: 'Zoom in',\n Zoom: 'Zoom',\n ZoomOut: 'Zoom out',\n Pan: 'Pan',\n Reset: 'Reset',\n ResetZoom: 'Reset Zoom'\n };\n };\n /**\n * Theming for chart\n */\n Chart.prototype.setTheme = function () {\n /*! Set theme */\n this.themeStyle = getThemeColor(this.theme, this.enableCanvas);\n if (!(document.getElementById(this.element.id + 'Keyboard_chart_focus'))) {\n var style = document.createElement('style');\n style.setAttribute('id', this.element.id + 'Keyboard_chart_focus');\n style.innerText = '.e-chart-focused:focus, path[class*=_ej2_chart_selection_series]:focus,' +\n 'path[id*=_Point_]:focus, text[id*=_ChartTitle]:focus {outline: none } .e-chart-focused:focus-visible, path[class*=_ej2_chart_selection_series]:focus-visible,' +\n 'path[id*=_Point_]:focus-visible, text[id*=_ChartTitle]:focus-visible {outline: 1.5px ' + this.themeStyle.tabColor + ' solid}';\n document.body.appendChild(style);\n }\n };\n /**\n * To provide the array of modules needed for control rendering\n *\n * @returns {ModuleDeclaration[]}\n * @private\n */\n /* eslint-disable */\n Chart.prototype.requiredModules = function () {\n var _this = this;\n var modules = [];\n var series = this.series;\n var enableAnnotation = false;\n var moduleName;\n var errorBarVisible = false;\n var isPointDrag = false;\n var dataLabelEnable = false;\n var zooming = this.zoomSettings;\n this.chartAreaType = (series.length > 0 && (series[0].type === 'Polar' || series[0].type === 'Radar')) ? 'PolarRadar' : 'Cartesian';\n if (this.tooltip.enable) {\n modules.push({\n member: 'Tooltip',\n args: [this]\n });\n }\n series.map(function (value) {\n _this.isLegend = (_this.legendSettings.visible && ((value.name !== '') || !!_this.isLegend));\n moduleName = value.type.indexOf('100') !== -1 ? value.type.replace('100', '') + 'Series' : value.type + 'Series';\n errorBarVisible = value.errorBar.visible || errorBarVisible;\n dataLabelEnable = value.marker.dataLabel.visible || dataLabelEnable || (value.type == 'Pareto' && value.paretoOptions.marker.dataLabel.visible);\n isPointDrag = value.dragSettings.enable || isPointDrag;\n if (!modules.some(function (currentModule) {\n return currentModule.member === moduleName;\n })) {\n modules.push({\n member: moduleName,\n args: [_this, series]\n });\n }\n if (_this.chartAreaType === 'PolarRadar') {\n modules.push({\n member: value.drawType + 'Series',\n args: [_this, series]\n });\n }\n if (value.type === 'Pareto') {\n modules.push({\n member: 'ColumnSeries',\n args: [_this, series]\n });\n modules.push({\n member: 'LineSeries',\n args: [_this, series]\n });\n }\n });\n this.findIndicatorModules(modules);\n this.findTrendLineModules(modules);\n modules = this.findAxisModule(modules);\n enableAnnotation = this.annotations.some(function (value) {\n return (value.content !== null);\n });\n if (errorBarVisible) {\n modules.push({\n member: 'ErrorBar',\n args: [this, series]\n });\n }\n if (this.isLegend) {\n modules.push({\n member: 'Legend',\n args: [this]\n });\n }\n if (this.enableExport || this.allowExport) {\n modules.push({\n member: 'Export',\n args: [this]\n });\n }\n if (this.chartAreaType !== 'PolarRadar' && !this.scrollSettingEnabled && (zooming.enableSelectionZooming\n || zooming.enableMouseWheelZooming || zooming.enablePinchZooming || zooming.enablePan || zooming.enableScrollbar || zooming.showToolbar)) {\n modules.push({\n member: 'Zoom',\n args: [this, this.zoomSettings]\n });\n if (zooming.enableScrollbar) {\n modules.push({\n member: 'ScrollBar',\n args: [this]\n });\n }\n }\n if (this.selectionMode !== 'None' && !(this.chartAreaType === 'PolarRadar' &&\n this.selectionMode.indexOf('Drag') > -1)) {\n modules.push({\n member: 'Selection',\n args: [this]\n });\n }\n if (this.highlightMode !== 'None' || this.legendSettings.enableHighlight) {\n modules.push({\n member: 'Highlight',\n args: [this]\n });\n }\n if (dataLabelEnable) {\n modules.push({\n member: 'DataLabel',\n args: [this, series]\n });\n }\n if (isPointDrag) {\n modules.push({\n member: 'DataEditing',\n args: [this]\n });\n }\n if (enableAnnotation) {\n modules.push({\n member: 'Annotation',\n args: [this]\n });\n }\n if (this.chartAreaType !== 'PolarRadar' && this.crosshair.enable) {\n modules.push({\n member: 'Crosshair',\n args: [this]\n });\n }\n return modules;\n };\n Chart.prototype.findAxisModule = function (modules) {\n var axisCollections = [];\n axisCollections.push(this.primaryXAxis);\n axisCollections.push(this.primaryYAxis);\n axisCollections = axisCollections.concat(this.axes);\n var datetimeEnabled = false;\n var categoryEnabled = false;\n var logarithmicEnabled = false;\n var striplineEnabled = false;\n var dateTimeCategoryEnabled = false;\n var multiLevelEnabled = false;\n for (var _i = 0, axisCollections_1 = axisCollections; _i < axisCollections_1.length; _i++) {\n var axis = axisCollections_1[_i];\n datetimeEnabled = axis.valueType === 'DateTime' || datetimeEnabled;\n categoryEnabled = axis.valueType === 'Category' || categoryEnabled;\n logarithmicEnabled = axis.valueType === 'Logarithmic' || logarithmicEnabled;\n dateTimeCategoryEnabled = axis.valueType === 'DateTimeCategory' || dateTimeCategoryEnabled;\n striplineEnabled = this.findStriplineVisibility(axis.stripLines) || striplineEnabled;\n multiLevelEnabled = axis.multiLevelLabels.length > 0 || multiLevelEnabled;\n this.scrollSettingEnabled = axis.scrollbarSettings.enable ? true : this.scrollSettingEnabled;\n }\n if (datetimeEnabled) {\n modules.push({\n member: 'DateTime',\n args: [this]\n });\n }\n if (categoryEnabled) {\n modules.push({\n member: 'Category',\n args: [this]\n });\n }\n if (logarithmicEnabled) {\n modules.push({\n member: 'Logarithmic',\n args: [this]\n });\n }\n if (striplineEnabled) {\n modules.push({\n member: 'StripLine',\n args: [this]\n });\n }\n if (multiLevelEnabled) {\n modules.push({\n member: 'MultiLevelLabel',\n args: [this]\n });\n }\n if (dateTimeCategoryEnabled) {\n modules.push({\n member: 'DateTimeCategory',\n args: [this]\n });\n }\n if (this.scrollSettingEnabled) {\n modules.push({\n member: 'ScrollBar',\n args: [this]\n });\n }\n return modules;\n };\n Chart.prototype.findIndicatorModules = function (modules) {\n var macdEnable;\n var bandEnable;\n var indicators = this.indicators;\n if (this.indicators.length) {\n modules.push({\n member: 'LineSeries',\n args: [this]\n });\n indicators.map(function (indicator) {\n macdEnable = macdEnable || indicator.type === 'Macd';\n bandEnable = bandEnable || indicator.type === 'BollingerBands';\n });\n if (macdEnable) {\n modules.push({\n member: 'ColumnSeries',\n args: [this]\n });\n }\n if (bandEnable) {\n modules.push({\n member: 'RangeAreaSeries',\n args: [this]\n });\n }\n if (bandEnable) {\n modules.push({\n member: 'SplineRangeAreaSeries',\n args: [this]\n });\n }\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n modules.push({\n member: indicator.type + 'Indicator',\n args: [this]\n });\n }\n }\n };\n Chart.prototype.findTrendLineModules = function (modules) {\n var isLine;\n var isSpline;\n var _loop_1 = function (series) {\n var markerEnable;\n series.trendlines.map(function (trendline) {\n markerEnable = markerEnable || trendline.marker.visible;\n isLine = isLine || (trendline.type === 'Linear' || trendline.type === 'MovingAverage') ? true : false;\n isSpline = isSpline || !isLine ? true : false;\n });\n if (markerEnable) {\n modules.push({\n member: 'Marker',\n args: [this_1, series]\n });\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n _loop_1(series);\n }\n if (isLine || isSpline) {\n modules.push({\n member: 'TrendLine',\n args: [this]\n });\n }\n if (isLine) {\n modules.push({\n member: 'LineSeries',\n args: [this]\n });\n }\n if (isSpline) {\n modules.push({\n member: 'SplineSeries',\n args: [this]\n });\n }\n };\n Chart.prototype.findStriplineVisibility = function (striplines) {\n var visible = false;\n for (var _i = 0, striplines_1 = striplines; _i < striplines_1.length; _i++) {\n var stripline = striplines_1[_i];\n if (stripline.visible) {\n visible = true;\n break;\n }\n }\n return visible;\n };\n /**\n * To Remove the SVG.\n * @return {boolean}\n * @private\n */\n Chart.prototype.removeSvg = function () {\n if (this.redraw) {\n return null;\n }\n blazorTemplatesReset(this);\n if (this.enableCanvas && this.svgObject && this.svgObject.tagName === 'CANVAS') {\n this.renderer.clearRect(new Rect(0, 0, this.availableSize.width, this.availableSize.height));\n if (this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n return null;\n }\n removeElement(this.element.id + '_Secondary_Element');\n if (this.isReact) {\n this.clearTemplate();\n }\n var removeLength = 0;\n if (this.zoomModule && this.zoomModule.pinchTarget) {\n this.zoomModule.pinchTarget.id = '';\n this.zoomModule.pinchTarget.setAttribute('opacity', '0');\n this.svgObject.appendChild(this.zoomModule.pinchTarget);\n removeLength = 1;\n }\n // Fix for blazor resize issue\n if (!isNullOrUndefined(this.resizeTo)) {\n if (this.resizeTo !== this.checkResize && this.isBlazor && this.element.childElementCount) {\n var containerCollection = document.querySelectorAll('.e-chart');\n for (var index = 0; index < containerCollection.length; index++) {\n var container = containerCollection[index];\n while (container.firstChild) {\n remove(container.firstChild);\n }\n }\n }\n this.checkResize = this.resizeTo;\n }\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > removeLength) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode && !(this.stockChart)) {\n remove(this.svgObject);\n }\n }\n };\n Chart.prototype.refreshDefinition = function (definitions) {\n for (var _i = 0, definitions_1 = definitions; _i < definitions_1.length; _i++) {\n var item = definitions_1[_i];\n item.axes = [];\n }\n };\n /**\n * Refresh the axis default value.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.refreshAxis = function () {\n var axis = this.primaryXAxis;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis = this.primaryYAxis;\n axis.isStack100 = false;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n for (var _i = 0, _a = this.axes; _i < _a.length; _i++) {\n var item = _a[_i];\n axis = item;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis.isStack100 = false;\n }\n if (this.paretoSeriesModule && this.series[0].type === 'Pareto') {\n for (var _b = 0, _c = this.paretoSeriesModule.paretoAxes; _b < _c.length; _b++) {\n var item = _c[_b];\n axis = item;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis.isStack100 = false;\n }\n }\n };\n Chart.prototype.axisChange = function (axis) {\n if (!axis.name && !axis.valueType) {\n return false;\n }\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData();\n return true;\n };\n /**\n * Get visible series by index\n */\n Chart.prototype.getVisibleSeries = function (visibleSeries, index) {\n for (var _i = 0, visibleSeries_1 = visibleSeries; _i < visibleSeries_1.length; _i++) {\n var series = visibleSeries_1[_i];\n if (index === series.index) {\n return series;\n }\n }\n return null;\n };\n /**\n * Fix for live data update flicker issue\n */\n Chart.prototype.refreshLiveData = function () {\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData(false);\n if (!this.isBlazor) {\n this.enableCanvas ? this.createChartSvg() : this.removeSvg();\n this.refreshAxis();\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n };\n /**\n * To remove style element\n */\n Chart.prototype.removeStyles = function () {\n removeElement(this.element.id + '_ej2_chart_selection');\n removeElement(this.element.id + '_ej2_chart_highlight');\n };\n /**\n * To trigger the manual mouse move event for live chart tooltip\n */\n Chart.prototype.mouseMoveEvent = function () {\n if (this.tooltip.enable && this.previousPageX !== null && this.previousPageY !== null) {\n var mousemove = document.createEvent('MouseEvent');\n mousemove.initMouseEvent('mousemove', true, false, window, 1, 100, 100, this.previousPageX, this.previousPageY, false, false, false, false, 0, null);\n this.element.dispatchEvent(mousemove);\n }\n };\n /**\n * Called internally if any of the property value changed.\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n Chart.prototype.onPropertyChanged = function (newProp, oldProp) {\n var renderer = false;\n var refreshBounds = false;\n this.animateSeries = false;\n var axis;\n if (!this.delayRedraw) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'primaryXAxis':\n axis = newProp.primaryXAxis;\n refreshBounds = this.axisChange(axis);\n if (newProp.primaryXAxis.edgeLabelPlacement) {\n renderer = true;\n }\n if (!newProp.primaryXAxis.crosshairTooltip) {\n refreshBounds = true;\n }\n if (!isNullOrUndefined(axis.isInversed) || !isNullOrUndefined(axis.opposedPosition)) {\n this.primaryXAxis.setIsInversedAndOpposedPosition();\n }\n break;\n case 'primaryYAxis':\n axis = newProp.primaryYAxis;\n refreshBounds = this.axisChange(axis);\n if (newProp.primaryYAxis.edgeLabelPlacement) {\n renderer = true;\n }\n if (!newProp.primaryYAxis.crosshairTooltip) {\n refreshBounds = true;\n }\n if (!isNullOrUndefined(axis.isInversed) || !isNullOrUndefined(axis.opposedPosition)) {\n this.primaryYAxis.setIsInversedAndOpposedPosition();\n }\n break;\n case 'axes':\n for (var _b = 0, _c = Object.keys(newProp.axes); _b < _c.length; _b++) {\n var index = _c[_b];\n axis = newProp.axes[index];\n refreshBounds = refreshBounds || this.axisChange(axis);\n if (!axis.crosshairTooltip) {\n refreshBounds = true;\n }\n if (!isNullOrUndefined(axis.isInversed) || !isNullOrUndefined(axis.opposedPosition)) {\n this.axes[index].setIsInversedAndOpposedPosition();\n }\n }\n break;\n case 'height':\n case 'width':\n this.createChartSvg();\n refreshBounds = true;\n break;\n case 'subTitle':\n case 'title':\n refreshBounds = true;\n break;\n case 'titleStyle':\n if (newProp.titleStyle && (newProp.titleStyle.size || newProp.titleStyle.textOverflow)) {\n refreshBounds = true;\n }\n else {\n renderer = true;\n }\n break;\n case 'subTitleStyle':\n if (newProp.subTitleStyle && (newProp.subTitleStyle.size || newProp.subTitleStyle.textOverflow)) {\n refreshBounds = true;\n }\n else {\n renderer = true;\n }\n break;\n case 'border':\n renderer = true;\n break;\n case 'dataSource':\n this.processData(false);\n refreshBounds = true;\n break;\n case 'enableCanvas':\n this.refresh();\n break;\n case 'series':\n var len = this.series.length;\n var seriesRefresh = false;\n var series = void 0;\n var blazorProp = void 0;\n for (var i = 0; i < len; i++) {\n series = newProp.series[i];\n // I264774 blazor series visible property binding not working issue fixed.\n if (this.isBlazor && series && ((series.visible !== oldProp.series[i].visible) || series.isClosed ||\n series.marker || series.emptyPointSettings || series.type || series.boxPlotMode || series.showMean)) {\n blazorProp = true;\n }\n if (series && (series.dataSource || series.query || series.errorBar || series.xName ||\n series.yName || series.size || series.high || series.low || series.open || series.close || series.trendlines ||\n series.fill || series.name || series.marker || series.width || blazorProp)) {\n extend(this.getVisibleSeries(this.visibleSeries, i), series, null, true);\n seriesRefresh = true;\n }\n }\n if (this.availableSize && this.element) {\n this.element.style.height = (!this.element.style.height || this.element.style.height == 'inherit') ? (this.availableSize.height + 'px') : this.element.style.height;\n }\n if (seriesRefresh) {\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData(false);\n refreshBounds = true;\n }\n break;\n case 'indicators':\n refreshBounds = true;\n break;\n case 'zoomSettings':\n if (newProp.zoomSettings.enableScrollbar || oldProp.zoomSettings.enableScrollbar) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'background':\n renderer = true;\n break;\n case 'chartArea':\n if (newProp.chartArea.border && newProp.chartArea.border.width) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'legendSettings':\n if (!newProp.legendSettings.background || !newProp.legendSettings.opacity) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'palettes':\n this.calculateVisibleSeries();\n renderer = true;\n break;\n case 'selectedDataIndexes':\n if (this.selectionModule) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.selectedDataIndexes = this.selectedDataIndexes;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode, true);\n }\n break;\n case 'selectionMode':\n if (this.selectionModule && newProp.selectionMode && newProp.selectionMode.indexOf('Drag') === -1) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode, true);\n }\n break;\n case 'isMultiSelect':\n if (this.selectionModule && !newProp.isMultiSelect && this.selectionModule.selectedDataIndexes.length > 1) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode);\n }\n break;\n case 'highlightMode':\n case 'selectionPattern':\n case 'highlightPattern':\n this.removeStyles();\n renderer = true;\n break;\n case 'theme':\n this.animateSeries = true;\n break;\n case 'locale':\n case 'currencyCode':\n if (this.isBlazor) {\n this.setCulture();\n renderer = true;\n }\n else {\n this.refresh();\n }\n break;\n case 'tooltip':\n if (this.tooltipModule) { // To check the tooltip enable is true.\n this.tooltipModule.previousPoints = [];\n if (this.tooltip.template) {\n this.tooltipModule.template = this.tooltip.template;\n }\n }\n break;\n }\n }\n if (!refreshBounds && renderer) {\n this.rotatedDataLabelCollections = [];\n this.removeSvg();\n this.renderElements();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n if (refreshBounds) {\n this.enableCanvas ? this.createChartSvg() : this.removeSvg();\n if (this.isReact) {\n this.clearTemplate();\n }\n this.dragY = null;\n this.refreshAxis();\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n this.redraw = false;\n this.animated = false;\n }\n }\n };\n __decorate([\n Property(null)\n ], Chart.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"16px\", fontStyle: 'Normal', fontWeight: '600', color: null }, titleSettings)\n ], Chart.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"subTitle\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: \"14px\", fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], Chart.prototype, \"subTitleStyle\", void 0);\n __decorate([\n Complex({}, Margin)\n ], Chart.prototype, \"margin\", void 0);\n __decorate([\n Complex({ color: '#DDDDDD', width: 0 }, Border)\n ], Chart.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"background\", void 0);\n __decorate([\n Complex({ border: { color: null, width: 0.5 }, background: 'transparent' }, ChartArea)\n ], Chart.prototype, \"chartArea\", void 0);\n __decorate([\n Complex({ name: 'primaryXAxis' }, Axis)\n ], Chart.prototype, \"primaryXAxis\", void 0);\n __decorate([\n Complex({ name: 'primaryYAxis' }, Axis)\n ], Chart.prototype, \"primaryYAxis\", void 0);\n __decorate([\n Collection([{}], Row)\n ], Chart.prototype, \"rows\", void 0);\n __decorate([\n Collection([{}], Column)\n ], Chart.prototype, \"columns\", void 0);\n __decorate([\n Collection([{}], Axis)\n ], Chart.prototype, \"axes\", void 0);\n __decorate([\n Collection([{}], Series)\n ], Chart.prototype, \"series\", void 0);\n __decorate([\n Collection([{}], ChartAnnotationSettings)\n ], Chart.prototype, \"annotations\", void 0);\n __decorate([\n Property([])\n ], Chart.prototype, \"palettes\", void 0);\n __decorate([\n Property('Material')\n ], Chart.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], Chart.prototype, \"tooltip\", void 0);\n __decorate([\n Complex({}, CrosshairSettings)\n ], Chart.prototype, \"crosshair\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], Chart.prototype, \"legendSettings\", void 0);\n __decorate([\n Collection([{}], RangeColorSetting)\n ], Chart.prototype, \"rangeColorSettings\", void 0);\n __decorate([\n Complex({}, ZoomSettings)\n ], Chart.prototype, \"zoomSettings\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"highlightColor\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"selectionMode\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"highlightMode\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"selectionPattern\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"highlightPattern\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"isMultiSelect\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableExport\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"allowExport\", void 0);\n __decorate([\n Collection([], Indexes)\n ], Chart.prototype, \"selectedDataIndexes\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"enableAutoIntervalOnBothAxis\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"isTransposed\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"enableCanvas\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"backgroundImage\", void 0);\n __decorate([\n Collection([], TechnicalIndicator)\n ], Chart.prototype, \"indicators\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], Chart.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableSideBySidePlacement\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"resized\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforeResize\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"annotationRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforeExport\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"afterExport\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"animationComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"legendRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"textRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"seriesRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisLabelRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisLabelClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisRangeCalculated\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisMultiLabelRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"legendClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"multiLevelLabelClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"sharedTooltipRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseMove\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartDoubleClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointDoubleClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointMove\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseLeave\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseDown\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseUp\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"selectionComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"zoomComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"onZooming\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollStart\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollEnd\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollChanged\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragEnd\", void 0);\n __decorate([\n Property('USD')\n ], Chart.prototype, \"currencyCode\", void 0);\n Chart = __decorate([\n NotifyPropertyChanges\n ], Chart);\n return Chart;\n}(Component));\nexport { Chart };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Chart } from '@syncfusion/ej2-charts';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents react Chart Component\n * ```tsx\n * \n * ```\n */\nvar ChartComponent = /** @class */ (function (_super) {\n __extends(ChartComponent, _super);\n function ChartComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.directivekeys = { 'seriesCollection': { 'series': { 'trendlines': 'trendline', 'segments': 'segment' } }, 'axes': { 'axis': { 'stripLines': 'stripLine', 'multiLevelLabels': { 'multiLevelLabel': { 'categories': 'category' } } } }, 'rows': 'row', 'columns': 'column', 'rangeColorSettings': 'rangeColorSetting', 'annotations': 'annotation', 'selectedDataIndexes': 'selectedDataIndex', 'indicators': 'indicator' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n ChartComponent.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 ChartComponent;\n}(Chart));\nexport { ChartComponent };\napplyMixins(ChartComponent, [ComponentBase, React.Component]);\n","/* eslint-disable @typescript-eslint/tslint/config */\n/* eslint-disable max-len */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\nimport { Animation, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DoubleRange } from '../utils/double-range';\nimport { appendChildElement, redrawElement, pathAnimation, valueToCoefficient, getVisiblePoints } from '../../common/utils/helper';\nimport { getAnimationFunction, getPoint, getMinPointsDelta } from '../../common/utils/helper';\nimport { PathOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { pointRender } from '../../common/model/constants';\n/**\n * Column Series Base\n */\nvar ColumnBase = /** @class */ (function () {\n function ColumnBase() {\n }\n /**\n * To get the position of the column series.\n *\n * @returns {DoubleRange} doubleRange\n * @private\n */\n ColumnBase.prototype.getSideBySideInfo = function (series) {\n if (series.chart.enableSideBySidePlacement && !series.position) {\n this.getSideBySidePositions(series);\n }\n if (series.columnWidthInPixel) {\n return new DoubleRange(0, 0);\n }\n var position = series.type === 'Histogram' || !series.chart.enableSideBySidePlacement ? 0 : series.position;\n var rectCount = series.type === 'Histogram' || !series.chart.enableSideBySidePlacement ? 1 : series.rectCount;\n series.isRectSeries = true;\n var visibleSeries = series.chart.visibleSeries;\n var seriesSpacing = series.chart.enableSideBySidePlacement ? series.columnSpacing : 0; // Column Spacing\n var pointSpacing = (series.columnWidth === null || isNaN(+series.columnWidth)) ? ((series.type === 'Histogram') ? 1 : 0.7) :\n Math.min(series.columnWidth, 1); // Column width\n var minimumPointDelta = getMinPointsDelta(series.xAxis, visibleSeries);\n var width = minimumPointDelta * pointSpacing;\n var radius;\n var location = (position) / rectCount - 0.5;\n var doubleRange = new DoubleRange(location, location + (1 / rectCount));\n if (!(isNaN(doubleRange.start) || isNaN(doubleRange.end))) {\n if (series.groupName && series.type.indexOf('Stacking') === -1) {\n var mainColumnWidth_1 = 0.7;\n series.chart.series.filter(function (series) { if (series.columnWidth > mainColumnWidth_1) {\n mainColumnWidth_1 = series.columnWidth;\n } });\n var mainWidth = minimumPointDelta * mainColumnWidth_1;\n var mainDoubleRange = new DoubleRange(doubleRange.start * mainWidth, doubleRange.end * mainWidth);\n var difference = ((mainDoubleRange.delta) - (doubleRange.end * width - doubleRange.start * width)) / 2;\n doubleRange = new DoubleRange(mainDoubleRange.start + difference, mainDoubleRange.end - difference);\n }\n else {\n doubleRange = new DoubleRange(doubleRange.start * width, doubleRange.end * width);\n }\n radius = seriesSpacing * doubleRange.delta;\n doubleRange = new DoubleRange(doubleRange.start + radius / 2, doubleRange.end - radius / 2);\n }\n return doubleRange;\n };\n /**\n * To get the rect values.\n *\n * @returns {Rect} rect region values\n * @private\n */\n ColumnBase.prototype.getRectangle = function (x1, y1, x2, y2, series) {\n var point1 = getPoint(x1, y1, series.xAxis, series.yAxis, series.chart.requireInvertedAxis);\n var point2 = getPoint(x2, y2, series.xAxis, series.yAxis, series.chart.requireInvertedAxis);\n return new Rect(Math.min(point1.x, point2.x), Math.min(point1.y, point2.y), Math.abs(point2.x - point1.x), Math.abs(point2.y - point1.y));\n };\n /**\n * To get the position of each series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.getSideBySidePositions = function (series) {\n var chart = series.chart;\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var columnItem = _a[_i];\n for (var _b = 0, _c = chart.rows; _b < _c.length; _b++) {\n var item = _c[_b];\n this.findRectPosition(series.findSeriesCollection(columnItem, item, false));\n }\n }\n };\n ColumnBase.prototype.findRectPosition = function (seriesCollection) {\n var groupingValues = [];\n var vSeries = { rectCount: 0, position: null };\n for (var i = 0; i < seriesCollection.length; i++) {\n var value = seriesCollection[i];\n if (value.type.indexOf('Stacking') !== -1 || value.groupName !== '') {\n var groupName = value.type.indexOf('Stacking') !== -1 ? value.stackingGroup : value.type + value.groupName;\n if (groupName) {\n if (groupingValues[groupName] === undefined) {\n value.position = vSeries.rectCount;\n groupingValues[groupName] = vSeries.rectCount++;\n }\n else {\n value.position = groupingValues[groupName];\n }\n }\n else {\n if (vSeries.position === null) {\n value.position = vSeries.rectCount;\n vSeries.position = vSeries.rectCount++;\n }\n else {\n value.position = vSeries.position;\n }\n }\n }\n else {\n value.position = vSeries.rectCount++;\n }\n }\n for (var i = 0; i < seriesCollection.length; i++) {\n var value = seriesCollection[i];\n value.rectCount = vSeries.rectCount;\n }\n };\n /**\n * Updates the symbollocation for points\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateSymbolLocation = function (point, rect, series) {\n if (!series.chart.requireInvertedAxis) {\n this.updateXRegion(point, rect, series);\n }\n else {\n this.updateYRegion(point, rect, series);\n }\n if (series.type === 'Histogram') {\n point.minimum = +point.x - series.histogramValues.binWidth / 2;\n point.maximum = +point.x + series.histogramValues.binWidth / 2;\n }\n };\n /**\n * Update the region for the point.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateXRegion = function (point, rect, series) {\n point.symbolLocations.push({\n x: rect.x + (rect.width) / 2,\n y: (series.seriesType === 'BoxPlot' || series.seriesType.indexOf('HighLow') !== -1 ||\n (point.yValue >= 0 === !series.yAxis.isAxisInverse)) ? rect.y : (rect.y + rect.height)\n });\n this.getRegion(point, rect, series);\n if (series.type === 'RangeColumn') {\n point.symbolLocations.push({\n x: rect.x + (rect.width) / 2,\n y: rect.y + rect.height\n });\n }\n };\n /**\n * Update the region for the point in bar series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateYRegion = function (point, rect, series) {\n point.symbolLocations.push({\n x: (series.seriesType === 'BoxPlot' || series.seriesType.indexOf('HighLow') !== -1 ||\n (point.yValue >= 0 === !series.yAxis.isAxisInverse)) ? rect.x + rect.width : rect.x,\n y: rect.y + rect.height / 2\n });\n this.getRegion(point, rect, series);\n if (series.type === 'RangeColumn') {\n point.symbolLocations.push({\n x: rect.x,\n y: rect.y + rect.height / 2\n });\n }\n };\n /**\n * To render the marker for the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.renderMarker = function (series) {\n if (series.marker && series.marker.visible) {\n series.chart.markerRender.render(series);\n }\n };\n /**\n * To get the marker region when Y value is 0\n *\n * @param {Points} point point\n * @param {rect} rect rect\n * @param {Series} series series\n */\n ColumnBase.prototype.getRegion = function (point, rect, series) {\n if (point.y === 0) {\n var markerWidth = (series.marker && series.marker.width) ? series.marker.width : 0;\n var markerHeight = (series.marker && series.marker.height) ? series.marker.height : 0;\n point.regions.push(new Rect(point.symbolLocations[0].x - markerWidth, point.symbolLocations[0].y - markerHeight, 2 * markerWidth, 2 * markerHeight));\n }\n else {\n point.regions.push(rect);\n }\n };\n /**\n * To trigger the point rendering event.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.triggerEvent = function (series, point, fill, border) {\n var argsData = {\n cancel: false, name: pointRender, series: series, point: point,\n fill: series.setPointColor(point, fill),\n border: series.setBorderColor(point, border)\n };\n series.chart.trigger(pointRender, argsData);\n point.color = argsData.fill;\n return argsData;\n };\n /**\n * To draw the rectangle for points.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.drawRectangle = function (series, point, rect, argsData) {\n var chart = series.chart;\n var check = chart.requireInvertedAxis ? rect.height : rect.width;\n if (check <= 0) {\n return null;\n }\n var direction;\n if (point.y === 0) {\n // For 0 values corner radius will not calculate\n direction = this.calculateRoundedRectPath(rect, 0, 0, 0, 0);\n }\n else {\n direction = this.calculateRoundedRectPath(rect, series.cornerRadius.topLeft, series.cornerRadius.topRight, series.cornerRadius.bottomLeft, series.cornerRadius.bottomRight);\n }\n var name = series.category === 'Indicator' ? chart.element.id + '_Indicator_' + series.index + '_' + series.name +\n '_Point_' + point.index : chart.element.id + '_Series_' + series.index + '_Point_' + point.index;\n var previousElement = redrawElement(chart.redraw, name);\n var previousDirection = previousElement ? previousElement.getAttribute('d') : '';\n var options = new PathOption(name, argsData.fill, argsData.border.width, argsData.border.color, series.opacity, series.dashArray, direction);\n var element = chart.renderer.drawPath(options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n switch (series.seriesType) {\n case 'XY':\n element.setAttribute('role', 'img');\n element.setAttribute('aria-label', point.x + ':' + point.yValue + ', ' + series.name);\n break;\n case 'HighLow':\n element.setAttribute('role', 'img');\n element.setAttribute('aria-label', point.x + ':' + point.high + ', ' + point.low + ', ' + series.name);\n break;\n }\n appendChildElement(series.chart.enableCanvas, series.seriesElement, element, chart.redraw);\n if (!series.chart.enableCanvas) {\n pathAnimation(element, direction, chart.redraw, previousDirection, chart.duration);\n }\n };\n /**\n * To animate the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.animate = function (series) {\n var rectElements = series.seriesElement.childNodes;\n var count = series.category === 'Indicator' ? 0 : 1;\n var visiblePoints = getVisiblePoints(series);\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n if (!point.symbolLocations.length && !(series.type === 'BoxAndWhisker' && point.regions.length)) {\n continue;\n }\n this.animateRect(rectElements[count], series, point);\n count++;\n }\n };\n /**\n * To animate the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.animateRect = function (element, series, point) {\n var option = series.animation;\n var duration = series.chart.animated ? series.chart.duration : option.duration;\n var effect = getAnimationFunction('Linear');\n var isPlot = point.yValue < 0;\n var x;\n var y;\n var elementHeight = +point.regions[0].height;\n var elementWidth = +point.regions[0].width;\n var centerX;\n var centerY;\n if (!series.chart.requireInvertedAxis) {\n x = +point.regions[0].x;\n if (series.type.indexOf('Stacking') > -1) {\n y = (1 - valueToCoefficient(0, series.yAxis)) * (series.yAxis.rect.height);\n centerX = x;\n centerY = y;\n }\n else {\n y = +point.regions[0].y;\n centerY = (series.seriesType.indexOf('HighLow') !== -1 || series.type.indexOf('Waterfall') !== -1) ? y + elementHeight / 2 :\n (isPlot !== series.yAxis.isAxisInverse) ? y : y + elementHeight;\n centerX = isPlot ? x : x + elementWidth;\n }\n }\n else {\n y = +point.regions[0].y;\n if (series.type.indexOf('Stacking') > -1) {\n x = (valueToCoefficient(0, series.yAxis)) * series.yAxis.rect.width;\n centerX = x;\n centerY = y;\n }\n else {\n x = +point.regions[0].x;\n centerY = isPlot ? y : y + elementHeight;\n centerX = (series.seriesType.indexOf('HighLow') !== -1 || series.type.indexOf('Waterfall') !== -1) ? x + elementWidth / 2 :\n (isPlot !== series.yAxis.isAxisInverse) ? x + elementWidth : x;\n }\n }\n var value;\n if (!isNullOrUndefined(element)) {\n element.style.visibility = 'hidden';\n new Animation({}).animate(element, {\n duration: duration,\n delay: option.delay,\n progress: function (args) {\n if (args.timeStamp >= args.delay) {\n element.style.visibility = 'visible';\n if (!series.chart.requireInvertedAxis) {\n elementHeight = elementHeight ? elementHeight : 1;\n value = effect(args.timeStamp - args.delay, 0, elementHeight, args.duration);\n element.setAttribute('transform', 'translate(' + centerX + ' ' + centerY +\n ') scale(1,' + (value / elementHeight) + ') translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n else {\n elementWidth = elementWidth ? elementWidth : 1;\n value = effect(args.timeStamp - args.delay, 0, elementWidth, args.duration);\n element.setAttribute('transform', 'translate(' + centerX + ' ' + centerY +\n ') scale(' + (value / elementWidth) + ', 1) translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n }\n },\n end: function () {\n element.setAttribute('transform', 'translate(0,0)');\n var seriesElement = series.seriesElement;\n if (element === seriesElement.lastElementChild || point.index === series.points.length - 1 ||\n (series.type === 'Waterfall' && element === seriesElement.children[seriesElement.childElementCount - 2])) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n if (series.type === 'Waterfall') {\n var rectElements = seriesElement.childNodes;\n for (var i = 0; i < rectElements.length; i++) {\n if (rectElements[i].id.indexOf('Connector') !== -1) {\n rectElements[i].style.visibility = 'visible';\n rectElements[i].setAttribute('transform', 'translate(0,0)');\n }\n }\n }\n }\n }\n });\n }\n };\n /**\n * To get rounded rect path direction.\n */\n ColumnBase.prototype.calculateRoundedRectPath = function (rect, topLeft, topRight, bottomLeft, bottomRight) {\n return 'M' + ' ' + rect.x + ' ' + (topLeft + rect.y) +\n ' Q ' + rect.x + ' ' + rect.y + ' ' + (rect.x + topLeft) + ' ' +\n rect.y + ' ' + 'L' + ' ' + (rect.x + rect.width - topRight) + ' ' + rect.y +\n ' Q ' + (rect.x + rect.width) + ' ' + rect.y + ' ' +\n (rect.x + rect.width) + ' ' + (rect.y + topRight) + ' ' + 'L ' +\n (rect.x + rect.width) + ' ' + (rect.y + rect.height - bottomRight)\n + ' Q ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' ' + (rect.x + rect.width - bottomRight) + ' ' +\n (rect.y + rect.height) + ' ' + 'L ' + (rect.x + bottomLeft) + ' ' + (rect.y + rect.height) + ' Q ' + rect.x + ' ' +\n (rect.y + rect.height) + ' ' + rect.x + ' ' + (rect.y + rect.height - bottomLeft) + ' ' + 'L' + ' ' + rect.x + ' ' +\n (topLeft + rect.y) + ' ' + 'Z';\n };\n return ColumnBase;\n}());\nexport { ColumnBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\nimport { withInRange } from '../../common/utils/helper';\nimport { ColumnBase } from './column-base';\n/**\n * `ColumnSeries` Module used to render the column series.\n */\nvar ColumnSeries = /** @class */ (function (_super) {\n __extends(ColumnSeries, _super);\n function ColumnSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Column series.\n *\n * @returns {void}\n * @private\n */\n ColumnSeries.prototype.render = function (series) {\n var rect;\n var sideBySideInfo = this.getSideBySideInfo(series);\n var origin = Math.max(series.yAxis.visibleRange.min, 0);\n var argsData;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var pointColumn = _a[_i];\n pointColumn.symbolLocations = [];\n pointColumn.regions = [];\n if (pointColumn.visible && withInRange(series.points[pointColumn.index - 1], pointColumn, series.points[pointColumn.index + 1], series)) {\n rect = this.getRectangle(pointColumn.xValue + sideBySideInfo.start, pointColumn.yValue, pointColumn.xValue + sideBySideInfo.end, origin, series);\n rect.width = series.columnWidthInPixel ? series.columnWidthInPixel : rect.width;\n rect.x = series.columnWidthInPixel ? rect.x - (((series.columnWidthInPixel / 2) * series.rectCount) -\n (series.columnWidthInPixel * series.index)) : rect.x;\n var color = series.category === 'Indicator' ? pointColumn.color : series.interior;\n argsData = this.triggerEvent(series, pointColumn, color, { width: series.border.width, color: series.border.color });\n if (!argsData.cancel) {\n this.updateSymbolLocation(pointColumn, rect, series);\n this.drawRectangle(series, pointColumn, rect, argsData);\n }\n }\n }\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n ColumnSeries.prototype.doAnimation = function (series) {\n this.animate(series);\n };\n /**\n * Get module name.\n */\n ColumnSeries.prototype.getModuleName = function () {\n return 'ColumnSeries';\n /**\n * return the module name\n */\n };\n /**\n * To destroy the column series.\n *\n * @returns {void}\n * @private\n */\n ColumnSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return ColumnSeries;\n}(ColumnBase));\nexport { ColumnSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\nimport { Double } from '../axis/double-axis';\n/**\n * Common axis classes\n *\n * @private\n */\nvar NiceInterval = /** @class */ (function (_super) {\n __extends(NiceInterval, _super);\n function NiceInterval() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Method to calculate numeric datetime interval.\n */\n NiceInterval.prototype.calculateDateTimeNiceInterval = function (axis, size, start, end, isChart) {\n if (isChart === void 0) { isChart = true; }\n var oneDay = 24 * 60 * 60 * 1000;\n var startDate = new Date(start);\n var endDate = new Date(end);\n //var axisInterval ;\n var totalDays = (Math.abs((startDate.getTime() - endDate.getTime()) / (oneDay)));\n var interval;\n axis.actualIntervalType = axis.intervalType;\n var type = axis.intervalType;\n switch (type) {\n case 'Years':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 365, size);\n break;\n case 'Quarter':\n interval = this.calculateNumericNiceInterval(axis, (totalDays / 365) * 4, size);\n break;\n case 'Months':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 30, size);\n break;\n case 'Weeks':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 7, size);\n break;\n case 'Days':\n interval = this.calculateNumericNiceInterval(axis, totalDays, size);\n break;\n case 'Hours':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24, size);\n break;\n case 'Minutes':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60, size);\n break;\n case 'Seconds':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60 * 60, size);\n break;\n case 'Auto':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 365, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Years';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays / 30, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Months';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays / 7, size);\n if (interval >= 1 && !isChart) {\n axis.actualIntervalType = 'Weeks';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Days';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Hours';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Minutes';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60 * 60, size);\n axis.actualIntervalType = 'Seconds';\n return interval;\n }\n return interval;\n };\n /**\n * To get the skeleton for the DateTime axis.\n *\n * @returns {string} skeleton format\n * @private\n */\n NiceInterval.prototype.getSkeleton = function (axis, currentValue, previousValue, isBlazor) {\n var skeleton;\n var intervalType = axis.actualIntervalType;\n if (axis.skeleton) {\n return axis.skeleton;\n }\n if (intervalType === 'Years') {\n if (isBlazor) {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'y' : 'y') : 'y';\n }\n else {\n skeleton = axis.isChart ? ((axis.valueType === 'DateTime' && axis.isIntervalInDecimal) ? 'y' : 'yMMM') : 'y';\n }\n }\n else if (intervalType === 'Quarter') {\n skeleton = isBlazor ? 'y' : 'yMMM';\n }\n else if (intervalType === 'Months') {\n if (isBlazor) {\n skeleton = axis.isChart ? 'm' : 'm';\n }\n else {\n skeleton = axis.isChart ? 'MMMd' : 'MMM';\n }\n }\n else if (intervalType === 'Weeks') {\n skeleton = isBlazor ? 'm' : 'MEd';\n }\n else if (intervalType === 'Days') {\n if (isBlazor) {\n skeleton = 'd';\n }\n else {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'MMMd' : 'yMd') : 'MMMd';\n }\n }\n else if (intervalType === 'Hours') {\n if (isBlazor) {\n skeleton = 't';\n }\n else {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'Hm' : 'EHm') : 'h';\n }\n }\n else if (intervalType === 'Minutes') {\n if (isBlazor) {\n skeleton = 'T';\n }\n else {\n skeleton = axis.isChart ? 'Hms' : 'hm';\n }\n }\n else {\n if (isBlazor) {\n skeleton = 'T';\n }\n else {\n skeleton = axis.isChart ? 'Hms' : 'hms';\n }\n }\n return skeleton;\n };\n /**\n * Find label format for axis\n *\n * @param {Axis} axis axis\n * @param {number} currentValue currentValue\n * @param {number} previousValue previousValue\n * @private\n */\n NiceInterval.prototype.findCustomFormats = function (axis, currentValue, previousValue) {\n var labelFormat = axis.labelFormat ? axis.labelFormat : '';\n if (axis.isChart && !axis.skeleton && axis.actualIntervalType === 'Months' && !labelFormat) {\n labelFormat = axis.valueType === 'DateTime' ? 'MMM yyyy' : 'yMMM';\n }\n return labelFormat;\n };\n return NiceInterval;\n}(Double));\nexport { NiceInterval };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { getActualDesiredIntervalsCount, triggerLabelRender } from '../../common/utils/helper';\nimport { DoubleRange } from '../utils/double-range';\nimport { withIn } from '../../common/utils/helper';\nimport { extend, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NiceInterval } from '../axis/axis-helper';\n/**\n * `Category` module is used to render category axis.\n */\nvar Category = /** @class */ (function (_super) {\n __extends(Category, _super);\n /**\n * Constructor for the category module.\n *\n * @private\n */\n function Category(chart) {\n return _super.call(this, chart) || this;\n }\n /**\n * The function to calculate the range and labels for the axis.\n *\n * @returns {void}\n */\n Category.prototype.calculateRangeAndInterval = function (size, axis) {\n this.calculateRange(axis);\n this.getActualRange(axis, size);\n this.applyRangePadding(axis, size);\n this.calculateVisibleLabels(axis);\n };\n /**\n * Actual Range for the axis.\n *\n * @private\n */\n Category.prototype.getActualRange = function (axis, size) {\n this.initializeDoubleRange(axis);\n // axis.doubleRange = new DoubleRange(this.min, this.max);\n axis.actualRange = {};\n if (!axis.interval) {\n axis.actualRange.interval = Math.max(1, Math.floor(axis.doubleRange.delta / getActualDesiredIntervalsCount(size, axis)));\n }\n else {\n axis.actualRange.interval = Math.ceil(axis.interval);\n }\n axis.actualRange.min = axis.doubleRange.start;\n axis.actualRange.max = axis.doubleRange.end;\n axis.actualRange.delta = axis.doubleRange.delta;\n };\n /**\n * Padding for the axis.\n *\n * @private\n */\n Category.prototype.applyRangePadding = function (axis, size) {\n var isColumn;\n axis.series.forEach(function (element) {\n if (!isColumn) {\n isColumn = element.type.indexOf('Column') > -1 && !(axis.zoomFactor < 1 || axis.zoomPosition > 0) && isNullOrUndefined(axis.minimum) && isNullOrUndefined(axis.maximum);\n }\n });\n var ticks = ((axis.labelPlacement === 'BetweenTicks' || isColumn) && this.chart.chartAreaType !== 'PolarRadar') ? 0.5 : 0;\n if (ticks > 0) {\n axis.actualRange.min -= ticks;\n axis.actualRange.max += ticks;\n }\n else {\n axis.actualRange.max += axis.actualRange.max ? 0 : 0.5;\n }\n axis.doubleRange = new DoubleRange(axis.actualRange.min, axis.actualRange.max);\n axis.actualRange.delta = axis.doubleRange.delta;\n this.calculateVisibleRange(size, axis);\n };\n /**\n * Calculate label for the axis.\n *\n * @private\n */\n Category.prototype.calculateVisibleLabels = function (axis) {\n /*! Generate axis labels */\n axis.visibleLabels = [];\n axis.visibleRange.interval = axis.visibleRange.interval < 1 ? 1 : axis.visibleRange.interval;\n var tempInterval = Math.ceil(axis.visibleRange.min);\n var labelStyle;\n if (axis.zoomFactor < 1 || axis.zoomPosition > 0) {\n tempInterval = axis.visibleRange.min - (axis.visibleRange.min % axis.visibleRange.interval);\n }\n var position;\n axis.startLabel = axis.labels[Math.round(axis.visibleRange.min)];\n axis.endLabel = axis.labels[Math.floor(axis.visibleRange.max)];\n for (; tempInterval <= axis.visibleRange.max; tempInterval += axis.visibleRange.interval) {\n labelStyle = (extend({}, getValue('properties', axis.labelStyle), null, true));\n if (withIn(tempInterval, axis.visibleRange) && axis.labels.length > 0) {\n position = Math.round(tempInterval);\n triggerLabelRender(this.chart, position, axis.labels[position] ? axis.labels[position].toString() : position.toString(), labelStyle, axis);\n }\n }\n if (axis.getMaxLabelWidth) {\n axis.getMaxLabelWidth(this.chart);\n }\n };\n /**\n * Get module name\n */\n Category.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'Category';\n };\n /**\n * To destroy the category axis.\n *\n * @returns {void}\n * @private\n */\n Category.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return Category;\n}(NiceInterval));\nexport { Category };\n","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { ChartLocation, RectOption, isCollide, isOverlap } from '../../common/utils/helper';\nimport { markerAnimate, appendChildElement, getVisiblePoints } from '../../common/utils/helper';\nimport { getLabelText, convertHexToColor, calculateRect, textElement, colorNameToHex } from '../../common/utils/helper';\nimport { measureText, TextOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { textRender } from '../../common/model/constants';\nimport { createTemplate, getFontStyle, getElement, measureElementRect, templateAnimate, withIn, withInBounds } from '../../common/utils/helper';\nimport { createElement, getValue, extend } from '@syncfusion/ej2-base';\nimport { getPoint, getRotatedRectangleCoordinates, isRotatedRectIntersect } from '../../common/utils/helper';\n/**\n * `DataLabel` module is used to render data label for the data point.\n */\nvar DataLabel = /** @class */ (function () {\n /**\n * Constructor for the data label module.\n *\n * @private\n */\n function DataLabel(chart) {\n this.errorHeight = 0;\n this.chart = chart;\n }\n DataLabel.prototype.initPrivateVariables = function (series, marker) {\n var transform = '';\n var clipPath = '';\n var render = series.chart.renderer;\n var index = (series.index === undefined) ? series.category : series.index;\n if (series.chart.chartAreaType === 'Cartesian') {\n transform = 'translate(' + series.clipRect.x + ',' + (series.clipRect.y) + ')';\n clipPath = 'url(#' + this.chart.element.id + '_ChartSeriesClipRect_' + index + ')';\n }\n if (marker.dataLabel.visible) {\n series.shapeElement = render.createGroup({\n 'id': this.chart.element.id + 'ShapeGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + this.chart.element.id + '_ChartSeriesClipRect_' + index + ')'\n });\n series.textElement = render.createGroup({\n 'id': this.chart.element.id + 'TextGroup' + index,\n 'transform': transform,\n 'clip-path': clipPath\n });\n series.textElement.setAttribute('aria-hidden', 'true');\n }\n this.markerHeight = ((series.type === 'Scatter' || marker.visible)) ? (marker.height / 2) : 0;\n this.commonId = this.chart.element.id + '_Series_' + index + '_Point_';\n this.calculateErrorHeight(series, series.marker.dataLabel.position);\n this.chartBackground = this.chart.chartArea.background === 'transparent' ?\n this.chart.background || this.chart.themeStyle.background : this.chart.chartArea.background;\n };\n DataLabel.prototype.calculateErrorHeight = function (series, position) {\n if (!series.errorBar.visible) {\n return null;\n }\n else if (series.errorBar.visible && this.chart.chartAreaType !== 'PolarRadar') {\n var direction = series.errorBar.direction;\n var positiveHeight = this.chart.errorBarModule.positiveHeight;\n var negativeHeight = this.chart.errorBarModule.negativeHeight;\n if (this.isRectSeries(series)) {\n if (position === 'Top' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Minus') {\n this.errorHeight = negativeHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n if (position === 'Outer' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Plus') {\n this.errorHeight = positiveHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n }\n else {\n if (position === 'Top' || position === 'Outer' || position === 'Auto') {\n if ((direction === 'Both' || direction === 'Plus') && (!series.chart.isTransposed)) {\n this.errorHeight = positiveHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n if (position === 'Bottom' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Minus') {\n this.errorHeight = negativeHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n }\n }\n else {\n this.errorHeight = 0;\n }\n };\n DataLabel.prototype.isRectSeries = function (series) {\n return series.isRectSeries || series.type === 'RangeArea' || series.type === 'SplineRangeArea' || series.type === 'RangeStepArea';\n };\n /**\n * Render the data label for series.\n *\n * @returns {void}\n */\n DataLabel.prototype.render = function (series, chart, dataLabel) {\n // initialize the private variable\n this.initPrivateVariables(series, series.marker);\n var rect;\n var labelLocation = { x: 0, y: 0 };\n var rgbValue;\n var contrast;\n var argsData;\n var border;\n var textSize;\n var angle;\n var degree;\n this.inverted = chart.requireInvertedAxis;\n this.yAxisInversed = series.yAxis.isAxisInverse;\n var redraw = chart.redraw;\n var isDataLabelOverlap = false;\n var coordinatesAfterRotation = [];\n var templateId = chart.element.id + '_Series_' +\n (series.index === undefined ? series.category : series.index) + '_DataLabelCollections';\n var element = createElement('div', {\n id: templateId\n });\n var visiblePoints = getVisiblePoints(series);\n var point;\n var rectCenterX;\n var rectCenterY;\n // Data label point iteration started\n for (var i = 0; i < visiblePoints.length; i++) {\n point = visiblePoints[i];\n if (!dataLabel.showZero && ((point.y !== 0) || (point.y === 0 && series.emptyPointSettings.mode === 'Zero'))) {\n return null;\n }\n this.margin = dataLabel.margin;\n var labelText = [];\n var labelLength = void 0;\n var xPos = void 0;\n var yPos = void 0;\n var xValue = void 0;\n var yValue = void 0;\n var isRender = true;\n var clip = series.clipRect;\n var shapeRect = void 0;\n isDataLabelOverlap = false;\n dataLabel.angle = dataLabel.labelIntersectAction === 'Rotate90' ? 90 : dataLabel.angle;\n dataLabel.enableRotation = dataLabel.labelIntersectAction === 'Rotate90' ? true : dataLabel.enableRotation;\n angle = degree = dataLabel.angle;\n border = { width: dataLabel.border.width, color: dataLabel.border.color };\n var argsFont = (extend({}, getValue('properties', dataLabel.font), null, true));\n if ((point.symbolLocations.length && point.symbolLocations[0]) ||\n (series.type === 'BoxAndWhisker' && point.regions.length)) {\n labelText = getLabelText(point, series, chart);\n labelLength = labelText.length;\n for (var i_1 = 0; i_1 < labelLength; i_1++) {\n argsData = {\n cancel: false, name: textRender, series: series,\n point: point, text: labelText[i_1], border: border,\n color: dataLabel.fill, template: dataLabel.template, font: argsFont, location: labelLocation,\n textSize: measureText(labelText[i_1], dataLabel.font, this.chart.themeStyle.datalabelFont)\n };\n chart.trigger(textRender, argsData);\n if (!argsData.cancel) {\n this.fontBackground = argsData.color;\n this.isDataLabelShape(argsData);\n this.markerHeight = series.type === 'Bubble' ? (point.regions[0].height / 2) : this.markerHeight;\n if (argsData.template !== null) {\n this.createDataLabelTemplate(element, series, dataLabel, point, argsData, i_1, redraw);\n }\n else {\n textSize = measureText(argsData.text, dataLabel.font, this.chart.themeStyle.datalabelFont);\n rect = this.calculateTextPosition(point, series, textSize, dataLabel, i_1);\n // To check whether the polar radar chart datalabel intersects the axis label or not\n if (chart.chartAreaType === 'PolarRadar') {\n for (var _i = 0, _a = chart.chartAxisLayoutPanel.visibleAxisLabelRect; _i < _a.length; _i++) {\n var rectRegion = _a[_i];\n if (isOverlap(new Rect(rect.x, rect.y, rect.width, rect.height), rectRegion)) {\n isRender = false;\n break;\n }\n }\n }\n var actualRect = new Rect(rect.x + clip.x, rect.y + clip.y, rect.width, rect.height);\n //let notOverlapping: boolean;\n if (dataLabel.enableRotation) {\n var rectCoordinates = this.getRectanglePoints(rect);\n rectCenterX = rect.x + (rect.width / 2);\n rectCenterY = (rect.y + (rect.height / 2));\n coordinatesAfterRotation = getRotatedRectangleCoordinates(rectCoordinates, rectCenterX, rectCenterY, angle);\n isDataLabelOverlap = (dataLabel.labelIntersectAction === 'Rotate90' || angle == -90) ? false : this.isDataLabelOverlapWithChartBound(coordinatesAfterRotation, chart, clip);\n if (!isDataLabelOverlap) {\n this.chart.rotatedDataLabelCollections.push(coordinatesAfterRotation);\n var currentPointIndex = this.chart.rotatedDataLabelCollections.length - 1;\n for (var index = currentPointIndex; index >= 0; index--) {\n if (this.chart.rotatedDataLabelCollections[currentPointIndex] &&\n this.chart.rotatedDataLabelCollections[index - 1] &&\n isRotatedRectIntersect(this.chart.rotatedDataLabelCollections[currentPointIndex], this.chart.rotatedDataLabelCollections[index - 1])) {\n isDataLabelOverlap = true;\n this.chart.rotatedDataLabelCollections[currentPointIndex] = null;\n break;\n }\n }\n }\n }\n else {\n isDataLabelOverlap = isCollide(rect, chart.dataLabelCollections, clip);\n }\n if ((!isDataLabelOverlap || dataLabel.labelIntersectAction === 'None') && isRender) {\n chart.dataLabelCollections.push(actualRect);\n if (this.isShape) {\n shapeRect = chart.renderer.drawRectangle(new RectOption(this.commonId + point.index + '_TextShape_' + i_1, argsData.color, argsData.border, dataLabel.opacity, rect, dataLabel.rx, dataLabel.ry), new Int32Array([clip.x, clip.y]));\n if (series.shapeElement) {\n series.shapeElement.appendChild(shapeRect);\n }\n }\n // Checking the font color\n var backgroundColor = this.fontBackground === 'transparent' ? ((this.chart.theme.indexOf('Dark') > -1 || this.chart.theme === 'HighContrast') ? 'black' : 'white') : this.fontBackground;\n rgbValue = convertHexToColor(colorNameToHex(backgroundColor));\n contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n xPos = (rect.x + this.margin.left + textSize.width / 2) + labelLocation.x;\n yPos = (rect.y + this.margin.top + textSize.height * 3 / 4) + labelLocation.y;\n labelLocation = { x: 0, y: 0 };\n if (angle !== 0 && dataLabel.enableRotation) {\n // xValue = xPos - (dataLabel.margin.left) / 2 + (dataLabel.margin.right / 2);\n xValue = rectCenterX;\n //yValue = yPos - (dataLabel.margin.top) / 2 - (textSize.height / dataLabel.margin.top) +\n // (dataLabel.margin.bottom) / 2;\n yValue = rectCenterY;\n degree = (angle > 360) ? angle - 360 : (angle < -360) ? angle + 360 : angle;\n }\n else {\n degree = 0;\n xValue = rect.x;\n yValue = rect.y;\n xPos -= chart.chartAreaType == 'Cartesian' && xPos + (textSize.width / 2) > clip.width ? (xPos + textSize.width / 2) - clip.width : 0;\n yPos -= yPos + textSize.height > clip.y + clip.height ? (yPos + textSize.height) - (clip.y + clip.height) : 0;\n }\n var textAnchor = dataLabel.labelIntersectAction === 'Rotate90' ? (dataLabel.position == 'Top' ? 'start' : (dataLabel.position == 'Middle' ? 'middle' : 'end')) :\n ((angle == -90 && dataLabel.enableRotation) ? (dataLabel.position == 'Top' ? 'end' : (dataLabel.position == 'Middle' ? 'middle' : 'start')) : 'middle');\n textElement(chart.renderer, new TextOption(this.commonId + point.index + '_Text_' + i_1, xPos, yPos, textAnchor, argsData.text, 'rotate(' + degree + ',' + (xValue) + ',' + (yValue) + ')', 'auto', degree), argsData.font, argsData.font.color ||\n ((contrast >= 128 || series.type === 'Hilo' || series.type === 'HiloOpenClose') ? 'black' : 'white'), series.textElement, false, redraw, true, false, series.chart.duration, series.clipRect, null, null, chart.enableCanvas, null, this.chart.themeStyle.datalabelFont);\n }\n }\n }\n }\n }\n }\n if (element.childElementCount) {\n if (!chart.enableCanvas) {\n appendChildElement(chart.enableCanvas, getElement(chart.element.id + '_Secondary_Element'), element, chart.redraw, \n // eslint-disable-next-line @typescript-eslint/indent\n false, 'x', 'y', null, '', false, false, null, chart.duration);\n }\n else {\n getElement(chart.element.id + '_Secondary_Element').appendChild(element);\n }\n }\n };\n /**\n * Get rect coordinates\n */\n DataLabel.prototype.getRectanglePoints = function (rect) {\n var loc1 = new ChartLocation(rect.x, rect.y);\n var loc2 = new ChartLocation(rect.x + rect.width, rect.y);\n var loc3 = new ChartLocation(rect.x + rect.width, rect.y + rect.height);\n var loc4 = new ChartLocation(rect.x, rect.y + rect.height);\n return [loc1, loc2, loc3, loc4];\n };\n DataLabel.prototype.isDataLabelOverlapWithChartBound = function (rectCoordinates, chart, clip) {\n for (var index = 0; index < rectCoordinates.length; index++) {\n if (!withInBounds(rectCoordinates[index].x + clip.x, rectCoordinates[index].y + clip.y, chart.initialClipRect)) {\n return true;\n }\n }\n return false;\n };\n /**\n * Render the data label template.\n *\n * @returns {void}\n * @private\n */\n DataLabel.prototype.createDataLabelTemplate = function (parentElement, series, dataLabel, point, data, labelIndex, redraw) {\n this.margin = { left: 0, right: 0, bottom: 0, top: 0 };\n var clip = series.clipRect;\n var childElement = createTemplate(createElement('div', {\n id: this.chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) + '_DataLabel_'\n + point.index + (labelIndex ? ('_' + labelIndex) : ''),\n styles: 'position: absolute;background-color:' + data.color + ';' +\n getFontStyle(dataLabel.font) + ';border:' + data.border.width + 'px solid ' + data.border.color + ';'\n }), point.index, data.template, this.chart, point, series, this.chart.element.id + '_DataLabel', labelIndex);\n this.calculateTemplateLabelSize(parentElement, childElement, point, series, dataLabel, labelIndex, clip, redraw);\n };\n DataLabel.prototype.calculateTemplateLabelSize = function (parentElement, childElement, point, series, dataLabel, labelIndex, clip, redraw, isReactCallback) {\n var elementRect = measureElementRect(childElement, redraw, isReactCallback);\n var rect = this.calculateTextPosition(point, series, { width: elementRect.width, height: elementRect.height }, dataLabel, labelIndex);\n var clipWidth = 0;\n var clipHeight = 0;\n var isOverlap = false;\n if (isReactCallback) {\n isOverlap = (elementRect.width === 0 || elementRect.height === 0); // To check the data label already overlap before react callback call\n // clipWidth = ((series.clipRect.x + rect.x) + elementRect.width) > parentElement.clientWidth ?\n // (parentElement.clientWidth - (series.clipRect.x + rect.x)) : 0;\n // clipHeight = (series.points.length - 1 === point.index) ? elementRect.height / 2 : 0;\n }\n childElement.style.left = ((this.chart.chartAreaType === 'PolarRadar' ? 0 : series.clipRect.x) + rect.x - clipWidth) + 'px';\n childElement.style.top = ((this.chart.chartAreaType === 'PolarRadar' ? 0 : series.clipRect.y) + rect.y + clipHeight) + 'px';\n var backgroundColor = this.fontBackground === 'transparent' ? (this.chart.theme.indexOf('Dark') > -1 ? 'black' : 'white') : this.fontBackground;\n var rgbValue = convertHexToColor(colorNameToHex(backgroundColor));\n var vAxis = series.chart.requireInvertedAxis ? series.xAxis : series.yAxis;\n var hAxis = series.chart.requireInvertedAxis ? series.yAxis : series.xAxis;\n childElement.style.color = dataLabel.font.color ||\n ((Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000)) >= 128 ? 'black' : 'white');\n if (childElement.childElementCount && !isOverlap && (!isCollide(rect, this.chart.dataLabelCollections, clip) ||\n dataLabel.labelIntersectAction === 'None') && (series.seriesType !== 'XY' || point.yValue === undefined ||\n withIn(point.yValue, series.yAxis.visibleRange) || (series.type.indexOf('Stacking') > -1) ||\n (series.type.indexOf('100') > -1 && withIn(series.stackedValues.endValues[point.index], series.yAxis.visibleRange))) &&\n withIn(point.xValue, series.xAxis.visibleRange) && parseFloat(childElement.style.top) >= vAxis.rect.y &&\n parseFloat(childElement.style.left) >= hAxis.rect.x &&\n parseFloat(childElement.style.top) <= vAxis.rect.y + vAxis.rect.height &&\n parseFloat(childElement.style.left) <= hAxis.rect.x + hAxis.rect.width) {\n this.chart.dataLabelCollections.push(new Rect(rect.x + clip.x, rect.y + clip.y, rect.width, rect.height));\n appendChildElement(this.chart.enableCanvas, parentElement, childElement, redraw, true, 'left', 'top');\n if (series.animation.enable && this.chart.animateSeries && !this.chart.enableCanvas) {\n this.doDataLabelAnimation(series, childElement);\n }\n else if (this.chart.enableCanvas) {\n parentElement.appendChild(childElement);\n }\n }\n };\n DataLabel.prototype.calculateTextPosition = function (point, series, textSize, dataLabel, labelIndex) {\n var labelRegion = labelIndex > 1 ? (series.type === 'Candle') ? point.regions[1] : point.regions[0] : point.regions[0];\n if (labelIndex > 1 && series.type === 'HiloOpenClose') {\n labelRegion = (labelIndex === 2) ? point.regions[1] : point.regions[2];\n }\n var location;\n location = this.getLabelLocation(point, series, textSize, labelIndex);\n var padding = 5;\n var clipRect = series.clipRect;\n // calculating alignment\n if (!this.chart.requireInvertedAxis || !this.isRectSeries(series) || series.type === 'BoxAndWhisker') {\n this.locationX = location.x;\n var alignmentValue = textSize.height + (this.borderWidth * 2) + this.markerHeight +\n this.margin.bottom + this.margin.top + padding;\n location.x = (dataLabel.position === 'Auto') ? location.x :\n this.calculateAlignment(alignmentValue, location.x, dataLabel.alignment, this.isRectSeries(series) ? point.yValue < 0 : false);\n // calculating position\n location.y = (!this.isRectSeries(series) || series.type === 'BoxAndWhisker') ?\n this.calculatePathPosition(location.y, dataLabel.position, series, point, textSize, labelIndex) :\n this.calculateRectPosition(location.y, labelRegion, point.yValue < 0 !== this.yAxisInversed, dataLabel.position, series, textSize, labelIndex, point);\n if (this.isRectSeries(series) && this.chart.chartAreaType === 'PolarRadar') {\n location = this.calculatePolarRectPosition(location, dataLabel.position, series, point, textSize, labelIndex, dataLabel.alignment, alignmentValue);\n }\n }\n else {\n this.locationY = location.y;\n var alignmentValue = textSize.width + this.borderWidth + this.margin.left + this.margin.right - padding;\n location.x = dataLabel.position === 'Auto' ? location.x :\n this.calculateAlignment(alignmentValue, location.x, dataLabel.alignment, point.yValue < 0);\n location.x = this.calculateRectPosition(location.x, labelRegion, point.yValue < 0 !== this.yAxisInversed, dataLabel.position, series, textSize, labelIndex, point);\n }\n var rect = calculateRect(location, textSize, this.margin);\n // Checking the condition whether data Label has been exist the clip rect\n if (!(dataLabel.enableRotation === true && dataLabel.angle !== 0) &&\n !((rect.y > (clipRect.y + clipRect.height)) || (rect.x > (clipRect.x + clipRect.width)) ||\n (rect.x + rect.width < 0) || (rect.y + rect.height < 0))) {\n rect.x = rect.x < 0 ? padding : rect.x;\n rect.y = (rect.y < 0) && !(dataLabel.labelIntersectAction === 'None') ? padding : rect.y;\n rect.x -= (rect.x + rect.width) > (clipRect.x + clipRect.width) ? (rect.x + rect.width)\n - (clipRect.x + clipRect.width) + padding : 0;\n rect.y -= (rect.y + rect.height) > (clipRect.y + clipRect.height) ? (rect.y + rect.height)\n - (clipRect.y + clipRect.height) + padding : 0;\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n }\n var dataLabelOutRegion;\n if (this.inverted && series.isRectSeries && (rect.x + rect.width > labelRegion.x + labelRegion.width)) {\n dataLabelOutRegion = true;\n }\n this.fontBackground = dataLabelOutRegion ? this.chartBackground : this.fontBackground;\n return rect;\n };\n // Calculation label location for polar column draw types\n DataLabel.prototype.calculatePolarRectPosition = function (location, position, series, point, size, labelIndex, alignment, alignmentValue) {\n var padding = 5;\n var columnRadius;\n var chartWidth = this.chart.availableSize.width;\n var alignmentSign = (alignment === 'Center') ? 0 : (alignment === 'Far' ? 1 : -1);\n var angle = (point.regionData.startAngle - 0.5 * Math.PI) + (point.regionData.endAngle - point.regionData.startAngle) / 2;\n if (labelIndex === 0) {\n columnRadius = point.regionData.radius < point.regionData.innerRadius ? point.regionData.innerRadius\n : point.regionData.radius;\n }\n else {\n columnRadius = point.regionData.radius > point.regionData.innerRadius ? point.regionData.innerRadius\n : point.regionData.radius;\n }\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n if (series.drawType.indexOf('Stacking') > -1) {\n position = position === 'Outer' ? 'Top' : position;\n }\n else if (series.drawType.indexOf('Range') > -1) {\n position = (position === 'Outer' || position === 'Top') ? position : 'Auto';\n }\n if (position === 'Outer') {\n columnRadius = labelIndex === 0 ? columnRadius + 2 * padding + this.markerHeight :\n columnRadius - 2 * padding - this.markerHeight;\n }\n else if (position === 'Middle') {\n columnRadius = columnRadius / 2 + padding;\n if (series.drawType === 'StackingColumn') {\n columnRadius = point.regionData.innerRadius + ((point.regionData.radius - point.regionData.innerRadius) / 2)\n + padding - (size.height / 2);\n }\n }\n else if (position === 'Top') {\n columnRadius = labelIndex === 0 ? columnRadius - 2 * padding - this.markerHeight :\n columnRadius + 2 * padding + this.markerHeight;\n }\n else if (position === 'Bottom') {\n columnRadius = 2 * padding;\n columnRadius += (series.drawType === 'StackingColumn') ? (point.regionData.innerRadius + this.markerHeight) : 0;\n }\n else {\n if (labelIndex === 0) {\n columnRadius = columnRadius >= series.chart.radius ? columnRadius - padding :\n series.drawType === 'StackingColumn' ? columnRadius - 2 * padding : columnRadius + 2 * padding;\n }\n else {\n columnRadius = columnRadius >= series.chart.radius ? columnRadius + padding : columnRadius - 2 * padding;\n }\n }\n columnRadius += (alignmentValue * alignmentSign);\n location.x = series.clipRect.width / 2 + series.clipRect.x + columnRadius * Math.cos(angle);\n // To change x location based on text anchor for column and stackingcolumn chart\n if (series.drawType === 'StackingColumn') {\n location.x = location.x < chartWidth / 2 ? location.x + size.width / 2 :\n (location.x > chartWidth / 2 ? location.x - size.width / 2 : location.x);\n }\n else if (series.drawType === 'Column') {\n location.x = location.x < chartWidth / 2 ? location.x - size.width / 2 :\n (location.x > chartWidth / 2 ? location.x + size.width / 2 : location.x);\n }\n location.y = series.clipRect.height / 2 + series.clipRect.y + columnRadius * Math.sin(angle);\n return location;\n };\n /**\n * Get the label location\n */\n DataLabel.prototype.getLabelLocation = function (point, series, textSize, labelIndex) {\n var location = new ChartLocation(0, 0);\n var labelRegion = (series.type === 'Candle' && labelIndex > 1) ? point.regions[1] : point.regions[0];\n if (series.type === 'HiloOpenClose') {\n labelRegion = (labelIndex === 2) ? point.regions[1] : point.regions[2];\n }\n var xAxis = series.xAxis;\n var yAxis = series.yAxis;\n var isInverted = series.chart.requireInvertedAxis;\n if (series.type === 'BoxAndWhisker') {\n this.markerHeight = 0;\n switch (labelIndex) {\n case 0:\n location = getPoint(point.xValue, point.median, xAxis, yAxis, isInverted);\n break;\n case 1:\n location = getPoint(point.xValue, point.maximum, xAxis, yAxis, isInverted);\n break;\n case 2:\n location = getPoint(point.xValue, point.minimum, xAxis, yAxis, isInverted);\n break;\n case 3:\n location = getPoint(point.xValue, point.upperQuartile, xAxis, yAxis, isInverted);\n break;\n case 4:\n location = getPoint(point.xValue, point.lowerQuartile, xAxis, yAxis, isInverted);\n break;\n default: {\n location = getPoint(point.xValue, point.outliers[labelIndex - 5], xAxis, yAxis, isInverted);\n this.markerHeight = series.marker.height / 2;\n break;\n }\n }\n if (isInverted) {\n location.y = point.regions[0].y + (point.regions[0].height / 2);\n }\n else {\n location.x = point.regions[0].x + (point.regions[0].width / 2);\n }\n }\n else if (labelIndex === 0 || labelIndex === 1) {\n location = new ChartLocation(point.symbolLocations[0].x, point.symbolLocations[0].y);\n }\n else if ((labelIndex === 2 || labelIndex === 3) && series.type === 'Candle') {\n location = new ChartLocation(point.symbolLocations[1].x, point.symbolLocations[1].y);\n }\n else if (isInverted) {\n location = { x: labelRegion.x + (labelRegion.width) / 2, y: labelRegion.y };\n }\n else {\n location = { x: labelRegion.x + labelRegion.width, y: labelRegion.y + (labelRegion.height) / 2 };\n }\n //Aligning the label at the beginning of the tick, when tick size is less than text size\n if (labelIndex > 1 && series.type === 'HiloOpenClose') {\n if (series.chart.requireInvertedAxis) {\n var height = labelRegion.height;\n location.y = labelRegion.y + height / 2 + 2 * (labelIndex === 2 ? 1 : -1);\n }\n else {\n var width = labelRegion.width;\n location.x = labelRegion.x + width / 2 + 2 * (labelIndex === 2 ? 1 : -1);\n }\n }\n return location;\n };\n DataLabel.prototype.calculateRectPosition = function (labelLocation, rect, isMinus, position, series, textSize, labelIndex, point) {\n if (series.chart.chartAreaType === 'PolarRadar') {\n return null;\n }\n var padding = 5;\n var margin = this.margin;\n var textLength = !this.inverted ? textSize.height : textSize.width;\n var extraSpace = this.borderWidth + textLength / 2 + (position !== 'Outer' && series.type.indexOf('Column') > -1 &&\n (Math.abs(rect.height - textSize.height) < padding) ? 0 : padding);\n if (series.type === 'StackingColumn100' || series.type === 'StackingBar100') {\n position = (position === 'Outer') ? 'Top' : position;\n }\n else if (series.type.indexOf('Range') > -1) {\n position = (position === 'Outer' || position === 'Top') ? position : 'Auto';\n }\n else if (series.type === 'Waterfall') {\n position = position === 'Auto' ? 'Middle' : position;\n }\n switch (position) {\n case 'Bottom':\n labelLocation = !this.inverted ?\n isMinus ? (labelLocation - rect.height + extraSpace + margin.top) :\n (labelLocation + rect.height - extraSpace - margin.bottom) :\n isMinus ? (labelLocation + rect.width - extraSpace - margin.left) :\n (labelLocation - rect.width + extraSpace + margin.right);\n break;\n case 'Middle':\n labelLocation = labelLocation = !this.inverted ?\n (isMinus ? labelLocation - (rect.height / 2) : labelLocation + (rect.height / 2)) :\n (isMinus ? labelLocation + (rect.width / 2) : labelLocation - (rect.width / 2));\n break;\n case 'Auto':\n labelLocation = this.calculateRectActualPosition(labelLocation, rect, isMinus, series, textSize, labelIndex, point);\n break;\n default:\n extraSpace += this.errorHeight;\n labelLocation = this.calculateTopAndOuterPosition(labelLocation, rect, position, series, labelIndex, extraSpace, isMinus);\n break;\n }\n var check = !this.inverted ? (labelLocation < rect.y || labelLocation > rect.y + rect.height) :\n (labelLocation < rect.x || labelLocation > rect.x + rect.width);\n this.fontBackground = check ?\n (this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground)\n : this.fontBackground === 'transparent' ? (point.color || series.interior) : this.fontBackground;\n var seriesLength = series.chart.series.length;\n if (position === 'Outer' && (series.type.indexOf('Stacking') > -1) && ((seriesLength - 1) > series.index)) {\n var nextSeries = void 0;\n var nextSeriesPoint = void 0;\n for (var i = series.index + 1; i < seriesLength; i++) {\n nextSeries = series.chart.series[i];\n nextSeriesPoint = nextSeries.points[point.index];\n if ((nextSeries.type.indexOf('Stacking') > -1) && (nextSeries.type.indexOf('100') === -1)) {\n this.fontBackground = (nextSeriesPoint && ((nextSeriesPoint.yValue < 0 && point.yValue < 0) ||\n (nextSeriesPoint.yValue > 0 && point.yValue > 0))) ? (nextSeriesPoint ? nextSeriesPoint.color :\n nextSeries.interior) : this.fontBackground;\n break;\n }\n }\n }\n return labelLocation;\n };\n DataLabel.prototype.calculatePathPosition = function (labelLocation, position, series, point, size, labelIndex) {\n var padding = 5;\n if ((series.type.indexOf('Area') > -1 && series.type !== 'RangeArea' && series.type !== 'SplineRangeArea' && series.type !== 'RangeStepArea')\n && this.yAxisInversed && series.marker.dataLabel.position !== 'Auto') {\n position = position === 'Top' ? 'Bottom' : position === 'Bottom' ? 'Top' : position;\n }\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n switch (position) {\n case 'Top':\n case 'Outer':\n labelLocation = labelLocation - this.markerHeight - this.borderWidth - size.height / 2 - this.margin.bottom - padding -\n this.errorHeight;\n break;\n case 'Bottom':\n labelLocation = labelLocation + this.markerHeight + this.borderWidth + size.height / 2 + this.margin.top + padding +\n this.errorHeight;\n break;\n case 'Auto':\n labelLocation = this.calculatePathActualPosition(labelLocation, this.markerHeight, series, point, size, labelIndex);\n break;\n }\n return labelLocation;\n };\n DataLabel.prototype.isDataLabelShape = function (style) {\n this.isShape = (style.color !== 'transparent' || style.border.width > 0);\n this.borderWidth = style.border.width;\n if (!this.isShape) {\n this.margin = { left: 0, right: 0, bottom: 0, top: 0 };\n }\n };\n DataLabel.prototype.calculateRectActualPosition = function (labelLocation, rect, isMinus, series, size, labelIndex, point) {\n var location;\n var labelRect;\n var isOverLap = true;\n var position = 0;\n var collection = this.chart.dataLabelCollections;\n var finalPosition = series.type.indexOf('Range') !== -1 || series.type === 'Hilo' ? 2 : 4;\n while (isOverLap && position < finalPosition) {\n var actualPosition = this.getPosition(position);\n if (series.type.indexOf('Stacking') > -1 && actualPosition === 'Outer') {\n actualPosition = 'Top';\n position++;\n }\n location = this.calculateRectPosition(labelLocation, rect, isMinus, actualPosition, series, size, labelIndex, point);\n if (!this.inverted) {\n labelRect = calculateRect(new ChartLocation(this.locationX, location), size, this.margin);\n isOverLap = labelRect.y < 0 || isCollide(labelRect, collection, series.clipRect) || labelRect.y > series.clipRect.height;\n }\n else {\n labelRect = calculateRect(new ChartLocation(location, this.locationY), size, this.margin);\n isOverLap = labelRect.x < 0 || isCollide(labelRect, collection, series.clipRect) ||\n labelRect.x + labelRect.width > series.clipRect.width;\n }\n position++;\n }\n return location;\n };\n // alignment calculation assigned here\n DataLabel.prototype.calculateAlignment = function (value, labelLocation, alignment, isMinus) {\n switch (alignment) {\n case 'Far':\n labelLocation = !this.inverted ? (isMinus ? labelLocation + value : labelLocation - value) :\n (isMinus ? labelLocation - value : labelLocation + value);\n break;\n case 'Near':\n labelLocation = !this.inverted ? (isMinus ? labelLocation - value : labelLocation + value) :\n (isMinus ? labelLocation + value : labelLocation - value);\n break;\n // eslint-disable-next-line no-self-assign\n case 'Center':\n labelLocation = labelLocation;\n break;\n }\n return labelLocation;\n };\n //calculation for top and outer position of datalabel for rect series\n DataLabel.prototype.calculateTopAndOuterPosition = function (location, rect, position, series, index, extraSpace, isMinus) {\n var margin = this.margin;\n var top;\n switch (series.type) {\n case 'RangeColumn':\n case 'RangeArea':\n case 'RangeStepArea':\n case 'SplineRangeArea':\n case 'Hilo':\n top = (index === 0 && !this.yAxisInversed) || (index === 1 && this.yAxisInversed);\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top);\n break;\n case 'Candle':\n top = (index === 0 || index === 2) && !this.yAxisInversed\n || (index === 1 || index === 3) && this.yAxisInversed;\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top, index > 1);\n break;\n case 'HiloOpenClose':\n if (index <= 1) {\n top = (index === 0 && !this.yAxisInversed) || (index === 1 && this.yAxisInversed);\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top);\n }\n else {\n if (this.yAxisInversed) {\n location = !this.inverted ? location + extraSpace + margin.top : location - extraSpace - margin.right;\n }\n else {\n location = !this.inverted ? location - extraSpace - margin.bottom : location + extraSpace + margin.left;\n }\n }\n break;\n default:\n if ((isMinus && position === 'Top') || (!isMinus && position === 'Outer')) {\n location = !this.inverted ? location - extraSpace - margin.bottom - this.markerHeight :\n location + extraSpace + margin.left + this.markerHeight;\n }\n else {\n location = !this.inverted ? location + extraSpace + margin.top + this.markerHeight :\n location - extraSpace - margin.right - this.markerHeight;\n }\n break;\n }\n return location;\n };\n /**\n * Updates the label location\n */\n DataLabel.prototype.updateLabelLocation = function (position, location, extraSpace, margin, rect, top, inside) {\n if (inside === void 0) { inside = false; }\n if (!this.inverted) {\n if (top) {\n location = (position === 'Outer' && !inside) ? location - extraSpace - margin.bottom - this.markerHeight :\n location + extraSpace + margin.top + this.markerHeight;\n }\n else {\n location = (position === 'Outer' && !inside) ? location + rect.height + extraSpace + margin.top + this.markerHeight :\n location + rect.height - extraSpace - margin.bottom - this.markerHeight;\n }\n }\n else {\n if (top) {\n location = (position === 'Outer' && !inside) ? location + extraSpace + margin.left + this.markerHeight :\n location - extraSpace - margin.right - this.markerHeight;\n }\n else {\n location = (position === 'Outer' && !inside) ? location - rect.width - extraSpace - margin.right - this.markerHeight :\n location - rect.width + extraSpace + margin.left + this.markerHeight;\n }\n }\n return location;\n };\n DataLabel.prototype.calculatePathActualPosition = function (y, markerSize, series, point, size, labelIndex) {\n var points = series.points;\n var index = point.index;\n var yValue = points[index].yValue;\n var position;\n var nextPoint = points.length - 1 > index ? points[index + 1] : null;\n var previousPoint = index > 0 ? points[index - 1] : null;\n var yLocation;\n var isOverLap = true;\n var labelRect;\n var isBottom;\n var positionIndex;\n var collection = this.chart.dataLabelCollections;\n if (series.type === 'Bubble') {\n position = 'Top';\n }\n else if (series.type.indexOf('Step') > -1) {\n position = 'Top';\n if (index) {\n position = (!previousPoint || !previousPoint.visible || (yValue > previousPoint.yValue !== this.yAxisInversed)\n || yValue === previousPoint.yValue) ? 'Top' : 'Bottom';\n }\n }\n else if (series.type === 'BoxAndWhisker') {\n if (labelIndex === 1 || labelIndex === 3 || labelIndex > 4) {\n position = series.yAxis.isAxisInverse ? 'Bottom' : 'Top';\n }\n else if (labelIndex === 2 || labelIndex === 4) {\n position = series.yAxis.isAxisInverse ? 'Top' : 'Bottom';\n }\n else {\n isOverLap = false;\n position = 'Middle';\n yLocation = this.calculatePathPosition(y, position, series, point, size, labelIndex);\n }\n }\n else {\n if (index === 0) {\n position = (!nextPoint || !nextPoint.visible || yValue > nextPoint.yValue ||\n (yValue < nextPoint.yValue && this.yAxisInversed)) ? 'Top' : 'Bottom';\n }\n else if (index === points.length - 1) {\n position = (!previousPoint || !previousPoint.visible || yValue > previousPoint.yValue ||\n (yValue < previousPoint.yValue && this.yAxisInversed)) ? 'Top' : 'Bottom';\n }\n else {\n if (!nextPoint.visible && !(previousPoint && previousPoint.visible)) {\n position = 'Top';\n }\n else if (!nextPoint.visible || !previousPoint) {\n position = (nextPoint.yValue > yValue || (previousPoint && previousPoint.yValue > yValue)) ?\n 'Bottom' : 'Top';\n }\n else {\n var slope = (nextPoint.yValue - previousPoint.yValue) / 2;\n var intersectY = (slope * index) + (nextPoint.yValue - (slope * (index + 1)));\n position = !this.yAxisInversed ? intersectY < yValue ? 'Top' : 'Bottom' :\n intersectY < yValue ? 'Bottom' : 'Top';\n }\n }\n }\n isBottom = position === 'Bottom';\n positionIndex = ['Outer', 'Top', 'Bottom', 'Middle', 'Auto'].indexOf(position);\n while (isOverLap && positionIndex < 4) {\n yLocation = this.calculatePathPosition(y, this.getPosition(positionIndex), series, point, size, labelIndex);\n labelRect = calculateRect(new ChartLocation(this.locationX, yLocation), size, this.margin);\n isOverLap = labelRect.y < 0 || isCollide(labelRect, collection, series.clipRect)\n || (labelRect.y + labelRect.height) > series.clipRect.height;\n positionIndex = isBottom ? positionIndex - 1 : positionIndex + 1;\n isBottom = false;\n }\n return yLocation;\n };\n /**\n * Animates the data label.\n *\n * @param {Series} series - Data label of the series gets animated.\n * @returns {void}\n */\n DataLabel.prototype.doDataLabelAnimation = function (series, element) {\n var shapeElements = series.shapeElement.childNodes;\n var textNode = series.textElement.childNodes;\n var delay = series.animation.delay + series.animation.duration;\n var duration = series.chart.animated ? series.chart.duration : 200;\n var location;\n var length = element ? 1 : textNode.length;\n var tempElement;\n for (var i = 0; i < length; i++) {\n tempElement = textNode[i];\n if (element) {\n element.style.visibility = 'hidden';\n templateAnimate(element, delay, duration, 'ZoomIn');\n }\n else {\n location = new ChartLocation((+tempElement.getAttribute('x')) + ((+tempElement.getAttribute('width')) / 2), (+tempElement.getAttribute('y')) + ((+tempElement.getAttribute('height')) / 2));\n markerAnimate(tempElement, delay, duration, series, null, location, true);\n if (shapeElements[i]) {\n tempElement = shapeElements[i];\n location = new ChartLocation((+tempElement.getAttribute('x')) + ((+tempElement.getAttribute('width')) / 2), (+tempElement.getAttribute('y')) + ((+tempElement.getAttribute('height')) / 2));\n markerAnimate(tempElement, delay, duration, series, null, location, true);\n }\n }\n }\n };\n DataLabel.prototype.getPosition = function (index) {\n return (['Outer', 'Top', 'Bottom', 'Middle', 'Auto'][index]);\n };\n /**\n * Get module name.\n */\n DataLabel.prototype.getModuleName = function () {\n // Returns the module name\n return 'DataLabel';\n };\n /**\n * To destroy the dataLabel for series.\n *\n * @returns {void}\n * @private\n */\n DataLabel.prototype.destroy = function () {\n // Destroy method performed here\n };\n return DataLabel;\n}());\nexport { DataLabel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable curly */\n/* eslint-disable max-len */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * Chart legend\n */\nimport { remove, Browser, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { LegendOptions, BaseLegend } from '../../common/legend/legend';\nimport { textTrim, removeElement, RectOption, withInBounds, blazorTemplatesReset } from '../../common/utils/helper';\nimport { getUnicodeText } from '../../common/utils/helper';\nimport { measureText, Rect, getElement } from '@syncfusion/ej2-svg-base';\nimport { legendRender, legendClick, regSub, regSup } from '../../common/model/constants';\nimport { textWrap } from '../../common/utils/helper';\n/**\n * `Legend` module is used to render legend for the chart.\n */\nvar Legend = /** @class */ (function (_super) {\n __extends(Legend, _super);\n function Legend(chart) {\n var _this = _super.call(this, chart) || this;\n _this.library = _this;\n _this.addEventListener();\n return _this;\n }\n /**\n * Binding events for legend module.\n */\n Legend.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.on(Browser.touchMoveEvent, this.mouseMove, this);\n this.chart.on('click', this.click, this);\n this.chart.on(Browser.touchEndEvent, this.mouseEnd, this);\n };\n /**\n * UnBinding events for legend module.\n */\n Legend.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.off(Browser.touchMoveEvent, this.mouseMove);\n this.chart.off('click', this.click);\n this.chart.off(Browser.touchEndEvent, this.mouseEnd);\n };\n /**\n * To handle mosue move for legend module\n */\n Legend.prototype.mouseMove = function (e) {\n if (this.chart.legendSettings.visible && !this.chart.isTouch) {\n this.move(e);\n if (this.chart.highlightModule && (this.chart.highlightMode !== 'None' || this.chart.legendSettings.enableHighlight)) {\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_marker_',\n this.legendID + '_shape_', this.legendID + '_g_'];\n var targetId = e.target.id;\n var index = void 0;\n for (var _i = 0, legendItemsId_1 = legendItemsId; _i < legendItemsId_1.length; _i++) {\n var id = legendItemsId_1[_i];\n if (targetId.indexOf(id) > -1) {\n index = parseInt(targetId.split(id)[1], 10);\n this.chart.highlightModule.legendSelection(this.chart, index, e.target, e.type);\n break;\n }\n }\n // this.click(e);\n }\n }\n };\n /**\n * To handle mosue end for legend module\n */\n Legend.prototype.mouseEnd = function (e) {\n if (this.chart.legendSettings.visible && this.chart.isTouch) {\n this.move(e);\n }\n };\n /**\n * Get the legend options.\n *\n * @returns {void}\n * @private\n */\n Legend.prototype.getLegendOptions = function (visibleSeriesCollection, chart) {\n this.legendCollections = [];\n var seriesType;\n var fill;\n var dashArray;\n var colors = [];\n this.isRtlEnable = chart.enableRtl;\n this.isReverse = !this.isRtlEnable && chart.legendSettings.reverse;\n if (visibleSeriesCollection.length > 1) {\n this.legend.mode = 'Series';\n }\n for (var _i = 0, visibleSeriesCollection_1 = visibleSeriesCollection; _i < visibleSeriesCollection_1.length; _i++) {\n var series = visibleSeriesCollection_1[_i];\n if (this.legend.mode === 'Series') {\n if (series.category !== 'Indicator') {\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n dashArray = !series.marker.visible && (seriesType.indexOf('Line') > -1 && seriesType.indexOf('Area') === -1) ? series.dashArray : '';\n // To set legend color when use pointColorMapping\n fill = (series.pointColorMapping && series.points.length > 0) ?\n (series.points[0].interior ? series.points[0].interior : series.interior) : series.interior;\n this.legendCollections.push(new LegendOptions(series.name, fill, series.legendShape, (series.category === 'TrendLine' ?\n this.chart.series[series.sourceIndex].trendlines[series.index].visible : series.visible), seriesType, series.legendImageUrl ? series.legendImageUrl : (series.type === 'Scatter' && series.marker.shape === 'Image' ?\n series.marker.imageUrl : ''), series.marker.shape, series.marker.visible, null, null, dashArray));\n }\n }\n else if (this.legend.mode === 'Point') {\n var _loop_1 = function (points) {\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n fill = points.interior ? points.interior : series.interior;\n if (this_1.legendCollections.filter(function (i) { return i.text === points.x.toString(); }).length === 0) {\n this_1.legendCollections.push(new LegendOptions(points.x.toString(), fill, series.legendShape, (series.category === 'TrendLine' ?\n this_1.chart.series[series.sourceIndex].trendlines[series.index].visible : points.visible), seriesType, (series.type === 'Scatter' && series.marker.shape === 'Image') ? series.marker.imageUrl : '', series.marker.shape, series.marker.visible));\n }\n };\n var this_1 = this;\n for (var _a = 0, _b = series.points; _a < _b.length; _a++) {\n var points = _b[_a];\n _loop_1(points);\n }\n }\n else if (this.legend.mode === 'Range') {\n for (var _c = 0, _d = series.points; _c < _d.length; _c++) {\n var points = _d[_c];\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n fill = points.interior ? points.interior : series.interior;\n var legendLabel = 'Others';\n if (colors.indexOf(fill) < 0) {\n colors.push(fill);\n if (chart.rangeColorSettings.length >= 1 && chart.rangeColorSettings[0].colors.length === 1) {\n for (var _e = 0, _f = chart.rangeColorSettings; _e < _f.length; _e++) {\n var rangeMap = _f[_e];\n if (rangeMap.colors[0] === fill) {\n legendLabel = rangeMap.label;\n }\n }\n this.legendCollections.push(new LegendOptions(legendLabel, fill, series.legendShape, (series.category === 'TrendLine' ?\n this.chart.series[series.sourceIndex].trendlines[series.index].visible : points.visible), seriesType, (series.type === 'Scatter' && series.marker.shape === 'Image') ? series.marker.imageUrl : '', series.marker.shape, series.marker.visible));\n }\n }\n }\n }\n else {\n if (this.legendCollections.length === 0 && chart.rangeColorSettings.length > 0) {\n var startLabel = chart.rangeColorSettings[0].start.toString();\n var endLabel = chart.rangeColorSettings[chart.rangeColorSettings.length - 1].end.toString();\n this.legendCollections.push(new LegendOptions(startLabel, series.interior, 'Rectangle', true, seriesType, '', series.marker.shape, series.marker.visible));\n this.legendCollections.push(new LegendOptions(endLabel, series.interior, 'Rectangle', true, seriesType, '', series.marker.shape, series.marker.visible));\n }\n }\n }\n if (this.isReverse && chart.legendSettings.mode !== 'Gradient') {\n this.legendCollections.reverse();\n }\n };\n /** @private */\n Legend.prototype.getLegendBounds = function (availableSize, legendBounds, legend) {\n this.calculateLegendTitle(legend, legendBounds);\n this.isTitle = legend.title ? true : false;\n this.chartRowCount = 1;\n this.rowHeights = [];\n this.columnHeights = [];\n this.pageHeights = [];\n var padding = legend.padding;\n var titlePosition = legend.titlePosition;\n var extraHeight = 0;\n var legendOption;\n var extraWidth = 0;\n var arrowWidth = this.arrowWidth;\n var arrowHeight = this.arrowHeight;\n var verticalArrowSpace = this.isVertical && !legend.enablePages ? arrowHeight : 0;\n var titleSpace = this.isTitle && titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n titleSpace = this.isTitle && this.isVertical && titlePosition !== 'Top' ? this.legendTitleSize.height + this.fivePixel : titleSpace;\n if (!this.isVertical) {\n extraHeight = !legend.height ? ((availableSize.height / 100) * 5) : 0;\n }\n else {\n extraWidth = !legend.width ? ((availableSize.width / 100) * 5) : 0;\n }\n legendBounds.height += (extraHeight);\n legendBounds.width += extraWidth;\n var shapeWidth = legend.shapeWidth;\n var shapePadding = legend.shapePadding;\n var maximumWidth = 0;\n var rowWidth = 0;\n var legendWidth = 0;\n var columnHeight = 0;\n var columnCount = 0;\n var rowCount = 0;\n var titlePlusArrowSpace = 0;\n var legendEventArgs;\n var render = false;\n this.maxItemHeight = Math.max(measureText('MeasureText', legend.textStyle, this.chart.themeStyle.legendLabelFont).height, legend.shapeHeight);\n for (var i = 0; i < this.legendCollections.length; i++) {\n legendOption = this.legendCollections[i];\n if (regSub.test(legendOption.text)) {\n legendOption.text = getUnicodeText(legendOption.text, regSub);\n }\n if (regSup.test(legendOption.text)) {\n legendOption.text = getUnicodeText(legendOption.text, regSup);\n }\n legendEventArgs = {\n fill: legendOption.fill, text: legendOption.text, shape: legendOption.shape,\n markerShape: legendOption.markerShape, name: legendRender, cancel: false\n };\n this.chart.trigger(legendRender, legendEventArgs);\n legendOption.render = !legendEventArgs.cancel;\n legendOption.text = legendEventArgs.text;\n legendOption.fill = legendEventArgs.fill;\n legendOption.shape = legendEventArgs.shape;\n legendOption.markerShape = legendEventArgs.markerShape;\n legendOption.textSize = measureText(legendOption.text, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n shapeWidth = legendOption.text ? legend.shapeWidth : 0;\n shapePadding = legendOption.text ? legend.shapePadding : 0;\n if (legendOption.render && legendOption.text) {\n render = true;\n legendWidth = shapeWidth + shapePadding + (legend.maximumLabelWidth ? legend.maximumLabelWidth : legendOption.textSize.width) + (!this.isVertical ? (i === 0) ? padding : this.itemPadding : padding);\n rowWidth = rowWidth + legendWidth;\n if (!legend.enablePages && !this.isVertical) {\n titlePlusArrowSpace = this.isTitle && titlePosition !== 'Top' ? this.legendTitleSize.width + this.fivePixel : 0;\n titlePlusArrowSpace += arrowWidth;\n }\n this.getLegendHeight(legendOption, legend, legendBounds, rowWidth, this.maxItemHeight, padding);\n if (legendBounds.width < (padding + rowWidth + titlePlusArrowSpace) || this.isVertical) {\n maximumWidth = Math.max(maximumWidth, (rowWidth + padding + titlePlusArrowSpace - (this.isVertical ? 0 : legendWidth)));\n if (rowCount === 0 && (legendWidth !== rowWidth)) {\n rowCount = 1;\n }\n rowWidth = this.isVertical ? 0 : legendWidth;\n rowCount++;\n columnCount = 0;\n columnHeight = verticalArrowSpace;\n //columnHeight = (rowCount * (this.maxItemHeight + padding)) + padding + titleSpace + verticalArrowSpace;\n }\n var len = (rowCount > 0 ? (rowCount - 1) : 0);\n this.rowHeights[len] = Math.max((this.rowHeights[len] ? this.rowHeights[len] : 0), legendOption.textSize.height);\n // this.maxItemHeight = Math.max(this.maxItemHeight, legendOption.textSize.height);\n this.columnHeights[columnCount] = (this.columnHeights[columnCount] ? this.columnHeights[columnCount] : 0) + legendOption.textSize.height + (this.isVertical ? (i === 0) ? padding : this.itemPadding : padding);\n columnCount++;\n }\n }\n columnHeight = Math.max.apply(null, this.columnHeights) + padding + titleSpace;\n columnHeight = Math.max(columnHeight, (this.maxItemHeight + padding) + padding + titleSpace);\n this.isPaging = legendBounds.height < columnHeight;\n if (this.isPaging && !legend.enablePages) {\n if (this.isVertical) {\n // eslint-disable-next-line no-self-assign\n columnHeight = columnHeight;\n }\n else {\n columnHeight = (this.maxItemHeight + padding) + padding + (titlePosition === 'Top' ? titleSpace : 0);\n }\n }\n this.totalPages = rowCount;\n if (!this.isPaging && !this.isVertical) {\n rowWidth += this.isTitle && titlePosition !== 'Top' ? (this.fivePixel + this.legendTitleSize.width + this.fivePixel) : 0;\n }\n if (render) {\n this.setBounds(Math.max((rowWidth + padding), maximumWidth), columnHeight, legend, legendBounds);\n }\n else {\n this.setBounds(0, 0, legend, legendBounds);\n }\n };\n /** @private */\n Legend.prototype.getLegendHeight = function (legendOption, legend, legendBounds, rowWidth, legendHeight, padding) {\n var legendWidth = legendOption.textSize.width;\n var textPadding = legend.shapePadding + (padding * 2) + legend.shapeWidth;\n switch (legend.textWrap) {\n case 'Wrap':\n case 'AnyWhere':\n if (legendWidth > legend.maximumLabelWidth || legendWidth + rowWidth > legendBounds.width) {\n legendOption.textCollection = textWrap(legendOption.text, (legend.maximumLabelWidth ? Math.min(legend.maximumLabelWidth, (legendBounds.width - textPadding)) : (legendBounds.width - textPadding)), legend.textStyle, null, null, this.chart.themeStyle.legendLabelFont);\n }\n else {\n legendOption.textCollection.push(legendOption.text);\n }\n legendOption.textSize.height = (legendHeight * legendOption.textCollection.length);\n break;\n }\n };\n /** @private */\n Legend.prototype.getRenderPoint = function (legendOption, start, textPadding, prevLegend, rect, count, firstLegend, rowCount) {\n var padding = this.legend.padding;\n var textWidth = textPadding + (this.legend.maximumLabelWidth ? this.legend.maximumLabelWidth : prevLegend.textSize.width);\n var previousBound = prevLegend.location.x + ((!this.isRtlEnable) ? textWidth : -textWidth);\n if (this.isWithinBounds(previousBound, (this.legend.maximumLabelWidth ? this.legend.maximumLabelWidth : legendOption.textSize.width) + textPadding - this.itemPadding, rect) || this.isVertical) {\n legendOption.location.x = start.x;\n if (count !== firstLegend)\n this.chartRowCount++;\n legendOption.location.y = (count === firstLegend) ? prevLegend.location.y :\n prevLegend.location.y + (this.isVertical ? prevLegend.textSize.height : this.rowHeights[(this.chartRowCount - 2)]) + (this.isVertical ? this.itemPadding : padding);\n }\n else {\n legendOption.location.x = (count === firstLegend) ? prevLegend.location.x : previousBound;\n legendOption.location.y = prevLegend.location.y;\n }\n var availwidth = (!this.isRtlEnable) ? (this.legendBounds.x + this.legendBounds.width) - (legendOption.location.x +\n textPadding - this.itemPadding - this.legend.shapeWidth / 2) : (legendOption.location.x - textPadding + this.itemPadding + (this.legend.shapeWidth / 2)) - this.legendBounds.x;\n if (!this.isVertical && this.isPaging && !this.legend.enablePages) {\n availwidth = this.legendBounds.width - legendOption.location.x - this.fivePixel;\n }\n availwidth = this.legend.maximumLabelWidth ? Math.min(this.legend.maximumLabelWidth, availwidth) : availwidth;\n if (this.legend.textOverflow === 'Ellipsis' && this.legend.textWrap === 'Normal') {\n legendOption.text = textTrim(+availwidth.toFixed(4), legendOption.text, this.legend.textStyle, this.chart.themeStyle.legendLabelFont);\n }\n };\n Legend.prototype.isWithinBounds = function (previousBound, textWidth, rect) {\n if (!this.isRtlEnable) {\n return (previousBound + textWidth) > (rect.x + rect.width + (this.legend.shapeWidth / 2));\n }\n else {\n return (previousBound - textWidth) < (rect.x - (this.legend.shapeWidth / 2));\n }\n };\n /** @private */\n Legend.prototype.LegendClick = function (index, event) {\n var chart = this.chart;\n var seriesIndex = chart.legendSettings.mode === 'Series' ? index : 0;\n var legendIndex = !this.isReverse ? index : (this.legendCollections.length - 1) - index;\n var series = chart.visibleSeries[seriesIndex];\n var legend = this.legendCollections[legendIndex];\n var changeDetection = 'isProtectedOnChange';\n if (chart.legendSettings.mode === 'Series') {\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: series.points, name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n series.legendShape = legendClickArgs.legendShape;\n if (!legendClickArgs.cancel) {\n if (series.fill !== null) {\n chart.visibleSeries[index].interior = series.fill;\n }\n if (chart.legendSettings.toggleVisibility) {\n if (series.category === 'TrendLine') {\n if (!chart.series[series.sourceIndex].trendlines[series.index].visible) {\n chart.series[series.sourceIndex].trendlines[series.index].visible = true;\n }\n else {\n chart.series[series.sourceIndex].trendlines[series.index].visible = false;\n }\n }\n else {\n series.chart[changeDetection] = true;\n this.changeSeriesVisiblity(series, series.visible);\n }\n legend.visible = series.category === 'TrendLine' ? chart.series[series.sourceIndex].trendlines[series.index].visible :\n (series.visible);\n this.refreshLegendToggle(chart, series);\n }\n else if (chart.highlightModule) {\n chart.highlightModule.legendSelection(chart, index, event.target, event.type);\n }\n else if (chart.selectionModule) {\n chart.selectionModule.legendSelection(chart, index, event.target, event.type);\n }\n series.chart[changeDetection] = false;\n }\n }\n else if (chart.legendSettings.mode === 'Point') {\n var point = series.points[index];\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: [point], name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n if (chart.legendSettings.toggleVisibility && !legendClickArgs.cancel) {\n point.visible = !point.visible;\n var legendOption = this.legendCollections[index];\n legendOption.visible = point.visible;\n this.refreshLegendToggle(chart, series);\n }\n }\n else if (chart.legendSettings.mode === 'Range') {\n var points = [];\n var legendOption = this.legendCollections[index];\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (legendOption.fill === (point.interior || series.interior)) {\n points.push(point);\n }\n }\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: points, name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n if (chart.legendSettings.toggleVisibility && !legendClickArgs.cancel) {\n legendOption.visible = !legendOption.visible;\n for (var _b = 0, points_1 = points; _b < points_1.length; _b++) {\n var point = points_1[_b];\n point.visible = !point.visible;\n }\n this.refreshLegendToggle(chart, series);\n }\n }\n };\n Legend.prototype.refreshLegendToggle = function (chart, series) {\n var selectedDataIndexes = [];\n if (chart.selectionModule) {\n selectedDataIndexes = extend([], chart.selectionModule.selectedDataIndexes, null, true);\n }\n if ((chart.svgObject.childNodes.length > 0) && !chart.enableAnimation && !chart.enableCanvas) {\n while (chart.svgObject.lastChild) {\n chart.svgObject.removeChild(chart.svgObject.lastChild);\n }\n remove(chart.svgObject);\n }\n chart.animateSeries = false;\n chart.redraw = chart.enableAnimation;\n chart.rotatedDataLabelCollections = [];\n removeElement(getElement(chart.element.id + '_Secondary_Element').querySelectorAll('.ejSVGTooltip')[0]);\n blazorTemplatesReset(chart);\n this.redrawSeriesElements(series, chart);\n chart.removeSvg();\n chart.refreshAxis();\n series.refreshAxisLabel();\n this.refreshSeries(chart.visibleSeries);\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series_1 = _a[_i];\n if (!isNullOrUndefined(series_1)) {\n chart.markerRender.removeHighlightedMarker(series_1, null, true);\n }\n }\n chart.refreshBound();\n chart.trigger('loaded', { chart: chart });\n if (selectedDataIndexes.length > 0) {\n chart.selectionModule.selectedDataIndexes = selectedDataIndexes;\n chart.selectionModule.redrawSelection(chart, chart.selectionMode);\n }\n if (chart.highlightModule && chart.highlightMode !== 'None' || chart.legendSettings.enableHighlight) {\n chart.highlightModule.redrawSelection(chart, chart.highlightMode);\n }\n chart.redraw = false;\n };\n Legend.prototype.changeSeriesVisiblity = function (series, visibility) {\n series.visible = !visibility;\n if (this.isSecondaryAxis(series.xAxis)) {\n series.xAxis.internalVisibility = series.xAxis.series.some(function (value) { return (value.visible); });\n }\n if (this.isSecondaryAxis(series.yAxis) || (series.category == 'Pareto' && series.type == 'Line')) {\n series.yAxis.internalVisibility = series.yAxis.series.some(function (value) { return (value.visible); });\n }\n };\n Legend.prototype.isSecondaryAxis = function (axis) {\n return (this.chart.axes.indexOf(axis) > -1);\n };\n Legend.prototype.redrawSeriesElements = function (series, chart) {\n if (!chart.redraw) {\n return null;\n }\n removeElement(chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) +\n '_DataLabelCollections');\n };\n Legend.prototype.refreshSeries = function (seriesCollection) {\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n if (series.type.indexOf('Spline') > -1) {\n var isArea = (series.type.indexOf('Area') > -1 || series.drawType.indexOf('Area') > -1);\n var isRange = series.type.indexOf('Range') > -1;\n this.chart['spline' + (isArea ? isRange ? 'RangeArea' : 'Area' : '') + 'SeriesModule'].findSplinePoint(series);\n }\n series.position = undefined;\n }\n };\n /**\n * To show the tooltip for the trimmed text in legend.\n *\n * @returns {void}\n */\n Legend.prototype.click = function (event) {\n var _this = this;\n if (!this.chart.legendSettings.visible) {\n return;\n }\n var pageX = this.chart.mouseX;\n var pageY = this.chart.mouseY;\n var legendRegion = [];\n var targetId = event.target.id.indexOf('_chart_legend_g_') > -1 ?\n event.target.firstChild['id'] : event.target.id;\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_marker_',\n this.legendID + '_shape_'];\n var seriesIndex;\n for (var _i = 0, legendItemsId_2 = legendItemsId; _i < legendItemsId_2.length; _i++) {\n var id = legendItemsId_2[_i];\n if (targetId.indexOf(id) > -1) {\n seriesIndex = parseInt(targetId.split(id)[1], 10);\n this.LegendClick(seriesIndex, event);\n break;\n }\n }\n if (targetId.indexOf(this.legendID + '_pageup') > -1) {\n this.changePage(event, true);\n }\n else if (targetId.indexOf(this.legendID + '_pagedown') > -1) {\n this.changePage(event, false);\n }\n if (this.chart.enableCanvas && this.pagingRegions.length) {\n this.checkWithinBounds(pageX, pageY);\n }\n legendRegion = this.legendRegions.filter(function (region) {\n return (withInBounds(pageX, (pageY + (_this.isPaging ? (_this.currentPageNumber - 1) * _this.translatePage(_this.chart.enableCanvas, null, 1, 2) : 0)), region.rect));\n });\n if (legendRegion.length && this.chart.enableCanvas) {\n this.LegendClick(legendRegion[0].index, event);\n }\n };\n /**\n * To check click position is within legend bounds\n */\n Legend.prototype.checkWithinBounds = function (pageX, pageY) {\n var cRender = this.chart.renderer;\n var bounds = this.legendBounds;\n var borderWidth = this.chart.legendSettings.border.width;\n var canvasRect = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n canvasRect.x = canvasRect.x - borderWidth / 2;\n canvasRect.y = canvasRect.y - borderWidth / 2;\n canvasRect.width = canvasRect.width + borderWidth;\n canvasRect.height = canvasRect.height + borderWidth;\n if (withInBounds(pageX, pageY, this.pagingRegions[0])) {\n // pageDown calculations are performing here\n if (!this.isRtlEnable) {\n this.canvasPageDown(cRender, canvasRect, bounds);\n }\n else {\n this.canvasPageUp(cRender, canvasRect, bounds);\n }\n return null;\n }\n if (withInBounds(pageX, pageY, this.pagingRegions[1])) {\n // pageUp calculations are performing here\n if (!this.isRtlEnable) {\n this.canvasPageUp(cRender, canvasRect, bounds);\n }\n else {\n this.canvasPageDown(cRender, canvasRect, bounds);\n }\n return null;\n }\n };\n Legend.prototype.canvasPageDown = function (cRender, canvasRect, bounds) {\n if (--this.currentPageNumber > 0) {\n this.legendRegions = [];\n cRender.clearRect(canvasRect);\n cRender.canvasClip(new RectOption('legendClipPath', 'transparent', { width: 0, color: '' }, null, canvasRect));\n this.renderLegend(this.chart, this.legend, bounds);\n cRender.canvasRestore();\n }\n else {\n ++this.currentPageNumber;\n }\n };\n Legend.prototype.canvasPageUp = function (cRender, canvasRect, bounds) {\n if (++this.currentPageNumber > 0 && this.currentPageNumber <= this.totalNoOfPages) {\n this.legendRegions = [];\n cRender.clearRect(canvasRect);\n cRender.canvasClip(new RectOption('legendClipPath', 'transpaent', { width: 0, color: '' }, null, canvasRect));\n this.renderLegend(this.chart, this.legend, bounds);\n cRender.canvasRestore();\n }\n else {\n --this.currentPageNumber;\n }\n };\n /**\n * Get module name\n */\n Legend.prototype.getModuleName = function () {\n return 'Legend';\n };\n /**\n * To destroy the Legend.\n *\n * @returns {void}\n * @private\n */\n Legend.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Legend;\n}(BaseLegend));\nexport { Legend };\n","/* eslint-disable no-trailing-spaces */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { getAnimationFunction, pathAnimation, getElement } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { Animation, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Base for line type series.\n */\nvar LineBase = /** @class */ (function () {\n /** @private */\n function LineBase(chartModule) {\n this.chart = chartModule;\n }\n /**\n * To improve the chart performance.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.enableComplexProperty = function (series) {\n var tempPoints = [];\n var tempPoints2 = [];\n var xVisibleRange = series.xAxis.visibleRange;\n var yVisibleRange = series.yAxis.visibleRange;\n var seriesPoints = series.points;\n var areaBounds = series.clipRect;\n var xTolerance = Math.abs(xVisibleRange.delta / areaBounds.width);\n var yTolerance = Math.abs(yVisibleRange.delta / areaBounds.height);\n var prevXValue = (seriesPoints[0] && seriesPoints[0].xValue > xTolerance) ? 0 : xTolerance;\n var prevYValue = (seriesPoints[0] && seriesPoints[0].y > yTolerance) ? 0 : yTolerance;\n var xVal = 0;\n var yVal = 0;\n for (var _i = 0, seriesPoints_1 = seriesPoints; _i < seriesPoints_1.length; _i++) {\n var currentPoint = seriesPoints_1[_i];\n currentPoint.symbolLocations = [];\n xVal = currentPoint.xValue ? currentPoint.xValue : xVisibleRange.min;\n yVal = currentPoint.yValue ? currentPoint.yValue : yVisibleRange.min;\n if (Math.abs(prevXValue - xVal) >= xTolerance || Math.abs(prevYValue - yVal) >= yTolerance) {\n tempPoints.push(currentPoint);\n prevXValue = xVal;\n prevYValue = yVal;\n }\n }\n var tempPoint;\n for (var i = 0; i < tempPoints.length; i++) {\n tempPoint = tempPoints[i];\n if (isNullOrUndefined(tempPoint.x) || (series.category === 'Indicator' && (isNaN(tempPoint.xValue) || isNaN(tempPoint.yValue)))) {\n continue;\n }\n else {\n tempPoints2.push(tempPoint);\n }\n }\n return tempPoints2;\n };\n /**\n * To generate the line path direction.\n *\n * @param {Points} firstPoint firstPoint\n * @param {Points} secondPoint secondPoint\n * @param {Series} series series\n * @param {boolean} isInverted isInverted\n * @param {Function} getPointLocation getPointLocation\n * @param {string} startPoint startPoint\n */\n LineBase.prototype.getLineDirection = function (firstPoint, secondPoint, series, isInverted, getPointLocation, startPoint) {\n var direction = '';\n if (firstPoint != null) {\n var point1 = getPointLocation(firstPoint.xValue, firstPoint.yValue, series.xAxis, series.yAxis, isInverted, series);\n var point2 = getPointLocation(secondPoint.xValue, secondPoint.yValue, series.xAxis, series.yAxis, isInverted, series);\n direction = startPoint + ' ' + (point1.x) + ' ' + (point1.y) + ' ' +\n 'L' + ' ' + (point2.x) + ' ' + (point2.y) + ' ';\n }\n return direction;\n };\n /**\n * To append the line path.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.appendLinePath = function (options, series, clipRect) {\n var element = getElement(options.id);\n var chart = series.chart;\n var previousDirection = element ? element.getAttribute('d') : null;\n var htmlObject = series.chart.renderer.drawPath(options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n if (htmlObject) {\n htmlObject.setAttribute('clip-path', clipRect);\n }\n series.pathElement = htmlObject;\n if (!series.chart.enableCanvas) {\n series.seriesElement.appendChild(htmlObject);\n }\n series.isRectSeries = false;\n pathAnimation(element, options.d, series.chart.redraw, previousDirection, chart.duration);\n };\n /**\n * To render the marker for the series.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.renderMarker = function (series) {\n if (series.marker && series.marker.visible) {\n series.chart.markerRender.render(series);\n }\n };\n /**\n * To do the progressive animation.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.doProgressiveAnimation = function (series, option) {\n var animation = new Animation({});\n var path = series.pathElement;\n var strokeDashArray = path.getAttribute('stroke-dasharray');\n var pathLength = series.pathElement.getTotalLength();\n var currentTime;\n path.style.visibility = 'hidden';\n animation.animate(path, {\n duration: option.duration,\n delay: option.delay,\n progress: function (args) {\n if (args.timeStamp >= args.delay) {\n path.style.visibility = 'visible';\n currentTime = Math.abs(Math.round(((args.timeStamp - args.delay) * pathLength) / args.duration));\n path.setAttribute('stroke-dasharray', currentTime + ',' + pathLength);\n }\n },\n end: function () {\n path.setAttribute('stroke-dasharray', strokeDashArray);\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n });\n };\n /**\n * To store the symbol location and region.\n *\n * @param {Points} point point\n * @param {Series} series series\n * @param {boolean} isInverted isInverted\n * @param {Function} getLocation getLocation\n */\n LineBase.prototype.storePointLocation = function (point, series, isInverted, getLocation) {\n var markerWidth = (series.marker && series.marker.width) ? series.marker.width : 0;\n var markerHeight = (series.marker && series.marker.height) ? series.marker.height : 0;\n point.symbolLocations.push(getLocation(point.xValue, point.yValue, series.xAxis, series.yAxis, isInverted, series));\n point.regions.push(new Rect(point.symbolLocations[0].x - markerWidth, point.symbolLocations[0].y - markerHeight, 2 * markerWidth, 2 * markerHeight));\n };\n /**\n * To find point with in the visible range\n *\n * @param {Points} point point\n * @param {Axis} yAxis yAxis\n * @private\n */\n LineBase.prototype.withinYRange = function (point, yAxis) {\n return point.yValue >= yAxis.visibleRange.min && point.yValue <= yAxis.visibleRange.max;\n };\n /**\n * To get first and last visible points\n *\n * @private\n */\n LineBase.prototype.getFirstLastVisiblePoint = function (points) {\n var first = null;\n var last = null;\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n if (first === null && point.visible) {\n first = last = point;\n }\n last = point.visible ? point : last;\n }\n return { first: first ? first : points[0], last: last ? last : points[points.length - 1] };\n };\n /**\n * To Generate the area series border path direction from area series main direction path.\n *\n * @param {string} direction direction\n *\n * */\n LineBase.prototype.getBorderDirection = function (direction) {\n var coordinates = direction.split(' ');\n if (coordinates.length > 3 && !(this.chart.stackingAreaSeriesModule) && !(this.chart.stackingStepAreaSeriesModule)) {\n coordinates.splice(coordinates.length - 4, 3);\n }\n else if (this.chart.stackingAreaSeriesModule || this.chart.stackingStepAreaSeriesModule) {\n coordinates.splice(coordinates.length / 2 + 1, coordinates.length / 2 + 1);\n if (coordinates[coordinates.length - 1] === 'L') {\n coordinates.splice(coordinates.length - 1, 1);\n }\n }\n return coordinates.join(' ');\n };\n /**\n * To remove empty point directions from series direction of area types.\n *\n * @param {string} borderDirection direction\n *\n * */\n LineBase.prototype.removeEmptyPointsBorder = function (borderDirection) {\n var startIndex = 0;\n var coordinates = borderDirection.split(' ');\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var point;\n do {\n point = coordinates.indexOf('M', startIndex);\n if (point > -1) {\n coordinates.splice(point + 1, 3);\n startIndex = point + 1;\n if (point - 6 > 0) {\n coordinates.splice(point - 6, 6);\n startIndex -= 6;\n }\n }\n } while (point !== -1);\n return coordinates.join(' ');\n };\n /**\n * To do the linear animation.\n *\n * @returns {void}\n * @private\n */\n LineBase.prototype.doLinearAnimation = function (series, animation) {\n var clipRect = series.clipRectElement.childNodes[0].childNodes[0];\n var duration = series.chart.animated ? series.chart.duration : animation.duration;\n var effect = getAnimationFunction('Linear');\n var elementHeight = +clipRect.getAttribute('height');\n var elementWidth = +clipRect.getAttribute('width');\n var xCenter = +clipRect.getAttribute('x');\n var yCenter = series.chart.requireInvertedAxis ? +clipRect.getAttribute('height') + +clipRect.getAttribute('y') :\n +clipRect.getAttribute('y');\n var value;\n clipRect.style.visibility = 'hidden';\n new Animation({}).animate(clipRect, {\n duration: duration,\n delay: animation.delay,\n progress: function (args) {\n if (args.timeStamp >= args.delay) {\n clipRect.style.visibility = 'visible';\n if (series.chart.requireInvertedAxis) {\n value = effect(args.timeStamp - args.delay, 0, elementHeight, args.duration);\n clipRect.setAttribute('transform', 'translate(' + xCenter + ' ' + yCenter +\n ') scale(1,' + (value / elementHeight) + ') translate(' + (-xCenter) + ' ' + (-yCenter) + ')');\n }\n else {\n value = effect(args.timeStamp - args.delay, 0, elementWidth, args.duration);\n clipRect.setAttribute('transform', 'translate(' + xCenter + ' ' + yCenter +\n ') scale(' + (value / elementWidth) + ', 1) translate(' + (-xCenter) + ' ' + (-yCenter) + ')');\n }\n }\n },\n end: function () {\n clipRect.setAttribute('transform', 'translate(0,0)');\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n });\n };\n return LineBase;\n}());\nexport { LineBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { withInRange, getPoint, TransformToVisible } from '../../common/utils/helper';\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { LineBase } from './line-base';\n/**\n * `LineSeries` module used to render the line series.\n */\nvar LineSeries = /** @class */ (function (_super) {\n __extends(LineSeries, _super);\n function LineSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Line Series.\n *\n * @returns {void}\n * @private\n */\n LineSeries.prototype.render = function (series, xAxis, yAxis, isInverted) {\n var point1;\n var point2;\n var direction = '';\n var prevPoint = null;\n var startPoint = 'M';\n var isPolar = (series.chart && series.chart.chartAreaType === 'PolarRadar');\n var isDrop = (series.emptyPointSettings && series.emptyPointSettings.mode === 'Drop');\n var getCoordinate = isPolar ? TransformToVisible : getPoint;\n var visiblePoints = series.category === 'TrendLine' ? series.points : this.enableComplexProperty(series);\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n point.regions = [];\n point.symbolLocations = [];\n if (point.visible && withInRange(visiblePoints[point.index - 1], point, visiblePoints[point.index + 1], series)) {\n direction += this.getLineDirection(prevPoint, point, series, isInverted, getCoordinate, startPoint);\n startPoint = prevPoint ? 'L' : startPoint;\n prevPoint = point;\n this.storePointLocation(point, series, isInverted, getCoordinate);\n }\n else {\n prevPoint = isDrop ? prevPoint : null;\n startPoint = isDrop ? startPoint : 'M';\n }\n }\n if (isPolar) {\n if (series.isClosed) {\n var points = this.getFirstLastVisiblePoint(visiblePoints);\n point2 = getCoordinate(points.last.xValue, points.last.yValue, xAxis, yAxis, isInverted, series);\n point1 = getCoordinate(points.first.xValue, points.first.yValue, xAxis, yAxis, isInverted, series);\n direction = direction.concat(startPoint + ' ' + point2.x + ' ' + point2.y + ' ' + 'L' + ' ' + point1.x + ' ' + point1.y);\n }\n }\n var name = series.category === 'Indicator' ? series.chart.element.id + '_Indicator_' + series.index + '_' + series.name :\n series.category === 'TrendLine' ? series.chart.element.id + '_Series_' + series.sourceIndex + '_TrendLine_' + series.index :\n series.chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index);\n var options = new PathOption(name, 'none', series.width, series.interior, series.opacity, series.dashArray, direction);\n this.appendLinePath(options, series, '');\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n LineSeries.prototype.doAnimation = function (series) {\n var option = series.animation;\n this.doProgressiveAnimation(series, option);\n };\n /**\n * Get module name.\n */\n LineSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'LineSeries';\n };\n /**\n * To destroy the line series.\n *\n * @returns {void}\n * @private\n */\n LineSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return LineSeries;\n}(LineBase));\nexport { LineSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ChartLocation } from '../../common/utils/helper';\nimport { stopTimer, removeElement } from '../../common/utils/helper';\nimport { ChartData } from '../../chart/utils/get-data';\nimport { Tooltip as SVGTooltip } from '@syncfusion/ej2-svg-base';\n/**\n * Tooltip Module used to render the tooltip for series.\n */\nvar BaseTooltip = /** @class */ (function (_super) {\n __extends(BaseTooltip, _super);\n /**\n * Constructor for tooltip module.\n *\n * @private\n */\n function BaseTooltip(chart) {\n var _this = _super.call(this, chart) || this;\n _this.element = _this.chart.element;\n _this.textStyle = chart.tooltip.textStyle;\n _this.control = chart;\n _this.template = chart.tooltip.template;\n return _this;\n }\n BaseTooltip.prototype.getElement = function (id) {\n return document.getElementById(id);\n };\n /**\n * Renders the tooltip.\n *\n * @returns {void}\n * @private\n */\n BaseTooltip.prototype.getTooltipElement = function (isTooltip) {\n this.inverted = this.chart.requireInvertedAxis;\n this.header = (this.control.tooltip.header === null) ?\n ((this.control.tooltip.shared) ? '${point.x}' : '${series.name}')\n : (this.control.tooltip.header);\n this.formattedText = [];\n var tooltipDiv = document.getElementById(this.chart.element.id + '_tooltip');\n var isStockChart = this.chart.element.id.indexOf('stockChart') > -1;\n if (!isTooltip && !tooltipDiv || isStockChart) {\n return this.createElement();\n }\n return null;\n };\n BaseTooltip.prototype.createElement = function () {\n var tooltipDiv = document.createElement('div');\n tooltipDiv.id = this.element.id + '_tooltip';\n tooltipDiv.className = 'ejSVGTooltip';\n tooltipDiv.style.pointerEvents = 'none';\n tooltipDiv.style.position = 'absolute';\n tooltipDiv.style.zIndex = '1';\n return tooltipDiv;\n };\n BaseTooltip.prototype.pushData = function (data, isFirst, tooltipDiv, isChart) {\n if (data.series.enableTooltip) {\n if (isChart) {\n this.currentPoints.push(data);\n }\n else {\n this.currentPoints.push(data);\n }\n this.stopAnimation();\n if (tooltipDiv && !document.getElementById(tooltipDiv.id)) {\n if (!this.chart.stockChart) {\n document.getElementById(this.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n else {\n document.getElementById(this.chart.stockChart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n return true;\n }\n return false;\n };\n BaseTooltip.prototype.removeHighlight = function () {\n var item;\n var series;\n for (var i = 0, len = this.previousPoints.length; i < len; i++) {\n item = this.previousPoints[i];\n if (item.series.isRectSeries) {\n if (item.series.visible) {\n this.highlightPoint(item.series, item.point.index, false);\n }\n continue;\n }\n series = item.series;\n }\n };\n BaseTooltip.prototype.highlightPoint = function (series, pointIndex, highlight) {\n var element = this.getElement(this.element.id + '_Series_' + series.index + '_Point_' + pointIndex);\n var selectionModule = this.control.accumulationSelectionModule;\n var isSelectedElement = selectionModule && selectionModule.selectedDataIndexes.length > 0 ? true : false;\n if (element) {\n if ((!isSelectedElement || isSelectedElement && element.getAttribute('class')\n && element.getAttribute('class').indexOf('_ej2_chart_selection_series_') === -1)) {\n if (this.chart.highlightColor !== '' && !isNullOrUndefined(this.chart.highlightColor)) {\n element.setAttribute('fill', (highlight && this.chart.highlightColor !== 'transparent' ? this.chart.highlightColor : series.pointColorMapping !== '' ? (series.points[0]).color : series.points[pointIndex].color || series.interior));\n }\n else {\n element.setAttribute('opacity', (highlight && this.chart.highlightColor !== 'transparent' ? series.opacity / 2 : series.opacity).toString());\n }\n }\n else {\n element.setAttribute('opacity', series.opacity.toString());\n }\n }\n };\n BaseTooltip.prototype.highlightPoints = function () {\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.series.isRectSeries && item.series.category === 'Series') {\n this.highlightPoint(item.series, item.point.index, true);\n }\n }\n };\n // tslint:disable-next-line:max-func-body-length\n BaseTooltip.prototype.createTooltip = function (chart, isFirst, location, clipLocation, point, shapes, offset, bounds, crosshairEnabled, extraPoints, templatePoint, customTemplate) {\n if (crosshairEnabled === void 0) { crosshairEnabled = false; }\n if (extraPoints === void 0) { extraPoints = null; }\n if (templatePoint === void 0) { templatePoint = null; }\n var series = this.currentPoints[0].series;\n var module = chart.tooltipModule || chart.accumulationTooltipModule;\n if (!module || location === null) { // For the tooltip enable is false.\n return;\n }\n if (isFirst) {\n this.svgTooltip = new SVGTooltip({\n opacity: chart.tooltip.opacity ? chart.tooltip.opacity : ((this.chart.theme === 'Material3' || this.chart.theme === 'Material3Dark') ? 1 : 0.75),\n header: this.headerText,\n content: this.text,\n fill: chart.tooltip.fill,\n border: chart.tooltip.border,\n enableAnimation: chart.tooltip.enableAnimation,\n location: location,\n shared: chart.tooltip.shared,\n crosshair: crosshairEnabled,\n shapes: shapes,\n clipBounds: this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation,\n areaBounds: bounds,\n palette: this.findPalette(),\n template: customTemplate || this.template,\n data: templatePoint,\n theme: chart.theme,\n offset: offset,\n textStyle: chart.tooltip.textStyle,\n isNegative: (series.isRectSeries && series.type !== 'Waterfall' && point && point.y < 0),\n inverted: this.chart.requireInvertedAxis && series.isRectSeries,\n arrowPadding: this.text.length > 1 || this.chart.stockChart ? 0 : 7,\n availableSize: chart.availableSize,\n duration: this.chart.tooltip.duration,\n isCanvas: this.chart.enableCanvas,\n isTextWrap: chart.tooltip.enableTextWrap && chart.getModuleName() === 'chart',\n blazorTemplate: { name: 'Template', parent: this.chart.tooltip },\n controlInstance: this.chart,\n enableRTL: chart.enableRtl,\n controlName: 'Chart',\n allowHighlight: chart.getModuleName() === 'chart' && !series.marker.allowHighlight,\n tooltipRender: function () {\n module.removeHighlight();\n module.highlightPoints();\n module.updatePreviousPoint(extraPoints);\n },\n animationComplete: function (args) {\n if (args.tooltip.fadeOuted) {\n module.fadeOut(module.previousPoints);\n }\n }\n });\n this.svgTooltip.appendTo(this.getElement(this.element.id + '_tooltip'));\n }\n else {\n if (this.svgTooltip) {\n this.svgTooltip.location = location;\n this.svgTooltip.content = this.text;\n this.svgTooltip.header = this.headerText;\n this.svgTooltip.offset = offset;\n this.svgTooltip.palette = this.findPalette();\n this.svgTooltip.shapes = shapes;\n this.svgTooltip.data = templatePoint;\n this.svgTooltip.template = this.template;\n this.svgTooltip.controlName = 'Chart';\n this.svgTooltip.crosshair = crosshairEnabled;\n this.svgTooltip.textStyle = chart.tooltip.textStyle;\n this.svgTooltip.isNegative = (series.isRectSeries && series.type !== 'Waterfall' && point && point.y < 0);\n this.svgTooltip.clipBounds = this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation;\n this.svgTooltip.arrowPadding = this.text.length > 1 || this.chart.stockChart ? 0 : 7;\n this.svgTooltip.allowHighlight = chart.getModuleName() === 'chart' && !series.marker.allowHighlight;\n this.svgTooltip.dataBind();\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.chart.isReact) {\n this.chart.renderReactTemplates();\n }\n };\n BaseTooltip.prototype.findPalette = function () {\n var colors = [];\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var data = _a[_i];\n colors.push(this.findColor(data, data.series));\n }\n return colors;\n };\n BaseTooltip.prototype.findColor = function (data, series) {\n if (series.isRectSeries && (series.type === 'Candle' || series.type === 'Hilo' || series.type === 'HiloOpenClose')) {\n return data.point.color;\n }\n else {\n return (data.point.color && data.point.color !== '#ffffff' ? data.point.color\n : data.point.interior) ||\n series.marker.fill || series.interior;\n }\n };\n BaseTooltip.prototype.updatePreviousPoint = function (extraPoints) {\n if (extraPoints) {\n this.currentPoints = this.currentPoints.concat(extraPoints);\n }\n this.previousPoints = extend([], this.currentPoints, null, true);\n };\n BaseTooltip.prototype.fadeOut = function (data) {\n var svgElement = this.chart.enableCanvas ? this.getElement(this.element.id + '_tooltip_group') :\n this.getElement(this.element.id + '_tooltip_svg');\n var isTooltip = (svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0);\n if (!isTooltip) {\n this.valueX = null;\n this.valueY = null;\n this.currentPoints = [];\n this.removeHighlight();\n this.removeHighlightedMarker(data, true);\n this.svgTooltip = null;\n this.control.trigger('animationComplete', {});\n }\n };\n /*\n * @hidden\n */\n BaseTooltip.prototype.removeHighlightedMarker = function (data, fadeOut) {\n if (this.chart.markerRender) {\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var item = data_1[_i];\n removeElement(this.element.id + '_Series_' + item.series.index +\n '_Point_' + item.point.index + '_Trackball');\n this.chart.markerRender.removeHighlightedMarker(item.series, item.point, fadeOut);\n }\n }\n this.previousPoints = [];\n };\n // public triggerEvent(point: PointData | AccPointData, isFirst: boolean, textCollection: string, firstText: boolean = true): boolean {\n // let argsData: ITooltipRenderEventArgs = {\n // cancel: false, name: tooltipRender, text: textCollection,\n // point: point.point, series: point.series, textStyle: this.textStyle\n // };\n // this.chart.trigger(tooltipRender, argsData);\n // if (!argsData.cancel) {\n // if (point.series.type === 'BoxAndWhisker') {\n // this.removeText();\n // isFirst = true;\n // }\n // this.formattedText = this.formattedText.concat(argsData.text);\n // this.text = this.formattedText;\n // }\n // return !argsData.cancel;\n // }\n BaseTooltip.prototype.removeText = function () {\n this.textElements = [];\n var element = this.getElement(this.element.id + '_tooltip_group');\n if (element && element.childNodes.length > 0) {\n while (element.lastChild && element.childNodes.length !== 1) {\n element.removeChild(element.lastChild);\n }\n }\n };\n BaseTooltip.prototype.stopAnimation = function () {\n stopTimer(this.toolTipInterval);\n };\n /**\n * Removes the tooltip on mouse leave.\n *\n * @returns {void}\n * @private\n */\n BaseTooltip.prototype.removeTooltip = function (duration) {\n var _this = this;\n var tooltipElement = this.getElement(this.element.id + '_tooltip');\n var tooltipTemplate = tooltipElement ? this.getElement(tooltipElement.id + 'parent_template') : null;\n var isTemplateRendered = tooltipTemplate && tooltipTemplate.innerText !== '
';\n this.stopAnimation();\n if (tooltipElement && this.previousPoints.length > 0) {\n this.toolTipInterval = +setTimeout(function () {\n if (_this.svgTooltip) {\n _this.svgTooltip.fadeOut();\n }\n }, duration);\n }\n };\n return BaseTooltip;\n}(ChartData));\nexport { BaseTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Browser, remove } from '@syncfusion/ej2-base';\nimport { PointData, ChartLocation } from '../../common/utils/helper';\nimport { getElement, measureText, Rect } from '@syncfusion/ej2-svg-base';\nimport { valueToCoefficient, removeElement, valueToPolarCoefficient, withInBounds } from '../../common/utils/helper';\nimport { BaseTooltip } from '../../common/user-interaction/tooltip';\nimport { tooltipRender, sharedTooltipRender } from '../../common/model/constants';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `Tooltip` module is used to render the tooltip for chart series.\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for tooltip module.\n *\n * @private\n */\n function Tooltip(chart) {\n var _this = _super.call(this, chart) || this;\n _this.commonXvalues = [];\n _this.addEventListener();\n return _this;\n }\n /**\n * @hidden\n */\n Tooltip.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n this.chart.on(cancelEvent, this.mouseLeaveHandler, this);\n this.chart.on('tapHold', this.longPress, this);\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n Tooltip.prototype.mouseUpHandler = function () {\n var chart = this.control;\n var data = this.getData();\n data.lierIndex = this.lierIndex;\n if (chart.isTouch && !this.isSelected(chart) &&\n ((withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect) && chart.tooltip.shared)\n || !chart.tooltip.shared)) {\n if (!chart.crosshair.enable) {\n this.tooltip();\n if (chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(chart.tooltip.fadeOutDuration);\n }\n }\n else if (chart.startMove && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(2000);\n }\n }\n else if (!this.findData(data, this.previousPoints[0]) && chart.tooltip.fadeOutMode === 'Click') {\n this.removeTooltip(0);\n }\n };\n Tooltip.prototype.mouseLeaveHandler = function () {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n };\n Tooltip.prototype.mouseMoveHandler = function () {\n var chart = this.chart;\n chart.mouseX = chart.mouseX / chart.scaleX;\n chart.mouseY = chart.mouseY / chart.scaleY;\n if (chart.stockChart && chart.stockChart.onPanning) {\n if (chart.mouseY < chart.chartAxisLayoutPanel.seriesClipRect.y) {\n chart.mouseY = chart.chartAxisLayoutPanel.seriesClipRect.y;\n }\n else if (chart.mouseY > chart.chartAxisLayoutPanel.seriesClipRect.y + chart.chartAxisLayoutPanel.seriesClipRect.height) {\n chart.mouseY = chart.chartAxisLayoutPanel.seriesClipRect.y + chart.chartAxisLayoutPanel.seriesClipRect.height;\n }\n }\n // Tooltip for chart series.\n if (!chart.disableTrackTooltip && !this.isSelected(chart)) {\n if (!chart.tooltip.shared && (!chart.isTouch || (chart.startMove))) {\n this.tooltip();\n }\n if (withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n if (chart.tooltip.shared && (!chart.isTouch || (chart.startMove))) {\n this.tooltip();\n }\n }\n else {\n if (chart.tooltip.shared && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n }\n }\n }\n };\n /**\n * Handles the long press on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Tooltip.prototype.longPress = function () {\n var chart = this.chart;\n if (chart.crosshair.enable && withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n this.tooltip();\n }\n return false;\n };\n /**\n * Renders the tooltip.\n *\n * @returns {void}\n */\n Tooltip.prototype.tooltip = function () {\n var elementId = this.chart.enableCanvas ? this.element.id + '_tooltip_group' : this.element.id + '_tooltip_svg';\n var svgElement = this.getElement(elementId);\n // To prevent the disappearance of the tooltip, while resize the stock chart.\n var isStockSvg = this.chart.stockChart && svgElement && (svgElement.firstChild.childNodes.length > 1);\n var isTooltip = (svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0 && !isStockSvg);\n var tooltipDiv = this.getTooltipElement(isTooltip);\n if (this.chart.enableCanvas && tooltipDiv) {\n document.getElementById(this.chart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n tooltipDiv.appendChild(document.getElementById(this.chart.element.id + '_tooltip_svg'));\n }\n if (!this.chart.tooltip.shared) {\n this.renderSeriesTooltip(this.chart, !isTooltip, tooltipDiv);\n }\n else {\n this.renderGroupedTooltip(this.chart, !isTooltip, tooltipDiv);\n }\n };\n Tooltip.prototype.findHeader = function (data) {\n if (this.header === '') {\n return '';\n }\n this.header = this.parseTemplate(data.point, data.series, this.header, data.series.xAxis, data.series.yAxis);\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n return this.header;\n }\n return '';\n };\n Tooltip.prototype.findShapes = function () {\n if (!this.chart.tooltip.enableMarker) {\n return [];\n }\n var marker = [];\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var data = _a[_i];\n marker.push(data.point.marker.shape || data.series.marker.shape || 'Circle');\n }\n return marker;\n };\n Tooltip.prototype.renderSeriesTooltip = function (chart, isFirst, tooltipDiv) {\n var data = this.getData();\n data.lierIndex = this.lierIndex;\n this.currentPoints = [];\n if (this.findData(data, this.previousPoints[0])) {\n if (!(chart.dataEditingModule && chart.dataEditingModule.isPointDragging) && (this.previousPoints[0] &&\n data.point.index === this.previousPoints[0].point.index && data.series.index === this.previousPoints[0].series.index)) {\n return null;\n }\n if (this.pushData(data, isFirst, tooltipDiv, true)) {\n this.triggerTooltipRender(data, isFirst, this.getTooltipText(data), this.findHeader(data));\n }\n }\n else {\n if (!data.point && this.isRemove && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n this.isRemove = false;\n }\n else {\n var commonXvalues = this.mergeXvalues(this.chart.visibleSeries);\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible && !(series.category === 'TrendLine')) {\n data = this.getClosestX(chart, series, commonXvalues) || data;\n }\n }\n }\n }\n if (data && data.point) {\n this.findMouseValue(data, chart);\n }\n };\n Tooltip.prototype.triggerTooltipRender = function (point, isFirst, textCollection, headerText) {\n var _this = this;\n var tooltipTemplate;\n var argsData = {\n cancel: false, name: tooltipRender, text: textCollection, headerText: headerText, template: tooltipTemplate,\n series: this.chart.isBlazor ? {} : point.series, textStyle: this.textStyle, point: point.point,\n data: { pointX: point.point.x, pointY: point.point.y, seriesIndex: point.series.index, seriesName: point.series.name,\n pointIndex: point.point.index, pointText: point.point.text }\n };\n var borderWidth = this.chart.border.width;\n var padding = 3;\n var chartTooltipSuccess = function (argsData) {\n if (!argsData.cancel) {\n if (point.series.type === 'BoxAndWhisker') {\n _this.removeText();\n isFirst = true;\n }\n _this.headerText = argsData.headerText;\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = _this.formattedText;\n _this.createTooltip(_this.chart, isFirst, _this.getSymbolLocation(point), point.series.clipRect, point.point, _this.findShapes(), _this.findMarkerHeight(_this.currentPoints[0]), new Rect(borderWidth, borderWidth, _this.chart.availableSize.width - padding - borderWidth * 2, _this.chart.availableSize.height - padding - borderWidth * 2), _this.chart.crosshair.enable, null, _this.getTemplateText(point), _this.template ? argsData.template : '');\n }\n else {\n _this.removeHighlight();\n remove(_this.getElement(_this.element.id + '_tooltip'));\n }\n _this.isRemove = true;\n };\n chartTooltipSuccess.bind(this, point);\n this.chart.trigger(tooltipRender, argsData, chartTooltipSuccess);\n };\n Tooltip.prototype.findMarkerHeight = function (pointData) {\n var markerHeight = 0;\n var series = pointData.series;\n markerHeight = ((series.marker.visible || (this.chart.tooltip.shared &&\n (!series.isRectSeries || series.marker.visible)) || series.type === 'Scatter' || series.drawType === 'Scatter')\n && !(series.type === 'Candle' || series.type === 'Hilo' || series.type === 'HiloOpenClose')) ?\n ((series.marker.height + 2) / 2 + (2 * series.marker.border.width)) : 0;\n return markerHeight;\n };\n Tooltip.prototype.findData = function (data, previous) {\n return data.point && ((!previous || (previous.point !== data.point)) ||\n (previous && previous.lierIndex > 3 && previous.lierIndex !== this.lierIndex) || (previous.point === data.point));\n };\n Tooltip.prototype.getSymbolLocation = function (data) {\n var location;\n if (data.series.type !== 'BoxAndWhisker') {\n if (!data.point.symbolLocations[0]) {\n return null;\n }\n location = new ChartLocation(data.point.symbolLocations[0].x, data.point.symbolLocations[0].y);\n }\n switch (data.series.type) {\n case 'BoxAndWhisker':\n return this.getBoxLocation(data);\n case 'Waterfall':\n return this.getWaterfallRegion(data, location);\n case 'RangeArea':\n case 'RangeStepArea':\n case 'SplineRangeArea':\n case 'RangeColumn':\n return this.getRangeArea(data, location);\n default:\n return location;\n }\n };\n Tooltip.prototype.getRangeArea = function (data, location) {\n if (data.point.regions[0]) {\n if (!this.inverted) {\n location.y = data.point.regions[0].y + data.point.regions[0].height / 2;\n }\n else {\n location.x = data.point.regions[0].x + data.point.regions[0].width / 2;\n }\n if (data.series.type === 'RangeStepArea') {\n location.y = data.point.regions[0].y + data.point.regions[0].height / 2 + data.point.regions[0].width;\n }\n }\n return location;\n };\n Tooltip.prototype.getWaterfallRegion = function (data, location) {\n if (!this.inverted) {\n location.y = (data.point.y < 0) ?\n location.y - data.point.regions[0].height : location.y;\n }\n else {\n location.x = (data.point.y < 0) ?\n location.x + data.point.regions[0].width : location.x;\n }\n return location;\n };\n Tooltip.prototype.getTooltipText = function (pointData) {\n var series = pointData.series;\n return this.parseTemplate(pointData.point, series, this.getFormat(this.chart, series), series.xAxis, series.yAxis);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Tooltip.prototype.getTemplateText = function (data) {\n if (this.template && this.chart.tooltip.shared) {\n var point = [];\n for (var i = 0; i < data.length; i++) {\n point[i] = extend({}, data[i].point);\n point[i].x = this.formatPointValue(data[1].point, data[1].series.xAxis, 'x', true, false);\n if ((data[i].series.seriesType === 'XY')) {\n point[i].y = this.formatPointValue(data[i].point, data[i].series.yAxis, 'y', false, true);\n }\n else {\n point[i].low = this.formatPointValue(data[i].point, data[i].series.yAxis, 'low', false, true);\n point[i].high = this.formatPointValue(data[i].point, data[i].series.yAxis, 'high', false, true);\n }\n }\n return point;\n }\n else if (this.template) {\n var point = extend({}, data.point);\n point.x = this.formatPointValue(data.point, data.series.xAxis, 'x', true, false);\n if ((data.series.seriesType === 'XY')) {\n point.y = this.formatPointValue(data.point, data.series.yAxis, 'y', false, true);\n }\n else {\n point.low = this.formatPointValue(data.point, data.series.yAxis, 'low', false, true);\n point.high = this.formatPointValue(data.point, data.series.yAxis, 'high', false, true);\n }\n return point;\n }\n else {\n return data.point;\n }\n };\n Tooltip.prototype.findMouseValue = function (data, chart) {\n if (!chart.requireInvertedAxis) {\n if (chart.chartAreaType === 'PolarRadar') {\n this.valueX = valueToPolarCoefficient(data.point.xValue, data.series.xAxis) * data.series.xAxis.rect.width\n + data.series.xAxis.rect.x;\n }\n else {\n this.valueX = (data.series.category === 'TrendLine' && chart.tooltip.shared) ? this.valueX :\n valueToCoefficient(data.point.xValue, data.series.xAxis) * data.series.xAxis.rect.width\n + data.series.xAxis.rect.x;\n }\n this.valueY = chart.mouseY;\n }\n else {\n this.valueY = (1 - valueToCoefficient(data.point.xValue, data.series.xAxis)) * data.series.xAxis.rect.height\n + data.series.xAxis.rect.y;\n this.valueX = chart.mouseX;\n }\n };\n Tooltip.prototype.renderGroupedTooltip = function (chart, isFirst, tooltipDiv) {\n var data;\n var dataCollection = [];\n var lastData;\n var pointData = chart.chartAreaType === 'PolarRadar' ? this.getData() : null;\n this.stopAnimation();\n this.removeHighlight();\n this.currentPoints = [];\n var extraPoints = [];\n var closestXValue = Number.MAX_VALUE;\n var closetYValue = Number.MAX_VALUE;\n var pointXValue;\n var pointYValue;\n var tempData;\n //let headerContent : string = '';\n if (isFirst) {\n if (!chart.stockChart) {\n if (tooltipDiv) {\n document.getElementById(this.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n else {\n if (tooltipDiv && !getElement(tooltipDiv.id)) {\n document.getElementById(chart.stockChart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n }\n this.removeText();\n var argument = {\n text: [], cancel: false, name: sharedTooltipRender, data: [], point: [], series: [], headerText: '', textStyle: this.textStyle, template: ''\n };\n var i = 0;\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.enableTooltip || !series.visible) {\n continue;\n }\n if (chart.chartAreaType === 'Cartesian' && series.visible) {\n data = this.getClosestX(chart, series, this.commonXValue(this.chart.visibleSeries));\n }\n else if (chart.chartAreaType === 'PolarRadar' && series.visible && pointData.point !== null) {\n data = new PointData(series.points[pointData.point.index], series);\n }\n // if (data && this.header !== '' && this.currentPoints.length === 0) {\n // headerContent = this.findHeader(data);\n // }\n var showNearest = true;\n if (chart.tooltip.showNearestPoint && !data) {\n data = this.getClosestX(chart, series, this.commonXValue([series]));\n showNearest = false;\n }\n if (data) {\n argument.data.push({ pointX: data.point.x, pointY: data.point.y, seriesIndex: data.series.index,\n seriesName: data.series.name, pointIndex: data.point.index, pointText: data.point.text });\n argument.series[i] = data.series;\n argument.point[i] = data.point;\n argument.headerText = this.findHeader(data);\n this.currentPoints.push(data);\n argument.text.push(this.getTooltipText(data));\n pointXValue = (!chart.requireInvertedAxis) ? chart.mouseX - data.series.clipRect.x : chart.mouseY - data.series.clipRect.y;\n pointYValue = chart.mouseY - data.series.clipRect.y;\n if (data.point.symbolLocations && data.point.symbolLocations.length && Math.abs(pointXValue - data.point.symbolLocations[0].x) <= closestXValue &&\n Math.abs(data.point.symbolLocations[0].y - pointYValue) < Math.abs(closetYValue - pointYValue)) {\n closestXValue = Math.abs(pointXValue - data.point.symbolLocations[0].x);\n closetYValue = data.point.symbolLocations[0].y;\n tempData = data;\n }\n if (showNearest) {\n lastData = (data.series.category === 'TrendLine' && chart.tooltip.shared) ? lastData : tempData || data;\n }\n dataCollection.push(data);\n }\n // if (data && this.triggerEvent(data, isFirst, this.getTooltipText(data)), this.findHeader(data)) {\n // this.findMouseValue(data, chart);\n // (this.currentPoints).push(data);\n // data = null;\n // } else if (data) {\n // extraPoints.push(data);\n // }\n i++;\n }\n if (dataCollection.length > 0 && this.currentPoints.length > 0) { // To avoid console error when we have empty chart with shared tooltip.\n this.triggerSharedTooltip(argument, lastData, extraPoints, chart, isFirst, dataCollection);\n }\n else if (this.getElement(this.element.id + '_tooltip_path')) {\n this.getElement(this.element.id + '_tooltip_path').setAttribute('d', '');\n }\n };\n Tooltip.prototype.triggerSharedTooltip = function (argument, point, extraPoints, chart, isFirst, dataCollection) {\n var _this = this;\n var tooltipTemplate;\n var argsData = {\n cancel: false, name: sharedTooltipRender, text: argument.text, headerText: argument.headerText,\n textStyle: argument.textStyle, template: tooltipTemplate,\n point: argument.point, series: argument.series,\n data: argument.data\n };\n var borderWidth = this.chart.border.width;\n var padding = 3;\n var toolbarHeight;\n var titleHeight;\n var currentPoints = [];\n if (chart.stockChart) {\n toolbarHeight = chart.stockChart.enablePeriodSelector ? chart.stockChart.toolbarHeight : 0;\n titleHeight = measureText(this.chart.stockChart.title, this.chart.stockChart.titleStyle, this.chart.themeStyle.tooltipLabelFont).height + 10;\n }\n var sharedTooltip = function (argsData) {\n if (!argsData.cancel) {\n if (point.series.type === 'BoxAndWhisker') {\n _this.removeText();\n isFirst = true;\n }\n for (var i = 0; i < argsData.text.length; i++) {\n if (argsData.text[i]) {\n currentPoints.push(_this.currentPoints[i]);\n }\n }\n _this.currentPoints = currentPoints;\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = argsData.text;\n _this.headerText = argsData.headerText;\n _this.findMouseValue(point, _this.chart);\n _this.createTooltip(chart, isFirst, _this.findSharedLocation(), _this.currentPoints.length === 1 ? _this.currentPoints[0].series.clipRect : null, dataCollection.length === 1 ? dataCollection[0].point : null, _this.findShapes(), _this.findMarkerHeight(_this.currentPoints[0]), new Rect(borderWidth, (chart.stockChart ? (toolbarHeight + titleHeight + borderWidth) : borderWidth), _this.chart.availableSize.width - padding - borderWidth * 2, _this.chart.availableSize.height - padding - borderWidth * 2), _this.chart.crosshair.enable, extraPoints, _this.template ? _this.getTemplateText(dataCollection) : null, _this.template ? argsData.template : '');\n point = null;\n }\n else {\n extraPoints.push(point);\n }\n };\n sharedTooltip.bind(this, point, extraPoints);\n this.chart.trigger(sharedTooltipRender, argsData, sharedTooltip);\n };\n Tooltip.prototype.findSharedLocation = function () {\n var stockChart = this.chart.stockChart;\n if (stockChart) {\n if (this.text.length === 1) {\n this.text.push('');\n }\n var toolbarHeight = stockChart.enablePeriodSelector ? stockChart.toolbarHeight : 0;\n var element = document.getElementById(stockChart.element.id + '_ChartTitle');\n var titleHeight = stockChart.title !== '' ? element.getBoundingClientRect().height + 10 : 0;\n if (stockChart.tooltip.position === 'Nearest') {\n return new ChartLocation(this.valueX, this.valueY + toolbarHeight + titleHeight);\n }\n return new ChartLocation(this.chart.chartAxisLayoutPanel.seriesClipRect.x + 5, this.chart.chartAxisLayoutPanel.seriesClipRect.y + toolbarHeight + 5 + titleHeight);\n }\n else {\n if (this.currentPoints.length > 1) {\n return new ChartLocation(this.valueX, this.valueY);\n }\n else {\n return this.getSymbolLocation(this.currentPoints[0]);\n }\n }\n };\n Tooltip.prototype.getBoxLocation = function (data) {\n var location = this.lierIndex > 3 ? data.point.symbolLocations[this.lierIndex - 4] :\n {\n x: data.point.regions[0].x + (data.point.regions[0].width / 2),\n y: data.point.regions[0].y + (data.point.regions[0].height / 2)\n };\n return location;\n };\n Tooltip.prototype.parseTemplate = function (point, series, format, xAxis, yAxis) {\n var val;\n var textValue;\n for (var _i = 0, _a = Object.keys(point); _i < _a.length; _i++) {\n var dataValue = _a[_i];\n val = new RegExp('${point' + '.' + dataValue + '}', 'gm');\n format = format.replace(val.source, this.formatPointValue(point, val.source === '${point.x}' ? xAxis : yAxis, dataValue, val.source === '${point.x}', (val.source === '${point.high}' ||\n val.source === '${point.open}' ||\n val.source === '${point.close}' ||\n val.source === '${point.low}' ||\n val.source === '${point.y}' ||\n val.source === '${point.minimum}' ||\n val.source === '${point.maximum}' ||\n val.source === '${point.outliers}' ||\n val.source === '${point.upperQuartile}' ||\n val.source === '${point.lowerQuartile}' ||\n val.source === '${point.median}')));\n }\n for (var _b = 0, _c = Object.keys(Object.getPrototypeOf(series)); _b < _c.length; _b++) {\n var dataValue = _c[_b];\n val = new RegExp('${series' + '.' + dataValue + '}', 'gm');\n textValue = series[dataValue];\n format = format.replace(val.source, textValue);\n }\n return format;\n };\n Tooltip.prototype.formatPointValue = function (point, axis, dataValue, isXPoint, isYPoint) {\n var textValue;\n var customLabelFormat;\n var value;\n if (axis.valueType !== 'Category' && isXPoint) {\n customLabelFormat = axis.labelFormat && axis.labelFormat.match('{value}') !== null;\n textValue = customLabelFormat ? axis.labelFormat.replace('{value}', axis.format(point[dataValue])) :\n axis.format(point[dataValue]);\n }\n else if (isYPoint && !isNullOrUndefined(point[dataValue])) {\n customLabelFormat = axis.labelFormat && axis.labelFormat.match('{value}') !== null;\n value = dataValue === 'outliers' ? axis.format(point[dataValue][this.lierIndex - 4]) :\n axis.format(point[dataValue]);\n textValue = customLabelFormat ? axis.labelFormat.replace('{value}', value) : value;\n }\n else if (dataValue === 'size') {\n var format = this.chart.intl.getNumberFormat({ format: '', useGrouping: this.chart.useGroupingSeparator });\n textValue = typeof point[dataValue] === 'number' ? format(point[dataValue]) : point[dataValue];\n }\n else {\n textValue = point[dataValue];\n }\n return textValue;\n };\n Tooltip.prototype.getFormat = function (chart, series) {\n if (series.tooltipFormat) {\n if (series.seriesType === 'XY' && series.category === 'Indicator') {\n return this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return series.tooltipFormat;\n }\n if (!series.tooltipFormat && chart.tooltip.format) {\n if (series.seriesType === 'XY' && series.category === 'Indicator') {\n return this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return chart.tooltip.format;\n }\n var textX = (series.type === 'Histogram') ? '${point.minimum}' + '-' + '${point.maximum}' : '${point.x}';\n var format = !chart.tooltip.shared ? textX : '${series.name}';\n switch (series.seriesType) {\n case 'XY':\n if (series.category === 'Indicator') {\n this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return format + ' : ' + ((series.type === 'Bubble') ? '${point.y} Size : ${point.size}' :\n '${point.y}');\n case 'HighLow':\n return format + ('
High : ${point.high}
Low : ${point.low}');\n case 'HighLowOpenClose':\n return format + ('
High : ${point.high}
Low : ${point.low}
' +\n 'Open : ${point.open}
Close : ${point.close}');\n case 'BoxPlot': {\n return format + '
' + (this.lierIndex > 3 ? 'Outliers : ${point.outliers}' :\n 'Maximum : ${point.maximum}
Q3 : ${point.upperQuartile}
' +\n 'Median : ${point.median}
Q1 : ${point.lowerQuartile}
Minimum : ${point.minimum}');\n }\n default: return '';\n }\n };\n Tooltip.prototype.getIndicatorTooltipFormat = function (series, chart, format) {\n var toolTip;\n if (series.seriesType === 'XY') {\n toolTip = series.name + ' : ${point.y}';\n }\n else {\n toolTip = format;\n }\n return toolTip;\n };\n /*\n * @hidden\n */\n Tooltip.prototype.removeHighlightedMarker = function (data, fadeOut) {\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var item = data_1[_i];\n removeElement(this.element.id + '_Series_' + item.series.index +\n '_Point_' + item.point.index + '_Trackball');\n if (this.chart.markerRender) {\n this.chart.markerRender.removeHighlightedMarker(item.series, item.point, fadeOut);\n }\n }\n this.previousPoints = [];\n };\n /**\n * Get module name.\n */\n Tooltip.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'Tooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return Tooltip;\n}(BaseTooltip));\nexport { Tooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `Axis` directive represent a axis row of the react Chart.\n * It must be contained in a Chart component(`ChartComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * ```\n */\nvar AxisDirective = /** @class */ (function (_super) {\n __extends(AxisDirective, _super);\n function AxisDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AxisDirective.moduleName = 'axis';\n return AxisDirective;\n}(ComplexBase));\nexport { AxisDirective };\nvar AxesDirective = /** @class */ (function (_super) {\n __extends(AxesDirective, _super);\n function AxesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AxesDirective.propertyName = 'axes';\n AxesDirective.moduleName = 'axes';\n return AxesDirective;\n}(ComplexBase));\nexport { AxesDirective };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `SeriesDirective` directive represent a series of the react chart.\n * It must be contained in a Chart component(`ChartComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * ```\n */\nvar SeriesDirective = /** @class */ (function (_super) {\n __extends(SeriesDirective, _super);\n function SeriesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SeriesDirective.moduleName = 'series';\n SeriesDirective.complexTemplate = { 'dataLabel.template': 'dataLabel.template' };\n return SeriesDirective;\n}(ComplexBase));\nexport { SeriesDirective };\nvar SeriesCollectionDirective = /** @class */ (function (_super) {\n __extends(SeriesCollectionDirective, _super);\n function SeriesCollectionDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SeriesCollectionDirective.propertyName = 'series';\n SeriesCollectionDirective.moduleName = 'seriesCollection';\n return SeriesCollectionDirective;\n}(ComplexBase));\nexport { SeriesCollectionDirective };\n","// import { Category, ChartComponent, ColumnSeries, DataLabel, Inject, Legend, LineSeries, SeriesCollectionDirective, SeriesDirective } from '@syncfusion/ej2-react-charts'\r\nimport { ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject, Legend, Category, Tooltip, DataLabel, BarSeries, LineSeries, ColumnSeries, AccumulationChartComponent, AccumulationSeriesCollectionDirective, AccumulationSeriesDirective, AccumulationLegend, PieSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationSelection, Selection, ChartAnnotation, AccumulationAnnotation, AxesDirective, AxisDirective } from '@syncfusion/ej2-react-charts';\r\nimport React, { Component } from 'react'\r\n// import { Tooltip } from 'reactstrap'\r\n\r\nexport default class SalesGraphs extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n data: this.props.SalesData,\r\n primaryXAxis: { valueType: 'Category' },\r\n }\r\n }\r\n\r\n renderChart() {\r\n return (\r\n <>\r\n // \r\n\r\n // \r\n\r\n // \r\n\r\n // {this.props.showRightLabel && \r\n\r\n // }\r\n\r\n // {this.props.showRightLabel2 && \r\n\r\n // }\r\n\r\n // \r\n\r\n // \r\n\r\n // \r\n\r\n // \r\n\r\n // \r\n\r\n // \r\n\r\n // \r\n\r\n // \r\n\r\n // \r\n\r\n // \r\n )\r\n }\r\n\r\n render() {\r\n\r\n const lines = { width: 0 };\r\n console.log(\"Changes:\", this.state.data);\r\n return (\r\n
\r\n
\r\n Revenue Sales\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import React, { Component } from 'react'\r\nimport { Table } from 'reactstrap';\r\nimport { getAuthToken } from '../../../helpers/authentication';\r\n\r\nexport default class SalesPerfomance extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n data: this.props.PerformanceData,\r\n loading: true\r\n }\r\n\r\n this.renderTableRows = this.renderTableRows.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.loadData();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n\r\n if (prevProps.PerformanceData.length != this.props.PerformanceData.length)\r\n this.loadData();\r\n }\r\n\r\n loadData = async () => {\r\n this.setState({ data: this.props.PerformanceData, loading: false });\r\n }\r\n\r\n renderTableRows = (data) => {\r\n return (\r\n
\r\n
\r\n Sales Performance KPIs\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Product Detail ViewsUnique PurchasesQuantityProduct RevenueAvg. Price
Value{this.renderChangeStatus(0, data.totalViews)}{this.renderChangeStatus(0, data.totalUniquePurchase)}{this.renderChangeStatus(0, data.totalQuantity)}{this.renderChangeStatus(0, data.totalProductRevenue.toFixed(2), true)}{this.renderChangeStatus(0, data.totalAvgPrice.toFixed(2), true)}
Value{this.renderChangeStatus(data.productViewsTotalChange, data.startProductViews)}{this.renderChangeStatus(data.productViewsTotalChange, data.startUniquePurchases)}{this.renderChangeStatus(data.quantityTotalChange, data.startQuantity)}{this.renderChangeStatus(data.productRevenueTotalChange, data.startProductRevenue.toFixed(2), true)}{this.renderChangeStatus(data.avgPriceTotalChange, data.startAvgPrice.toFixed(2), true)}
Percentage change {this.renderChangeStatus(data.productViewsTotalChange, data.productViewsPercentage)}{this.renderChangeStatus(data.productViewsTotalChange, data.uniquePurchasesPercentage)}{this.renderChangeStatus(data.quantityTotalChange, data.quantityPercentage)}{this.renderChangeStatus(data.productRevenueTotalChange, data.productRevenuePercentage)}{this.renderChangeStatus(data.avgPriceTotalChange, data.avgPricePercentage)}
Absolute change{this.renderChangeStatus(data.productViewsTotalChange, data.productViewsTotalChange)}{this.renderChangeStatus(data.productViewsTotalChange, data.productViewsTotalChange)}{this.renderChangeStatus(data.quantityTotalChange, data.quantityTotalChange)}{this.renderChangeStatus(data.productRevenueTotalChange, data.productRevenueTotalChange.toFixed(2), true)}{this.renderChangeStatus(data.avgPriceTotalChange, data.avgPriceTotalChange.toFixed(2), true)}
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n renderChangeStatus(value, text, isMoney) {\r\n if (value > 0)\r\n return {isMoney && R}{text.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\r\n else if (value < 0)\r\n return {isMoney && R}{text.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\r\n else\r\n return {isMoney && <>R}{text.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\r\n }\r\n\r\n render() {\r\n const content = this.state.loading ? Loading.. : this.renderTableRows(this.state.data);\r\n return (\r\n content\r\n )\r\n }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\nimport { withInRange } from '../../common/utils/helper';\nimport { ColumnBase } from './column-base';\n/**\n * `BarSeries` module is used to render the bar series.\n */\nvar BarSeries = /** @class */ (function (_super) {\n __extends(BarSeries, _super);\n function BarSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Bar series.\n *\n * @returns {void}\n * @private\n */\n BarSeries.prototype.render = function (series) {\n var origin = Math.max(series.yAxis.visibleRange.min, 0);\n var sideBySideInfo = this.getSideBySideInfo(series);\n var rect;\n var argsData;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var pointBar = _a[_i];\n pointBar.symbolLocations = [];\n pointBar.regions = [];\n if (pointBar.visible && withInRange(series.points[pointBar.index - 1], pointBar, series.points[pointBar.index + 1], series)) {\n rect = this.getRectangle(pointBar.xValue + sideBySideInfo.start, pointBar.yValue, pointBar.xValue + sideBySideInfo.end, origin, series);\n rect.height = series.columnWidthInPixel ? series.columnWidthInPixel : rect.height;\n rect.y = series.columnWidthInPixel ? rect.y - (((series.columnWidthInPixel / 2) * series.rectCount) -\n (series.columnWidthInPixel * series.index)) : rect.y;\n argsData = this.triggerEvent(series, pointBar, series.interior, { width: series.border.width, color: series.border.color });\n if (!argsData.cancel) {\n this.updateSymbolLocation(pointBar, rect, series);\n this.drawRectangle(series, pointBar, rect, argsData);\n }\n }\n }\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n BarSeries.prototype.doAnimation = function (series) {\n this.animate(series);\n };\n /**\n * To destroy the bar series.\n *\n * @returns {void}\n * @private\n */\n BarSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n /**\n * Get module name\n */\n BarSeries.prototype.getModuleName = function () {\n return 'BarSeries';\n };\n return BarSeries;\n}(ColumnBase));\nexport { BarSeries };\n","import React, { Component } from 'react'\r\nimport { ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject, Legend, Category, Tooltip, DataLabel, BarSeries, LineSeries, ColumnSeries, AccumulationChartComponent, AccumulationSeriesCollectionDirective, AccumulationSeriesDirective, AccumulationLegend, PieSeries, AccumulationDataLabel, AccumulationTooltip, AccumulationSelection, Selection, ChartAnnotation, AccumulationAnnotation } from '@syncfusion/ej2-react-charts';\r\n\r\nexport default class ShoppingFunnel extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: this.props.FunnelData,\r\n primaryXAxis: { valueType: 'Category' },\r\n }\r\n }\r\n\r\n renderCharts = (data, primaryXAxis) => {\r\n //console.clear();\r\n //console.log(data);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n render() {\r\n\r\n const content = this.renderCharts(this.state.data, this.state.primaryXAxis);\r\n return (\r\n
\r\n
\r\n Shopping Funnel\r\n
\r\n
\r\n {content}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
Show Tooltip
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getScalingFactor = function () {\n var eleRect = this.tooltipEle.getBoundingClientRect();\n var xScalingFactor = (Math.round(eleRect.width) / this.tooltipEle.offsetWidth) || 1;\n var yScalingFactor = (Math.round(eleRect.height) / this.tooltipEle.offsetHeight) || 1;\n return {\n x: isFinite(xScalingFactor) ? xScalingFactor : 1,\n y: isFinite(yScalingFactor) ? yScalingFactor : 1\n };\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var parentWithZoomStyle = this.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n if (!parentWithZoomStyle.contains(this.tooltipEle)) {\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor();\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position, xScalingFactor, yScalingFactor) {\n if (xScalingFactor === void 0) { xScalingFactor = 1; }\n if (yScalingFactor === void 0) { yScalingFactor = 1; }\n var pos = { top: 0, left: 0 };\n var tipWidth, tipHeight, tooltipEleWidth, tooltipEleHeight, arrowEle;\n var tipAdjust, tipHeightAdjust, tipWidthAdjust;\n if (xScalingFactor != 1 || yScalingFactor != 1) {\n var tooltipEleRect = this.tooltipEle.getBoundingClientRect();\n var arrowEleRect = void 0;\n tooltipEleWidth = Math.round(tooltipEleRect.width);\n tooltipEleHeight = Math.round(tooltipEleRect.height);\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (arrowEle) {\n arrowEleRect = arrowEle.getBoundingClientRect();\n }\n tipWidth = arrowEle ? Math.round(arrowEleRect.width) : 0;\n tipHeight = arrowEle ? Math.round(arrowEleRect.height) : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (tooltipEleHeight - (this.tooltipEle.clientHeight * yScalingFactor));\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (tooltipEleWidth - (this.tooltipEle.clientWidth * xScalingFactor));\n }\n else {\n tooltipEleWidth = this.tooltipEle.offsetWidth;\n tooltipEleHeight = this.tooltipEle.offsetHeight;\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n }\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n if (this.showTipPointer === false) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n if (this.enableHtmlParse) {\n var nodeList = tempArr.length;\n for (var i = 0; i < nodeList; i++) {\n tooltipContent[append(tempArr, tooltipContent), 'innerHTML'] = this.content;\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDataTooltipId = function (target, id) {\n attributes(target, { 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDataTooltipId = function (target) {\n target.removeAttribute('data-tooltip-id');\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n if (Object.keys(this.htmlAttributes).length !== 0) {\n for (var attr in this.htmlAttributes) {\n if (attr === \"class\") {\n this.tooltipEle.classList.add(this.htmlAttributes[\"\" + attr]);\n }\n else {\n this.tooltipEle.setAttribute(attr, this.htmlAttributes[\"\" + attr]);\n }\n }\n }\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDataTooltipId(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDataTooltipId(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: showAnimation.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string';\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor();\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = this.isBodyContainer ?\n fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, eleOffset) : eleOffset;\n this.tooltipEle.style.display = 'block';\n if (this.showTipPointer && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target) {\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: hideAnimation.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDataTooltipId(target);\n };\n Tooltip.prototype.clear = function () {\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var scalingFactors = this.getScalingFactor();\n var pos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position, scalingFactors.x, scalingFactors.y);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target = [].slice.call(selectAll(this.target, this.element));\n if (target.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n if (this.element.nodeName !== \"BODY\") {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n else {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n }\n else {\n EventHandler.add(this.element, 'focus', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n if (this.element.nodeName === 'BODY') {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n else {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n }\n else {\n EventHandler.remove(this.element, 'focus', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","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 for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactColumnTemplateByUid(this.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactHeaderTemplateByUid(this.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], GridColumn.prototype, \"columns\", void 0);\n return GridColumn;\n}(Column));\nexport { GridColumn };\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(GridColumn));\nexport { StackedColumn };\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterafteropen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterbeforeopen';\n/** @hidden */\nexport var filterSearchBegin = 'filtersearchbegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nexport var setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nexport var selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nexport var pagerRefresh = 'pager-refresh';\n/** @hidden */\nexport var closeInline = 'closeinline';\n/** @hidden */\nexport var closeBatch = 'closebatch';\n/** @hidden */\nexport var closeEdit = 'close-edit';\n/** @hidden */\nexport var resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nexport var afterContentRender = 'after-content-renderer';\n/** @hidden */\nexport var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nexport var scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nexport var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nexport var createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nexport var validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nexport var destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nexport var stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nexport var captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nexport var refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n/** @hidden */\nexport var refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nexport var afterFilterColumnMenuClose = 'after-filter-column-menu-close';\n/** @hidden */\nexport var beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer';\n/** @hidden */\nexport var commandColumnDestroy = 'commandColumnDestroy';\n/** @hidden */\nexport var batchCnfrmDlgCancel = 'cancelcnfrmDlg';\n/** @hidden */\nexport var refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache';\n","/**\n * Specifies class names\n */\n/** @hidden */\nexport var rowCell = 'e-rowcell';\n/** @hidden */\nexport var gridHeader = 'e-gridheader';\n/** @hidden */\nexport var gridContent = 'e-gridcontent';\n/** @hidden */\nexport var gridFooter = 'e-gridfooter';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var row = 'e-row';\n/** @hidden */\nexport var gridChkBox = 'e-gridchkbox';\n/** @hidden */\nexport var editedRow = 'e-editedrow';\n/** @hidden */\nexport var addedRow = 'e-addedrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nexport var changedRecords = 'changedRecords';\n/** @hidden */\nexport var addedRecords = 'addedRecords';\n/** @hidden */\nexport var deletedRecords = 'deletedRecords';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nexport var tbody = 'tbody';\n/** @hidden */\nexport var colGroup = 'colgroup';\n/** @hidden */\nexport var open = 'open';\n/** @hidden */\nexport var change = 'change';\n/** @hidden */\nexport var focus = 'focus';\n/** @hidden */\nexport var create = 'created';\n/** @hidden */\nexport var beforeOpen = 'beforeOpen';\n/** @hidden */\nexport var downArrow = 'downArrow';\n/** @hidden */\nexport var upArrow = 'upArrow';\n/** @hidden */\nexport var pageUp = 'PageUp';\n/** @hidden */\nexport var pageDown = 'PageDown';\n/** @hidden */\nexport var enter = 'enter';\n/** @hidden */\nexport var shiftEnter = 'shiftEnter';\n/** @hidden */\nexport var tab = 'tab';\n/** @hidden */\nexport var shiftTab = 'shiftTab';\n","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {Scroll} scrollModule - specifies the scroll module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./printmode/).\n *\n * @returns {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n element.classList.remove('e-gridhover');\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[parseInt(i.toString(), 10)] = extend({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n printGrid.columns[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.isVue = this.parent.isVue;\n printGrid.appendTo(element);\n if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.' + literals.content);\n var headerDiv = gObj.element.querySelector('.' + literals.gridHeader);\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.getElementsByClassName(literals.content)); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = [].slice.call(gObj.element.getElementsByClassName('e-spin-show'));\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n gObj.destroy();\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll('.e-groupcaption', element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[parseInt(i.toString(), 10)].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colgroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[parseInt(i.toString(), 10)].children[parseInt(j.toString(), 10)].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n *\n * @returns {boolean} returns the isPrintGrid or not\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\n/* eslint-disable */\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar DIALOG_RESIZABLE = 'e-dlg-resizable';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\n/* eslint-enable */\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// eslint-disable-next-line\nvar proxy;\n/**\n *\n * @param {ResizeArgs} args - specifies the resize args\n * @returns {void}\n */\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n }\n else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\n/**\n *\n * @param {string} direction - specifies the string\n * @returns {void}\n */\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\n/**\n *\n * @param {string} element - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n// eslint-disable-next-line\nfunction wireEvents(args) {\n if (isNOU(args)) {\n args = this;\n }\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {string} e - specifies the string\n * @returns {string} - returns the string\n */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the mouse event\n * @returns {void}\n */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n if (this.targetEle && targetElement && targetElement.querySelector('.' + DIALOG_RESIZABLE)) {\n containerElement = this.target === ('body' || 'document.body' || document.body) ? null : this.targetEle;\n maxWidth = this.targetEle.clientWidth;\n maxHeight = this.targetEle.clientHeight;\n }\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n proxy = this;\n resizeEnd(e, proxy);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\n/**\n * @returns {void}\n */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var dialogResizeElement = targetElement.classList.contains('e-dialog');\n if ((e.target.classList.contains(RESIZE_HANDLER) || e.target.classList.contains('e-dialog-border-resize')) && dialogResizeElement) {\n e.target.classList.add(FOCUSED_HANDLER);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp, this);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n proxy = this;\n resize(e, proxy);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {HTMLElement} element - specifies the eleemnt\n * @returns {ClientRect} - returns the client\n */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNOU(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n /* eslint-disable */\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n /* eslint-enable */\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) <= maxWidth\n || (targetRectValues.right - containerRectValues.left) >= targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {number} minimumHeight - specifies the number\n * @returns {void}\n */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\n/**\n * @returns {void}\n */\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, Collection, L10n, Complex, compile, createElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight } from '../common/resize';\nvar ButtonProps = /** @class */ (function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ButtonProps.prototype, \"isFlat\", void 0);\n __decorate([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\nvar DLG_USER_ACTION_CLOSED = 'user action';\nvar DLG_CLOSE_ICON_CLOSED = 'close icon';\nvar DLG_ESCAPE_CLOSED = 'escape';\nvar DLG_OVERLAYCLICK_CLOSED = 'overlayClick';\nvar DLG_DRAG = 'e-draggable';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @class */ (function (_super) {\n __extends(Dialog, _super);\n /*\n * * Constructor for creating the widget\n *\n * @param\n * @param\n * @hidden\n */\n function Dialog(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n *Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n Dialog.prototype.initializeValue = function () {\n this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n };\n /**\n *Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.initializeValue();\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_CLOSE_ICON_CLOSED;\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_OVERLAYCLICK_CLOSED;\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n };\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n Dialog.prototype.updatePersistData = function () {\n if (this.enablePersistence) {\n this.setProperties({ width: parseFloat(this.element.style.width), height: parseFloat(this.element.style.height),\n position: { X: parseFloat(this.dragObj.element.style.left), Y: parseFloat(this.dragObj.element.style.top) } }, true);\n }\n };\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n this.updatePersistData();\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n }\n else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n }\n else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return { element: items[items.length - 1] };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.dlgClosedBy = DLG_ESCAPE_CLOSED;\n var query = document.querySelector('.e-popup-open:not(.e-dialog)');\n // 'document.querySelector' is used to find the elements rendered based on body\n if (!(!isNullOrUndefined(query) && !query.classList.contains('e-toolbar-pop'))) {\n this.hide(event);\n }\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n // eslint-disable-next-line\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n this.renderCloseIcon();\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n // eslint-disable-next-line\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n // eslint-disable-next-line\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n // eslint-disable-next-line\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n if (!this.element.classList.contains(DLG_DRAG)) {\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n _this.element.style.position = 'relative';\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n _this.updatePersistData();\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n // eslint-disable-next-line\n var primaryBtnFlag = true;\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { className: this.cssClass, attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && footerBtn.length > 0) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (typeof (this.buttons[i].click) === 'object') {\n EventHandler.add(footerBtn[i], 'click', this.buttonClickHandler.bind(this, i), this);\n }\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n if (this.buttons[i].isFlat) {\n this.btnObj[i].element.classList.add('e-flat');\n }\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.buttonClickHandler = function (index) {\n this.trigger('buttons[' + index + '].click', {});\n };\n Dialog.prototype.setContent = function () {\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template === 'string') || (typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n if ((typeof template === 'string')) {\n template = this.sanitizeHelper(template);\n }\n if (this.isVue || typeof template !== 'string') {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = template;\n }\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /*\n * @returns {void}\n * @hidden\n * @value\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n // eslint-disable-next-line\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\/?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-labelledby': this.element.id + '_title' });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n if (this.showCloseIcon) {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n }\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n removeClass([this.dlgContainer], oldCSSClass.split(' '));\n }\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n addClass([this.dlgContainer], this.cssClass.split(' '));\n }\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.setCSSClass();\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msGetRegionContent : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.unBindEvent(this.element);\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n *\n * @param {DialogModel} newProp - specifies the new property\n * @param {DialogModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n typeof (this.content) === 'string' ? (this.isBlazorServerRender() && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() : this.contentEle.appendChild(this.content);\n }\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n // eslint-disable-next-line\n this.visible ? this.show() : this.hide();\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n this.updatePersistData();\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n this.updatePersistData();\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons': {\n var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n }\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.X) ? oldProp.position.X : this.position.X;\n var positionY = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.Y) ? oldProp.position.Y : this.position.Y;\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n this.updatePersistData();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n case 'minHeight':\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n if (isNullOrUndefined(this.dlgOverlay)) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var currentzIndex = getZindexPartial(zIndexElement);\n this.zIndex = currentzIndex > this.zIndex ? currentzIndex : this.zIndex;\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist(['width', 'height', 'position']);\n };\n /**\n * To destroy the widget\n *\n * @returns {void}\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.closeIconBtnObj)) {\n this.closeIconBtnObj.destroy();\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n this.ftrTemplateContent = null;\n this.headerContent = null;\n this.contentEle = null;\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.windowResizeHandler.bind(this));\n };\n /**\n * Binding event to the element while widget creation\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n *\n * @returns {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n if (this.element.classList.contains(MODAL_DLG)) {\n this.positionChange();\n }\n };\n /**\n * Returns the current width and height of the Dialog\n *\n * @returns {DialogDimension}- returns the dialog element Dimension.\n * @public\n */\n Dialog.prototype.getDimension = function () {\n var dialogWidth = this.element.offsetWidth;\n var dialogHeight = this.element.offsetHeight;\n return { width: dialogWidth, height: dialogHeight };\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n *\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @returns {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n _this.element.style.position = 'relative';\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.show() : _this.popupObj.show(openAnimation);\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n *\n * @param { Event } event - specifies the event\n * @returns {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event,\n closedBy: this.dlgClosedBy\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.targetEle)) {\n removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n if (document.body.classList.contains(DLG_TARGET) &&\n document.body.classList.contains(SCROLL_DISABLED)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n var closeAnimation = {\n name: _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.hide() : _this.popupObj.hide(closeAnimation);\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n }\n };\n // eslint-disable-next-line\n /**\n * Specifies to view the Full screen Dialog.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n /* eslint-disable */\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n /* eslint-enable */\n if (args) {\n this.element.style.top = document.scrollingElement.scrollTop + 'px';\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n *\n * @param { number } index - Index of the button.\n * @returns {Button} - returns the button element\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\n// eslint-disable-next-line\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {AlertDialogArgs} args - specifies the string\n * @returns {Dialog} - returns the dialog element.\n */\n function alert(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {ConfirmDialogArgs} args - specifies the args\n * @returns {Dialog} - returns te element\n */\n function confirm(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n // eslint-disable-next-line\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n // eslint-disable-next-line\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : null;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n options.width = !isNullOrUndefined(option.width) ? option.width : 'auto';\n options.height = !isNullOrUndefined(option.height) ? option.height : 'auto';\n return options;\n }\n // eslint-disable-next-line\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked, clearReactVueTemplates, padZero } from '../base/util';\nimport { remove, debounce, Internationalization, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IXLFilter} parent - specifies the IXLFilter\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.isExecuteLocal = false;\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.isCheckboxFilterTemplate = false;\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([this.cBoxTrue, this.cBoxFalse], this.parent.cssClass.split(' '));\n }\n else {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n }\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n }\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[parseInt(i.toString(), 10)].field,\n predicate: 'or',\n matchCase: fpred[parseInt(i.toString(), 10)].ignoreCase,\n ignoreAccent: fpred[parseInt(i.toString(), 10)].ignoreAccent,\n operator: fpred[parseInt(i.toString(), 10)].operator,\n value: fpred[parseInt(i.toString(), 10)].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = target.classList.contains('e-chkcancel-icon') ? '' : this.sInput.value;\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n document.body.querySelector('.e-chkcancel-icon').setAttribute('title', this.localeObj.getConstant('Clear'));\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n document.body.querySelector('.e-search-icon').setAttribute('title', this.localeObj.getConstant('Search'));\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[parseInt(i.toString(), 10)];\n dataSource[parseInt(i.toString(), 10)] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.options.disableHtmlEncode = options.column.disableHtmlEncode || false;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search'),\n cssClass: this.parent.cssClass\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n options.cancel = args.cancel;\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n this.dlg.setAttribute('aria-label', this.getLocalizedLabel('ExcelFilterDialogARIA'));\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n else {\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, e);\n }\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if ((e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) ||\n e.keyCode === 13) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if (checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== '')) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[parseInt(i.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: fObj.field, arg2: fObj.predicate, arg3: fObj.operator,\n arg4: fObj.matchCase, arg5: fObj.ignoreAccent, arg6: fObj.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && check.length) {\n length = check.length - 1;\n val = this.values[parentsUntil(check[parseInt(length.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n if (this.cBox.querySelector('.e-add-current') && this.cBox.querySelector('.e-add-current').classList.contains('e-check')) {\n var existingPredicate_1 = this.existingPredicate[this.options.field];\n if (existingPredicate_1) {\n var _loop_1 = function (j) {\n if (!coll.some(function (data) {\n return data\n .value === existingPredicate_1[parseInt(j.toString(), 10)].value;\n })) {\n coll.push(existingPredicate_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < existingPredicate_1.length; j++) {\n _loop_1(j);\n }\n }\n else {\n return;\n }\n }\n this.initiateFilter(coll);\n }\n else {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[parseInt(j.toString(), 10)].ejpredicate !== undefined ?\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].ejpredicate) :\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].field, fColl[parseInt(j.toString(), 10)].operator, fColl[parseInt(j.toString(), 10)].value, !fColl[parseInt(j.toString(), 10)].matchCase, fColl[parseInt(j.toString(), 10)].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime' || this.options.type === 'dateonly') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n if (this.options.type === 'dateonly') {\n parsed = parsed.getFullYear() + '-' + padZero(parsed.getMonth() + 1) + '-' + padZero(parsed.getDate());\n }\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, args.value, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime' || _this.options.type === 'dateonly') {\n operator = 'equal';\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n if (!isNullOrUndefined(parsed)) {\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n }\n if (val && typeof val === 'string' && _this.isBlanks &&\n _this.getLocalizedLabel('Blanks').toLowerCase().indexOf(val.toLowerCase()) >= 0) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n var emptyValPredicte = CheckBoxFilterBase.generatePredicate(coll);\n emptyValPredicte.predicates.push(predicte);\n query.where(emptyValPredicte);\n }\n else if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n query.where(pred.e);\n }\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n foreignQuery.take(filterargs.filterChoiceCount);\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n query.take(filterargs.filterChoiceCount);\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns, isExecuteLocal) {\n var predicates = CheckBoxFilterBase.getPredicate(columns, isExecuteLocal);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && !this.parent.getColumnByField(prop)) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[\"\" + prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n this.customQuery = false;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n query.take(args.filterChoiceCount);\n if (!args.query.distincts.length) {\n _this.customQuery = true;\n _this.queryGenerate(query);\n }\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n query.distinct(filteredColumn);\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n for (var j = 0; j < e.length; j++) {\n runArray[i++](e[parseInt(j.toString(), 10)].result);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (!this.customQuery) {\n this.isExecuteLocal = true;\n this.queryGenerate(query);\n this.isExecuteLocal = false;\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData, this).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n if (this.sInput) {\n this.sInput.focus();\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n if (this.isCheckboxFilterTemplate) {\n hideSpinner(this.spinner);\n }\n };\n CheckBoxFilterBase.prototype.queryGenerate = function (query) {\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[parseInt(i.toString(), 10)];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols, this.isExecuteLocal);\n if (predicate) {\n query.where(predicate);\n }\n }\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.isExecuteLocal = true;\n this.updateResult();\n this.isExecuteLocal = false;\n var args1 = { dataSource: this.fullData, isCheckboxFilterTemplate: false, column: this.options.column,\n element: this.cBox, type: this.options.type, format: this.options.type, btnObj: this.options.isResponsiveFilter ? null :\n this.dialogObj.btnObj[0], searchBox: this.searchBox };\n this.parent.notify(events.beforeCheckboxfilterRenderer, args1);\n this.isCheckboxFilterTemplate = args1.isCheckboxFilterTemplate;\n if (!this.isCheckboxFilterTemplate) {\n this.createFilterItems(dataSource, isInitial, args);\n }\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.getPredicateFromCols(this.options.filteredColumns, this.isExecuteLocal);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n this.parent.notify(events.beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && parentsUntil(target, 'e-mask-ftrchk')) {\n return;\n }\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem && !this.isCheckboxFilterTemplate) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n var cBoxes = [].slice.call(this.cBox.querySelectorAll('.e-frame:not(.e-add-current)'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n var innerText = this.options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n label[\"\" + innerText] = !isNullOrUndefined(value) && value.toString().length ?\n this.parent.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value : this.getLocalizedLabel('Blanks');\n if (label.innerHTML === this.getLocalizedLabel('Blanks')) {\n this.isBlanks = true;\n }\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')\n && data[this.options.column.field] !== this.getLocalizedLabel('AddCurrentSelection')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.cBox.querySelector('.e-selectall');\n var selected = this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)').length;\n if (this.cBox.querySelector('.e-add-current')) {\n cnt -= 1;\n }\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (cnt === selected) {\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a, _b;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[parseInt(i.toString(), 10)]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var innerDiv = this.cBox.querySelector('.e-checkfltrnmdiv');\n if (innerDiv) {\n innerDiv.classList.remove('e-checkfltrnmdiv');\n }\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([checkBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([checkBox], [this.parent.cssClass]);\n }\n }\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n cBoxes.appendChild(selectAll);\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n if (this.sInput.value) {\n var predicateCheckBox = this.createCheckbox(this.getLocalizedLabel('AddCurrentSelection'), false, (_b = {},\n _b[this.options.field] = this.getLocalizedLabel('AddCurrentSelection'),\n _b));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([predicateCheckBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([predicateCheckBox], [this.parent.cssClass]);\n }\n }\n var predicateElement = createCboxWithWrap(getUid('cbox'), predicateCheckBox, 'e-ftrchk');\n predicateElement.querySelector('.e-frame').classList.add('e-add-current');\n cBoxes.appendChild(predicateElement);\n }\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[\"\" + uid] = getValue(key, data[parseInt(i.toString(), 10)]);\n var value = getValue(this.options.field, data[parseInt(i.toString(), 10)]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[parseInt(i.toString(), 10)] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n var checkbox = this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[\"\" + uid]), getValue('dataObj', data[parseInt(i.toString(), 10)]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n }\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n this.updateIndeterminatenBtn();\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n this.cBox.appendChild(this.parent.createElement('div', { className: 'e-checkfltrnmdiv' }));\n appendChildren(this.cBox.children[0], [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n }\n if (btn && data.length) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.sInput.value ? true : this.result[\"\" + value];\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData, checkboxFilter) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[parseInt(len.toString(), 10)];\n value = getObject(field, value); //local remote diff, check with mdu\n var currentFilterValue = (typeof value === 'string') && !(isNullOrUndefined(checkboxFilter)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent)) && !(isNullOrUndefined(checkboxFilter.parent.filterSettings)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent.filterSettings.enableCaseSensitivity)) ? value.toLowerCase() : value;\n if (!(currentFilterValue in lookup)) {\n var obj = {};\n obj[\"\" + ejValue] = value;\n lookup[\"\" + currentFilterValue] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[parseInt(len.toString(), 10)]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[parseInt(len.toString(), 10)], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns, isExecuteLocal) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[parseInt(i.toString(), 10)].field));\n if (collection.length !== 0) {\n pred[cols[parseInt(i.toString(), 10)].field] = CheckBoxFilterBase.generatePredicate(collection, isExecuteLocal);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols, isExecuteLocal) {\n var len = cols ? cols.length : 0;\n var predicate;\n var operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime' || first.type === 'dateonly') {\n predicate = getDatePredicate(first, first.type, isExecuteLocal);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[parseInt(p.toString(), 10)] = CheckBoxFilterBase.updateDateFilter(cols[parseInt(p.toString(), 10)]);\n if (len > 2 && p > 1 && cols[parseInt(p.toString(), 10)].predicate === 'or') {\n if (cols[parseInt(p.toString(), 10)].type === 'date' || cols[parseInt(p.toString(), 10)].type === 'datetime' || cols[parseInt(p.toString(), 10)].type === 'dateonly') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal));\n }\n else {\n predicate.predicates.push(new Predicate(cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent));\n }\n }\n else {\n if (cols[parseInt(p.toString(), 10)].type === 'date' || cols[parseInt(p.toString(), 10)].type === 'datetime' || cols[parseInt(p.toString(), 10)].type === 'dateonly') {\n if (cols[parseInt(p.toString(), 10)].predicate === 'and' && cols[parseInt(p.toString(), 10)].operator === 'equal') {\n predicate = predicate[\"\" + operate](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[parseInt(p.toString(), 10)].predicate)](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n else {\n predicate = cols[parseInt(p.toString(), 10)].ejpredicate ?\n predicate[cols[parseInt(p.toString(), 10)]\n .predicate](cols[parseInt(p.toString(), 10)].ejpredicate) :\n predicate[(cols[parseInt(p.toString(), 10)].predicate)](cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.type === 'dateonly' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined, closest } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[parseInt(i.toString(), 10)].columns) {\n for (var j = 0; j < gridColumns[parseInt(i.toString(), 10)].columns.length; j++) {\n exportColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)]\n .type = gridColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].type;\n }\n }\n else {\n exportColumns[parseInt(i.toString(), 10)].type = gridColumns[parseInt(i.toString(), 10)].type;\n }\n }\n }\n}\n/**\n * @hidden\n * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n }\n else if (!actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n if (!actualRows[parseInt(i.toString(), 10)].isExpand && actualRows[parseInt(i.toString(), 10)].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[parseInt(i.toString(), 10)], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\nvar count = 0;\n/**\n * @hidden\n * @param {Row} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[\"\" + gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[\"\" + total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[\"\" + agrCnt]) && val[\"\" + agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[\"\" + agrCnt])) :\n (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[\"\" + agrCnt])) + val[\"\" + agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[\"\" + gSummary] * (gLen - val.indent)) + val[\"\" + agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[\"\" + gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[\"\" + gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[\"\" + items].length; i < len; i++) {\n var gLevel = val.data[\"\" + items][parseInt(i.toString(), 10)];\n count += gLevel[\"\" + items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) ? gLevel[\"\" + items][\"\" + records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) && !isNullOrUndefined(val[\"\" + agrCnt])) ? gLevel[\"\" + items][\"\" + records].length :\n gLevel[\"\" + items].length;\n if (gLevel[\"\" + items].GroupGuid && gLevel[\"\" + items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[\"\" + items].length;\n if (!isNullOrUndefined(val[\"\" + agrCnt])) {\n if (val[\"\" + agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[\"\" + agrCnt]) + val[\"\" + agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[\"\" + items].length; j < length_1; j++) {\n var nLevel = row[\"\" + items][parseInt(j.toString(), 10)];\n count += nLevel[\"\" + rCount];\n if (nLevel[\"\" + items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[parseInt(i.toString(), 10)], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[parseInt(i.toString(), 10)]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string | Function} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nexport function templateCompiler(template) {\n if (template) {\n try {\n var validSelector = template[0] !== '<';\n if (typeof template === 'function') {\n return baseTemplateComplier(template);\n }\n else if (validSelector && document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n return baseTemplateComplier(template);\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[parseInt(i.toString(), 10)]) !== -1) {\n delete moved[values[parseInt(i.toString(), 10)]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[parseInt(i.toString(), 10)].columns) {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n ind = setColumnIndex(columnModel[parseInt(i.toString(), 10)].columns, ind);\n }\n else {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n }\n }\n return ind;\n}\n/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[parseInt(c.toString(), 10)] === 'string') {\n column = new Column({ field: columns[parseInt(c.toString(), 10)] }, gObj);\n }\n else if (!(columns[parseInt(c.toString(), 10)] instanceof Column) || columns[parseInt(c.toString(), 10)].columns) {\n if (!columns[parseInt(c.toString(), 10)].columns) {\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n else {\n columns[parseInt(c.toString(), 10)].columns = prepareColumns(columns[parseInt(c.toString(), 10)].columns, null, gObj);\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n }\n else {\n column = columns[parseInt(c.toString(), 10)];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[parseInt(c.toString(), 10)] = column;\n }\n return columns;\n}\n/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[parseInt(i.toString(), 10)].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[parseInt(i.toString(), 10)] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[parseInt(i.toString(), 10)].hasOwnProperty('properties')) {\n coll.push(collection[parseInt(i.toString(), 10)].properties);\n }\n else {\n coll.push(collection[parseInt(i.toString(), 10)]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[parseInt(i.toString(), 10)]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[parseInt(i.toString(), 10)]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the parsed column field id\n * @hidden\n */\nexport function getParsedFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/[^a-zA-Z0-9_.]/g, '\\\\$&');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, literals.row);\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length) && inst.editSettings.showConfirmDialog &&\n (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[parseInt(i.toString(), 10)].classList.add(clName);\n }\n else {\n elem[parseInt(i.toString(), 10)].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @returns {void}\n * @hidden\n */\nexport function setFormatter(serviceLocator, column) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') {\n args = { type: column.type === 'dateonly' ? 'date' : column.type, skeleton: column.format };\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[\"\" + format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'dateonly':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[parseInt(i.toString(), 10)], args.slice(), []);\n cells[parseInt(i.toString(), 10)].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[parseInt(i.toString(), 10)], [], args.slice());\n cells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n }\n}\n/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[parseInt(i.toString(), 10)] in temp)) {\n res.push(result[parseInt(i.toString(), 10)].toString());\n temp[result[parseInt(i.toString(), 10)]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nexport function getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[parseInt(i.toString(), 10)].field, getForeignData(columns[parseInt(i.toString(), 10)], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[parseInt(i.toString(), 10)].column.field, row.foreignKeyData), cells[parseInt(i.toString(), 10)]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {number} value - Defines the date or month value\n * @returns {string} Returns string\n * @hidden\n */\nexport function padZero(value) {\n if (value < 10) {\n return '0' + value;\n }\n return String(value);\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @param {boolean} isExecuteLocal - Defines whether the data actions performed in client and used for dateonly type field\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nexport function getDatePredicate(filterObject, type, isExecuteLocal) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value) || filterObject.value === '') {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (type === 'dateonly' && !isExecuteLocal) {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var dateOnlyString = prevObj.value.getFullYear() + '-' + padZero(prevObj.value.getMonth() + 1) + '-' + padZero(prevObj.value.getDate());\n var predicates = new Predicate(prevObj.field, prevObj.operator, dateOnlyString, false);\n datePredicate = predicates;\n }\n else {\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (type === 'date' && (filterObject.operator === 'lessthanorequal' || filterObject.operator === 'greaterthan')) {\n prevObj.value = new Date(value.setHours(24) - 1);\n }\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @param {Element} ele - Defines the element\n * @param {number} frzCols - Defines the frozen columns\n * @param {IGrid} gObj - Defines the IGrid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function renderMovable(ele, frzCols, gObj) {\n frzCols = frzCols && gObj && gObj.isRowDragable() ? frzCols + 1 : frzCols;\n var mEle = ele.cloneNode(true);\n for (var i = 0; i < frzCols; i++) {\n mEle.removeChild(mEle.children[0]);\n }\n for (var i = frzCols, len = ele.childElementCount; i < len; i++) {\n ele.removeChild(ele.children[ele.childElementCount - 1]);\n }\n return mEle;\n}\n/**\n * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive &&\n !grid.groupSettings.enableLazyLoading;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n if (isUndefined(value)) {\n var newCase = splits[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + splits[parseInt(i.toString(), 10)].slice(1);\n value = object[\"\" + newCase] || object[(\"\" + newCase).charAt(0).toLowerCase() + (\"\" + newCase).slice(1)];\n }\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'date', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'dateTime', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n obj[parseInt(index.toString(), 10)] = {};\n obj[parseInt(index.toString(), 10)].isExpand = true;\n obj[parseInt(index.toString(), 10)].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[parseInt(index.toString(), 10)].gridModel.query = gObj.childGrid.query;\n }\n }\n return obj;\n}\n/**\n * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n var isFrozen = gObj.isFrozenGrid() && !gObj.getFrozenColumns();\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[\"\" + key] = getActualPropFromColl(isFrozen ? gObj.getColumns() : gObj[\"\" + key]);\n }\n else if (key === 'allowPaging') {\n printGridModel[\"\" + key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[\"\" + key] = getActualProperties(gObj[\"\" + key]);\n }\n }\n printGridModel['enableHover'] = false;\n if (gObj.childGrid && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[parseInt(i.toString(), 10)]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\n var obj1 = arguments[parseInt(i.toString(), 10)];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[parseInt(i_1.toString(), 10)]];\n var cpy = obj1[keys[parseInt(i_1.toString(), 10)]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[parseInt(i_1.toString(), 10)]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[parseInt(i.toString(), 10)], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[parseInt(i.toString(), 10)] = checkDepth(col.columns[parseInt(i.toString(), 10)], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[parseInt(j.toString(), 10)]) {\n max = indices[parseInt(j.toString(), 10)];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[parseInt(i.toString(), 10)].uid = filteredCols[parseInt(i.toString(), 10)].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[parseInt(i.toString(), 10)].field, gObj.getForeignKeyColumns()).uid\n : gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[parseInt(i.toString(), 10)].field).uid\n : gObj.getColumnByField(filteredCols[parseInt(i.toString(), 10)].field).uid;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {HTMLElement} mTD - Defines the movable TD\n * @param {HTMLElement} fTD - Defines the Frozen TD\n * @returns {void}\n * @hidden\n */\nexport function alignFrozenEditForm(mTD, fTD) {\n if (mTD && fTD) {\n var mHeight = closest(mTD, '.' + literals.row).getBoundingClientRect().height;\n var fHeight = closest(fTD, '.' + literals.row).getBoundingClientRect().height;\n if (mHeight > fHeight) {\n fTD.style.height = mHeight + 'px';\n }\n else {\n mTD.style.height = fHeight + 'px';\n }\n }\n}\n/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function ensureLastRow(row, gridObj) {\n var cntOffset = gridObj.getContent().firstElementChild.offsetHeight;\n return row && row.getBoundingClientRect().top > cntOffset;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (keyField.includes('.')) {\n var currentValue = getObject(keyField, e);\n var originalValue = getObject(keyField, data);\n if (currentValue === originalValue) {\n dataIndex = index;\n }\n }\n else {\n if (e[\"\" + keyField] === data[\"\" + keyField]) {\n dataIndex = index;\n }\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nexport function eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[parseInt(i.toString(), 10)].width)) {\n undefinedWidthCol++;\n }\n else if (columns[parseInt(i.toString(), 10)].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) &&\n !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @param {number} startRowIndex - Start Row Index\n * @returns {void}\n * @hidden\n */\nexport function resetRowIndex(gObj, rows, rowElms, index, startRowIndex) {\n var startIndex = index ? index : 0;\n for (var i = startRowIndex ? startRowIndex : 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)] && rows[parseInt(i.toString(), 10)].isDataRow) {\n rows[parseInt(i.toString(), 10)].index = startIndex;\n rows[parseInt(i.toString(), 10)].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rows[parseInt(i.toString(), 10)].isAltRow) {\n rowElms[parseInt(i.toString(), 10)].classList.add('e-altrow');\n }\n else {\n rowElms[parseInt(i.toString(), 10)].classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElms[parseInt(i.toString(), 10)].cells.length; j++) {\n rowElms[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[\"\" + type].concat(changes[\"\" + type]).reduce(function (r, o) {\n r[o[\"\" + keyField]] = r[o[\"\" + keyField]] === undefined ? o : Object.assign(r[o[\"\" + keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[\"\" + type] = Object.keys(newArray).map(function (k) { return newArray[\"\" + k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function setRowElements(gObj) {\n if (gObj.isFrozenGrid()) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-movableheader .e-row, .e-movablecontent .e-row'));\n var cls = gObj.getFrozenMode() === literals.leftRight ? '.e-frozen-left-header .e-row, .e-frozen-left-content .e-row'\n : '.e-frozenheader .e-row, .e-frozencontent .e-row';\n (gObj).contentModule.freezeRowElements =\n [].slice.call(gObj.element.querySelectorAll(cls));\n if (gObj.getFrozenMode() === literals.leftRight) {\n gObj.contentModule.frozenRightRowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-frozen-right-header .e-row, .e-frozen-right-content .e-row'));\n }\n }\n else {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Cell} cells - Defines the callback function\n * @param {freezeTable} tableName - Defines the row\n * @returns {Cell[]} Returns the cell\n * @hidden\n */\nexport function splitFrozenRowObjectCells(gObj, cells, tableName) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n var right = gObj.getFrozenRightColumnsCount();\n var frozenMode = gObj.getFrozenMode();\n var drag = gObj.isRowDragable() ? 1 : 0;\n var rightIndex = frozenMode === 'Right' ? left + movable : left + movable + drag;\n var mvblIndex = frozenMode === 'Right' ? left : left + drag;\n var mvblEndIdx = frozenMode === 'Right' ? cells.length - right - drag\n : right ? cells.length - right : cells.length;\n if (tableName === literals.frozenLeft) {\n cells = cells.slice(0, left ? left + drag : cells.length);\n }\n else if (tableName === literals.frozenRight) {\n cells = cells.slice(rightIndex, cells.length);\n }\n else if (tableName === 'movable') {\n cells = cells.slice(mvblIndex, mvblEndIdx);\n }\n return cells;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object.\n * @param {boolean} visibleOnly - Defines to return only visible columns.\n * @returns {{frozenLeft: Column[], movable: Column[], frozenRight: Column[]}} - Returns all frozenLeft, movable and frozenRight Columns as object.\n * @hidden\n */\nexport function getExactFrozenMovableColumn(gObj, visibleOnly) {\n var columnModel = gObj.getColumns();\n var movableColumns = [];\n var frozenLeftColumns = [];\n var frozenRightColumns = [];\n for (var i = 0; i < columnModel.length; i++) {\n if (isNullOrUndefined(visibleOnly) || !visibleOnly || visibleOnly === columnModel[parseInt(i.toString(), 10)].visible) {\n if (columnModel[parseInt(i.toString(), 10)].freeze === 'Left' || columnModel[parseInt(i.toString(), 10)].freezeTable === 'frozen-left') {\n frozenLeftColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n else if (columnModel[parseInt(i.toString(), 10)].freeze === 'Right' || columnModel[parseInt(i.toString(), 10)].freezeTable === 'frozen-right') {\n frozenRightColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n else {\n movableColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n }\n }\n return { frozenLeft: frozenLeftColumns, movable: movableColumns, frozenRight: frozenRightColumns };\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function gridActionHandler(gObj, callBack, rows, force, rowObj) {\n if (rows[0].length || force) {\n if (rowObj) {\n callBack(literals.frozenLeft, rows[0], rowObj[0]);\n }\n else {\n callBack(literals.frozenLeft, rows[0]);\n }\n }\n if (gObj.isFrozenGrid() && (rows[1].length || force)) {\n if (rowObj) {\n callBack('movable', rows[1], rowObj[1]);\n }\n else {\n callBack('movable', rows[1]);\n }\n }\n if ((gObj.getFrozenMode() === literals.leftRight || gObj.getFrozenMode() === 'Right') && (rows[2].length || force)) {\n if (rowObj) {\n callBack(literals.frozenRight, rows[2], rowObj[2]);\n }\n else {\n callBack(literals.frozenRight, rows[2]);\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Row} Returns the row\n * @hidden\n */\nexport function getGridRowObjects(gObj) {\n return [gObj.getFrozenMode() !== 'Right' ? gObj.getRowsObject() : [], gObj.getMovableRowsObject(), gObj.getFrozenRightRowsObject()];\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getGridRowElements(gObj) {\n return [\n gObj.getFrozenMode() !== 'Right' ? gObj.getAllDataRows(true) : [],\n gObj.getAllMovableDataRows(true), gObj.getAllFrozenRightDataRows(true)\n ];\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[parseInt(k.toString(), 10)]);\n k--;\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n if (col.getFreezeTableName() === 'movable') {\n return [].slice.call(gObj.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n return [].slice.call(gObj.getFrozenRightDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n else {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n index = col.getFreezeTableName() === 'movable' ? index - left : col.getFreezeTableName() === literals.frozenRight\n ? index - (left + movable) : index;\n return getCellsByTableName(gObj, col, rowIndex)[parseInt(index.toString(), 10)];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === literals.frozenLeft\n || (!index && col.getFreezeTableName() === literals.frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getMovableTbody(gObj) {\n var tbody;\n if (gObj.isFrozenGrid()) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getMovableHeaderTbody()\n : gObj.getMovableContentTbody();\n }\n return tbody;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getFrozenRightTbody(gObj) {\n var tbody;\n if (gObj.getFrozenMode() === literals.leftRight) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getFrozenRightHeaderTbody()\n : gObj.getFrozenRightContentTbody();\n }\n return tbody;\n}\n/**\n * @param {Element} tbody - Table body\n * @param {Element} mTbody - Movanle table body\n * @param {Element} frTbody - Frozen right table body\n * @param {Element[]} tr - Table rows\n * @param {Element[]} mTr - Movable table rows\n * @param {Element[]} frTr - Frozen right table rows\n * @param {Function} callBack - Callback function\n * @returns {void}\n * @hidden\n */\nexport function setRowsInTbody(tbody, mTbody, frTbody, tr, mTr, frTr, callBack) {\n if (tbody && tr) {\n callBack(tbody, tr);\n }\n if (mTbody && mTr) {\n callBack(mTbody, mTr);\n }\n if (frTbody && frTr) {\n callBack(frTbody, frTr);\n }\n}\n/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @param {string} currencyCode - Specifies the currency code to be used for formatting.\n * @returns {string} returns formated value\n * @hidden\n */\nexport function getNumberFormat(numberFormat, type, isExcel, currencyCode) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: currencyCode, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[\"\" + pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[parseInt(i.toString(), 10)].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[parseInt(i.toString(), 10)]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nexport function setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n var actualIndex = idx;\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)];\n if (parent && !parent.isFrozenGrid() && !parent.isRowDragable()) {\n td = (!isNullOrUndefined(td) && (parseInt(td.getAttribute('data-colindex'), 10) === idx))\n ? td : tr[parseInt(i.toString(), 10)].querySelector(\"td[data-colindex=\\\"\" + idx + \"\\\"]\");\n if (isNullOrUndefined(td)) {\n continue;\n }\n else {\n idx = td.cellIndex;\n }\n }\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if (isContent && parent.isRowDragable()) {\n var index = parent.getFrozenColumns() ? idx : idx + 1;\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(index.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n else {\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible = displayVal === '' ? true : false;\n if (rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible === false) {\n tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.add('e-hide');\n }\n }\n idx = actualIndex;\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByFieldName(gObj, field) {\n var column;\n if (!gObj.columnModel) {\n gObj.getColumns();\n }\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} id - Defines component id\n * @param {string[]} evts - Defines events\n * @param {object} handlers - Defines event handlers\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function registerEventHandlers(id, evts, handlers, instance) {\n instance.eventHandlers[\"\" + id] = {};\n for (var i = 0; i < evts.length; i++) {\n instance.eventHandlers[\"\" + id][evts[parseInt(i.toString(), 10)]] = handlers[evts[parseInt(i.toString(), 10)]];\n }\n}\n/**\n * @param {any} component - Defines component instance\n * @param {string[]} evts - Defines events\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function removeEventHandlers(component, evts, instance) {\n for (var i = 0; i < evts.length; i++) {\n if (component.isDestroyed) {\n break;\n }\n component.removeEventListener(evts[parseInt(i.toString(), 10)], instance.eventHandlers[component.element.id][evts[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {IGrid | IXLFilter} parent - Defines parent instance\n * @param {string[]} templates - Defines the templates name which are needs to clear\n * @returns {void}\n * @hidden\n */\nexport function clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nexport function getRowIndexFromElement(row) {\n return parseInt(row.getAttribute(literals.dataRowIndex), 10);\n}\n/**\n *\n * @param { string[] } fields - Defines grouped fields\n * @param { values } values - Defines caption keys\n * @param { any } instance - Defines dynamic class instance\n * @returns { Predicate } returns filter predicate\n */\n// eslint-disable-next-line\nexport function generateExpandPredicates(fields, values, instance) {\n var filterCols = [];\n for (var i = 0; i < fields.length; i++) {\n var column = instance.parent.getColumnByField(fields[parseInt(i.toString(), 10)]);\n var value = values[parseInt(i.toString(), 10)] === 'null' ? null : values[parseInt(i.toString(), 10)];\n var pred = {\n field: fields[parseInt(i.toString(), 10)], predicate: 'or', uid: column.uid, operator: 'equal', type: column.type,\n matchCase: instance.allowCaseSensitive, ignoreAccent: instance.parent.filterSettings.ignoreAccent\n };\n if (value === '' || isNullOrUndefined(value)) {\n filterCols = filterCols.concat(CheckBoxFilterBase.generateNullValuePredicates(pred));\n }\n else {\n filterCols.push(extend({}, { value: value }, pred));\n }\n }\n return CheckBoxFilterBase.getPredicate(filterCols);\n}\n/**\n *\n * @param { Predicate } pred - Defines filter predicate\n * @returns { Predicate[] } Returns formed predicate\n */\nexport function getPredicates(pred) {\n var predicateList = [];\n for (var _i = 0, _a = Object.keys(pred); _i < _a.length; _i++) {\n var prop = _a[_i];\n predicateList.push(pred[\"\" + prop]);\n }\n return predicateList;\n}\n/**\n *\n * @param { number } index - Defines group caption indent\n * @param { Row[] } rowsObject - Defines rows object\n * @returns { { fields: string[], keys: string[] } } Returns grouped keys and values\n */\nexport function getGroupKeysAndFields(index, rowsObject) {\n var fields = [];\n var keys = [];\n for (var i = index; i >= 0; i--) {\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow\n && fields.indexOf(rowsObject[parseInt(i.toString(), 10)].data.field) === -1\n && (rowsObject[parseInt(i.toString(), 10)].indent < rowsObject[parseInt(index.toString(), 10)].indent || i === index)) {\n fields.push(rowsObject[parseInt(i.toString(), 10)].data.field);\n keys.push(rowsObject[parseInt(i.toString(), 10)].data.key);\n if (rowsObject[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n }\n }\n return { fields: fields, keys: keys };\n}\n// eslint-disable-next-line\n/**\n *\n * @param { number[][] } checkActiveMatrix - Defines matrix to check\n * @param { number[] } checkCellIndex - Defines index to check\n * @param { boolean } next - Defines select next or previous index\n * @returns { number[] } - Returns next active current index\n */\nexport function findCellIndex(checkActiveMatrix, checkCellIndex, next) {\n var activeMatrix = checkActiveMatrix;\n var cellIndex = checkCellIndex;\n var currentCellIndexPass = false;\n if (next) {\n for (var i = cellIndex[0]; i < activeMatrix.length; i++) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = 0; j < rowCell.length; j++) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n else {\n for (var i = cellIndex[0]; i >= 0; i--) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = rowCell.length - 1; j >= 0; j--) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n return cellIndex;\n}\n/**\n *\n * @param { string } string - Defines string need to capitalized first letter\n * @returns { string } - Returns capitalized first letter string\n */\nexport function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","/**\n * Defines types of Cell\n *\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @param {boolean} isAutoCompleteCall - specifies for auto complete call\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[parseInt(i.toString(), 10)].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) {\n this.groupQuery(query);\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[parseInt(j.toString(), 10)];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[parseInt(k.toString(), 10)].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n var args = { query: query, skipPage: false };\n gObj.notify(events.setVirtualPageQuery, args);\n if (args.skipPage) {\n return query;\n }\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule &&\n (gObj.pagerModule.pagerObj.isAllPage && !gObj.isManualRefresh) &&\n (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ?\n null : gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[parseInt(i.toString(), 10)]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[parseInt(i.toString(), 10)], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = col.isForeignKey ? gObj.getColumnByUid(col.uid) : gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime' || gridColumn.type === 'dateonly')) {\n col.type = col.isForeignKey ? gObj.getColumnByUid(col.uid).type : gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[parseInt(i.toString(), 10)].uid = defaultFltrCols[parseInt(i.toString(), 10)].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[parseInt(i.toString(), 10)].field).uid;\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[\"\" + promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[\"\" + pr] = promise ? promise : args[\"\" + pr];\n this.parent.notify(events.crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var dataArgs = args;\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if (args.requestType !== undefined && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[\"\" + promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\n","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.isFrozenGrid() ?\n this.parent.contentModule.tempFreezeRows : this.parent.getRowsObject();\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var targetCell_1 = row.cells[parseInt(i.toString(), 10)];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[\"\" + uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[parseInt(j.toString(), 10)].visible === false) {\n visible++;\n }\n else {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[parseInt(i.toString(), 10)].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[parseInt(i.toString(), 10)].spanText;\n td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[parseInt(i.toString(), 10)].isRowSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[parseInt(i.toString(), 10)].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[parseInt(i.toString(), 10)].isSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[parseInt(i.toString(), 10)].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[parseInt(i.toString(), 10)].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n // eslint-disable-next-line no-prototype-builtins\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[\"\" + key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[\"\" + key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","import { isNullOrUndefined, extend, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr');\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n var _this = this;\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n var tempCells = [].slice.call(node.querySelectorAll('.e-templatecell'));\n if (this.parent.isReact && tempCells.length) {\n var _loop_1 = function (col) {\n if (col.template) {\n setTimeout(function () {\n _this.parent.refreshReactColumnTemplateByUid(col.uid, true);\n }, 0);\n return \"break\";\n }\n };\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var state_1 = _loop_1(col);\n if (state_1 === \"break\")\n break;\n }\n }\n var attr = [].slice.call(tr.attributes);\n attr.map(function (item) {\n node.setAttribute(item['name'], item['value']);\n });\n node.innerHTML = '';\n for (var _a = 0, cells_1 = cells; _a < cells_1.length; _a++) {\n var cell = cells_1[_a];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_2 = function (i, len) {\n var cell = row.cells[parseInt(i.toString(), 10)];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[parseInt(i.toString(), 10)].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[parseInt(i.toString(), 10)].cellType !== CellType.Filter) {\n if (row.cells[parseInt(i.toString(), 10)].cellType === CellType.Data\n || row.cells[parseInt(i.toString(), 10)].cellType === CellType.CommandColumn) {\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef)) && cell.isTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this_1;\n thisRef_1.parent.renderTemplates(function () {\n var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\n thisRef_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: thisRef_1.parent.requestTypeAction\n }));\n });\n }\n else {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n }\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var rowsObject = this_1.parent.isFrozenGrid() ?\n this_1.parent.contentModule.tempFreezeRows : this_1.parent.getRowsObject();\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[parseInt(i.toString(), 10)].column[\"\" + uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[parseInt(i.toString(), 10)].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_2(i, len);\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n var eventArg_1 = extend(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row.data ? row.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg_1.row.querySelector('.e-rowdragdrop');\n var cellIdx = this.parent.groupSettings.columns.length + (isDrag || this.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row.cells.length) {\n for (var i = cellIdx; i < row.cells.length; i++) {\n var cell = eventArg_1.row.querySelector('.e-rowcell[data-colindex=\"' + row.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n tr.classList.add('e-verticalwrap');\n }\n var vFTable = this.parent.enableColumnVirtualization && this.parent.frozenColumns !== 0;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (row.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row.isAggregateRow && row.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[literals.ariaRowIndex] = row.index + 1;\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n if (this.parent.enableImmutableMode && args && args.startIndex) {\n startIndex = args.startIndex;\n }\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[parseInt(index.toString(), 10)]) {\n options.isExpand = this.parent.expandedRows[parseInt(index.toString(), 10)].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[parseInt(i.toString(), 10)].field, getForeignData(foreignKeyColumns[parseInt(i.toString(), 10)], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[parseInt(i.toString(), 10)], options.uid, isNullOrUndefined(dummies[parseInt(i.toString(), 10)].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[parseInt(i.toString(), 10)]);\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? (isNullOrUndefined(args.startIndex) ? args['index'] : args.startIndex) : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[parseInt(i.toString(), 10)].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start, end) {\n var columns = [];\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n end = end && !start ? end + this.parent.getIndentCount() : end;\n return isNullOrUndefined(start) ? columns : columns.slice(start, end);\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = !start ? this.parent.getIndentCount() : 0;\n if (this.parent.groupSettings.columns.length && this.parent.allowRowDragAndDrop) {\n indents.push('e-indentcelltop');\n }\n else if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start, end);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[parseInt(i.toString(), 10)], summaryRow, i >= indentLength ? this.getCellType() :\n i === 0 && this.parent.childGrid ? CellType.DetailFooterIntent : CellType.Indent, indents[parseInt(i.toString(), 10)], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.isAggregateRow = true;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[parseInt(i.toString(), 10)].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[parseInt(j.toString(), 10)], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var disp = column.columnName;\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[\"\" + key] :\n calculateAggregate(types[parseInt(i.toString(), 10)], group.aggregates ? group : data, column, this.parent);\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = val;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[\"\" + disp].field = group.field;\n single[\"\" + disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n if (this.parent.allowRowDragAndDrop && this.parent.groupSettings.columns.length) {\n level -= 1;\n }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.infiniteChildCount = 0;\n _this.renderInfiniteAgg = true;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.infiniteChildCount = 0;\n this.renderInfiniteAgg = true;\n this.getGroupedRecords(0, data[parseInt(i.toString(), 10)], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[parseInt(j.toString(), 10)], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var preCaption = void 0;\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (this.isInfiniteScroll) {\n preCaption = this.getPreCaption(index, captionRow.data.key);\n }\n if (!preCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n else {\n captionRow.uid = preCaption.uid;\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length && this.isRenderAggregate(captionRow)) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[parseInt(i.toString(), 10)].isCaptionRow) {\n this.rows[parseInt(i.toString(), 10)].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[parseInt(i.toString(), 10)].isCaptionRow && !this.rows[parseInt(i.toString(), 10)].isDataRow) {\n break;\n }\n }\n }\n if (preCaption) {\n this.setInfiniteRowVisibility(preCaption);\n }\n }\n };\n GroupModelGenerator.prototype.isRenderAggregate = function (data) {\n if (this.parent.enableInfiniteScrolling) {\n if (!this.renderInfiniteAgg) {\n return false;\n }\n this.getPreCaption(data.indent, data.data.key);\n this.renderInfiniteAgg = data.data.count === this.infiniteChildCount;\n return this.renderInfiniteAgg;\n }\n return !this.parent.enableInfiniteScrolling;\n };\n GroupModelGenerator.prototype.getPreCaption = function (indent, key) {\n var rowObj = this.parent.getRowsObject().concat(this.rows);\n var preCap;\n this.infiniteChildCount = 0;\n var i = rowObj.length;\n while (i--) {\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && rowObj[parseInt(i.toString(), 10)].indent === indent\n && rowObj[parseInt(i.toString(), 10)].data.key === key) {\n preCap = rowObj[parseInt(i.toString(), 10)];\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent || rowObj[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent + 1) {\n this.infiniteChildCount++;\n }\n }\n return preCap;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[\"\" + records]) ? data.items[\"\" + records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[parseInt(i.toString(), 10)].isDataRow) {\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n for (var j = 0; j < input[parseInt(i.toString(), 10)].indent; j++) {\n if (this.parent.enableColumnVirtualization\n && indexes.indexOf(input[parseInt(i.toString(), 10)].indent) === -1) {\n continue;\n }\n input[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[parseInt(i.toString(), 10)].data, input[parseInt(i.toString(), 10)].indent);\n input[parseInt(i.toString(), 10)].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.setInfiniteRowVisibility = function (caption) {\n if (!caption.isExpand || caption.visible === false) {\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (row.parentUid === caption.uid) {\n row.visible = false;\n if (row.isCaptionRow) {\n this.setInfiniteRowVisibility(row);\n }\n }\n }\n }\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[parseInt(i.toString(), 10)];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[parseInt(j.toString(), 10)];\n if (row.uid === childRow.parentUid) {\n this.rows[parseInt(j.toString(), 10)].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","import { Droppable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren, setDisplayValue, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { isGroupAdaptive } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.viewColIndexes = [];\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n this.isRemove = false;\n /** @hidden */\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n /** @hidden */\n this.tempFreezeRows = [];\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n if (_this.parent.isFrozenGrid() && (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling)) {\n var tableName = args.tableName;\n _this.isLoaded = _this.parent.getFrozenMode() === literals.leftRight ? tableName === 'frozen-right' : tableName === 'movable';\n if (_this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll' && _this.isLoaded) {\n var mHdr = [].slice.call(_this.parent.getMovableVirtualHeader().getElementsByClassName(literals.row));\n var fHdr = [].slice.call(_this.parent.getFrozenVirtualHeader().getElementsByClassName(literals.row));\n _this.isLoaded = mHdr.length === fHdr.length;\n }\n }\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + literals.content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.enableInfiniteScrolling) {\n if (_this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0; i < _this.visibleRows.length; i++) {\n _this.setRowsInLazyGroup(_this.visibleRows[parseInt(i.toString(), 10)], i);\n }\n }\n rows = _this.parent.getRowsObject();\n var prevPage = arg.prevPage;\n if (_this.parent.infiniteScrollSettings.enableCache && prevPage) {\n var maxBlock = _this.parent.infiniteScrollSettings.maxBlocks;\n rows = [];\n var rowIdx = (parseInt(_this.rowElements[0].getAttribute('data-rowindex'), 10) + 1);\n var startIdx = Math.ceil(rowIdx / _this.parent.pageSettings.pageSize);\n for (var i = 0, count = startIdx; i < maxBlock; i++, count++) {\n if (_this.infiniteCache[parseInt(count.toString(), 10)]) {\n rows = rows.concat(_this.infiniteCache[parseInt(count.toString(), 10)]);\n }\n }\n }\n }\n if (_this.parent.isFrozenGrid()) {\n rows = args.isFrozen ? _this.freezeRows : args.renderFrozenRightContent ? _this.parent.getFrozenRightRowsObject()\n : _this.movableRows;\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n if (!_this.parent.isInitialLoad) {\n _this.parent.focusModule.setFirstFocusableTabIndex();\n }\n if (_this.isLoaded) {\n _this.parent.isManualRefresh = false;\n if (_this.parent.enableInfiniteScrolling && _this.parent.groupSettings.enableLazyLoading && args.requestType === 'sorting') {\n _this.parent.infiniteScrollModule['groupCaptionAction'] = undefined;\n }\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n _this.parent.parentDetails.parentInstObj.isReact;\n if ((_this.parent.isReact || isReactChild) && _this.parent.element.querySelectorAll('.e-templatecell').length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = _this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.dataBound, {}, function () {\n if (thisRef_1.parent.allowTextWrap) {\n thisRef_1.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n });\n }\n else {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (_this.parent.allowTextWrap && _this.parent.height === 'auto') {\n if (_this.parent.getContentTable().scrollHeight > _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setPadding();\n }\n else {\n _this.parent.scrollModule.removePadding();\n }\n }\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.parent.enableDeepCompare = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + literals.gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + literals.content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: literals.gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: literals.content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n /**\n * The function is used to render grid content table\n *\n * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + literals.table));\n this.ariaService.setOptions(this.getTable(), {\n multiselectable: this.parent.selectionSettings.type === 'Multiple'\n });\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n };\n /**\n * The function is used to create content table elements\n *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = innerDiv.querySelector('.' + literals.table) ? innerDiv.querySelector('.' + literals.table) :\n this.parent.createElement('table', {\n className: literals.table, attrs: {\n cellspacing: '0.25px', role: 'grid',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(literals.colGroup).cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var contentModule = this.parent.contentModule;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n var refFrag;\n var refHdrfrag;\n if (gObj.isReact && gObj.rowTemplate) {\n refFrag = frag;\n refHdrfrag = hdrfrag;\n }\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var frzCols = gObj.getFrozenColumns();\n var isFrozenGrid = this.parent.isFrozenGrid();\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n gObj.notify(events.destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n this.tempFreezeRows = [];\n var fCont = this.getPanel().querySelector('.' + literals.frozenContent);\n var mCont = this.getPanel().querySelector('.' + literals.movableContent);\n var cont = this.getPanel().querySelector('.' + literals.content);\n var tbdy;\n var tableName;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'save', 'delete']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n if (this.parent.enableVirtualization && this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll'\n && args.virtualInfo.sentinelInfo.axis === 'X') {\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n args.renderMovableContent = true;\n }\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n }\n else {\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var idx = modelData[0].cells[0].index;\n if (isFrozenGrid) {\n tableName = contentModule.setTbody(modelData, args);\n tbdy = contentModule.getTbody(tableName);\n }\n var isFrozenLeft = this.parent.getFrozenMode() === literals.leftRight && tableName === literals.frozenRight;\n /* eslint-disable */\n if (!(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* eslint-enable */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if ((this.parent.isReact || this.parent.isVue) && !(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n if (args.requestType === 'infiniteScroll' && this.parent.infiniteScrollSettings.enableCache) {\n templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'commandsTemplate'\n ];\n }\n clearReactVueTemplates(this.parent, templates);\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n if (!isFrozenGrid) {\n this.tbody = this.getTable().querySelector(literals.tbody);\n }\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[\"\" + top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[\"\" + key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[parseInt(m.toString(), 10)]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n startIndex = m > 0 ? ((m - 1) * bSize) : (m * bSize);\n break;\n }\n else {\n startIndex = m * bSize;\n if (this.parent.contentModule.isEndBlock(m) || this.parent.contentModule.isEndBlock(m + 1)) {\n args.virtualInfo.blockIndexes = [m, m + 1];\n }\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && !gObj.isFrozenGrid() && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n mhdrData[parseInt(i.toString(), 10)].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage] = [];\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading && args.requestType === 'delete') { // || (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache))\n this.visibleRows = [];\n }\n var _loop_1 = function (i, len) {\n this_1.rows.push(modelData[parseInt(i.toString(), 10)]);\n if (isFrozenGrid) {\n this_1.tempFreezeRows.push(modelData[parseInt(i.toString(), 10)]);\n }\n if (this_1.parent.groupSettings.enableLazyLoading && !this_1.useGroupCache && this_1.parent.groupSettings.columns.length) {\n (this_1.parent.enableVirtualization ? this_1.parent.lazyLoadRender :\n this_1.parent.contentModule).refRowsObj[this_1.parent.pageSettings.currentPage].push(modelData[parseInt(i.toString(), 10)]);\n this_1.setRowsInLazyGroup(modelData[parseInt(i.toString(), 10)], i);\n if (isNullOrUndefined(modelData[parseInt(i.toString(), 10)].indent)) {\n return \"continue\";\n }\n }\n this_1.setInfiniteVisibleRows(args, modelData[parseInt(i.toString(), 10)], tableName);\n if (isGroupAdaptive(gObj) && args.virtualInfo && args.virtualInfo.blockIndexes\n && (this_1.rowElements.length >= (args.virtualInfo.blockIndexes.length * this_1.parent.contentModule.getBlockSize()))\n && blockLoad) {\n this_1.parent.currentViewData['records'] = this_1.rows.map(function (m) { return m.data; });\n return \"break\";\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[parseInt(i.toString(), 10)], columns);\n var isVFreorder = this_1.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && i < gObj.frozenRows && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this_1.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n if (modelData[parseInt(i.toString(), 10)].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[parseInt(i.toString(), 10)]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n if (gObj.requireTemplateRef) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this_1;\n thisRef_2.parent.renderTemplates(function () {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = refHdrfrag.childNodes[parseInt(i.toString(), 10)];\n }\n else {\n trElement = refFrag.childNodes[parseInt(i.toString(), 10)];\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data,\n row: trElement ? trElement : tr };\n thisRef_2.parent.trigger(events.rowDataBound, arg);\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (thisRef_2.parent.enableVirtualization &&\n thisRef_2.parent.groupSettings.enableLazyLoading)) {\n thisRef_2.rowElements.push(tr);\n }\n thisRef_2.ariaService.setOptions(thisRef_2.getTable(), {\n colcount: gObj.getColumns().length.toString()\n });\n if (i === modelData.length - 1) {\n refFrag = null;\n refHdrfrag = null;\n }\n });\n return \"continue\";\n }\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[parseInt(i.toString(), 10)]), gObj, 'rowTemplate', rowTemplateID, undefined, undefined, undefined, this_1.parent['root']);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[parseInt(j.toString(), 10)].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[parseInt(j.toString(), 10)].querySelectorAll && elements[parseInt(j.toString(), 10)].querySelectorAll('tr').length)) {\n tr = isTR ? elements[parseInt(j.toString(), 10)] : elements[parseInt(j.toString(), 10)].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data, row: trElement ? trElement : tr };\n this_1.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (this_1.parent.enableVirtualization &&\n this_1.parent.groupSettings.enableLazyLoading)) {\n this_1.rowElements.push(tr);\n }\n this_1.ariaService.setOptions(this_1.getTable(), { colcount: gObj.getColumns().length.toString() });\n };\n var this_1 = this;\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact;\n if ((gObj.isReact || isReactChild) && !gObj.requireTemplateRef) {\n gObj.renderTemplates();\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.refRowsObj[this.parent.pageSettings.currentPage] =\n this.parent.contentModule['groupCache'][this.parent.pageSettings.currentPage];\n }\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.notify(events.refreshExpandandCollapse, {\n rows: (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage]\n });\n }\n if (isFrozenGrid) {\n contentModule.splitRows(tableName);\n }\n gObj.removeMaskRow();\n this.parent.notify('removeGanttShimmer', { requestType: 'hideShimmer' });\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = isFrozenGrid ? contentModule.getFrozenHeader(tableName) : gObj.getHeaderTable().querySelector(literals.tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n }\n if (!gObj.enableVirtualization && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n }\n args.rows = this.rows.slice(0);\n if (isFrozenGrid) {\n contentModule.setIsFrozen(args, tableName);\n }\n this.index = idx;\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n var isVFTable = _this.parent.enableVirtualization && _this.parent.isFrozenGrid();\n if (!_this.parent.enableVirtualization && !isInfiniteScroll) {\n if (_this.parent.isFrozenGrid()) {\n remove(contentModule.getTbody(tableName));\n tbdy = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n else {\n if (!gObj.isReact) {\n _this.tbody.innerHTML = '';\n }\n if (!isNullOrUndefined(_this.tbody.parentElement)) {\n remove(_this.tbody);\n }\n else {\n remove(gObj.getContentTable().querySelector(literals.tbody));\n }\n _this.tbody = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n }\n if (isFrozenGrid && !isVFTable && !_this.parent.enableInfiniteScrolling) {\n _this.appendContent(tbdy, frag, args, tableName);\n }\n else {\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (isVFTable) {\n if (args.renderFrozenRightContent) {\n var frCont = gObj.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n _this.appendContent(frCont, frag, args);\n }\n else if (!args.renderMovableContent) {\n _this.appendContent(fCont.querySelector(literals.tbody), frag, args);\n }\n else {\n _this.appendContent(mCont.querySelector(literals.tbody), frag, args);\n args.renderMovableContent = false;\n }\n if (!_this.parent.getFrozenColumns()) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n }\n else {\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n if (!frzCols && isFrozenGrid) {\n if ((gObj.getFrozenMode() !== literals.leftRight\n && (tableName === literals.frozenLeft || tableName === literals.frozenRight))\n || (gObj.getFrozenMode() === literals.leftRight\n && (tableName === literals.frozenLeft || tableName === 'movable'))) {\n _this.refreshContentRows(extend({}, args));\n }\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n }\n }\n if (frzCols) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n var cells = tbody.querySelectorAll('td');\n for (var i = 0; i < cells.length; i++) {\n var headerCellHeight = parseFloat(document.defaultView.getComputedStyle(cells[parseInt(i.toString(), 10)], '::before').getPropertyValue('height'));\n var cellHeight = cells[parseInt(i.toString(), 10)].offsetHeight;\n if (headerCellHeight > cellHeight) {\n cells[parseInt(i.toString(), 10)].style.height = headerCellHeight + 'px';\n cells[parseInt(i.toString(), 10)].style.boxSizing = 'content-box';\n }\n }\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n var index = args.isFrozen ? 1 : 0;\n var frozenCols = this.parent.isFrozenGrid();\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (frozenCols && !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.isAddRows = this.infiniteCache[this.parent.pageSettings\n .currentPage][parseInt(index.toString(), 10)].length !== 0;\n }\n if (this.isAddRows) {\n var data = !frozenCols ? this.infiniteCache[this.parent.pageSettings.currentPage]\n : this.infiniteCache[this.parent.pageSettings.currentPage][parseInt(index.toString(), 10)];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length && (args.requestType === 'paging'\n || args.requestType === 'columnstate' || args.requestType === 'reorder' || args.requestType === 'virtualscroll')\n && (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).getGroupCache()[this.parent.pageSettings.currentPage]) {\n if (!this.parent.enableVirtualization) {\n this.useGroupCache = true;\n }\n return this.parent.enableVirtualization ? this.parent.getRowsObject() :\n this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data, tableName) {\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (frozenCols) {\n if (tableName === literals.frozenLeft || (this.parent.getFrozenMode() === 'Right' && tableName === literals.frozenRight)) {\n this.visibleFrozenRows.push(data);\n }\n else if (tableName === 'movable') {\n this.visibleRows.push(data);\n }\n else {\n this.rightFreezeRows.push(data);\n }\n }\n else if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function (isFreeze) {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var frozenCols = this.parent.isFrozenGrid();\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute(literals.dataRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(literals.dataRowIndex), 10);\n var last = Math.ceil((index + (rows.length ? 1 : 0)) / this.parent.pageSettings.pageSize);\n if (frozenCols) {\n var idx = isFreeze ? 0 : 1;\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)][parseInt(idx.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)][parseInt(idx.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1][parseInt(idx.toString(), 10)]\n .slice(0, this.parent.frozenRows).concat(data);\n }\n }\n else {\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedVFRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = [];\n if (this.parent.isFrozenGrid()) {\n this.currentMovableRows = dataSource;\n fhdrData = this.getReorderedVFRows(args);\n }\n else {\n fhdrData = this.getReorderedRows(args);\n }\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n if (args.renderMovableContent) {\n this.parent.currentViewData = this.currentMovableRows;\n this.currentMovableRows = null;\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = !frozenCols ? rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]]) : rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]][0]);\n }\n }\n else {\n rows = frozenCols ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.parent.getFrozenColumns() ? this.freezeRows : this.rows;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getMovableRows = function () {\n var infiniteRows = this.getInfiniteMovableRows();\n return infiniteRows.length ? infiniteRows : this.movableRows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getRowElements = function () {\n return this.parent.getFrozenColumns() ? this.freezeRowElements : this.rowElements;\n };\n /**\n * Get the Freeze pane movable content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getMovableRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var isFrozenGrid = this.parent.isFrozenGrid();\n var frzCols = gObj.getFrozenColumns();\n var rows = [];\n if (isFrozenGrid) {\n var fRows = this.freezeRows;\n var mRows = this.movableRows;\n var rowLen = fRows.length;\n var cellLen = void 0;\n var rightRows = [];\n if (gObj.getFrozenMode() === literals.leftRight) {\n rightRows = gObj.getFrozenRightRowsObject();\n }\n for (var i = 0, row = void 0; i < rowLen; i++) {\n cellLen = mRows[parseInt(i.toString(), 10)].cells.length;\n var rightLen = rightRows.length ? rightRows[parseInt(i.toString(), 10)].cells.length : 0;\n row = fRows[parseInt(i.toString(), 10)].clone();\n for (var j = 0; j < cellLen; j++) {\n row.cells.push(mRows[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)]);\n }\n for (var k = 0; k < rightLen; k++) {\n row.cells.push(rightRows[parseInt(i.toString(), 10)].cells[parseInt(k.toString(), 10)]);\n }\n rows.push(row);\n }\n }\n else {\n rows = this.getRows();\n }\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n if (isFrozenGrid) {\n if (column.getFreezeTableName() !== 'movable') {\n if (column.getFreezeTableName() === literals.frozenRight) {\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n colIdx = idx = idx - (left + movable);\n var colG = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.colGroup);\n setStyleAttribute(colG.childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n contentrows = gObj.getFrozenRightRowsObject();\n tr = gObj.getFrozenRightDataRows();\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n var infiniteFreezeData = this.infiniteRowVisibility(true);\n contentrows = infiniteFreezeData ? infiniteFreezeData : this.freezeRows;\n tr = gObj.getDataRows();\n }\n }\n else {\n var mTable = gObj.getContent().querySelector('.' + literals.movableContent).querySelector(literals.colGroup);\n colIdx = idx = idx - frzCols - this.parent.getFrozenLeftColumnsCount();\n setStyleAttribute(mTable.childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n tr = gObj.getMovableDataRows();\n var infiniteMovableData = this.infiniteRowVisibility();\n contentrows = infiniteMovableData ? infiniteMovableData : this.movableRows;\n }\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n if (isFrozenGrid) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight', isModeChg: true });\n }\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n if (!this.parent.getFrozenColumns()) {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: this.freezeRows, args: { isFrozen: true, rows: this.freezeRows } });\n this.parent.notify(events.partialRefresh, { rows: this.movableRows, args: { isFrozen: false, rows: this.movableRows } });\n }\n }\n };\n /**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords(true) : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = void 0;\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n colGroup = this.parent.getMovableVirtualHeader()\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n }\n else {\n colGroup = this.getHeaderColGroup();\n }\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return this.parent.element.querySelector('.' + literals.gridHeader)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2)\n row.cells[parseInt(index.toString(), 10)].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen && this.parent.enableVirtualization) {\n return;\n }\n if (isFrozen) {\n var rows = this.getMovableRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].isSelected = set;\n }\n }\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[parseInt(j.toString(), 10)].isSelected = set;\n var cells = row[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache && !isNullOrUndefined(index)) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[parseInt(idx.toString(), 10)]\n .getAttribute(literals.dataRowIndex), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.getMovableRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getMovableDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(literals.tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.parent.enableDeepCompare) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[parseInt(oldIndex.toString(), 10)], dataSource[parseInt(i.toString(), 10)]);\n }\n var tr = oldRowElements[oldRowObjs[parseInt(oldIndex.toString(), 10)]\n .uid];\n newRowObjs.push(oldRowObjs[parseInt(oldIndex.toString(), 10)]);\n if (this.rowElements[parseInt(oldIndex.toString(), 10)] && this.rowElements[parseInt(oldIndex.toString(), 10)].getAttribute('data-uid') === newRowObjs[parseInt(i.toString(), 10)].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!hasBatch && (isEqual\n || this.prevCurrentView[parseInt(oldIndex.toString(), 10)] === dataSource[parseInt(i.toString(), 10)])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!this.parent.enableDeepCompare\n && dataSource[parseInt(i.toString(), 10)] !== this.prevCurrentView[parseInt(oldIndex.toString(), 10)])\n || (this.parent.enableDeepCompare && !isEqual)) {\n oldRowObjs[parseInt(oldIndex.toString(), 10)].setRowValue(dataSource[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var args_1 = { startIndex: i };\n var modelData = this.generator.generateRows([dataSource[parseInt(i.toString(), 10)]], args_1);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector(literals.tbody));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== next[keys[parseInt(i.toString(), 10)]]) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date\n && next[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]]\n .getTime() !== next[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (row.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute(literals.dataRowIndex, index.toString());\n tr.setAttribute(literals.ariaRowIndex, (index + 1).toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[parseInt(i.toString(), 10)].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization\n && !this.parent.getFrozenLeftColumnsCount() && !this.parent.getFrozenRightColumnsCount()) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + literals.gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + literals.headerContent) :\n this.parent.createElement('div', { className: literals.headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + literals.table));\n if (!this.parent.getFrozenColumns() && !this.parent.getFrozenRightColumnsCount() && !this.parent.getFrozenLeftColumnsCount()) {\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.isFrozenGrid() } });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + literals.headerContent);\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n var isFrozen = gObj.isFrozenGrid();\n if (this.getTable() && !isFrozen) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'grid' } });\n var tblName = tableName ? tableName : gObj.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n var findHeaderRow = this.createHeaderContent(tblName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ? '' : 'e-hide', attrs: { role: 'rowgroup' } });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement(literals.colGroup);\n var rowBody = this.parent.createElement('tr');\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[parseInt(i.toString(), 10)].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n if (isFrozen && gObj.allowResizing) {\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent).querySelector('.' + literals.table);\n if (tableName === 'movable' && !isNullOrUndefined(movableContent)) {\n table.style.width = movableContent.style.width;\n }\n }\n this.updateColGroup(colGroup);\n tbody.appendChild(rowBody);\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n table.appendChild(tbody);\n table.appendChild(this.caption);\n this.ariaService.setOptions(table, { colcount: gObj.getColumns().length.toString() });\n return table;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var index = 1;\n var frozenMode = gObj.getFrozenMode();\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead', { attrs: { 'role': 'rowgroup' } });\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader' });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(i);\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n if (frozenMode !== 'Right') {\n rows = this.ensureColumns(rows);\n }\n rows = this.getHeaderCells(rows, tableName);\n if (frozenMode === 'Right') {\n index = 0;\n rows = this.ensureColumns(rows);\n }\n var frzCols = this.parent.getFrozenColumns();\n if (this.parent.isRowDragable() && this.parent.isFrozenGrid() && rows[0].cells[parseInt(index.toString(), 10)]) {\n var colFreezeMode = rows[0].cells[parseInt(index.toString(), 10)].column.getFreezeTableName();\n if (tableName === 'movable' && this.getStackedLockColsCount.length) {\n for (var j = 0, len = rows.length; j < len; j++) {\n if (frozenMode === 'Right') {\n rows[parseInt(j.toString(), 10)].cells.pop();\n }\n else {\n rows[parseInt(j.toString(), 10)].cells.shift();\n }\n }\n }\n else if ((colFreezeMode === 'movable' || (frozenMode === literals.leftRight &&\n colFreezeMode === literals.frozenRight))) {\n if (frozenMode === 'Right') {\n rows[0].cells.pop();\n }\n else {\n rows[0].cells.shift();\n }\n }\n else if (!frzCols && colFreezeMode === literals.frozenLeft) {\n rows[0].cells[0].column.freeze = colFreezeMode === literals.frozenLeft ? 'Left' : 'Right';\n }\n else if (frozenMode === 'Right' && colFreezeMode === literals.frozenRight) {\n rows[0].cells[rows[0].cells.length - 1].column.freeze = 'Right';\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[parseInt(i.toString(), 10)], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n cols = extend([], this.parent.getColumns());\n cols.splice(0, this.parent.getFrozenColumns());\n }\n colGroup.id = this.parent.element.id + literals.colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[parseInt(i.toString(), 10)].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable()) {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName, false);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (len - 1), thead, tableName, false);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName, isStackLastCol) {\n var lastCol = isLastCol ? isStackLastCol ? 'e-laststackcell' : 'e-lastcell' : '';\n var isFrozen = this.parent.isFrozenGrid();\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n var isFrozenLockColumn = !this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered)\n || (!cols.lockColumn && this.lockColsRendered);\n var scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var left;\n if (isFrozen && scrollbar && this.parent.enableColumnVirtualization) {\n left = scrollbar.scrollLeft;\n }\n if (!cols.columns) {\n if (left && left > 0 && this.parent.contentModule.isXaxis()\n && this.parent.inViewIndexes[0] !== 0 && cols.getFreezeTableName() === 'movable') {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n else {\n if ((!isFrozen && isLockColumn) || (isFrozen && cols.getFreezeTableName() === tableName && isFrozenLockColumn)) {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n var isFrozenStack = isFrozen && this.ensureStackedFrozen(cols.columns, tableName, false);\n if ((!isFrozen && isStackedLockColumn) || isFrozenStack) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount, cols.columns, tableName, isFrozen),\n className: isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName, false);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n isFirstObj = isFirstObj && i === 0;\n var isFirstCol_1 = this.isFirstCol = cols.columns[parseInt(i.toString(), 10)].visible\n && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.ensureStackedFrozen = function (columns, tableName, isTrue) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n isTrue = this.ensureStackedFrozen(columns[parseInt(i.toString(), 10)].columns, tableName, isTrue);\n }\n else if (columns[parseInt(i.toString(), 10)].getFreezeTableName() === tableName) {\n isTrue = true;\n break;\n }\n }\n return isTrue;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[parseInt(i.toString(), 10)], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount, columns, tableName, isFrozen) {\n if (isFrozen) {\n colSpan = this.getFrozenColSpan(columns, tableName, 0);\n }\n else if (this.parent.lockcolPositionCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n }\n return colSpan;\n };\n HeaderRender.prototype.getFrozenColSpan = function (columns, tableName, count) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n count = this.getFrozenColSpan(columns[parseInt(i.toString(), 10)].columns, tableName, count);\n }\n else if (columns[parseInt(i.toString(), 10)].getFreezeTableName() === tableName\n && columns[parseInt(i.toString(), 10)].visible) {\n count++;\n }\n }\n return count;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var frzCols = gObj.getFrozenColumns();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (frzCols) {\n var normalizedfrzCols = this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n if (idx < normalizedfrzCols) {\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.colGroup);\n setStyleAttribute(mTblColGrp.children[idx - normalizedfrzCols], { 'display': displayVal });\n }\n }\n else {\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var frzCols = this.parent.isFrozenGrid();\n var isVFTable = this.parent.enableColumnVirtualization && frzCols;\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.' + literals.movableHeader).querySelector('.' + literals.table)\n : this.getTable();\n var tableName = this.parent.isFrozenGrid() ? this.parent.getFrozenLeftCount() ? 'frozen-left'\n : 'frozen-right' : undefined;\n if (isVFTable) {\n table = this.parent.contentModule.getVirtualFreezeHeader();\n tableName = this.parent.contentModule.isXaxis() ? 'movable' : tableName;\n }\n if (table) {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n var colGroup = this.parent.createElement(literals.colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n if (!isVFTable) {\n this.setTable(table);\n }\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n if (!frzCols || (this.parent.enableColumnVirtualization && frzCols)) {\n this.initializeHeaderDrag();\n }\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: frzCols } });\n if (this.parent.enableColumnVirtualization && parentsUntil(table, literals.movableHeader)) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[parseInt(i.toString(), 10)], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\n }\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + literals.gridHeader));\n }\n else {\n if (gObj.enableAdaptiveUI && !gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","import { remove, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: literals.rowCell, attrs: { tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox',\n 'aria-label': this.localizer.getConstant('CheckBoxLabel') } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string' && cell.column.template.prototype && !(cell.column.template.prototype).CSPTemplate;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler || isReactChild) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[\"\" + str], null, node);\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + this.localizer.getConstant('TemplateCell') +\n this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[parseInt(cellIndex.toString(), 10)]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n td.setAttribute('aria-label', node.getAttribute('aria-label'));\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[parseInt(i.toString(), 10)];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n node.setAttribute('aria-label', innerHtml + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, this.parent.sanitize(innerHtml), column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(literals.gridChkBox);\n node.setAttribute('aria-label', this.localizer.getConstant('CheckBoxLabel'));\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n this.rowChkBox.id = 'checkbox-' + cell.rowID;\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n node.classList.add('e-gridchkbox-cell');\n checkWrap.classList.add('e-checkbox-disabled');\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n node.appendChild(checkWrap);\n node.setAttribute('aria-label', checked + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[\"\" + property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')\n && !(this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Content'\n || this.parent.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': literals.dataColIndex };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n attr[literals.ariaColIndex] = cell.colIndex + 1;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n attr[literals.ariaColIndex] = cell.index + 1;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","/**\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 } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { tabindex: '-1' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons', attrs: { 'aria-hidden': 'true' } });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox', 'aria-label': _this.localizer.getConstant('CheckBoxLabel') } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string | Element} returns the element\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the column\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the aattributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Element} node - specifies the noe\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n var elementDesc = '';\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = this.parent.sanitize(value);\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.chkAllBox.id = 'checkbox-' + column.uid;\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n if (this.parent.cssClass) {\n addClass([checkAllWrap], [this.parent.cssClass]);\n }\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid\n });\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('FilterDescription') : this.localizer.getConstant('FilterDescription');\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field === column.field\n || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.allowSorting && column.allowSorting) {\n ariaAttr.sort = 'none';\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('SortDescription') : this.localizer.getConstant('SortDescription');\n }\n if ((this.parent.allowGrouping && column.allowGrouping) || this.parent.allowReordering && column.allowReordering) {\n ariaAttr.grabbed = false;\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('GroupDescription') : this.localizer.getConstant('GroupDescription');\n }\n if (this.parent.showColumnMenu) {\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('ColumnMenuDescription') : this.localizer.getConstant('ColumnMenuDescription');\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild_1) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if ((column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip'))\n && !(gridObj.allowTextWrap && (gridObj.textWrapSettings.wrapMode === 'Header'\n || gridObj.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n if (elementDesc) {\n node.setAttribute('aria-description', elementDesc);\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef)\n || (isReactChild && this.parent.parentDetails.parentInstObj.requireTemplateRef))\n && !isNullOrUndefined(column.headerTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(headerCellInfo, { cell: cell, node: node });\n });\n }\n else {\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n }\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu', attrs: { 'aria-hidden': 'true' } }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[parseInt(j.toString(), 10)].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHtml\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n tabindex: '-1'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, this.parent.sanitize(column.headerText), column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellUid = 0;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the GroupedData\n * @returns {Element} returns the element\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n this.element.id = this.parent.element.id + 'captioncell' + this.cellUid++;\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var column = cell.column;\n var domSetter = column.getDomSetter ? column.getDomSetter() : 'innerHTML';\n var result;\n var fKeyValue;\n var gTemplateValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n for (var j = 0; j < gObj.aggregates.length; j++) {\n for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; i++) {\n if (gObj.getVisibleColumns()[0].field === gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .field && gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate) {\n if (gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate.includes('$')) {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('$')[0] + data[gObj.getVisibleColumns()[0].field][gObj\n .aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].type] +\n gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate.split('}')[1];\n }\n else {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n }\n break;\n }\n }\n }\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n ' - ' + data.count + ' ' + (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'))\n + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + this.localizer.getConstant('GroupCaption'));\n node.setAttribute('title', node.textContent);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the Object\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {number} data.count - Defines the count\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\nimport { CellType } from '../base/enum';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {Object} attr - specifies the attribute\n * @param {boolean} isExpand - specifies isexpand\n * @returns {Element} returns the element\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n if (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache) {\n cell.cellType = CellType.Indent;\n node.className = isExpand ? 'e-recordplusexpand e-disablepointer' : 'e-recordpluscollapse e-disablepointer';\n }\n else {\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.appendChild(this.parent.createElement('a', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow',\n attrs: { href: '#', 'title': isExpand ? 'expanded' : 'collapsed' }\n }));\n }\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Expanded')\n } }));\n }\n else {\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Collapsed')\n } }));\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop e-rowdragdropcell',\n attrs: { tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon',\n attrs: { 'aria-hidden': 'true' }\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, blazorTemplates, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject, clearReactVueTemplates } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the serviceLocator\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n *\n * @returns {void}\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n this.refreshDataManager();\n };\n /**\n * Refresh the entire Grid.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n gObj.notify(e.requestType + \"-begin\", e);\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n return;\n }\n if (gObj.allowSelection && (args.action === 'clearFilter' || (args.requestType === 'searching' && args.searchString === '') ||\n args.action === 'add')) {\n gObj.selectionModule['rmtHdrChkbxClicked'] = false;\n }\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage &&\n (args.action === 'add' && args.requestType === 'save') && gObj.pagerModule.pagerObj.checkAll) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + 1 } }, true);\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n // eslint-disable-next-line max-len\n if (!(currentViewData - dataLength) && count && ((gObj.pageSettings.currentPage - 1) * gObj.pageSettings.pageSize) === count) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && (_this.parent.enableVirtualization ? _this.parent.lazyLoadRender :\n _this.parent.contentModule).getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[\"\" + detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].template) {\n blazorTemplates[gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid, 'Template');\n }\n if (gridColumns[parseInt(i.toString(), 10)].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[parseInt(i.toString(), 10)].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[parseInt(k.toString(), 10)].columns.length; j++) {\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n var maskRow = (gObj.loadingIndicator.indicatorType === 'Shimmer' && args.requestType !== 'virtualscroll'\n && args.requestType !== 'infiniteScroll') || ((args.requestType === 'virtualscroll' || args.requestType === 'infiniteScroll')\n && gObj.enableVirtualMaskRow);\n if (args.requestType !== 'virtualscroll' && !args.isCaptionCollapse && !maskRow) {\n this.parent.showSpinner();\n }\n if (maskRow) {\n gObj.showMaskRow(args.requestType === 'virtualscroll' ? args.virtualInfo.sentinelInfo.axis\n : args.requestType === 'infiniteScroll' ? args.direction : undefined);\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + literals.content), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var gObj = this.parent;\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage && gObj.pagerModule.pagerObj.checkAll) {\n var dataLength = args['changes'].addedRecords.length;\n if (dataLength) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + dataLength } }, true);\n }\n }\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n var query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n promise.then(function (e) {\n _this.data.getData(args, query)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n *\n * @returns {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector(literals.tbody);\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var spanCount = 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var tr = this.parent.createElement('tr', { className: 'e-emptyrow' });\n tr.appendChild(this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() }\n }));\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[parseInt(i.toString(), 10)].field || '', data);\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)][\"\" + cFormat])) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)][\"\" + cFormat];\n }\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules)\n && !isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo])) {\n columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0] = this.parent.element.id + columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0];\n }\n if (columns[parseInt(i.toString(), 10)].isForeignColumn() && columns[parseInt(i.toString(), 10)].columnData) {\n value = getObject(columns[parseInt(i.toString(), 10)].foreignKeyValue || '', columns[parseInt(i.toString(), 10)].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[parseInt(i.toString(), 10)].type) {\n columns[parseInt(i.toString(), 10)].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[parseInt(i.toString(), 10)].type = columns[parseInt(i.toString(), 10)].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[parseInt(i.toString(), 10)].format && (columns[parseInt(i.toString(), 10)].format.skeleton\n || (columns[parseInt(i.toString(), 10)].format.format &&\n typeof columns[parseInt(i.toString(), 10)].format.format === 'string'))) {\n columns[parseInt(i.toString(), 10)].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[parseInt(i.toString(), 10)].format)));\n columns[parseInt(i.toString(), 10)].setParser(valueFormatter.getParserFunction(columns[parseInt(i.toString(), 10)].format));\n }\n if (typeof (columns[parseInt(i.toString(), 10)].format) === 'string') {\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n else if (!columns[parseInt(i.toString(), 10)].format && columns[parseInt(i.toString(), 10)].type === 'number') {\n columns[parseInt(i.toString(), 10)].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n if (columns[parseInt(i.toString(), 10)].type === 'dateonly' && !columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = 'yMd';\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * @param {ReturnType} e - specifies the return type\n * @param {NotifyArgs} args - specifies the Notifyargs\n * @returns {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.enableLazyLoading && (args.requestType === 'delete' || (args.requestType === 'save' &&\n this.parent.infiniteScrollModule.requestType === 'add' && !(gObj.sortSettings.columns.length ||\n gObj.filterSettings.columns.length || this.parent.groupSettings.columns.length || gObj.searchSettings.key)));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n if (args && args.requestType !== 'infiniteScroll') {\n _this.parent.notify(events.commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (dataArgs.count && !gObj.allowPaging && (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) {\n gObj.totalDataRecordsCount = dataArgs.count;\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n gObj.removeMaskRow();\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n if ((_this.parent.isReact || _this.parent.isVue) && !isNullOrUndefined(args) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n clearReactVueTemplates(_this.parent, ['footerTemplate']);\n }\n if (_this.parent.isAngular && _this.parent.allowGrouping && _this.parent.groupSettings.captionTemplate\n && !(!isNullOrUndefined(args) && args.requestType === 'infiniteScroll')) {\n _this.parent.destroyTemplate(['groupSettings_captionTemplate']);\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[\"\" + content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (args && args.isCaptionCollapse) {\n return;\n }\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.' + literals.content), false);\n gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(events.contentReady, { rows: gObj.getRowsObject(), args: {} });\n }\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = _this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n if ('query' in e) {\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n }\n });\n };\n /**\n * @param {object} e - specifies the object\n * @param {Object[]} e.result - specifies the result\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n Render.prototype.dataManagerFailure = function (e, args) {\n if (!isNullOrUndefined(this.parent.contentModule)) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + literals.content), { busy: false, invalid: true });\n this.setRowCount(1);\n }\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n this.parent.removeMaskRow();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.getHeaderTable(), {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n }\n prepareColumns(this.parent.columns, null, this.parent);\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[parseInt(i.toString(), 10)]] === 'object'\n && obj[keys[parseInt(i.toString(), 10)]] && !(obj[keys[parseInt(i.toString(), 10)]] instanceof Date) ?\n Object.keys(obj[keys[parseInt(i.toString(), 10)]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[parseInt(i.toString(), 10)]], field + (keys[parseInt(i.toString(), 10)] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[parseInt(i.toString(), 10)];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[\"\" + e] !== 'BlazId'; }).\n map(function (field) { return complexCols[\"\" + field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[parseInt(i.toString(), 10)] = { 'field': columns[parseInt(i.toString(), 10)] };\n if (this.parent.enableColumnVirtualization) {\n cols[parseInt(i.toString(), 10)].width = !isNullOrUndefined(cols[parseInt(i.toString(), 10)].width) ?\n cols[parseInt(i.toString(), 10)].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /**\n * @param {ReturnType} e - specifies the Return type\n * @returns {Promise} returns the object\n * @hidden\n */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[parseInt(index.toString(), 10)];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[parseInt(i.toString(), 10)].field, 'equal', groups[parseInt(i.toString(), 10)].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[parseInt(i.toString(), 10)].field).and(this.getPredicate('key', 'equal', elements[parseInt(i.toString(), 10)].key))))[0];\n elements[parseInt(i.toString(), 10)].count = uGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var types = row.columns[parseInt(k.toString(), 10)].type instanceof Array ?\n (row.columns[parseInt(k.toString(), 10)].type) :\n [(row.columns[parseInt(k.toString(), 10)].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[parseInt(k.toString(), 10)].field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n var temp = row.columns[parseInt(k.toString(), 10)]\n .customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = temp ? temp.call(context, data_1, row.columns[parseInt(k.toString(), 10)]) : '';\n }\n else {\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = DataUtil.aggregates[types[parseInt(l.toString(), 10)].toLowerCase()](data, row.columns[parseInt(k.toString(), 10)].field);\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n this.cellRenderMap[\"\" + name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[\"\" + name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n /** @hidden */\n this.isCustomDialog = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.filterDialogClose, handler: this.closeCustomDialog },\n { event: events.refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: events.renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: events.filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: events.customFilterClose, handler: this.customExFilterClose },\n { event: events.refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-res-back-btn' + ' ' + this.parent.cssClass : 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter }, args.col);\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col) {\n var _this = this;\n var gObj = this.parent;\n if (col) {\n this.filterParent = this.parent.createElement('div', { className: 'e-mainfilterdiv e-default-filter', id: col.uid + '-main-filter' });\n return this.filterParent;\n }\n else {\n var cols = gObj.getColumns();\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv', styles: 'width: 100%' });\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[parseInt(i.toString(), 10)].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible || (!cols[parseInt(i.toString(), 10)].allowSorting && isSort)\n || (!cols[parseInt(i.toString(), 10)].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[parseInt(i.toString(), 10)].field);\n cDiv.setAttribute('data-e-mappinguid', cols[parseInt(i.toString(), 10)].uid);\n var span = gObj.createElement('span', { innerHTML: cols[parseInt(i.toString(), 10)].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[parseInt(i.toString(), 10)].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[parseInt(i.toString(), 10)].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? 'e-ressortbutton' + ' ' + this.parent.cssClass : 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n var buttonInnerText = void 0;\n if ((!isNullOrUndefined(this.parent.sortSettings.columns[parseInt(index.toString(), 10)]))) {\n buttonInnerText = (this.parent.sortSettings.columns[parseInt(index.toString(), 10)].direction === 'Ascending') ?\n this.parent.localeObj.getConstant('AscendingText') : this.parent.localeObj.getConstant('DescendingText');\n }\n button.innerHTML = index > -1 ? buttonInnerText : this.parent.localeObj.getConstant('NoneText');\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[parseInt(i.toString(), 10)].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n EventHandler.add(this.customColumnDiv, 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)][\"\" + name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var directionTxt = txt === this.parent.localeObj.getConstant('NoneText') ? this.parent.localeObj.getConstant('AscendingText')\n : txt === this.parent.localeObj.getConstant('AscendingText') ? this.parent.localeObj.getConstant('DescendingText')\n : this.parent.localeObj.getConstant('NoneText');\n var direction = directionTxt === this.parent.localeObj.getConstant('AscendingText') ? 'Ascending'\n : directionTxt === this.parent.localeObj.getConstant('DescendingText') ? 'Descending' : 'None';\n target.innerHTML = directionTxt;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.getElementsByClassName('e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[parseInt(i.toString(), 10)] !== target) {\n buttons[parseInt(i.toString(), 10)].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[parseInt(i.toString(), 10)]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n var gObj = this.parent;\n var target = e.target;\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * Function to show the responsive dialog\n *\n * @param {Column} col - specifies the column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col) {\n if (this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) {\n this.renderCustomFilterDialog();\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n if (this.action === ResponsiveDialogAction.isSort) {\n var args = {\n cancel: false, dialogObj: this.customResponsiveDlg, requestType: 'beforeOpenAptiveSortDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'customfilter',\n className: this.parent.cssClass ?\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true);\n var args = {\n cancel: false, dialogObj: this.customFilterDlg, requestType: 'beforeOpenAptiveFilterDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n this.customFilterDlg.appendTo(outerDiv);\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n options[\"\" + isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n options.cssClass = 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader(col);\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id,\n className: this.parent.cssClass ?\n 'e-res' + id + 'div e-responsive-dialog ' + this.parent.cssClass : 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field);\n var sortField = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field;\n var sortDirection = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[parseInt(i.toString(), 10)].field, this.sortPredicate[parseInt(i.toString(), 10)].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args, col) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = col ? col.headerText || col.field : gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort) {\n text = 'OKButton';\n }\n return text;\n };\n /**\n * Function to render the responsive header\n *\n * @param {Column} col - specifies the column\n * @param {ResponsiveDialogArgs} args - specifies the responsive dialog arguments\n * @param {boolean} isCustomFilter - specifies whether it is custom filter or not\n * @returns {HTMLElement | string} returns the html element or string\n */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (col, args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args, col);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: this.parent.cssClass ?\n 'e-primary e-flat e-res-apply-btn' + ' ' + this.parent.cssClass : 'e-primary e-flat e-res-apply-btn'\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-primary e-flat e-res-' + id_1 + '-clear-btn' + ' ' + this.parent.cssClass\n : 'e-primary e-flat e-res-' + id_1 + '-clear-btn'\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[parseInt(i.toString(), 10)].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, 'click', this.customFilterColumnClickHandler);\n }\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[parseInt(j.toString(), 10)], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n var index = this.parent.getColumnIndexByField(collection[parseInt(i.toString(), 10)].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[parseInt(i.toString(), 10)].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[parseInt(k.toString(), 10)].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[parseInt(k.toString(), 10)].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol;\n var frzCols = this.parent.getFrozenColumns();\n var isDraggable = this.parent.isRowDragable();\n frzCols = frzCols && isDraggable ? frzCols + 1 : frzCols;\n var mHdr = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var mCont = this.parent.getContent().querySelector('.' + literals.movableContent);\n var freezeLeft = this.parent.getFrozenLeftColumnsCount();\n var freezeRight = this.parent.getFrozenRightColumnsCount();\n var movableCount = this.parent.getMovableColumnsCount();\n var isColFrozen = freezeLeft !== 0 || freezeRight !== 0;\n if (frzCols && index >= frzCols) {\n if (!mHdr || !mHdr.querySelector(literals.colGroup)) {\n return;\n }\n headerCol = mHdr\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mHdr.scrollLeft > 0) {\n var colGroup = mHdr.querySelector(literals.colGroup);\n headerCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n index = isDraggable ? index - 1 : index;\n target = index < freezeLeft ? header : mHdr;\n }\n else if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? header : mHdr;\n }\n else if (freezeLeft && freezeRight) {\n index = isDraggable ? index - 1 : index;\n var frHdr = this.parent.getFrozenRightHeader();\n target = index < freezeLeft ? header : index < (freezeLeft + movableCount) ? mHdr : frHdr;\n }\n headerCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n if (!headerCol) {\n return;\n }\n }\n else {\n headerCol = header.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n }\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol;\n if (frzCols && index >= frzCols) {\n contentCol = this.parent.getContent().querySelector('.' + literals.movableContent)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mCont.scrollLeft > 0) {\n var colGroup = this.parent.getContent().querySelector('.' + literals.movableContent)\n .querySelector(literals.colGroup);\n contentCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n target = index < freezeLeft ? content : mCont;\n }\n if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? content : mCont;\n }\n if (freezeLeft && freezeRight) {\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n target = index < freezeLeft ? content : index < (freezeLeft + movableCount) ? mCont : frCont;\n }\n contentCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n }\n else {\n contentCol = content.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n }\n if (contentCol && !clear) {\n if (contentCol.style.width !== headerCol.style.width && this.parent.isFrozenGrid() && this.parent['reorderModule'] &&\n this.parent['reorderModule'].element && this.parent['reorderModule'].destElement) {\n contentCol.style.display = this.parent.getColumnByIndex(index).visible ? '' : 'none';\n }\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization) {\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[parseInt(i.toString(), 10)], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[parseInt(i.toString(), 10)].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[parseInt(i.toString(), 10)].querySelector('colgroup').children[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshFrozenScrollbar();\n }\n };\n ColumnWidthService.prototype.getColumnLevelFrozenColgroup = function (index, left, movable, ele) {\n if (!ele || !ele.querySelector(literals.colGroup)) {\n return null;\n }\n var columns = this.parent.getColumns();\n var isDrag = this.parent.isRowDragable();\n var frzMode = this.parent.getFrozenMode();\n var headerCol;\n var colGroup = [].slice.call(ele.querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children);\n if (frzMode === 'Right' && isDrag && index === (movable + this.parent.getFrozenRightColumnsCount())) {\n headerCol = colGroup[colGroup.length - 1];\n }\n else if (isDrag && index === -1) {\n headerCol = colGroup[0];\n }\n else if (columns[parseInt(index.toString(), 10)].freeze === 'Left') {\n headerCol = colGroup[isDrag ? (index + 1) : index];\n }\n else if (columns[parseInt(index.toString(), 10)].freeze === 'Right') {\n headerCol = colGroup[index - (left + movable)];\n }\n else {\n headerCol = colGroup[index - left];\n }\n return headerCol;\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var frozenScrollbar = this.parent.element.querySelector('.e-frozenscrollbar');\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var frozencontent = this.parent.getContent().querySelector('.' + literals.frozenContent);\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent);\n var frozenWidth = frozencontent.firstElementChild.getBoundingClientRect().width;\n var movableWidth = movableContent.firstElementChild.getBoundingClientRect().width;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenWidth = frozenWidth + scrollWidth;\n }\n frozenScrollbar.style.width = frozenWidth + 'px';\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frozenRightScrollbar = this.parent.element.querySelector('.e-frozen-right-scrollbar');\n var frozenRightWidth = this.parent.getContent().querySelector('.e-frozen-right-content')\n .firstElementChild.getBoundingClientRect().width;\n if (this.parent.height !== 'auto') {\n frozenRightWidth = frozenRightWidth + scrollWidth;\n }\n frozenRightScrollbar.style.width = frozenRightWidth + 'px';\n }\n else {\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getMovableVirtualContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.getFrozenMode() !== 'Right' && this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = [literals.gridHeader, literals.gridFooter, 'e-groupdroparea', 'e-gridpager', 'e-toolbar', 'e-temp-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (this.parent.isFrozenGrid() && isNullOrUndefined(column.width) &&\n (column.getFreezeTableName() === literals.frozenLeft || column.getFreezeTableName() === literals.frozenRight)) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.calcMovableOrFreezeColWidth = function (tableType) {\n var columns = this.parent.getColumns().slice();\n var left = this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (tableType === 'movable') {\n if (right) {\n columns.splice(left + movable, columns.length);\n }\n if (left) {\n columns.splice(0, left);\n }\n }\n else if (tableType === 'freeze-left') {\n columns.splice(left, columns.length);\n }\n else if (tableType === 'freeze-right') {\n columns.splice(0, left + movable);\n }\n return formatUnit(this.getTableWidth(columns));\n };\n ColumnWidthService.prototype.setWidthToFrozenRightTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-right');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n var headerTbl = this.parent.getHeaderContent().querySelector('.e-frozen-right-header')\n .querySelector('.' + literals.table + ':not(.e-masked-table)');\n var cntTbl = this.parent.getContent().querySelector('.e-frozen-right-content')\n .querySelector('.' + literals.table + ':not(.e-masked-table)');\n headerTbl.style.width = freezeWidth;\n cntTbl.style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenLeftTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-left');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.getHeaderTable().style.width = freezeWidth;\n this.parent.getContentTable().style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableTable = function () {\n var movableWidth = '';\n var isColUndefined = this.parent.getColumns().filter(function (a) { return isNullOrUndefined(a.width); }).length >= 1;\n var isWidthAuto = this.parent.getColumns().filter(function (a) { return (a.width === 'auto'); }).length >= 1;\n var movableHeader = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent);\n if (typeof this.parent.width === 'number' && !isColUndefined && !isWidthAuto && !this.parent.resizeModule.resizeProcess) {\n movableWidth = formatUnit(this.parent.width - parseInt(this.calcMovableOrFreezeColWidth('freeze').split('px')[0], 10) - 5);\n }\n else if (!isColUndefined && !isWidthAuto) {\n movableWidth = this.calcMovableOrFreezeColWidth('movable');\n }\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n if (movableHeader.firstElementChild) {\n if (movableHeader.firstElementChild.classList.contains('e-masked-table')) {\n movableHeader.childNodes[1].style.width = movableWidth;\n }\n else {\n movableHeader.firstElementChild.style.width = movableWidth;\n }\n }\n if (movableContent.firstElementChild.classList.contains('e-masked-table')) {\n movableContent.childNodes[1].style.width = movableWidth;\n }\n else {\n movableContent.firstElementChild.style.width = movableWidth;\n }\n };\n ColumnWidthService.prototype.setWidthToFrozenEditTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[0].style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableEditTable = function () {\n var movableWidth = this.calcMovableOrFreezeColWidth('movable');\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[1].style.width = movableWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.isFrozenGrid()) {\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n this.setWidthToFrozenLeftTable();\n }\n this.setWidthToMovableTable();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.setWidthToFrozenRightTable();\n }\n }\n else {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n }\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit && this.parent.getFrozenColumns()) {\n this.setWidthToFrozenEditTable();\n this.setWidthToMovableEditTable();\n }\n else if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil, addRemoveEventListener, findCellIndex } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.firstHeaderCellClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.firstHeaderCellClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function (e) {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization\n || this.parent.element.querySelector('.e-masked-table') || (!this.parent.isInitialLoad && e\n && e.target === this.parent.element && this.parent.element.querySelector('.e-spin-show'))) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0, this.parent.isFrozenGrid());\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule && !this.parent.editModule.getBatchChanges()[literals.addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus && !(e && e.target === this.parent.element)) {\n this.focus(e);\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell');\n var lastRowCell = this.parent.getContentTable().querySelector('tr:last-child td:last-child');\n if ((e.target === firstHeaderCell || lastRowCell) && e.relatedTarget && !parentsUntil(e.relatedTarget, 'e-grid')\n && !this.firstHeaderCellClick) {\n this.currentInfo.element = e.target;\n this.currentInfo.elementToFocus = e.target;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n this.firstHeaderCellClick = false;\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n // The below boolean condition for gantt team focus fix.\n var isGantt = parentsUntil(e.target, 'e-gantt') && e.target.classList.contains('e-rowcell')\n && (!isNullOrUndefined(e.target.nextElementSibling)\n && e.target.nextElementSibling.classList.contains('e-rowcell')) ? true : false;\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid'))\n && !(this.parent.element.classList.contains('e-childgrid') && !this.parent.element.matches(':focus-within')))\n && !(!isGantt && isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('data-colindex'), 10) === 0\n && parseInt(e.target.getAttribute('index'), 10) === 0) && !(!isGantt && isNullOrUndefined(e.relatedTarget)\n && !closest(document.activeElement, '.e-grid') && !isNullOrUndefined(e['sourceCapabilities']))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.setLastContentCellTabIndex();\n this.setFirstFocusableTabIndex();\n this.firstHeaderCellClick = false;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.setFirstFocusableTabIndex = function () {\n var gObj = this.parent;\n gObj.element.tabIndex = -1;\n if (gObj.allowGrouping && gObj.groupSettings.showDropArea) {\n var groupModule = gObj.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n groupModule.element.tabIndex = -1;\n focusableGroupedItems[0].tabIndex = 0;\n }\n else {\n groupModule.element.tabIndex = 0;\n }\n return;\n }\n if (gObj.toolbar || gObj.toolbarTemplate) {\n var toolbarElement = gObj.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0 && focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input')) {\n toolbarElement.tabIndex = -1;\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').tabIndex = 0;\n }\n else {\n toolbarElement.tabIndex = 0;\n }\n return;\n }\n if (gObj.getColumns().length) {\n var firstHeaderCell = gObj.getHeaderContent().querySelector('.e-headercell');\n firstHeaderCell.tabIndex = 0;\n if (this.parent.isFrozenGrid() && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === literals.leftRight)) {\n this.setActive(false, true);\n }\n else {\n this.setActive(false);\n }\n if (!isNullOrUndefined(this.active) && (isNullOrUndefined(this.active.target) || !this.active.target.classList.contains('e-columnmenu'))) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n }\n return;\n }\n };\n FocusStrategy.prototype.setLastContentCellTabIndex = function () {\n var contentTable = this.parent.getContentTable();\n if (contentTable.rows[contentTable.rows.length - 1]) {\n var lastCell = contentTable.rows[contentTable.rows.length - 1].lastElementChild;\n lastCell.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') && (parentsUntil(e.target, 'e-multiselect') ||\n e.target.classList.contains('e-input-group-icon'))) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + literals.gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + literals.gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n var isFrozen = !isNullOrUndefined(closest(e.target, '.' + literals.frozenContent)) ||\n !isNullOrUndefined(closest(e.target, '.' + literals.frozenHeader));\n var isFrozenRight = false;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n isFrozenRight = !isNullOrUndefined(closest(e.target, '.e-frozen-right-content')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozen-right-header'));\n isFrozen = isFrozen && !isFrozenRight;\n }\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n if (this.parent.isFrozenGrid() && isHeader && e.target === this.parent.getHeaderContent().firstChild\n && this.active.matrix.current[0] === -1 && this.active.matrix.current[1] === this.active.matrix.columns) {\n this.active.matrix.current = [0, 0];\n }\n this.focus();\n if (this.currentInfo.element.classList.contains('e-rowcell')) {\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n var isFrozenGrid = this.parent.isFrozenGrid();\n if (this.parent.allowPaging) {\n var pagerElement = this.parent.pagerModule.pagerObj.element;\n var focusablePagerElements = this.parent.pagerModule.pagerObj.getFocusablePagerElements(pagerElement, []);\n if (this.parent.childGrid && this.allowToPaging(e) && focusablePagerElements.length) {\n focusablePagerElements[0].tabIndex = 0;\n }\n if (this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n if (e.action === 'shiftTab' && focusablePagerElements.length && focusablePagerElements[0] === e.target) {\n this.setActive(true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(lastHeaderCellIndex) ? lastHeaderCellIndex :\n this.findBatchEditCell(lastHeaderCellIndex, false) : lastHeaderCellIndex;\n e.preventDefault();\n this.focus(e);\n return;\n }\n if (!(e.action === 'tab' && this.parent.element.classList.contains('e-childgrid')\n && ((!this.parent.pageSettings.pageSizes && focusablePagerElements.length\n && focusablePagerElements[focusablePagerElements.length - 1] === e.target)\n || (this.parent.pagerModule.pagerObj.getDropDownPage() === e.target)))) {\n this.parent.pagerModule.pagerObj.changePagerFocus(e);\n return;\n }\n else {\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n }\n }\n if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9))) {\n e.preventDefault();\n this.focus(e);\n return;\n }\n else if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && e.keyCode === 9) {\n e.preventDefault();\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n if (this.parent.pagerModule.pagerObj.checkFirstPagerFocus()) {\n var lastRow = this.getContent().matrix.rows;\n var lastColumn = this.getContent().matrix.columns;\n this.getContent().matrix.current = [lastRow, lastColumn];\n }\n }\n if (this.skipOn(e)) {\n return;\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent') && !isFrozenGrid) {\n var rows = [].slice.call(this.parent.getContentTable().rows);\n var lastCell = rows[rows.length - 1].lastElementChild;\n if (e.target === lastCell) {\n this.setActive(true);\n this.setLastContentCellActive();\n }\n }\n if (e.action === 'shiftTab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (e.target === this.parent.element) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n if (parentsUntil(e.target, 'e-toolbar')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n }\n else if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n }\n var focusFirstHeaderCell = false;\n if (e.action === 'tab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea\n && (e.target === this.parent.element || e.target.classList.contains('e-groupdroparea'))) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n e.preventDefault();\n focusableGroupedItems[0].focus();\n return;\n }\n if (!e.target.classList.contains('e-groupdroparea')) {\n e.preventDefault();\n groupModule.element.focus();\n return;\n }\n }\n if ((this.parent.toolbar || this.parent.toolbarTemplate) && (e.target === this.parent.element\n || parentsUntil(e.target, 'e-groupdroparea')\n || e.target.classList.contains('e-toolbar'))) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0) {\n e.preventDefault();\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n return;\n }\n if (!e.target.classList.contains('e-toolbar')) {\n e.preventDefault();\n toolbarElement.focus();\n return;\n }\n }\n if (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')) {\n focusFirstHeaderCell = true;\n }\n }\n if (focusFirstHeaderCell) {\n if (isFrozenGrid && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === literals.leftRight)) {\n this.setActive(false, true);\n }\n else if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.setActive(true);\n }\n else {\n this.setActive(false);\n }\n this.active.matrix.current = [0, -1];\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n var prevActiveName = this.getActiveName();\n var prevBatchValue = this.active && this.active.matrix.current ?\n [this.active.matrix.current[0], this.active.matrix.current[1]] : undefined;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap && !(isFrozenGrid && this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader, swapInfo.toFrozen, swapInfo.toFrozenRight);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = isFrozenGrid && this.parent.editSettings.mode === 'Batch' && e.target && (e.action === 'tab'\n || e.action === 'shiftTab') && (parentsUntil(e.target, 'e-gridheader')\n || parentsUntil(e.target, 'e-gridcontent')) ? undefined\n : this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (!isFrozenGrid) {\n if (e.action === 'tab' && bValue.toString() === this.active.matrix.current.toString()) {\n var nextHeaderCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n if (this.active.matrix.current.toString() === lastHeaderCellIndex.toString()) {\n returnVal = true;\n this.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(firstContentCellIndex) ? firstContentCellIndex :\n this.findBatchEditCell(firstContentCellIndex, true) : firstContentCellIndex;\n }\n else if (this.active.matrix.current.toString() !== nextHeaderCellIndex.toString()) {\n this.active.matrix.current = nextHeaderCellIndex;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n var previousCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, false);\n if (previousCellIndex.toString() === this.active.matrix.current.toString()) {\n this.focusOutFromHeader(e);\n return;\n }\n if (this.active.matrix.current.toString() !== previousCellIndex.toString() && !returnVal) {\n returnVal = true;\n this.active.matrix.current = previousCellIndex;\n }\n }\n }\n else {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.setFrozenBatchEditCell(prevActiveName, prevBatchValue, e.action === 'tab' ? true : false);\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString() && !swapInfo.swap\n && !(this.parent.editSettings.mode === 'Batch' && !(this.getActiveName() === prevActiveName))) {\n this.focusOutFromHeader(e);\n return;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (!isFrozenGrid) {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.active.matrix.current = this.findBatchEditCell(prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.focusOutFromHeader(e);\n return;\n }\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n if (!returnVal && (firstContentCellIndex.toString() === this.active.matrix.current.toString()\n || (this.parent.editSettings.mode === 'Batch'\n && prevBatchValue.toString() === this.active.matrix.current.toString()))) {\n returnVal = true;\n this.setActive(false);\n this.setLastContentCellActive();\n }\n }\n }\n else {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.setFrozenBatchEditCell(prevActiveName, prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()\n && this.getActiveName() === prevActiveName) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n }\n }\n if (returnVal === false) {\n this.clearIndicator();\n if (e.action === 'shiftTab' && bValue.toString() === [0, 0].toString()) {\n this.parent.element.tabIndex = -1;\n }\n if (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus() && this.allowToPaging(e)\n && bValue.toString() !== [0, 0].toString()) {\n e.preventDefault();\n if (e.keyCode === 40) {\n this.parent.pagerModule.pagerObj.setPagerContainerFocus();\n return;\n }\n else if (e.keyCode === 9) {\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.isValidBatchEditCell = function (cellIndex) {\n var cell = this.active.getTable().rows[cellIndex[0]].cells[cellIndex[1]];\n var tr = closest(cell, 'tr');\n var cellColIndex = parseInt(cell.getAttribute('data-colindex'), 10);\n var cellCol = this.parent.getColumns()[parseInt(cellColIndex.toString(), 10)];\n if (this.active.matrix.matrix[cellIndex[0]][cellIndex[1]] === 1\n && (!tr.classList.contains('e-row') || (tr.classList.contains('e-insertedrow') || !cellCol.isPrimaryKey) && cellCol.allowEditing)) {\n return true;\n }\n return false;\n };\n FocusStrategy.prototype.findBatchEditCell = function (currentCellIndex, next, limitRow) {\n var cellIndex = currentCellIndex;\n var tempCellIndex = currentCellIndex;\n var cellIndexObtain = false;\n while (!cellIndexObtain) {\n var prevTempCellIndex = tempCellIndex;\n tempCellIndex = findCellIndex(this.active.matrix.matrix, tempCellIndex, next);\n if ((prevTempCellIndex.toString() === tempCellIndex.toString())\n || (limitRow && prevTempCellIndex[0] !== tempCellIndex[0])) {\n cellIndexObtain = true;\n continue;\n }\n if (this.isValidBatchEditCell(tempCellIndex)) {\n cellIndex = tempCellIndex;\n cellIndexObtain = true;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.setFrozenBatchEditCell = function (currentActiveName, currentCellIndex, next, nextRow) {\n var gObj = this.parent;\n var nextCell;\n var nextSection = false;\n if (nextRow !== undefined) {\n nextCell = [nextRow, next ? 0 : this.active.matrix.matrix[parseInt(nextRow.toString(), 10)].length - 1];\n }\n else {\n nextCell = next ? [currentCellIndex[0], currentCellIndex[1] + 1] : [currentCellIndex[0], currentCellIndex[1] - 1];\n }\n if (this.active.matrix.matrix[nextCell[0]] && this.active.matrix.matrix[nextCell[0]][nextCell[1]]) {\n if (this.isValidBatchEditCell(nextCell)) {\n this.active.matrix.current = nextCell;\n }\n else {\n var prevNextCell = nextCell;\n nextCell = this.findBatchEditCell(nextCell, next, true);\n if (prevNextCell.toString() === nextCell.toString()) {\n nextSection = true;\n }\n else {\n this.active.matrix.current = nextCell;\n }\n }\n }\n else {\n nextSection = true;\n }\n if (nextSection) {\n var activeName = this.getActiveName();\n var frozenMode = gObj.getFrozenMode();\n var rowIndex = nextCell[0];\n var rowDec = rowIndex - 1;\n var rowInc = rowIndex + 1;\n var notPrev = !next && rowDec === -1;\n var notNext = next && rowInc > this.active.matrix.matrix.length - 1;\n var returnCurrentActiveName = ((activeName === 'FrozenLeftHeader' || (activeName === 'Movableheader'\n && frozenMode === 'Right')) && notPrev) || ((activeName === 'FrozenRightContent' || (activeName === 'MovableContent'\n && frozenMode === 'Left')) && notNext);\n if (returnCurrentActiveName) {\n this.setActiveByName(currentActiveName);\n this.active.matrix.current = currentCellIndex;\n }\n else {\n var frozenLeftRightPrev = frozenMode === 'Left-Right' && !next;\n var frozenLeftRightNext = frozenMode === 'Left-Right' && next;\n var frozenLeftNotNext = frozenMode === 'Left' && notNext;\n var frozenLeftNext = frozenMode === 'Left' && next;\n var frozenRightPrev = frozenMode === 'Right' && !next;\n var frozenRightNotPrev = frozenMode === 'Right' && notPrev;\n var content = (activeName === 'Movableheader' && frozenLeftNotNext) || (activeName === 'FrozenRightHeader'\n && notNext) || (activeName === 'FrozenLeftContent' && !notPrev) || (activeName === 'MovableContent'\n && !frozenRightNotPrev) || activeName === 'FrozenRightContent';\n var frozenContent = ((activeName === 'Movableheader' || activeName === 'MovableContent')\n && !frozenLeftRightNext) || ((activeName === 'FrozenRightHeader' || activeName === 'FrozenRightContent')\n && frozenLeftRightNext);\n var frozenRightContent = ((activeName === 'FrozenLeftHeader' || activeName === 'FrozenLeftContent')\n && frozenLeftRightPrev) || ((activeName === 'Movableheader' || activeName === 'MovableContent')\n && frozenLeftRightNext);\n this.setActive(content, frozenContent, frozenRightContent);\n var nextIndex = (activeName === 'Movableheader' && frozenLeftNotNext)\n || (activeName === 'FrozenRightHeader' && notNext) ? 0\n : ((activeName === 'Movableheader' || activeName === 'MovableContent') && frozenLeftNext)\n || ((activeName === 'FrozenRightHeader' || activeName === 'FrozenRightContent') && next) ? rowInc\n : (activeName === 'FrozenLeftContent' && notPrev)\n || (activeName === 'MovableContent' && frozenRightNotPrev) ? this.active.matrix.matrix.length - 1\n : ((activeName === 'FrozenLeftHeader' || activeName === 'FrozenLeftContent') && !next)\n || ((activeName === 'Movableheader' || activeName === 'MovableContent') && frozenRightPrev) ? rowDec\n : rowIndex;\n this.setFrozenBatchEditCell(currentActiveName, currentCellIndex, next, nextIndex);\n }\n }\n };\n FocusStrategy.prototype.getActiveName = function () {\n var activeName;\n if (this.active) {\n var activeTable = this.active.getTable();\n activeName = parentsUntil(activeTable, 'e-frozen-left-header') ? 'FrozenLeftHeader' :\n parentsUntil(activeTable, 'e-movableheader') ? 'Movableheader' :\n parentsUntil(activeTable, 'e-frozen-right-header') ? 'FrozenRightHeader' :\n parentsUntil(activeTable, 'e-frozen-left-content') ? 'FrozenLeftContent' :\n parentsUntil(activeTable, 'e-movablecontent') ? 'MovableContent' :\n parentsUntil(activeTable, 'e-frozen-right-content') ? 'FrozenRightContent' :\n undefined;\n }\n return activeName;\n };\n FocusStrategy.prototype.setActiveByName = function (activeName) {\n var frozenMode = this.parent.getFrozenMode();\n switch (activeName) {\n case 'FrozenLeftHeader':\n this.setActive(false, true);\n break;\n case 'Movableheader':\n this.setActive(false);\n break;\n case 'FrozenRightHeader':\n this.setActive(false, frozenMode === 'Right' ? true : false, frozenMode === 'Right' ? false : true);\n break;\n case 'FrozenLeftContent':\n this.setActive(true, true);\n break;\n case 'MovableContent':\n this.setActive(true);\n break;\n case 'FrozenRightContent':\n this.setActive(true, frozenMode === 'Right' ? true : false, frozenMode === 'Right' ? false : true);\n break;\n }\n };\n FocusStrategy.prototype.setLastContentCellActive = function () {\n var lastContentCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.active.matrix.matrix, lastContentCellIndex, false);\n }\n this.active.matrix.current = lastContentCellIndex;\n };\n FocusStrategy.prototype.focusOutFromChildGrid = function (e) {\n var parentTable = parentsUntil(this.parent.element, 'e-table');\n var parentGrid = parentsUntil(parentTable, 'e-grid').ej2_instances[0];\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n var uid = parentsUntil(this.parent.element, 'e-detailrow').getAttribute('data-uid');\n var parentRows = [].slice.call(parentGrid.getContentTable().rows);\n var parentRowIndex = parentRows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (e.action === 'tab' && parentRowIndex >= parentRows.length - 1) {\n return;\n }\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n e.preventDefault();\n var nextFocusCell;\n parentGrid.focusModule.removeFocus();\n if (e.action === 'shiftTab') {\n var previousRow = parentRows[parentRowIndex - 1];\n var rowCells = previousRow.cells;\n for (var i = rowCells.length - 1; i >= 0; i--) {\n nextFocusCell = rowCells[parseInt(i.toString(), 10)];\n if (!nextFocusCell.classList.contains('e-hide')) {\n parentGrid.focusModule.active.matrix.current = [parentRowIndex - 1, i];\n break;\n }\n }\n }\n else {\n nextFocusCell = parentRows[parentRowIndex + 1].cells[0];\n parentGrid.focusModule.active.matrix.current = [parentRowIndex + 1, 0];\n }\n parentGrid.focusModule.currentInfo.element = nextFocusCell;\n parentGrid.focusModule.currentInfo.elementToFocus = nextFocusCell;\n addClass([nextFocusCell], ['e-focused', 'e-focus']);\n nextFocusCell.tabIndex = 0;\n nextFocusCell.focus();\n };\n FocusStrategy.prototype.focusOutFromHeader = function (e) {\n this.removeFocus();\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n e.preventDefault();\n if (focusableToolbarItems.length > 0) {\n focusableToolbarItems[focusableToolbarItems.length - 1].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n }\n else {\n toolbarElement.focus();\n }\n return;\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n return;\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n };\n FocusStrategy.prototype.allowToPaging = function (e) {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.allowAdding && e.keyCode !== 40) {\n return false;\n }\n return true;\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n if (this.parent.allowGrouping) {\n var focusableGroupedItems = this.parent.groupModule.getFocusableGroupedItems();\n if (parentsUntil(e.target, 'e-groupheadercell')\n && !((e.target === focusableGroupedItems[0] && e.action === 'shiftTab')\n || (e.target === focusableGroupedItems[focusableGroupedItems.length - 1] && e.action === 'tab'))) {\n return true;\n }\n }\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = toolbarElement\n .querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)');\n if (parentsUntil(e.target, 'e-toolbar-item')\n && !(focusableToolbarItems.length > 0 && ((parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[0] && e.action === 'shiftTab')\n || (parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[focusableToolbarItems.length - 1] && e.action === 'tab')))) {\n return true;\n }\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || ((filterCell && this.parent.enableHeaderFocus) || (filterCell && e.action !== 'tab' && e.action !== 'shiftTab') ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.' + literals.gridContent) === null && closest(target, '.' + literals.gridHeader) === null\n && !(e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')))\n || (e.action === 'space' && (!target.classList.contains(literals.gridChkBox) && closest(target, '.' + literals.gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(event.resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll || this.isInfiniteScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = this.isInfiniteScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content, isFrozen, isFrozenRight) {\n this.active = content ? isFrozen ? this.fContent : isFrozenRight ? this.frContent : this.content :\n isFrozen ? this.fHeader : isFrozenRight ? this.frHeader : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && (!isNullOrUndefined(e) || this.isVirtualScroll);\n if (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && (e.args && e.args.isFrozen) && !_this.fContent) {\n _this.fContent = new FixedContentFocus(_this.parent);\n }\n else if (content && !_this.frContent && (e.args && e.args.renderFrozenRightContent)) {\n _this.frContent = new FixedRightContentFocus(_this.parent);\n }\n else if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && (e.args && e.args.isFrozen) && !_this.fHeader) {\n _this.fHeader = new FixedHeaderFocus(_this.parent);\n }\n else if (!content && (e.args && e.args.renderFrozenRightContent) && !_this.frHeader) {\n _this.frHeader = new FixedRightHeaderFocus(_this.parent);\n }\n else if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? (e.args && e.args.isFrozen) ? _this.fContent : (e.args && e.args.renderFrozenRightContent)\n ? _this.frContent : _this.content : (e.args && e.args.isFrozen) ? _this.fHeader : (e.args && e.args.renderFrozenRightContent)\n ? _this.frHeader : _this.header;\n var rows = content ? e.rows.slice(_this.parent.frozenRows) : e.rows;\n var updateRow = content ? e.rows.slice(0, _this.parent.frozenRows) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n if (e.name === 'batchAdd' && _this.parent.isFrozenGrid()) {\n var mRows = _this.parent.getMovableRowsObject().slice(_this.parent.frozenRows);\n var newMovableRows = mRows.map(function (row) { return row.clone(); });\n var newFrozenRows = rows.map(function (row) { return row.clone(); });\n _this.fContent.matrix.generate(newFrozenRows, _this.fContent.selector, isRowTemplate);\n _this.content.matrix.generate(newMovableRows, _this.content.selector, isRowTemplate);\n if (_this.parent.getFrozenMode() === literals.leftRight) {\n var frRows = _this.parent.getFrozenRightRowsObject().slice(_this.parent.frozenRows);\n var newfrRows = frRows.map(function (row) { return row.clone(); });\n _this.frContent.matrix.generate(newfrRows, _this.frContent.selector, isRowTemplate);\n }\n }\n else {\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n }\n if (!(_this.parent.isFrozenGrid() && ((e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave' || e.args.requestType === 'paging'))\n || e.name === 'batchAdd' || e.name === 'batchCancel'))) {\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: (e.args && e.args.isFrozen) ? _this.fHeader\n : (e.args && e.args.renderFrozenRightContent) ? _this.frHeader : _this.header\n });\n }\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging' && !_this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n if (e && e.args && e.args.requestType === 'infiniteScroll') {\n _this.isInfiniteScroll = true;\n }\n };\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'touchstart', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.evtHandlers = [{ event: event.keyPressed, handler: this.onKeyPress },\n { event: event.click, handler: this.onClick },\n { event: event.contentReady, handler: this.refMatrix },\n { event: event.partialRefresh, handler: this.refMatrix },\n { event: event.refreshExpandandCollapse, handler: this.refMatrix },\n { event: event.headerRefreshed, handler: this.refreshMatrix() },\n { event: event.closeEdit, handler: this.restoreFocus },\n { event: event.restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: event.batchAdd, handler: this.refMatrix },\n { event: event.batchCancel, handler: this.refMatrix },\n { event: event.batchDelete, handler: this.refMatrix },\n { event: event.detailDataBound, handler: this.refMatrix },\n { event: event.onEmpty, handler: this.refMatrix },\n { event: event.cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'touchstart', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && (groupModule.groupSortFocus || groupModule.groupTextFocus)) {\n groupModule.groupSortFocus = false;\n groupModule.groupTextFocus = false;\n return;\n }\n this.firstHeaderCellClick = true;\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && groupModule.groupCancelFocus) {\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length) {\n if (focusableGroupedItems[0].parentElement.getAttribute('ej-mappingname') === e.columnName) {\n focusableGroupedItems[3].focus();\n }\n else {\n focusableGroupedItems[0].focus();\n }\n }\n else {\n groupModule.element.focus();\n }\n groupModule.groupCancelFocus = false;\n return;\n }\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n var _this = this;\n if (!this.parent.isFrozenGrid() && this.parent.frozenRows === 0) {\n return;\n }\n // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: _this.parent.isFrozenGrid() }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[\"\" + action]();\n this.setActive(!swap.toHeader, swap.toFrozen);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[parseInt(rowIndex.toString(), 10)] = this.matrix[parseInt(rowIndex.toString(), 10)] || [];\n this.matrix[parseInt(rowIndex.toString(), 10)][parseInt(columnIndex.toString(), 10)] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[parseInt(rowIndex.toString(), 10)])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n if (tmp + navigator[1] > this.matrix[parseInt(rowIndex.toString(), 10)].length - 1\n && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[parseInt(rowIndex.toString(), 10)], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[parseInt(i.toString(), 10)].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current.length ? this.current[0] : 0;\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[parseInt(index.toString(), 10)])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[parseInt(index.toString(), 10)]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[parseInt(i.toString(), 10)].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n var incrementNumber = 0;\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].column && cells[parseInt(j.toString(), 10)].column.columns) {\n incrementNumber = this.columnsCount(cells[parseInt(j.toString(), 10)].column.columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n this.set(i, j, rows[parseInt(i.toString(), 10)].visible === false ?\n false : selector(rows[parseInt(i.toString(), 10)], cells[parseInt(j.toString(), 10)], isRowTemplate));\n }\n this.columns = Math.max(incrementNumber - 1, this.columns | 0);\n }\n return this.matrix;\n };\n Matrix.prototype.columnsCount = function (rowColumns, currentColumnCount) {\n var columns = rowColumns;\n var incrementNumber = currentColumnCount;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.columnsCount(columns[parseInt(i.toString(), 10)].columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[\"\" + action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getContent().querySelector('.e-movablecontent .e-table') :\n this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var navigator = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigator, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if (((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString())\n || (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus()\n && this.matrix.current[0] === this.matrix.rows && ((this.parent.editSettings.mode === 'Batch'\n && this.parent.editSettings.allowAdding && e.keyCode === 40) || (e.keyCode === 40)))) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString()) || (this.parent.allowGrouping &&\n this.parent.infiniteScrollSettings.enableCache && current.toString() === [0, 1].toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var cell = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') && !cell.classList.contains('e-filterbarcell') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n // eslint-disable-next-line\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && this.parent.aggregates.length && action === 'enter') {\n for (var i = rowIndex; i < this.matrix.matrix.length; i++) {\n var row = this.getTable().rows[i + 1];\n if (row && row.cells[parseInt(cellIndex.toString(), 10)] && row.cells[parseInt(cellIndex.toString(), 10)].classList.contains('e-rowcell')) {\n return [i + 1, cellIndex];\n }\n if (i === this.matrix.matrix.length - 1) {\n return [rowIndex, cellIndex];\n }\n }\n }\n if (action === 'ctrlEnd' || action === 'end') {\n var lastContentCellIndex = [this.matrix.matrix.length - 1,\n this.matrix.matrix[this.matrix.matrix.length - 1].length - 1];\n if (action === 'end') {\n lastContentCellIndex = [rowIndex, this.matrix.matrix[parseInt(rowIndex.toString(), 10)].length - 1];\n }\n if (this.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.matrix.matrix, lastContentCellIndex, false);\n }\n rowIndex = lastContentCellIndex[0];\n cellIndex = lastContentCellIndex[1] + 1;\n }\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains(literals.rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(literals.table) ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, literals.rowCell) && !parentsUntil(e.target, 'e-groupcaption')\n && !parentsUntil(e.target, 'e-recordpluscollapse') && !parentsUntil(e.target, 'e-recordplusexpand')\n && !parentsUntil(e.target, 'e-detailrowcollapse') && !parentsUntil(e.target, 'e-detailrowexpand')\n && !parentsUntil(e.target, 'e-templatecell'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[parseInt(rowIndex.toString(), 10)]) ?\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.elementToFocus = info.element.classList.contains('e-detailcell') && info.element.querySelector('.e-childgrid')\n ? info.element.querySelector('.e-childgrid') : info.elementToFocus;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target ? this.target : element : child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1\n && !((cell.cellType === CellType.GroupSummary || cell.cellType === CellType.CaptionSummary)\n && !(cell.isDataCell && cell.visible)))\n || (cell.column && cell.visible && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i <= len; i++) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n var frozenSwap = (this.parent.getFrozenLeftCount() &&\n ((action === 'leftArrow' || action === 'shiftTab') && current[1] === 0))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab' && this.parent.getFrozenMode() === 'Left'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var right = ((action === 'rightArrow' || action === 'tab')\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right'\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var frSwap = this.parent.getFrozenMode() === literals.leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var headerSwap = ((action === 'upArrow' || enterFrozen) && current[0] === 0)\n || (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right' && current[0] === 0\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n if (!this.parent.isFrozenGrid() && action === 'tab' &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n frozenSwap = this.parent.isFrozenGrid();\n }\n if (!this.parent.isFrozenGrid() && action === 'shiftTab' &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && row.classList.contains(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n if (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right' && current[0] === 0\n && current[1] === this.matrix.matrix[current[0]].indexOf(1)) {\n this.matrix.current[0] = -1;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) || frozenSwap || frSwap : false,\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n if (action === 'leftArrow' || action === 'shiftTab') {\n current[0] = previous[0];\n current[1] = this.matrix.matrix[current[0]].length;\n }\n if (this.parent.getFrozenMode() === literals.leftRight && (action === 'rightArrow' || action === 'tab')) {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (this.parent.getFrozenMode() === 'Right' && action === 'tab') {\n current[0] = previous[0] + 1;\n current[1] = -1;\n }\n }\n else if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n if (action === 'shiftTab' && this.parent.getFrozenMode() === 'Left') {\n current[0] = previous[0] - 1;\n current[1] = this.matrix.matrix[current[0]].length;\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains(literals.rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(literals.dataRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(literals.dataColIndex), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n if (this.parent.allowGrouping && this.parent.groupSettings.enableLazyLoading && isData) {\n rowIndex = this.parent.getDataRows().indexOf(info.element.parentElement);\n }\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[parseInt(rowIndex.toString(), 10)])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[parseInt(rowIndex.toString(), 10)].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[0].querySelectorAll('td')[parseInt(cellIndex.toString(), 10)];\n }\n else {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains(literals.rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(literals.rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-unboundcell')\n || cell.classList.contains('e-editedbatchcell') && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getHeaderContent().querySelector('.e-movableheader .e-table') :\n this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains(literals.rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template)\n || !isNullOrUndefined(cell.column.commands))) || cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var frozenSwap = (this.parent.getFrozenLeftCount() &&\n (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') && (current[1] === 0\n || current[1] === this.matrix.matrix[current[0]].indexOf(1))) || (this.parent.getFrozenMode() === 'Left' && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var right = ((action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion())\n || action === 'tab') && (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)))\n || (current[0] > 0 && action === 'shiftTab' && this.parent.getFrozenMode() === 'Right'\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var frSwap = this.parent.getFrozenMode() === literals.leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n var headerSwap = frozenSwap && !(this.parent.getFrozenMode() === 'Left' && action === 'tab'\n && current[0] === this.matrix.matrix.length - 1) || frSwap;\n var fMatrix = this.parent.focusModule.fHeader && this.parent.focusModule.fHeader.matrix.matrix;\n var isPresent = fMatrix && !isNullOrUndefined(fMatrix[current[0]]);\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n if (this.parent.isFrozenGrid() && lastRow && isLastCell) {\n frozenSwap = true;\n headerSwap = false;\n }\n }\n if (action === 'tab' && this.parent.getFrozenMode() === 'Left' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && (frozenSwap || frSwap)) || (action === 'tab' && lastRow && isLastCell),\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current1[0] = previous[0];\n current1[1] = this.matrix.matrix[current1[0]].length;\n }\n if (this.parent.getFrozenMode() === literals.leftRight\n && (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab')) {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n }\n else if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n if (this.parent.getFrozenMode() === 'Left' && action === 'shiftTab') {\n current1[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current1[1] = this.matrix.matrix[current1[0]].length;\n }\n if (this.parent.getFrozenMode() === 'Right' && action === 'tab') {\n current1[0] = previous[0] + 1;\n current1[1] = -1;\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n var incrementNumber = 0;\n var headerTable = this.getHeaderType() === 'FixedHeaderFocus' && this.parent.getFrozenMode() !== 'Right' ? literals.frozenLeft :\n this.getHeaderType() === 'FixedHeaderFocus' || this.getHeaderType() === 'FixedRightHeaderFocus' ? literals.frozenRight : 'movable';\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].column && cells[parseInt(i.toString(), 10)].column.columns) {\n incrementNumber = this.checkFilterColumn(cells[parseInt(i.toString(), 10)].column.columns, length, incrementNumber, headerTable);\n }\n else {\n if (!this.parent.isFrozenGrid() || (this.parent.isFrozenGrid()\n && cells[parseInt(i.toString(), 10)].column.freezeTable === headerTable)) {\n this.matrix.set(length, incrementNumber, cells[parseInt(i.toString(), 10)].visible && cells[parseInt(i.toString(), 10)].column.allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n }\n };\n HeaderFocus.prototype.checkFilterColumn = function (rowColumns, rowIndex, columnIndex, headerTable) {\n var columns = rowColumns;\n var incrementNumber = columnIndex;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.checkFilterColumn(columns[parseInt(i.toString(), 10)].columns, rowIndex, incrementNumber, headerTable);\n }\n else {\n if (!this.parent.isFrozenGrid() || (this.parent.isFrozenGrid()\n && columns[parseInt(i.toString(), 10)].freezeTable === headerTable)) {\n this.matrix.set(rowIndex, incrementNumber, columns[parseInt(i.toString(), 10)].visible && columns[parseInt(i.toString(), 10)].allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n return incrementNumber;\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n HeaderFocus.prototype.getHeaderType = function () {\n return 'HeaderFocus';\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\nvar FixedContentFocus = /** @class */ (function (_super) {\n __extends(FixedContentFocus, _super);\n function FixedContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozencontent .e-table');\n };\n FixedContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = ((action === 'upArrow' || enterFrozen) && current[0] === 0)\n || (action === 'shiftTab' && this.parent.getFrozenMode() !== 'Right'\n && current[0] === 0 && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var fSwap = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n var frSwap = action === 'shiftTab' && this.parent.getFrozenMode() === literals.leftRight\n && current[1] === this.matrix.matrix[current[0]].indexOf(1);\n if (this.parent.getFrozenMode() === 'Right') {\n var swap = toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0)\n || (action === 'tab' && current[0] < this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n return { swap: swap, toHeader: toHeader, toFrozen: fSwap };\n }\n if (action === 'shiftTab' && current[0] === 0 && current[1] === this.matrix.matrix[current[0]].indexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return {\n swap: toHeader || ((action === 'tab' || action === 'rightArrow')\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1)),\n toHeader: toHeader,\n toFrozen: fSwap,\n toFrozenRight: frSwap\n };\n };\n FixedContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'shiftTab') {\n current2[0] = previous[0] - 1;\n current2[1] = this.matrix.matrix[current2[0]].length;\n }\n }\n else {\n if (action === 'tab' && this.parent.enableHeaderFocus) {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'leftArrow' || action === 'shiftTab') {\n current2[0] = previous[0];\n current2[1] = this.matrix.matrix[previous[0]].length;\n }\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n if (action === 'tab' && this.parent.getFrozenMode() !== 'Right') {\n current2[0] = previous[0] + 1;\n current2[1] = -1;\n }\n return current2;\n };\n return FixedContentFocus;\n}(ContentFocus));\nexport { FixedContentFocus };\nvar FixedHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedHeaderFocus, _super);\n function FixedHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedHeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var hMatrix = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = hMatrix && !isNullOrUndefined(hMatrix[current[0]]);\n if (this.parent.getFrozenMode() === 'Right') {\n var frSwap_1 = ((action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && (current[1] === 0 || current[1] === this.matrix.matrix[current[0]].indexOf(1)))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var swap = ((action === 'downArrow' || enterFrozen || (action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frSwap_1);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n if (action === 'tab' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return { swap: swap, toHeader: frSwap_1, toFrozen: toFrozen };\n }\n var frSwap = current[0] > 0 && action === 'shiftTab' && this.parent.getFrozenMode() === literals.leftRight\n && current[1] === this.matrix.matrix[current[0]].indexOf(1);\n return {\n swap: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1 || ((action === 'rightArrow' ||\n (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) && isPresent)\n || (action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1) && current[0] > 0),\n toHeader: (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1) && current[0] > 0),\n toFrozen: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1,\n toFrozenRight: frSwap\n };\n };\n FixedHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozenheader .e-table'));\n };\n FixedHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n if (action === 'shiftTab') {\n current3[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n }\n else {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current3[0] = previous[0];\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n if (action === 'tab' && this.parent.getFrozenMode() !== 'Right') {\n current3[0] = previous[0] + 1;\n current3[1] = -1;\n }\n return current3;\n };\n FixedHeaderFocus.prototype.getHeaderType = function () {\n return 'FixedHeaderFocus';\n };\n return FixedHeaderFocus;\n}(HeaderFocus));\nexport { FixedHeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox) {\n this.searchBox = searchBox;\n }\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n if (args.target.classList.contains('e-input') && args.target.classList.contains('e-search') && args.target.value) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.add('e-clear-icon');\n sIcon.setAttribute('title', 'Clear');\n (sIcon).style.cursor = 'pointer';\n }\n };\n SearchBox.prototype.searchBlur = function (args) {\n var relatedTarget = args.relatedTarget ? args.relatedTarget : null;\n if (relatedTarget && relatedTarget.classList.contains('e-sicon')) {\n if (relatedTarget.classList.contains('e-clear-icon')) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n }\n else {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n if (args.target.classList.contains('e-search') && relatedTarget && !(relatedTarget.classList.contains('e-sicon e-clear-icon'))\n && !(relatedTarget.classList.contains('e-sicon'))) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.remove('e-clear-icon');\n sIcon.removeAttribute('title');\n sIcon.style.cursor = 'default';\n }\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\nvar FixedRightContentFocus = /** @class */ (function (_super) {\n __extends(FixedRightContentFocus, _super);\n function FixedRightContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozen-right-content .e-table');\n };\n FixedRightContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n var toFrozenSwap = this.parent.getFrozenMode() === literals.leftRight && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n return {\n swap: toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0)\n || (action === 'tab' && current[0] < this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)),\n toHeader: toHeader,\n toFrozenRight: toHeader,\n toFrozen: toFrozenSwap\n };\n };\n FixedRightContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n if (action === 'shiftTab') {\n current2[0] = previous[0] - 1;\n current2[1] = this.matrix.matrix[current2[0]].length;\n }\n return current2;\n };\n return FixedRightContentFocus;\n}(ContentFocus));\nexport { FixedRightContentFocus };\nvar FixedRightHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedRightHeaderFocus, _super);\n function FixedRightHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightHeaderFocus.prototype.jump = function (action, current) {\n var headerMat = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = headerMat && !isNullOrUndefined(headerMat[current[0]]);\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var frozenSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && (current[1] === 0 || current[1] === this.matrix.matrix[current[0]].indexOf(1))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var swap = ((action === 'downArrow' || enterFrozen || (action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frozenSwap);\n var fSwap = action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n var frSwap = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n if (action === 'tab' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return { swap: swap, toHeader: frozenSwap, toFrozen: fSwap, toFrozenRight: frSwap };\n };\n FixedRightHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozen-right-header .e-table'));\n };\n FixedRightHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n if (action === 'shiftTab') {\n current3[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n return current3;\n };\n FixedRightHeaderFocus.prototype.getHeaderType = function () {\n return 'FixedRightHeaderFocus';\n };\n return FixedRightHeaderFocus;\n}(HeaderFocus));\nexport { FixedRightHeaderFocus };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Browser, EventHandler, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses } from '../base/util';\nimport { getCellsByTableName, getCellByColAndRowIndex, parentsUntil, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked, isComplexField, getObject } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.isHdrSelectAllClicked = false;\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n this.isKeyAction = false;\n this.isRowDragSelected = false;\n this.isPartialSelection = false;\n this.rmtHdrChkbxClicked = false;\n this.isCheckboxReset = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getSelectedMovableRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && this.parent.getContent().querySelector('.' + literals.movableContent)) {\n return gObj.getMovableRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getSelectedFrozenRightRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && gObj.getFrozenMode() === literals.leftRight && gObj.getFrozenRightContent()) {\n return gObj.getFrozenRightRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[literals.addedRecords]) :\n this.parent.editModule.getBatchChanges()[literals.addedRecords].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[literals.deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey] === currentRecords[parseInt(j.toString(), 10)][\"\" + primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var rowObj = selectedRow && gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid'));\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n return;\n }\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(events.selectVirtualRow, e);\n var frozenData = gObj.isFrozenGrid() ? gObj.contentModule.getRowObjectByIndex(index)\n : null;\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')) || frozenData)) {\n selectData = frozenData ? frozenData : gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.getRowObj(index).data;\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.isCheckboxReset = true;\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked, rowIndexes: index\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n Selection.prototype.selectMovableRow = function (selectedMovableRow, selectedFrozenRightRow, index) {\n if (this.parent.isFrozenGrid()) {\n this.updateRowSelection(selectedMovableRow, index);\n if (this.parent.getFrozenMode() === literals.leftRight && selectedFrozenRightRow) {\n this.updateRowSelection(selectedFrozenRightRow, index);\n }\n }\n };\n Selection.prototype.addMovableArgs = function (targetObj, mRow, frRow) {\n if (this.parent.isFrozenGrid()) {\n var mObj = { mRow: mRow, previousMovRow: this.parent.getMovableRows()[this.prevRowIndex] };\n var frozenRightRow = 'frozenRightRow';\n var previousFrozenRightRow = 'previousFrozenRightRow';\n if (this.parent.getFrozenMode() === literals.leftRight && frRow) {\n mObj[\"\" + frozenRightRow] = frRow;\n mObj[\"\" + previousFrozenRightRow] = this.parent.getFrozenRightDataRows()[this.prevRowIndex];\n }\n targetObj = __assign({}, targetObj, mObj);\n }\n return targetObj;\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n Selection.prototype.selectedDataUpdate = function (selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex) {\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[parseInt(i.toString(), 10)]];\n if (this.parent.enableVirtualization) {\n currentRow = this.parent.getRowByIndex(rowIndexes[parseInt(i.toString(), 10)]);\n }\n var rowObj = this.getRowObj(currentRow);\n if (rowObj && rowObj.isDataRow && rowObj.isSelectable) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n else {\n if (this.isPartialSelection && selectableRowIndex) {\n selectableRowIndex.splice(selectableRowIndex.indexOf(rowIndexes[parseInt(i.toString(), 10)]), 1);\n }\n }\n }\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var selectableRowIndex = rowIndexes.slice();\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedMovableRow = this.getSelectedMovableRow(rowIndex);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(rowIndex);\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex);\n this.activeTarget();\n var args = {\n cancel: false,\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.clearRow();\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n if (gObj.isFrozenGrid()) {\n var rightEle = _this.parent.getFrozenMode() === literals.leftRight ? gObj.getFrozenRightRowByIndex(index)\n : undefined;\n _this.selectMovableRow(gObj.getMovableRowByIndex(index), rightEle, index);\n }\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, selectableRowIndex_1 = selectableRowIndex; _i < selectableRowIndex_1.length; _i++) {\n var rowIdx = selectableRowIndex_1[_i];\n selectRowFn(rowIdx, gObj.enableVirtualization ? true : false);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n args = {\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = _this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedData = [];\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n var selectedMovableRow = !this.isSingleSel() ? this.getSelectedMovableRow(rowIndexes[0]) :\n this.getSelectedMovableRow(rowIndexes[rowIndexes.length - 1]);\n var selectedFrozenRightRow = !this.isSingleSel() ? this.getSelectedFrozenRightRow(rowIndexes[0]) :\n this.getSelectedFrozenRightRow(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (this.isMultiCtrlRequest && !checkboxColumn.length) {\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, indexes);\n }\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIndex = rowIndexes_1[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n continue;\n }\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n if (selectedMovableRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedMovableRow), 1);\n selectedMovableRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedMovableRow, false, null, 'e-selectionbackground', 'e-active');\n }\n if (selectedFrozenRightRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedFrozenRightRow), 1);\n selectedFrozenRightRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedFrozenRightRow, false, null, 'e-selectionbackground', 'e-active');\n }\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, [selectedMovableRow], undefined, [selectedFrozenRightRow]);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.isHdrSelectAllClicked = false;\n }\n else {\n this.activeTarget();\n args = {\n cancel: false,\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, rowIndex);\n }\n if (!isUnSelected) {\n args = {\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData,\n isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.getPkValue = function (pkField, data) {\n return pkField ? isComplexField(pkField) ? getObject(pkField, data) : data[\"\" + pkField] : data[\"\" + pkField];\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if ((chkState && !this.isPartialSelection) || (this.isPartialSelection && rowObj.isSelectable && rowObj.isSelected)) {\n this.selectedRowState[\"\" + pKey_1] = chkState;\n delete (this.unSelectedRowState[\"\" + pKey_1]);\n if (!this.persistSelectedData.some(function (data) { return _this.getPkValue(_this.primaryKey, data) === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey, isPartialSelection) {\n var _this = this;\n delete (this.selectedRowState[\"\" + pKey]);\n if (this.rmtHdrChkbxClicked) {\n this.unSelectedRowState[\"\" + pKey] = true;\n }\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return _this.getPkValue(_this.primaryKey, data) === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n if (isPartialSelection) {\n this.parent.partialSelectedRecords.splice(index, 1);\n }\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex, preventFocus) {\n if (!selectedRow) {\n return;\n }\n this.selectedRowIndexes.push(startIndex);\n var len = this.selectedRowIndexes.length;\n if (this.parent.isFrozenGrid() && len > 1) {\n if ((this.selectedRowIndexes[len - 2] === this.selectedRowIndexes[len - 1])) {\n this.selectedRowIndexes.pop();\n }\n }\n this.selectedRecords.push(selectedRow);\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target || preventFocus) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n this.checkSelectAllClicked = true;\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n this.checkSelectAllClicked = false;\n this.isHdrSelectAllClicked = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var gObj = this.parent;\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var mRow_1 = [];\n var fRightRow_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]]\n : this.parent.getDataRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n if (gObj.isFrozenGrid()) {\n var mRows = gObj.getMovableRows();\n if (mRows && mRows.length) {\n mRow_1.push(mRows[this.selectedRowIndexes[parseInt(i.toString(), 10)]]);\n }\n if (gObj.getFrozenMode() === literals.leftRight) {\n var frRows = gObj.getFrozenRightRows();\n if (frRows && frRows.length) {\n fRightRow_1.push(frRows[this.selectedRowIndexes[parseInt(i.toString(), 10)]]);\n }\n }\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI) {\n element[parseInt(j.toString(), 10)].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[parseInt(j.toString(), 10)], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[parseInt(j.toString(), 10)], false);\n }\n _this.updateCheckBoxes(element[parseInt(j.toString(), 10)]);\n }\n for (var i = 0, len = _this.selectedRowIndexes.length; i < len; i++) {\n var movableRow = _this.getSelectedMovableRow(_this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n if (movableRow) {\n if (!_this.disableUI) {\n movableRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(movableRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(movableRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(movableRow, false);\n }\n }\n var frRow = _this.getSelectedFrozenRightRow(_this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n if (frRow) {\n if (!_this.disableUI) {\n frRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(frRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(frRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(frRow, false);\n }\n }\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, undefined, fRightRow_1);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, fRightRow_1);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked || (this.focus['activeKey'] &&\n this.focus.currentInfo.element.classList.contains('e-gridchkbox') && this.focus['activeKey'] === 'space'))) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var dataTxt = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[\"\" + rowInString] = row;\n rowDeselectObj[\"\" + target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[\"\" + rowidx] = rowIndex[0];\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[\"\" + dataTxt] = rowDeselectObj[\"\" + dataTxt][0];\n rowDeselectObj[\"\" + rowInString] = rowDeselectObj[\"\" + rowInString][0];\n rowDeselectObj[\"\" + foreignKey] = rowDeselectObj[\"\" + foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n }\n this.parent.trigger(type, this.parent.isFrozenGrid() ? __assign({}, rowDeselectObj, { mRow: mRow, frozenRightRow: frozenRightRow }) : rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[\"\" + cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n if (mRow) {\n _this.updateCheckBoxes(mRow[0], undefined, rowIndex[0]);\n }\n if (frozenRightRow) {\n _this.updateCheckBoxes(frozenRightRow[0], undefined, rowIndex[0]);\n }\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n Selection.prototype.getSelectedMovableCell = function (cellIndex) {\n var gObj = this.parent;\n var col = gObj.getColumnByIndex(cellIndex.cellIndex);\n var frzCols = gObj.isFrozenGrid();\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n return gObj.getMovableCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n return null;\n }\n return null;\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(cellIndex);\n var args;\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n var currentCell = 'currentCell';\n args[\"\" + currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[\"\" + currentCell] = cellSelectingArgs[\"\" + currentCell] ? cellSelectingArgs[\"\" + currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return (this.parent.getFrozenColumns() ? (cIdx >= this.parent.getFrozenColumns() ? this.parent.getMovableCellFromIndex(rIdx, cIdx)\n : this.parent.getCellFromIndex(rIdx, cIdx)) : this.parent.getCellFromIndex(rIdx, cIdx));\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(startIndex);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n }\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n if (frzCols) {\n if (j < frzCols) {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(i, j);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(rowCellIndexes[0]);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n }\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes.length; j < cellLen; j++) {\n if (frzCols) {\n if (rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] < frzCols) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[parseInt(i.toString(), 10)].rowIndex,\n cellIndex: rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var col = gObj.getColumnByIndex(cellIndexes[0].cellIndex);\n var rowObj;\n gridActionHandler(this.parent, function (tableName, rows) {\n rowObj = rows[cellIndexes[0].rowIndex];\n }, [\n !col.getFreezeTableName() || col.getFreezeTableName() === literals.frozenLeft ? gObj.getRowsObject() : [],\n col.getFreezeTableName() === 'movable' ? gObj.getMovableRowsObject() : [],\n col.getFreezeTableName() === literals.frozenRight ? gObj.getFrozenRightRowsObject() : []\n ]);\n if (gObj.groupSettings.columns.length > 0) {\n rowObj = gObj.getRowObjectFromUID(this.target.parentElement.getAttribute('data-uid'));\n }\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = this.getSelectedMovableCell(cellIndex);\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var idx = col.getFreezeTableName() === 'movable' ? cellIndex.cellIndex - left\n : col.getFreezeTableName() === literals.frozenRight ? cellIndex.cellIndex - (left + movable) : cellIndex.cellIndex;\n if (gObj.groupSettings.columns.length > 0) {\n foreignKeyData.push(rowObj.cells[idx + gObj.groupSettings.columns.length].foreignKeyData);\n }\n else {\n foreignKeyData.push(rowObj.cells[parseInt(idx.toString(), 10)].foreignKeyData);\n }\n var args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n args[\"\" + prvRowCellIndex] = this.prevECIdxs;\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[\"\" + cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var frzCols = this.parent.isFrozenGrid();\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index) {\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n m += this.parent.getFrozenLeftCount();\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n m += (this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount());\n }\n }\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getFrozenColumns() ? this.parent.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell')\n : this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(literals.dataColIndex), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells[0] && cells[0].classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cells[0], 'tr'));\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[\"\" + cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n var frzCols = gObj.isFrozenGrid();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[parseInt(i.toString(), 10)].rowIndex]);\n var rowObj = this.getRowObj(rowCell[parseInt(i.toString(), 10)].rowIndex);\n for (var j = 0, cLen = rowCell[parseInt(i.toString(), 10)].cellIndexes.length; j < cLen; j++) {\n if (frzCols) {\n var col = gObj.getColumnByIndex(rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]);\n cells.push(getCellByColAndRowIndex(this.parent, col, rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n else {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[parseInt(i.toString(), 10)].classList.remove('e-cellselectionbackground');\n selectedCells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var mRows;\n if (gObj.isFrozenGrid()) {\n mRows = gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, mRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\n rows = gObj.addMovableRows(rows, gObj.getFrozenRightDataRows());\n }\n }\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[parseInt(i.toString(), 10)].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute(literals.dataRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n this.isRowDragSelected = true;\n }\n else {\n var td = parentsUntil(e.target, literals.rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, literals.rowCell);\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.dataColIndex), 10));\n }\n }\n }\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n var rowHeight = this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = this.parent.frozenRows && (bdrStr === '1' || bdrStr === '2') &&\n this.isFirstRow(start) ? 1.5 : 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === literals.leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + 1 + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.contentModule.getMovableContent(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.contentModule.getFrozenRightContent(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.headerModule.getMovableHeader(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.headerModule.getFrozenRightHeader(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.contentModule.getMovableContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement = this.parent.contentModule.getFrozenRightContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.headerModule.getMovableHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement = this.parent.headerModule.getFrozenRightHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, literals.movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight;\n var totalWidth = this.parent.element.clientWidth;\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls));\n if (this.parent.isFrozenGrid()) {\n cells = cells.concat([].slice.call(this.parent.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls)));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n cells = cells.concat([].slice.call(this.parent.getFrozenRightDataRows()[parseInt(rowIndex.toString(), 10)]\n .querySelectorAll(cls)));\n }\n }\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, literals.rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.dataColIndex), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n document.body.classList.remove('e-disableuserselect');\n if (this.element) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, literals.rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n var closeRowCell = closest(e.target, '.e-rowcell');\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n closeRowCell && closeRowCell.classList.contains(literals.rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(literals.dataColIndex), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n var lastCell = parentsUntil(e.target, literals.rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n this.isAutoFillSel = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === literals.leftRight\n && col.getFreezeTableName() === literals.frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, literals.table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.contentModule.getMovableContent().appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.headerModule.getMovableHeader().appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getFrozenRightHeader().appendChild(this.autofill);\n }\n else {\n this.parent.getFrozenRightContent().appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, literals.headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, literals.editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, literals.rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n this.isRowDragSelected = false;\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n if ((e.requestType === 'virtualscroll' || isInfiniteScroll) && this.parent.isPersistSelection && this.isPartialSelection\n && this.isHdrSelectAllClicked) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n var indexes = [];\n this.selectedRowState = {};\n this.persistSelectedData = [];\n for (var i = 0; i < rowObj.length; i++) {\n indexes.push(rowObj[parseInt(i.toString(), 10)].index);\n var pkValue = this.getPkValue(this.primaryKey, rowObj[parseInt(i.toString(), 10)].data);\n this.selectedRowState[\"\" + pkValue] = true;\n this.persistSelectedData.push(rowObj[parseInt(i.toString(), 10)].data);\n }\n this.selectedRowIndexes = indexes;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.uiUpdate, handler: this.enableAfterRender },\n { event: events.initialEnd, handler: this.initializeSelection },\n { event: events.rowSelectionComplete, handler: this.onActionComplete },\n { event: events.cellSelectionComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: events.columnPositionChanged, handler: this.columnPositionChanged },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.rowsRemoved, handler: this.rowsRemoved },\n { event: events.headerRefreshed, handler: this.refreshHeader },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n }\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n }\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, e.records[parseInt(i.toString(), 10)]);\n delete (this.selectedRowState[\"\" + pkValue]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type) && this.selectionSettings.type === 'Single') {\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n if (!this.parent.isCheckBoxSelection) {\n this.initPerisistSelection();\n }\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function (e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isLeftRightFrozen = this.parent.getFrozenMode() === literals.leftRight;\n if ((!isFrozen || (isFrozen && (!isLeftRightFrozen && !e.args.isFrozen)\n || (isLeftRightFrozen && e.args.renderFrozenRightContent))) && !this.selectedRowIndexes.length) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n var data = (this.parent.getDataModule().isRemote()) ? res['result'] : res;\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && data[parseInt(i.toString(), 10)][this.chkField]) {\n this.selectedRowState[\"\" + pkValue] = data[parseInt(i.toString(), 10)][this.chkField];\n }\n }\n this.persistSelectedData = data;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))) {\n if (state) {\n if (this.isPartialSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_1 = rowObj; _i < rowObj_1.length; _i++) {\n var row = rowObj_1[_i];\n this.selectedRowState[this.getPkValue(this.primaryKey, row.data)] = true;\n }\n }\n else {\n var selectedData = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n if (this.parent.groupSettings.columns.length) {\n for (var _a = 0, _b = this.isPartialSelection ? selectedData : selectedData.records; _a < _b.length; _a++) {\n var data = _b[_a];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n else {\n for (var _c = 0, selectedData_1 = selectedData; _c < selectedData_1.length; _c++) {\n var data = selectedData_1[_c];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n else {\n if (state) {\n var selectedStateKeys = Object.keys(this.selectedRowState);\n var unSelectedRowStateKeys = Object.keys(this.unSelectedRowState);\n if (!this.isCheckboxReset) {\n for (var _d = 0, _e = this.parent.currentViewData; _d < _e.length; _d++) {\n var data = _e[_d];\n if (!isNullOrUndefined(data[this.primaryKey])) {\n var key = data[this.primaryKey].toString();\n if (selectedStateKeys.indexOf(key) === -1 && unSelectedRowStateKeys.indexOf(key) === -1) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.rmtHdrChkbxClicked = false;\n }\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.getAvailableSelectedData = function () {\n var filteredSearchedSelectedData = new DataManager(this.persistSelectedData)\n .executeLocal(this.parent.getDataModule().generateQuery(true));\n if (this.parent.groupSettings.columns.length && filteredSearchedSelectedData &&\n filteredSearchedSelectedData.records) {\n filteredSearchedSelectedData = filteredSearchedSelectedData.records.slice();\n }\n return filteredSearchedSelectedData;\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n if (this.parent.isCheckBoxSelection && this.parent.isFrozenGrid()) {\n var mtbody = this.parent.getMovableContentTbody();\n if (mtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getMovableRows();\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frtbody = this.parent.getFrozenRightContentTbody();\n if (frtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getFrozenRightRows();\n }\n }\n }\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (!isNullOrUndefined(rows) && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[parseInt(j.toString(), 10)]);\n var pKey = rowObj ? rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null : null;\n if (pKey === null) {\n return;\n }\n if (this.isPartialSelection && !rowObj.isSelectable) {\n continue;\n }\n var checkState = void 0;\n var chkBox = rows[parseInt(j.toString(), 10)].querySelector('.e-checkselect');\n if (this.selectedRowState[\"\" + pKey] || (this.parent.checkAllRows === 'Check' && this.selectedRowState[\"\" + pKey] &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0 && !this.parent.selectedRowIndex)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[parseInt(j.toString(), 10)].getAttribute(literals.dataRowIndex), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection && chkBox) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[parseInt(j.toString(), 10)], checkState);\n }\n if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if ((this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.' + literals.editedRow);\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n if (this.parent.isPersistSelection && this.isPartialSelection) {\n if (e.requestType === 'paging' && (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.selectedRowIndexes = [];\n }\n if (e.requestType === 'filtering' || e.requestType === 'searching') {\n this.parent.partialSelectedRecords = [];\n this.parent.disableSelectedRecords = [];\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add') {\n if (this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = e.data;\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(pkValue)) {\n this.updatePersistDelete(pkValue, this.isPartialSelection);\n }\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n if (this.parent.isPersistSelection && this.isPartialSelection && this.isHdrSelectAllClicked) {\n var rows = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isSelectable) {\n indexes.push(rows[parseInt(i.toString(), 10)].index);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n }\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.rmtHdrChkbxClicked) {\n if (this.parent.checkAllRows === 'Intermediate') {\n this.setRowSelection(true);\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n }\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[parseInt(i.toString(), 10)].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[parseInt(i.toString(), 10)], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && !this.isPartialSelection ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && ((stateStr === 'Uncheck' || this.isCheckboxReset) ||\n (this.parent.getDataModule().isRemote() && stateStr === 'Intermediate' && this.parent.isPersistSelection))) {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (this.rmtHdrChkbxClicked && this.isCheckboxReset) {\n this.unSelectedRowState = {};\n }\n this.isCheckboxReset = false;\n if (stateStr === 'Intermediate') {\n if (!this.chkField && !this.parent.isPersistSelection) {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n }\n if (this.parent.getDataModule().isRemote() && this.parent.isPersistSelection) {\n for (var i = 0; i < this.getCurrentBatchRecordChanges().length; i++) {\n if (Object.keys(this.selectedRowState).includes((this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i])).toString())) {\n state = true;\n }\n else {\n state = false;\n break;\n }\n }\n }\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n this.updateSelectedRowIndexes();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + literals.rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndexes = function () {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.isPartialSelection && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && this.parent.selectionSettings.persistSelection) {\n if (this.parent.checkAllRows !== 'Uncheck') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_2 = rowObj; _i < rowObj_2.length; _i++) {\n var row = rowObj_2[_i];\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.isPartialSelection) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n var row = this.parent.getRowByIndex(index);\n if (index && row && row.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.isAllSelected = function (count) {\n if (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) {\n return this.getAvailableSelectedData().length === (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling\n ? this.parent.totalDataRecordsCount : this.totalRecordsCount);\n }\n else {\n if (this.isPartialSelection) {\n if (this.parent.allowPaging && this.parent.pageSettings.pageSize < this.parent.pageSettings.totalRecordsCount) {\n var data = this.parent.partialSelectedRecords;\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n else {\n return this.isSelectAllRowCount(count);\n }\n }\n else {\n var data = this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n }\n };\n Selection.prototype.someDataSelected = function () {\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n var filteredSearchedSelectedData = this.getAvailableSelectedData();\n for (var i = 0; i < filteredSearchedSelectedData.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, filteredSearchedSelectedData[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n }\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords\n : (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ? [] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = false;\n var isFiltered = false;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.parent.isPersistSelection && !((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && this.isPartialSelection) && (this.parent.searchSettings.key.length\n || this.parent.filterSettings.columns.length)) {\n isFiltered = true;\n checkToSelectAll = this.isAllSelected(checkedLen);\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n if ((checkToSelectAll && isFiltered && (this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n this.getData().length)) || (!isFiltered && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n this.getData().length && checkedLen === this.getData().length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && ((checkedLen === this.parent.totalDataRecordsCount) || (this.isSelectAllRowCount(checkedLen) &&\n !this.parent.isPersistSelection))) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (((!this.selectedRowIndexes.length && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.isSelectAllRowCount = function (count) {\n var rowCount = 0;\n var rowObj = this.parent.getRowsObject();\n if (this.parent.selectionSettings.persistSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var dataLen = (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ?\n this.parent.totalDataRecordsCount : this.getData() && this.getData().length;\n if (dataLen === rowObj.length) {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n else {\n return false;\n }\n }\n else {\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n rowCount = this.parent.partialSelectedRecords.length + this.parent.disableSelectedRecords.length;\n if (rowCount === this.totalRecordsCount) {\n return this.parent.partialSelectedRecords.length && count === this.parent.partialSelectedRecords.length;\n }\n else {\n return false;\n }\n }\n else {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, literals.rowCell);\n var isCheckBox = targetHeadCell ? targetHeadCell.children[0].classList.contains('e-headerchkcelldiv') :\n targetRowCell ? targetRowCell.classList.contains('e-gridchkbox') : false;\n if (isCheckBox && !this.parent.allowKeyboard && e.keyCode === 32) {\n e.preventDefault();\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, literals.row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n if (!this.parent.allowKeyboard) {\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n }\n else {\n this.isMultiShiftRequest = e.shiftKey;\n }\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, literals.row)) ? true : false;\n if (this.selectionSettings.persistSelection && this.isPartialSelection && parentsUntil(target, 'e-headerchkcelldiv')\n && !target.querySelector('.e-checkbox-disabled')) {\n this.isHdrSelectAllClicked = true;\n }\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, literals.rowCell);\n if (this.parent.isReact && (target && !target.parentElement && target.classList.contains('e-rowcell'))) {\n target = this.parent.getCellFromIndex(parseInt(target.getAttribute('index'), 10), parseInt(target.getAttribute('data-colindex'), 10));\n }\n if (((target && target.parentElement.classList.contains(literals.row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect)\n && !this.isRowDragSelected) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n }\n this.parent.hoverFrozenRows(e);\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > (this.parent.getFrozenColumns() ? 2 : 1)\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + literals.rowCell).classList.contains(literals.gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(literals.dataRowIndex));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = this.parent.isFrozenGrid() ? (((e.container.isHeader && e.element.tagName !== 'TD' && e.isJump &&\n !this.selectionSettings.allowColumnSelection) ||\n ((e.container.isContent || e.element.tagName === 'TD') && !(e.container.isSelectable || e.element.tagName === 'TD')))\n && !(e.byKey && e.keyArgs.action === 'space')) : ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.' + literals.rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.isFrozenGrid()) {\n var cIdx = Number(e.element.getAttribute(literals.dataColIndex));\n var selectedIndexes = this.parent.getSelectedRowCellIndexes();\n if (selectedIndexes.length && prev.cellIndex === 0) {\n prev.cellIndex = selectedIndexes[selectedIndexes.length - 1].cellIndexes[0];\n }\n prev.cellIndex = !isNullOrUndefined(prev.cellIndex) ? (prev.cellIndex === cellIndex ? cIdx : cIdx - 1) : null;\n cellIndex = cIdx;\n }\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n if (this.parent.element.classList.contains('e-gridcell-read') && (e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab'\n || e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML + ' column header ' + this.parent.getColumnByIndex(cellIndex).field;\n this.target.setAttribute('aria-label', targetLabel);\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.isKeyAction = true;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection &&\n !this.selectionSettings.checkboxOnly) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType() && !this.selectionSettings.checkboxOnly) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (cIndex >= frzCols) {\n this.target =\n this.contentRenderer.getMovableRowByIndex(rowIndex).getElementsByClassName(literals.rowCell)[cIndex - frzCols];\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex)\n .getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n }\n else {\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n }\n this.addAttribute(this.target);\n if (this.parent.element.classList.contains('e-gridcell-read')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML;\n this.target.setAttribute('aria-label', targetLabel);\n }\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else if (this.isPartialSelection) {\n this.selectRow(rowIndex, true);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[parseInt(i.toString(), 10)].columns) {\n this.getstackedColumns(column[parseInt(i.toString(), 10)].columns);\n }\n else {\n innerColumnIndexes.push(column[parseInt(i.toString(), 10)]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.getElementsByClassName(literals.rowCell));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection && this.selectedRecords.length) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(index.toString(), 10)])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[parseInt(i.toString(), 10)]).uid), columnIndexes[parseInt(i.toString(), 10)]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var col = gObj.getColumnByIndex(index);\n var selectedCol = void 0;\n var column = gObj.getColumnByIndex(index);\n if (col.getFreezeTableName() === literals.frozenRight) {\n selectedCol = gObj.getFrozenRightColumnHeaderByIndex(index);\n }\n else if (col.getFreezeTableName() === 'movable') {\n selectedCol = gObj.getMovableColumnHeaderByIndex(index);\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(column.uid);\n }\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().getElementsByClassName('e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[parseInt(clearIndex.toString(), 10)].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[parseInt(i.toString(), 10)]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var movableRows;\n var frRows;\n if (gObj.isFrozenGrid() && gObj.getContent().querySelector('.' + literals.movableContent)) {\n movableRows = isRowTemplate ? gObj.getMovableRows() : gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, movableRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\n frRows = isRowTemplate ? gObj.getFrozenRightRows() : gObj.getFrozenRightDataRows();\n rows = gObj.addMovableRows(rows, frRows);\n }\n }\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[data-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[parseInt(i.toString(), 10)].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var left = this.parent.getFrozenLeftCount();\n var movable = this.parent.getMovableColumnsCount();\n var col = this.parent.getColumnByIndex(startIndex);\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows;\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n if (col.getFreezeTableName() === literals.frozenRight) {\n startIndex = startIndex - (left + movable);\n rows = isRowTemplate ? this.parent.getFrozenRightRows() : this.parent.getFrozenRightDataRows();\n }\n else if (col.getFreezeTableName() === 'movable') {\n startIndex = startIndex - left;\n rows = isRowTemplate ? this.parent.getMovableRows() : this.parent.getMovableDataRows();\n }\n else {\n startIndex = startIndex + this.parent.getIndentCount();\n rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n }\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[parseInt(j.toString(), 10)].classList.contains(literals.row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(literals.editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(literals.addedRow))\n && this.parent.editSettings.mode === 'Normal'\n && !isNullOrUndefined(rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode && !(e.requestType == 'save' && e['action'] == 'add');\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n if ((isNullOrUndefined(this.parent.selectedRowIndex) || this.parent.selectedRowIndex === -1) || !this.parent.enablePersistence) {\n this.parent.selectedRowIndex = index;\n }\n else {\n this.parent.selectedRowIndex = -1;\n }\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](./searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n gObj.searchSettings.key = searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive, isActionPrevent, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function ShowHide(parent) {\n this.colName = [];\n this.isShowHide = false;\n this.parent = parent;\n this.addEventListener();\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.batchCancel, handler: this.batchChanges },\n { event: events.batchCnfrmDlgCancel, handler: this.resetColumnState }\n ];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ShowHide.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ShowHide.prototype.batchChanges = function () {\n if (this.isShowHide) {\n this.isShowHide = false;\n this.setVisible(this.colName, this.changedCol);\n this.changedCol = this.colName = [];\n }\n };\n /**\n * Shows a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item) {\n if (item[\"\" + getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n ShowHide.prototype.batchActionPrevent = function (columns, changedStateColumns) {\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n if (isActionPrevent(this.parent)) {\n this.colName = columns;\n this.changedCol = changedStateColumns;\n this.parent.closeEdit();\n return false;\n }\n return true;\n };\n ShowHide.prototype.resetColumnState = function () {\n if (this.isShowHide) {\n for (var i = 0; i < this.colName.length; i++) {\n this.colName[parseInt(i.toString(), 10)].visible = !this.colName[parseInt(i.toString(), 10)].visible;\n }\n }\n };\n /**\n * Shows or hides columns by given column collection.\n *\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @param {Column[]} changedStateColumns - specifies the changedStateColumns\n * @returns {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n this.isShowHide = true;\n if (!this.batchActionPrevent(columns, changedStateColumns)) {\n return;\n }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n if (this.parent.enableInfiniteScrolling && this.parent.allowGrouping\n && this.parent.groupModule.groupSettings.columns.length > 0) {\n this.parent.contentModule.visibleRows = [];\n }\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[\"\" + cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (this.parent.autoFit && !this.parent.groupSettings.columns.length) {\n this.parent.preventAdjustColumns();\n }\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Scroll(parent) {\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @param {boolean} uiupdate - specifies the uiupdate\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n var tlbrElement = this.parent.toolbarModule.toolbar.element;\n var tlbrLeftElement = tlbrElement.querySelector('.e-toolbar-left');\n var tlbrCenterElement = tlbrElement.querySelector('.e-toolbar-center');\n var tlbrRightElement = tlbrElement.querySelector('.e-toolbar-right');\n var tlbrItems = tlbrElement.querySelector('.e-toolbar-items');\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (!this.parent.enableAdaptiveUI || tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth ||\n tlbrItemsWidth > tlbrWidth) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var height = this.parent.height;\n if (this.parent.isFrozenGrid() && this.parent.height !== 'auto' && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent()\n .querySelector(literals.tbody + ':not(.e-masked-tbody)');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.getElementsByClassName(literals.addedRow).length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n else if (!this.parent.isInitialLoad && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && this.parent.getHeaderContent().querySelector('.e-masked-table')) {\n height = parseInt(height, 10) - (this.parent.frozenRows * this.parent.getRowHeight());\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n var padding = this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight ? '0.5px' : '1px';\n content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? padding : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](./#height) must be set to 100%.\n *\n * @returns {void}\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.' + literals.gridContent;\n if (this.parent.isFrozenGrid()) {\n content.firstElementChild.style.height = 'calc(100% - ' + getScrollBarWidth() + 'px)';\n }\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n this.unwireEvents();\n };\n Scroll.prototype.unwireEvents = function () {\n var frzCols = this.parent.isFrozenGrid();\n var mCont;\n var mHdr;\n if (this.content) {\n mCont = this.content.querySelector('.' + literals.movableContent);\n }\n if (this.header) {\n mHdr = this.header.querySelector('.' + literals.movableHeader);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.frozenRows && ((this.header && !frzCols) || (frzCols && mHdr))) {\n EventHandler.remove(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n if (this.parent.isFrozenGrid()) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (mCont) {\n EventHandler.remove(mCont, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(mCont, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(mCont, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (mHdr) {\n EventHandler.remove(mHdr, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(mHdr, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(mHdr, 'touchmove pointermove', this.onTouchScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onFrozenContentScroll);\n }\n }\n else {\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.contentScrollHandler);\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.headerScrollHandler);\n }\n this.contentScrollHandler = null;\n this.headerScrollHandler = null;\n }\n if (this.parent.aggregates.length && this.parent.getFooterContent()) {\n EventHandler.remove(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll);\n }\n };\n Scroll.prototype.setScrollLeft = function () {\n if (this.parent.isFrozenGrid()) {\n this.parent.headerModule.getMovableHeader().scrollLeft = this.previousValues.left;\n }\n else {\n this.parent.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = this.previousValues.left;\n }\n };\n Scroll.prototype.onFrozenContentScroll = function () {\n var _this = this;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, e);\n }\n _this.previousValues.top = e.target.scrollTop;\n };\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains(literals.headerContent);\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling && !_this.parent.isEdit) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (mCont, mHdr) {\n var _this = this;\n var content = mCont;\n var header = mHdr;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = isFrozen ?\n _this.parent.getHeaderContent().querySelector('.' + literals.movableHeader) :\n _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = isFrozen ?\n _this.parent.getContent().querySelector('.' + literals.movableContent) :\n _this.parent.getContent().querySelector('.' + literals.content);\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.getScrollbleParent = function (node) {\n if (node === null) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parent = isNullOrUndefined(node.tagName) ? node.scrollingElement : node;\n var overflowY = document.defaultView.getComputedStyle(parent, null).overflowY;\n if (parent.scrollHeight > parent.clientHeight && overflowY !== 'hidden'\n && overflowY !== 'visible' || node.tagName === 'HTML' || node.tagName === 'BODY') {\n return node;\n }\n else {\n return this.getScrollbleParent(node.parentNode);\n }\n };\n /**\n * @param {boolean} isAdd - specifies whether adding/removing the event\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addStickyListener = function (isAdd) {\n this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (isAdd && this.parentElement) {\n this.eventElement = this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement;\n EventHandler.add(this.eventElement, 'scroll', this.makeStickyHeader, this);\n }\n else if (this.eventElement) {\n EventHandler.remove(this.eventElement, 'scroll', this.makeStickyHeader);\n this.eventElement = null;\n }\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.' + literals.content);\n this.header = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = this.content.querySelector('.' + literals.movableContent);\n var mHdr = this.header.querySelector('.' + literals.movableHeader);\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows) {\n EventHandler.add(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll(frzCols ? mCont : this.content), this);\n }\n if (this.parent.isFrozenGrid()) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(mCont, mHdr), this);\n EventHandler.add(mCont, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mHdr), this);\n EventHandler.add(mHdr, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mCont), this);\n EventHandler.add(this.content, 'scroll', this.onFrozenContentScroll(), this);\n EventHandler.add(mHdr, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mHdr, 'touchmove pointermove', this.onTouchScroll(mCont), this);\n EventHandler.add(mCont, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(mCont, 'touchmove pointermove', this.onTouchScroll(mHdr), this);\n }\n }\n else {\n this.contentScrollHandler = this.onContentScroll(this.header);\n this.headerScrollHandler = this.onContentScroll(this.content);\n EventHandler.add(this.content, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.header, 'scroll', this.headerScrollHandler, this);\n }\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(true);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (sHeight < clientHeight) {\n _this.setLastRowCell();\n }\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (!args.cancel) {\n if ((_this.parent.frozenRows > 0 || _this.parent.isFrozenGrid()) && _this.header.querySelector('.' + literals.movableHeader)) {\n _this.header.querySelector('.' + literals.movableHeader).scrollLeft = _this.previousValues.left;\n }\n else {\n _this.header.scrollLeft = _this.previousValues.left;\n }\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n }\n if (_this.parent.isFrozenGrid() && _this.header.querySelector('.' + literals.movableHeader)) {\n _this.header.querySelector('.' + literals.movableHeader).scrollLeft =\n _this.content.querySelector('.' + literals.movableContent).scrollLeft;\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @returns {void} returns void\n * @hidden\n */\n Scroll.prototype.setLastRowCell = function () {\n var table = this.parent.getContentTable();\n if (table.querySelector('tr:nth-last-child(2)')) {\n removeClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.isFrozenGrid()) {\n var mTable = this.parent.getContent().querySelector('.' + literals.movableContent);\n if (mTable.querySelector('tr:nth-last-child(2)')) {\n removeClass(mTable.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(mTable.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.getFrozenRightColumnsCount()) {\n var frTable = this.parent.getContent().querySelector('.e-frozen-right-content');\n if (frTable.querySelector('tr:nth-last-child(2)')) {\n removeClass(frTable.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(frTable.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n }\n }\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {ScrollCss} returns the ScrollCss\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[\"\" + width]));\n };\n Scroll.prototype.makeStickyHeader = function () {\n if (this.parent.enableStickyHeader && this.parent.element && this.parent.getContent()) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n if (contentRect) {\n var headerEle = this.parent.getHeaderContent();\n var toolbarEle = this.parent.element.querySelector('.e-toolbar');\n var groupHeaderEle = this.parent.element.querySelector('.e-groupdroparea');\n var height = headerEle.offsetHeight + (toolbarEle ? toolbarEle.offsetHeight : 0) +\n (groupHeaderEle ? groupHeaderEle.offsetHeight : 0);\n var parentTop = this.parentElement.getClientRects()[0].top;\n var top_1 = contentRect.top - (parentTop < 0 ? 0 : parentTop);\n var left = contentRect.left;\n var colMenuEle = document.body.querySelector('#' + this.parent.element.id + '_columnmenu');\n if (top_1 < height && contentRect.bottom > 0) {\n headerEle.classList.add('e-sticky');\n var elemTop = 0;\n if (groupHeaderEle && this.parent.groupSettings.showDropArea) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'fixed';\n colMenuEle.style.top = height + 'px';\n }\n }\n else {\n if (headerEle.classList.contains('e-sticky')) {\n this.setSticky(headerEle, null, null, null, false);\n if (toolbarEle) {\n this.setSticky(toolbarEle, null, null, null, false);\n }\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, null, null, null, false);\n }\n var ccDlg = this.parent.element.querySelector('.e-ccdlg');\n if (ccDlg) {\n ccDlg.classList.remove('e-sticky');\n }\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'absolute';\n var topStyle = contentRect.top - parentTop;\n colMenuEle.style.top = topStyle + 'px';\n }\n }\n }\n this.parent.notify(events.stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.style.width = width + 'px';\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.top = top != null ? top + 'px' : '';\n ele.style.left = left !== null ? parseInt(ele.style.left, 10) !== left ? left + 'px' : ele.style.left : '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove Dom event\n var cont = this.parent.getContent().querySelector('.' + literals.content);\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n //Remove padding\n this.removePadding();\n removeClass([this.parent.getHeaderContent().querySelector('.' + literals.headerContent)], literals.headerContent);\n removeClass([cont], literals.content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the Function\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - specifies the helper\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - returns the Object\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Clipboard(parent, serviceLocator) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.onEmpty, this.initialEnd);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (e.keyCode === 86 && (e.ctrlKey || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + literals.rowCell);\n if (!target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow' || !this.clipBoardTextArea) {\n return;\n }\n this.activeElement = document.activeElement;\n this.clipBoardTextArea.value = '';\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, _this.parent.getSelectedRowCellIndexes()[0].rowIndex, _this.parent.getSelectedRowCellIndexes()[0].cellIndexes[0]);\n }, 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n if (!grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n var rows = data.split('\\n');\n var cols;\n var dataRows = grid.getDataRows();\n var mRows;\n var frRows;\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen) {\n mRows = grid.getMovableDataRows();\n if (grid.getFrozenRightColumnsCount()) {\n frRows = grid.getFrozenRightDataRows();\n }\n }\n for (var r = 0; r < rows.length; r++) {\n cols = rows[parseInt(r.toString(), 10)].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[parseInt(r.toString(), 10)] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (isFrozen) {\n var fTr = dataRows[parseInt(rIdx.toString(), 10)];\n var mTr = mRows[parseInt(rIdx.toString(), 10)];\n isAvail = !fTr.querySelector('[data-colindex=\"' + cIdx + '\"]') ?\n mTr.querySelector('[data-colindex=\"' + cIdx + '\"]') : true;\n if (frRows && !isAvail) {\n var frTr = frRows[parseInt(rIdx.toString(), 10)];\n isAvail = frTr.querySelector('[data-colindex=\"' + cIdx + '\"]');\n }\n }\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[parseInt(c.toString(), 10)]) : cols[parseInt(c.toString(), 10)];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n };\n Clipboard.prototype.initialEnd = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('ClipBoard') }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n var isFrozen = this.parent.isFrozenGrid();\n this.clipBoardTextArea.value = this.copyContent = '';\n var mRows = void 0;\n var frRows = void 0;\n var rows = this.parent.getDataRows();\n if (isFrozen) {\n mRows = this.parent.getMovableDataRows();\n if (this.parent.getFrozenMode() === literals.leftRight || this.parent.getFrozenMode() === 'Right') {\n frRows = this.parent.getFrozenRightRows();\n }\n }\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] = this.parent\n .getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (isFrozen) {\n movableCols.push.apply(movableCols, [].slice.call(mRows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n rightCols.push.apply(rightCols, [].slice.call(frRows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n if (this.parent.getFrozenMode() === 'Left' || this.parent.getFrozenMode() === literals.leftRight ||\n (this.parent.isFrozenGrid() && !this.parent.getFrozenMode())) {\n leftCols.push.apply(leftCols, [].slice.call(rows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n }\n else {\n var idx = selectedIndexes[parseInt(i.toString(), 10)];\n if (!isGroupAdaptive(this.parent) && (this.parent.enableVirtualization ||\n (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) ||\n (this.parent.groupSettings.columns.length && this.parent.groupSettings.enableLazyLoading))) {\n idx = rows.map(function (m) { return m.getAttribute('data-rowindex'); }).indexOf(selectedIndexes[parseInt(i.toString(), 10)].toString());\n }\n leftCols.push.apply(leftCols, [].slice.call(rows[parseInt(idx.toString(), 10)].querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n var cells = leftCols.concat(movableCols).concat(rightCols);\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n headers.push(this.parent.getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]));\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[parseInt(i.toString(), 10)]].\n getElementsByClassName('e-cellselectionbackground'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[obj.rowIndexes[parseInt(i.toString(), 10)]]\n .getElementsByClassName('e-cellselectionbackground')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[obj.rowIndexes[parseInt(i.toString(), 10)]]\n .getElementsByClassName('e-cellselectionbackground')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n var colIdx = parseInt(cells[parseInt(j.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n this.copyContent += this.parent.getColumns()[parseInt(colIdx.toString(), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[parseInt(j.toString(), 10)].classList.contains('e-hide')) {\n this.copyContent += cells[parseInt(j.toString(), 10)].innerText;\n }\n }\n else {\n this.copyContent += cells[parseInt(j.toString(), 10)];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n *\n * @returns {void}\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy') && this.clipBoardTextArea) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[parseInt(i.toString(), 10)].rowIndex);\n }\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, renderMovable, getNumberFormat, getTransformValues } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"condition\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property('OnEnter')\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n/**\n * Represents the Grid component.\n * ```html\n *
\n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPreventScrollEvent = false;\n _this.inViewIndexes = [];\n _this.keyA = false;\n _this.frozenRightCount = 0;\n _this.frozenLeftCount = 0;\n _this.tablesCount = 1;\n _this.movableCount = 0;\n _this.visibleFrozenLeft = 0;\n _this.visibleFrozenRight = 0;\n _this.visibleMovable = 0;\n _this.frozenLeftColumns = [];\n _this.frozenRightColumns = [];\n _this.movableColumns = [];\n _this.media = {};\n _this.isFreezeRefresh = false;\n /** @hidden */\n _this.tableIndex = 0;\n _this.componentRefresh = Component.prototype.refresh;\n /** @hidden */\n _this.isVirtualAdaptive = false;\n /** @hidden */\n /**\n * * If `requireTemplateRef` is set to false in the load event, then the template element can't be accessed in grid queryCellInfo, and rowDataBound events.\n * * By default, React's grid queryCellInfo and rowDataBound events allow access to the template element.\n * * Avoid accessing the template elements in the grid queryCellInfo and rowDataBound events to improve rendering performance by setting this value as false.\n *\n * @default true\n */\n _this.requireTemplateRef = true;\n /** @hidden */\n _this.vRows = [];\n /** @hidden */\n _this.vcRows = [];\n /** @hidden */\n _this.vGroupOffsets = {};\n /** @hidden */\n _this.rowUid = 0;\n /** @hidden */\n _this.isManualRefresh = false;\n /** @hidden */\n _this.isAutoFitColumns = false;\n /** @hidden */\n _this.enableDeepCompare = false;\n /** @hidden */\n _this.totalDataRecordsCount = 0;\n /** @hidden */\n _this.disableSelectedRecords = [];\n /** @hidden */\n _this.partialSelectedRecords = [];\n /** @hidden */\n _this.islazyloadRequest = false;\n /** @hidden */\n _this.lockcolPositionCount = 0;\n /** @hidden */\n _this.prevPageMoving = false;\n /** @hidden */\n _this.pageTemplateChange = false;\n /** @hidden */\n _this.isAutoGen = false;\n _this.mediaBindInstance = {};\n /** @hidden */\n _this.commandDelIndex = undefined;\n /** @hidden */\n _this.asyncTimeOut = 50;\n /** @hidden */\n _this.isExportGrid = false;\n // enable/disable logger for MVC & Core\n _this.enableLogger = true;\n _this.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this.mergePersistGridData, _this);\n return _this;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[\"\" + val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n this.enableInfiniteAggrgate();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n NotStartsWith: 'Does Not Start With',\n Like: 'Like',\n EndsWith: 'Ends With',\n NotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n NotContains: 'Does Not Contain',\n IsNull: 'Null',\n NotNull: 'Not Null',\n IsEmpty: 'Empty',\n IsNotEmpty: 'Not Empty',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n GroupButton: 'Group button',\n UnGroupAria: 'ungroup button',\n GroupSeperator: 'Separator for the grouped columns',\n UnGroupIcon: 'ungroup the grouped column ',\n GroupedSortIcon: 'sort the grouped column ',\n GroupedDrag: 'Drag the grouped column',\n GroupCaption: ' is groupcaption cell',\n CheckBoxLabel: 'checkbox',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n AddCurrentSelection: 'Add current selection to filter',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n FilterMenuDialogARIA: 'Filter menu dialog',\n ExcelFilterDialogARIA: 'Excel filter dialog',\n DialogEditARIA: 'Edit dialog',\n ColumnChooserDialogARIA: 'Column chooser',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort',\n FilterDescription: 'Press Alt Down to open filter Menu',\n SortDescription: 'Press Enter to sort',\n ColumnMenuDescription: 'Press Alt Down to open Column Menu',\n GroupDescription: 'Press Ctrl space to group',\n ColumnHeader: ' column header ',\n TemplateCell: ' is template cell',\n CommandColumnAria: 'is Command column column header ',\n DialogEdit: 'Dialog edit',\n ClipBoard: 'clipboard',\n AscendingText: 'Ascending',\n DescendingText: 'Descending',\n NoneText: 'None',\n Expanded: 'Expanded',\n Collapsed: 'Collapsed'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { datarole: 'grid' });\n createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : null }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if (this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) {\n this.isVirtualAdaptive = true;\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(events.load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(events.load);\n }\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n if (this.loadingIndicator.indicatorType === 'Spinner') {\n this.showSpinner();\n }\n this.notify(events.initialEnd, {});\n if (this.loadingIndicator.indicatorType === 'Shimmer') {\n this.refreshMaskRow();\n }\n if (this.refreshing) {\n this.trigger('created');\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.showMaskRow = function (axisDirection, dialogElement) {\n if (isNullOrUndefined(this.headerModule) || isNullOrUndefined(this.contentModule)) {\n return;\n }\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n var gridFooter = this.getFooterContent();\n if (dialogElement) {\n var dialogHolder = dialogElement.querySelector('.e-checkboxlist');\n var maskRowCount = Math.floor(dialogHolder.getBoundingClientRect().height / this.getRowHeight());\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n dialogHolder.innerHTML = '';\n for (var i = 0; i < maskRowCount; i++) {\n dialogHolder.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(dialogHolder\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n return;\n }\n if ((!this.enableRtl && !this.getHeaderContent().style.paddingRight)\n || (this.enableRtl && !this.getHeaderContent().style.paddingLeft)) {\n gridContent.style.overflowY = 'hidden';\n }\n if (!this.isInitialLoad && !this.getColumns().length) {\n var contentHeight = gridContent.getBoundingClientRect().height;\n var maskTableHeight = contentHeight === 0 ? this.allowPaging ? this.pageSettings.pageSize * this.getRowHeight()\n : window.innerHeight : contentHeight;\n var contentRowCount = Math.ceil(maskTableHeight / this.getRowHeight());\n if (this.rowRenderingMode !== 'Vertical') {\n this.headerMaskTable = this.createEmptyMaskTable(gridHeader, 1);\n }\n this.contentMaskTable = this.createEmptyMaskTable(gridContent, contentRowCount);\n return;\n }\n this.maskRowContentScroll = this.enableVirtualization && axisDirection ? true : false;\n if (!this.contentMaskTable && !(this.isFrozenGrid() && this.enableColumnVirtualization && axisDirection === 'X')) {\n var content = gridContent;\n if (this.isFrozenGrid()) {\n if (!this.isInitialLoad && !this.enableVirtualization && this.frozenRows && this.height !== 'auto') {\n var contentHeight = content.getBoundingClientRect().height - (this.frozenRows * this.getRowHeight());\n content.style.height = contentHeight + 'px';\n }\n content = content.querySelector('.e-frozen-left-content, .e-frozen-right-content');\n }\n else if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.contentMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n }\n if (!this.headerMaskTable && (this.isFrozenGrid() || (this.enableColumnVirtualization && axisDirection === 'X'))\n && !((this.isFrozenGrid() && ((this.enableVirtualization && axisDirection === 'Y')\n || (this.enableColumnVirtualization && axisDirection === 'X')\n || (this.enableInfiniteScrolling && axisDirection === 'down'))))) {\n var content = gridHeader;\n if (this.isFrozenGrid()) {\n content = content.querySelector('.e-frozen-left-header, .e-frozen-right-header');\n }\n else if (this.enableColumnVirtualization && axisDirection === 'X') {\n content = content.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n if (!this.movableHeaderMaskTable && this.isFrozenGrid() && !((this.enableVirtualization && axisDirection === 'Y')\n || (this.enableInfiniteScrolling && axisDirection === 'down'))) {\n var content = gridHeader.querySelector('.e-movableheader');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.movableHeaderMaskTable = this.createMaskTable(content, this.getMovableContentMaskColumns(), axisDirection);\n }\n if (!this.rightHeaderMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right'\n && !((this.enableVirtualization && axisDirection === 'Y') || (this.enableInfiniteScrolling && axisDirection === 'down'))) {\n this.rightHeaderMaskTable = this.createMaskTable(gridHeader\n .querySelector('.e-frozen-right-header'), this.getRightContentMaskColumns(), axisDirection);\n }\n if (!this.movableContentMaskTable && this.isFrozenGrid()) {\n var content = gridContent.querySelector('.e-movablecontent');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.movableContentMaskTable = this.createMaskTable(content, this.getMovableContentMaskColumns(), axisDirection);\n }\n }\n if (!this.rightContentMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.rightContentMaskTable = this.createMaskTable(gridContent\n .querySelector('.e-frozen-right-content'), this.getRightContentMaskColumns(), axisDirection);\n }\n if (gridFooter && gridFooter.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n if (this.isFrozenGrid()) {\n footerContent = footerContent.querySelector('.e-frozen-left-footercontent, .e-frozen-right-footercontent');\n }\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n if (this.isFrozenGrid()) {\n if (!this.movableFooterContentMaskTable) {\n this.movableFooterContentMaskTable = this.createMaskTable(gridFooterContent\n .querySelector('.e-movablefootercontent'));\n }\n if (this.getFrozenMode() === 'Left-Right' && !this.rightFooterContentMaskTable) {\n this.rightFooterContentMaskTable = this.createMaskTable(gridFooterContent\n .querySelector('.e-frozen-right-footercontent'));\n }\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n var columns = this.getColumns();\n if (this.isFrozenGrid()) {\n if (this.getFrozenMode() === 'Left' || this.getFrozenMode() === 'Left-Right') {\n columns = this.frozenColumns ? columns.slice(0, this.frozenColumns) : this.getFrozenLeftColumns();\n }\n else if (this.getFrozenMode() === 'Right') {\n columns = this.getFrozenRightColumns();\n }\n }\n return columns;\n };\n Grid.prototype.getMovableContentMaskColumns = function () {\n var gridColumns = this.getColumns();\n var columns = this.frozenColumns ? gridColumns.slice(this.frozenColumns, gridColumns.length)\n : this.getMovableColumns();\n return columns;\n };\n Grid.prototype.getRightContentMaskColumns = function () {\n return this.getFrozenRightColumns();\n };\n Grid.prototype.createEmptyMaskTable = function (maskElement, rowCount) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + this.getRowHeight() + 'px;'\n } });\n var cell = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n cell.innerHTML = this.getShimmerTemplate();\n row.appendChild(cell);\n for (var i = 0; i < rowCount; i++) {\n tbody.appendChild(row.cloneNode(true));\n }\n table.appendChild(tbody);\n maskElement.appendChild(table);\n return table;\n };\n Grid.prototype.createMaskTable = function (element, columns, axisDirection) {\n var parentElement = element;\n var header = closest(parentElement, '.e-gridheader') ? true : false;\n var content = closest(parentElement, '.e-gridcontent') ? true : false;\n var footer = closest(parentElement, '.e-gridfooter') ? true : false;\n var gridContent = this.getContent().firstChild;\n var gridContentScrollHeight = gridContent.scrollHeight;\n var table = parentElement.querySelector('table');\n if (this.isFrozenGrid()) {\n if (content) {\n parentElement.style.overflow = 'hidden';\n }\n parentElement.style.position = 'relative';\n }\n var maskTable = table.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.removeAttribute('aria-multiselectable');\n maskTable.removeAttribute('aria-colcount');\n maskTable.removeAttribute('aria-rowcount');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '1';\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n if (header && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.transform = 'translate(0px,'\n + table.querySelector('thead').getBoundingClientRect().height + 'px)';\n }\n maskTable.setAttribute('class', 'e-table e-masked-table');\n var maskColgroup = table.querySelector('colgroup').cloneNode(true);\n maskColgroup.removeAttribute('id');\n maskColgroup.setAttribute('class', 'e-masked-colgroup');\n maskTable.appendChild(maskColgroup);\n if (header && this.enableColumnVirtualization && axisDirection === 'X') {\n var row = this.createMaskRow(maskColgroup, columns);\n var thead = table.querySelector('thead');\n var rows = [].slice.call(thead.querySelectorAll('tr'));\n var maskTHead = thead.cloneNode();\n maskTHead.removeAttribute('role');\n maskTHead.setAttribute('class', 'e-masked-thead');\n var rowCount = rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTHead.appendChild(row.cloneNode(true));\n maskTHead.childNodes[parseInt(i.toString(), 10)].style\n .height = rows[parseInt(i.toString(), 10)].getBoundingClientRect().height + 'px';\n }\n maskTable.appendChild(maskTHead);\n }\n var maskTBody = table.querySelector('tbody').cloneNode();\n maskTBody.removeAttribute('role');\n maskTBody.setAttribute('class', 'e-masked-tbody');\n var tbody = table.querySelector('tbody');\n if (content || (header && this.isFrozenGrid())) {\n var rowCountElement = gridContent;\n var rowCount = header && this.isFrozenGrid() ? this.frozenRows\n : Math.ceil(rowCountElement.getBoundingClientRect().height / this.getRowHeight());\n if (tbody.querySelector('.e-emptyrow') || !tbody.childNodes.length || (content && this.childGrid)) {\n var row = this.createMaskRow(maskColgroup, columns);\n var altRow = row.cloneNode(true);\n altRow.classList.add('e-altrow');\n for (var i = 0; i < rowCount; i++) {\n var altNumber = content && this.isFrozenGrid() && this.frozenRows ? this.frozenRows + 1 : 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr:not([style*=\"display:none\"]):not([style*=\"display: none\"])';\n var rows = [].slice.call(tbody.querySelectorAll(rowsQuery));\n var addEditRow = tbody.querySelector('.e-addedrow, .e-editedrow');\n var addEditRowIndex = void 0;\n if (addEditRow) {\n addEditRowIndex = rows.indexOf(addEditRow);\n if (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (header && this.isFrozenGrid()) || (this.enableVirtualization && axisDirection) ? rows.length\n : rowCount <= rows.length ? rowCount : rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTBody.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n if (addEditRow && addEditRow.classList.contains('e-editedrow') && addEditRowIndex < rowCount) {\n var addEditMaskRow = maskTBody.childNodes[parseInt(addEditRowIndex.toString(), 10)];\n addEditMaskRow.style.height = this.getRowHeight() + 'px';\n addEditMaskRow.classList.add('e-row');\n if (addEditRow.classList.contains('e-altrow')) {\n addEditMaskRow.classList.add('e-altrow');\n }\n }\n }\n }\n maskTable.appendChild(maskTBody);\n if (footer) {\n var tfoot = table.querySelector('tfoot');\n var maskTFoot = tfoot.cloneNode();\n maskTFoot.setAttribute('class', 'e-masked-tfoot');\n var rows = [].slice.call(tfoot.querySelectorAll('tr'));\n for (var i = 0; i < rows.length; i++) {\n maskTFoot.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n maskTable.appendChild(maskTFoot);\n }\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (header && this.isFrozenGrid() && tbody\n .getBoundingClientRect().height < maskTable.querySelector('tbody').getBoundingClientRect().height) {\n var maskTableHolderHeight = maskTable.querySelector('tbody')\n .getBoundingClientRect().height - tbody.getBoundingClientRect().height;\n var maskTableHolder = this.createElement('div', { className: 'e-masked-table-holder', attrs: {\n style: 'height: ' + maskTableHolderHeight + 'px;'\n } });\n parentElement.appendChild(maskTableHolder);\n }\n else if (header && this.isFrozenGrid() && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.height = parentElement\n .getBoundingClientRect().height - table.querySelector('thead').getBoundingClientRect().height + 'px';\n }\n if (content && !(this.enableVirtualization && axisDirection)) {\n var minScrollTop = gridContentScrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = gridContent.scrollTop <= minScrollTop ? gridContent.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(parentElement, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n return maskTable;\n };\n Grid.prototype.applyMaskRow = function (row, rowHeight) {\n var maskRow = row;\n maskRow.removeAttribute('role');\n maskRow.removeAttribute('aria-rowindex');\n maskRow.removeAttribute('data-rowindex');\n maskRow.removeAttribute('data-uid');\n maskRow.classList.add('e-masked-row');\n maskRow.style.height = rowHeight + 'px';\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n var displayAsCheckBoxCell = maskCell.firstChild && maskCell.firstChild.classList\n && maskCell.firstChild.classList.contains('e-checkbox-wrapper');\n maskCell.removeAttribute('role');\n maskCell.removeAttribute('tabindex');\n maskCell.removeAttribute('aria-label');\n maskCell.removeAttribute('data-colindex');\n maskCell.removeAttribute('aria-colindex');\n maskCell.removeAttribute('index');\n maskCell.removeAttribute('ej-mappingname');\n maskCell.removeAttribute('ej-mappingvalue');\n maskCell.removeAttribute('e-mappinguid');\n maskCell.removeAttribute('aria-expanded');\n maskCell.classList.add('e-masked-cell');\n maskCell.innerHTML = this.getShimmerTemplate();\n if (maskCell.classList.contains('e-recordplusexpand') || maskCell.classList.contains('e-recordpluscollapse')) {\n maskCell.firstChild.classList.add('e-mask-group-intent');\n }\n else if (maskCell.classList.contains('e-gridchkbox') || displayAsCheckBoxCell) {\n maskCell.firstChild.classList.add('e-mask-checkbox-intent');\n }\n else if (maskCell.classList.contains('e-rowdragdrop')) {\n maskCell.firstChild.classList.add('e-mask-drag-intent');\n }\n else if (maskCell.classList.contains('e-indentcell')) {\n maskCell.innerHTML = '';\n }\n }\n return maskRow;\n };\n Grid.prototype.createMaskRow = function (refColgroup, refColumns) {\n var colgroup = refColgroup;\n var columns = refColumns;\n var row = this.createElement('tr', { className: 'e-masked-row e-row' });\n if (this.rowRenderingMode !== 'Vertical') {\n row.style.height = this.getRowHeight() + 'px';\n }\n var td = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n for (var i = 0, colIndex = 0; i < colgroup.childNodes.length; i++) {\n var col = colgroup.childNodes[parseInt(i.toString(), 10)];\n var localTD = td.cloneNode();\n localTD.innerHTML = this.getShimmerTemplate();\n if (!(col.classList.contains('e-group-intent') || col.classList.contains('e-detail-intent')\n || col.classList.contains('e-drag-intent'))) {\n if (this.rowRenderingMode === 'Vertical' && columns[parseInt(colIndex.toString(), 10)]) {\n localTD.setAttribute('data-cell', columns[parseInt(colIndex.toString(), 10)].headerText ?\n columns[parseInt(colIndex.toString(), 10)].headerText : columns[parseInt(colIndex.toString(), 10)].field);\n }\n if (col.style.display === 'none') {\n localTD.classList.add('e-hide');\n }\n else {\n localTD.style.textAlign = columns[parseInt(colIndex.toString(), 10)]\n && columns[parseInt(colIndex.toString(), 10)].textAlign ?\n columns[parseInt(colIndex.toString(), 10)].textAlign.toLowerCase()\n : this.enableRtl ? 'right' : 'left';\n if (columns[parseInt(colIndex.toString(), 10)] && (columns[parseInt(colIndex.toString(), 10)].type === 'checkbox'\n || columns[parseInt(colIndex.toString(), 10)].displayAsCheckBox)) {\n localTD.firstChild.classList.add('e-mask-checkbox-intent');\n }\n }\n colIndex++;\n }\n else {\n if (col.classList.contains('e-group-intent')) {\n localTD.firstChild.classList.add('e-mask-group-intent');\n }\n else if (col.classList.contains('e-detail-intent')) {\n localTD.firstChild.classList.add('e-mask-detail-intent');\n }\n else if (col.classList.contains('e-drag-intent')) {\n localTD.firstChild.classList.add('e-mask-drag-intent');\n }\n }\n row.appendChild(localTD);\n }\n return row;\n };\n Grid.prototype.getShimmerTemplate = function () {\n if (this.maskRowContentScroll) {\n return '';\n }\n return '';\n };\n Grid.prototype.addShimmerEffect = function () {\n this.maskRowContentScroll = false;\n var maskSpan = [].slice.call(this.element.querySelectorAll('.e-mask:not(.e-shimmer-wave)'));\n for (var i = 0; i < maskSpan.length; i++) {\n if (maskSpan[parseInt(i.toString(), 10)]) {\n maskSpan[parseInt(i.toString(), 10)].classList.add('e-shimmer-wave');\n }\n }\n };\n Grid.prototype.translateMaskRow = function (e) {\n var target = e.target;\n var maskTables = target.querySelectorAll('.e-masked-table');\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n var minScrollTop = target.scrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = target.scrollTop <= minScrollTop ? target.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(maskTable, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n }\n };\n Grid.prototype.removeMaskRow = function () {\n if (!isNullOrUndefined(this.contentModule)) {\n var gridContent = this.getContent().firstChild;\n EventHandler.remove(gridContent, 'scroll', this.translateMaskRow);\n }\n var maskTables = [this.headerMaskTable, this.movableHeaderMaskTable, this.rightHeaderMaskTable,\n this.contentMaskTable, this.movableContentMaskTable, this.rightContentMaskTable, this.footerContentMaskTable,\n this.movableFooterContentMaskTable, this.rightFooterContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n if (this.isFrozenGrid() && !closest(maskTable, '.e-gridfooter')) {\n var parent_1 = maskTable.parentElement;\n parent_1.style.overflow = '';\n parent_1.style.position = '';\n if (closest(maskTable, '.e-frozen-left-header') || closest(maskTable, '.e-movableheader')\n || closest(maskTable, '.e-frozen-right-header')) {\n var maskTableHolder = parent_1.querySelector('.e-masked-table-holder');\n if (maskTableHolder) {\n remove(maskTableHolder);\n }\n }\n }\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.movableHeaderMaskTable = null;\n this.rightHeaderMaskTable = null;\n this.contentMaskTable = null;\n this.movableContentMaskTable = null;\n this.rightContentMaskTable = null;\n this.footerContentMaskTable = null;\n this.movableFooterContentMaskTable = null;\n this.rightFooterContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n if (!this.isInitialLoad && !this.getColumns().length) {\n return;\n }\n if (this.contentMaskTable && gridContent.querySelector('.e-masked-table')) {\n var content = gridContent;\n if (this.isFrozenGrid()) {\n content = content.querySelector('.e-frozen-left-content, .e-frozen-right-content');\n }\n else if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.headerMaskTable && this.isFrozenGrid()) {\n this.refreshMaskRowColgroupWidth(gridHeader.querySelector('.e-frozen-left-header, .e-frozen-right-header'));\n }\n if (this.movableHeaderMaskTable && this.isFrozenGrid()) {\n var content = gridHeader.querySelector('.e-movableheader');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.rightHeaderMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.refreshMaskRowColgroupWidth(gridHeader.querySelector('.e-frozen-right-header'));\n }\n if (this.movableContentMaskTable && this.isFrozenGrid()) {\n var content = gridContent.querySelector('.e-movablecontent');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.rightContentMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.refreshMaskRowColgroupWidth(gridContent.querySelector('.e-frozen-right-content'));\n }\n };\n Grid.prototype.refreshMaskRowColgroupWidth = function (content) {\n var table = content.querySelector('table:not(.e-masked-table)');\n var colgroup = table.querySelector(literals.colGroup).cloneNode(true);\n var maskTable = content.querySelector('.e-masked-table');\n colgroup.removeAttribute('id');\n colgroup.setAttribute('class', 'e-masked-colgroup');\n for (var i = 0; i < colgroup.childNodes.length; i++) {\n colgroup.childNodes[parseInt(i.toString(), 10)].removeAttribute('class');\n }\n remove(maskTable.querySelector('.e-masked-colgroup'));\n maskTable.insertBefore(colgroup, maskTable.firstChild);\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[parseInt(index.toString(), 10)].hideAtMedia)\n && (isNullOrUndefined(gcol[parseInt(index.toString(), 10)].visible)\n || gcol[parseInt(index.toString(), 10)].visible)) {\n this.pushMediaColumn(gcol[parseInt(index.toString(), 10)], index);\n }\n }\n }\n }\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[parseInt(index.toString(), 10)] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[parseInt(index.toString(), 10)]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[parseInt(i.toString(), 10)].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + literals.gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > this.height && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n if (this.enableAdaptiveUI && this.scrollModule) {\n this.scrollModule.refresh();\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[parseInt(i.toString(), 10)].uid]\n .removeListener(this.mediaBindInstance[this.mediaCol[parseInt(i.toString(), 10)].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (this.isReact || this.isVue) {\n this.destroyTemplate(['template']);\n }\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n if (this.isReact && !Browser.isIE) {\n this.element.innerHTML = '';\n }\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n this.isFreezeRefresh = false;\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n this.clipboardModule.destroy();\n this.printModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n Grid.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n var childGridParent = null;\n var parentInstance = null;\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n }\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n if (this.allowPaging) {\n this.pagerModule.refresh();\n }\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n childGridParent = this.parentDetails ? document.querySelector(\"#\" + this.parentDetails.parentID) : null;\n parentInstance = childGridParent ? childGridParent.ej2_instances[0] : null;\n if (this.childGrid && parentInstance && isNullOrUndefined(parentInstance.childGrid.childGrid)) {\n var childGridObject = Object.assign({}, parentInstance.childGrid, { childGrid: newProp.childGrid });\n parentInstance.setProperties({ childGrid: childGridObject }, true);\n while (!isNullOrUndefined(parentInstance.parentDetails)) {\n var currentParent = document.querySelector(\"#\" + parentInstance.parentDetails.parentID);\n var currentParentInstance = currentParent ? currentParent.ej2_instances[0] : null;\n if (currentParentInstance) {\n var currentChildObject = Object.assign({}, currentParentInstance.childGrid);\n currentChildObject.childGrid = parentInstance.childGrid;\n currentParentInstance.setProperties({ childGrid: currentChildObject }, true);\n }\n parentInstance = currentParentInstance;\n }\n }\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[parseInt(i.toString(), 10)]]), this.dataSource[props[parseInt(i.toString(), 10)]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this.selectRow(index);\n _this.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[\"\" + filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setTablesCount = function () {\n var frozenCols = this.getFrozenColumns();\n var frozenLeft = this.getFrozenLeftColumnsCount();\n var frozenRight = this.getFrozenRightColumnsCount();\n if (frozenCols && !frozenLeft && !frozenRight) {\n this.tablesCount = 2;\n }\n else if (!frozenCols && (frozenLeft || frozenRight)) {\n if ((frozenLeft && !frozenRight) || (frozenRight && !frozenLeft)) {\n this.tablesCount = 2;\n }\n else if (frozenLeft && frozenRight) {\n this.tablesCount = 3;\n }\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n if (this.enableColumnVirtualization && this.getFrozenColumns()) {\n var cells = this.contentModule.getHeaderCells();\n headerCells = cells.length ? cells : headerCells;\n }\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[parseInt(i.toString(), 10)];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[parseInt(i.toString(), 10)].allowReordering || !cols[parseInt(i.toString(), 10)].allowSorting\n || !cols[parseInt(i.toString(), 10)].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[parseInt(count.toString(), 10)].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns, isRecursion) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateColumnLevelFrozen();\n this.updateFrozenColumns();\n this.updateLockableColumns();\n }\n };\n Grid.prototype.updateColumnLevelFrozen = function () {\n var cols = this.columnModel;\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[parseInt(i.toString(), 10)];\n if (col.freeze === 'Left') {\n col.freezeTable = literals.frozenLeft;\n leftCols.push(col);\n }\n else if (col.freeze === 'Right') {\n col.freezeTable = literals.frozenRight;\n rightCols.push(col);\n }\n else {\n col.freezeTable = 'movable';\n movableCols.push(col);\n }\n }\n this.columnModel = leftCols.concat(movableCols).concat(rightCols);\n }\n };\n Grid.prototype.updateFrozenColumns = function () {\n if (this.frozenLeftCount || this.frozenRightCount) {\n return;\n }\n var cols = this.columnModel;\n var directFrozenCount = this.frozenColumns;\n var totalFrozenCount = this.getFrozenColumns();\n var count = 0;\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[parseInt(i.toString(), 10)];\n if (directFrozenCount) {\n if (i < directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n }\n else {\n col.freezeTable = 'movable';\n }\n }\n if (col.isFrozen && i >= directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n cols.splice(this.frozenColumns + count, 0, cols.splice(i, 1)[0]);\n count++;\n }\n else if (totalFrozenCount && !directFrozenCount) {\n col.freezeTable = 'movable';\n }\n if (!totalFrozenCount && !directFrozenCount && !isNullOrUndefined(col.freezeTable)) {\n col.freezeTable = undefined;\n }\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.getFrozenLeftColumnsCount() !== 0 || this.getFrozenRightColumnsCount() !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n if (this.contentModule && this.enableColumnVirtualization && this.isFrozenGrid() && inview.length\n && inview[0] > 0) {\n var frozenCols = this.contentModule.ensureFrozenCols(columns);\n columns = frozenCols;\n }\n return columns;\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[parseInt(i.toString(), 10)];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n *\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n if (this.enableVirtualization && this.groupSettings.enableLazyLoading) {\n return this.lazyLoadRender.getRowByIndex(index);\n }\n else {\n return this.contentModule.getRowByIndex(index);\n }\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getMovableRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.getFrozenDataRows()[parseInt(index.toString(), 10)];\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getFrozenRightRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n *\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + literals.rowCell);\n if (!cell) {\n var row = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row) && !row.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row.getAttribute('data-uid'));\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n args = { row: row, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex)) {\n var row_1 = closest(cell, '.' + literals.row);\n var rowIndex = parseInt(row_1.getAttribute(literals.dataRowIndex), 10);\n var frzCols = this.getFrozenColumns();\n var tableName = this.columnModel[parseInt(cellIndex.toString(), 10)].getFreezeTableName();\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n if (this.isFrozenGrid()) {\n if (tableName === literals.frozenLeft) {\n rows = this.contentModule.getRows();\n }\n else if (tableName === 'movable') {\n index = cellIndex - frzCols - this.frozenLeftCount;\n rows = this.contentModule.getMovableRows();\n }\n else if (tableName === literals.frozenRight) {\n index = cellIndex - (this.frozenLeftCount + this.movableCount);\n rows = this.contentModule.getFrozenRightRows();\n }\n }\n var rowsObject = rows.filter(function (r) { return r.uid === row_1.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[parseInt(index.toString(), 10)].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_1, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getMovableRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getFrozenRightRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(literals.tbody))) {\n return [];\n }\n var tbody = this.isFrozenGrid() ? this.getFrozenLeftContentTbody()\n : this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.isFrozenGrid() ? this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody)\n : this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[parseInt(i.toString(), 10)]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row)\n && (!rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10)] = rows[parseInt(i.toString(), 10)];\n }\n else {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n if (!this.isFrozenGrid()) {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.frozenContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n if (this.getFrozenMode() !== 'Right' && this.getFrozenMode() !== 'Left-Right') {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n *\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var isRight = this.getFrozenMode() === 'Right';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = col.getFreezeTableName() === 'movable' ? this.contentModule.getMovableRows() :\n col.getFreezeTableName() === 'frozen-right' ? this.getFrozenRightRowsObject() : this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[\"\" + rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n if (typeof value === 'string') {\n value = this.sanitize(value);\n }\n setValue(field, value, selectedRow[\"\" + rowData]);\n var left = this.getFrozenLeftColumnsCount() || this.getFrozenColumns();\n var movable = this.getMovableColumnsCount();\n if (this.isRowDragable() && !isRight) {\n left++;\n }\n var frIdx = left + movable;\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = col.getFreezeTableName() === 'movable' ? left : col.getFreezeTableName() === 'frozen-right' ? frIdx : 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable() && !isRight) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][\"\" + field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[\"\" + rowData]\n });\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @param {boolean} renderTemplates - Defines renderTemplates need to invoke\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid, renderTemplates) {\n var _this = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var isChildGrid = _this.childGrid && _this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this.getContentTable().querySelectorAll('.e-row') :\n _this.getDataRows();\n _this.refreshReactTemplateTD(rows, isChildGrid);\n var mCont = _this.getContent().querySelector('.' + literals.movableContent);\n var frCont = _this.getContent().querySelector('.e-frozen-right-content');\n if (mCont && mCont.querySelectorAll('.e-templatecell').length) {\n _this.refreshReactTemplateTD(_this.getMovableDataRows(), isChildGrid, true);\n }\n if (frCont && frCont.querySelectorAll('.e-templatecell').length) {\n _this.refreshReactTemplateTD(_this.getFrozenRightDataRows(), isChildGrid, true);\n }\n if (renderTemplates) {\n _this.renderTemplates();\n }\n });\n }\n };\n /**\n * @param {Element[] | NodeListOf} rows - Defines the rows\n * @param {boolean} isChildGrid - Defines whether it is a Hierarchy Grid.\n * @param {boolean} isFrozen - Defines whether it is a Frozen Grid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactTemplateTD = function (rows, isChildGrid, isFrozen) {\n var cells = 'cells';\n var rowIdx = 'index';\n var indent = this.getIndentCount();\n var childIndent = 0;\n var isChildRow = false;\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid')) {\n var gridObj = parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n childIndent = gridObj.getIndentCount();\n isChildRow = true;\n }\n if (rowsObj && rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index) &&\n !rows[parseInt(j.toString(), 10)].classList.contains('e-editedrow')) {\n for (var i = 0; i < rowsObj[\"\" + cells].length; i++) {\n var cell = rowsObj[\"\" + cells][parseInt(i.toString(), 10)];\n if (cell.isTemplate) {\n var cellRenderer = new CellRenderer(this, this.serviceLocator);\n var td = isChildGrid ? rows[parseInt(j.toString(), 10)]\n .children[cell.index + (isChildRow ? childIndent : indent)] : this.getCellFromIndex(j, isFrozen ? cell.index : i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshGroupCaptionFooterTemplate = function () {\n var isChildGrid = this.childGrid && this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.getContentTable().querySelectorAll('.e-groupcaptionrow, .e-groupfooterrow');\n for (var i = 0; i < rows.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var gridObj = this;\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid')) {\n gridObj = parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n }\n if (rowsObj) {\n var cells = rowsObj.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: rowsObj.data, dataUid: rowsObj.uid };\n gridObj.notify(events.refreshAggregateCell, args);\n }\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this, this.serviceLocator);\n var td = parentsUntil(this.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n }\n }\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n *\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.isFrozenGrid()) {\n var currentTbl = parentsUntil(selectRowEle[0], 'e-table');\n var currentTblName = currentTbl.parentElement.matches('.e-frozen-left-header,.e-frozen-left-content') ? 'left'\n : currentTbl.parentElement.matches('.e-frozen-right-header,.e-frozen-right-content') ? 'right' : 'movable';\n var mTr = this.getMovableRowsObject()[selectedRow.index];\n this.setFrozenRowData(mTr, rowData);\n if (currentTblName === 'left') {\n var lTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(lTr, rowData);\n }\n if (currentTblName === 'right' || this.frozenRightColumns.length > 0) {\n var rTr = this.getFrozenRightRowsObject()[selectedRow.index];\n this.setFrozenRowData(rTr, rowData);\n }\n }\n else if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n Grid.prototype.setFrozenRowData = function (fTr, rowData) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n fTr.changes = rowData;\n refreshForeignData(fTr, this.getForeignKeyColumns(), fTr.changes);\n rowRenderer.refresh(fTr, this.getColumns(), true);\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n if (this.frozenName === 'Left-Right' && columnIndex >= this.movableCount) {\n return undefined;\n }\n var index = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableDataRows()[parseInt(rowIndex.toString(), 10)] &&\n this.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell)[columnIndex - index];\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n var index = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n var rows = this.getFrozenRightDataRows();\n return rows[parseInt(rowIndex.toString(), 10)] && rows[parseInt(rowIndex.toString(), 10)]\n .getElementsByClassName(literals.rowCell)[columnIndex - index];\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n var left = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableVirtualHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n var left = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n return this.getFrozenRightHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getFrozenVirtualHeader().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * @param {string} uid - Defines the uid\n * @param {boolean} isMovable - Defines isMovable\n * @param {boolean} isFrozenRight - Defines isFrozenRight\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid, isMovable, isFrozenRight) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (this.isFrozenGrid()) {\n if (!row || isMovable || isFrozenRight) {\n row = this.rowObject(this.contentModule.getMovableRows(), uid);\n if ((!row && this.getFrozenMode() === 'Left-Right') || isFrozenRight) {\n row = this.rowObject(this.contentModule.getFrozenRightRows(), uid);\n }\n return row;\n }\n }\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n if (rows) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getMovableRowsObject = function () {\n var rows = [];\n if (this.isFrozenGrid()) {\n rows = this.contentModule.getMovableRows();\n }\n return rows;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n var rows = [];\n if (this.getFrozenMode() === 'Right' || this.getFrozenMode() === 'Left-Right') {\n rows = this.contentModule.getFrozenRightRows();\n }\n return rows;\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[parseInt(i.toString(), 10)];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[parseInt(k.toString(), 10)].isPrimaryKey) {\n keys.push(this.columnModel[parseInt(k.toString(), 10)].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.isManualRefresh = true;\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this.getColumns()[parseInt(i.toString(), 10)].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.splitFrozenCount(this.columns);\n if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n this.setProperties({ frozenColumns: 0 }, true);\n }\n this.setTablesCount();\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n else if (this.frozenColumns || this.frozenRows) {\n this.frozenName = 'Left';\n }\n else {\n this.frozenName = undefined;\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitFrozenCount(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenRightCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Left') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenLeftCount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n }\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n visibleFrozenColumns++;\n }\n }\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible && (columns[parseInt(i.toString(), 10)].freeze === 'Left'\n || columns[parseInt(i.toString(), 10)].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if (!this.frozenLeftCount && !this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getVisibleFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && cols[parseInt(i.toString(), 10)].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt, index);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n *\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n *\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n *\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Remove the existing columns along with the grid actions like sorting, filtering, searching, grouping, aggregate, etc., and grid will refresh with new columns based on the updated new data source.\n * > * If no columns are specified while changing the data source, then the columns are auto generated in the Grid based on the list of columns in the updated data source.\n *\n * @param {Object | DataManager | DataResult} dataSource - Assign the new datasource.\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines columns.\n * @returns {void}\n *\n *\n * ```typescript\n * \n *
\n * \n * ```\n *\n */\n Grid.prototype.changeDataSource = function (dataSource, columns) {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, true);\n }\n if (columns && columns.length) {\n this.setProperties({ columns: columns }, true);\n }\n if (dataSource) {\n if (isNullOrUndefined(columns)) {\n this.setProperties({ columns: [] }, true);\n }\n this.setProperties({ dataSource: dataSource }, true);\n }\n this.freezeRefresh();\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.clearGridActions = function () {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, false);\n }\n else {\n this.freezeRefresh();\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n *\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n *\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n *\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n *\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n *\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n *\n * @returns {void}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n *\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(literals.colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(literals.colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.frozenRightCount : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[parseInt(index.toString(), 10)].style.width = newWidth;\n contentCol[parseInt(index.toString(), 10)].style.width = newWidth;\n }\n else {\n headerCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n contentCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n }\n _this.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen || (this.columns.length === this.groupSettings.columns.length)) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[parseInt(i.toString(), 10)].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[parseInt(j.toString(), 10)];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if (this.isFrozenGrid() || (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var columns = this.getColumns();\n var headerTable = this.getHeaderTable();\n var tableWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n if (this.groupSettings.columns.length\n && this.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) > -1) {\n var headerCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll(':not(.e-group-intent):not(.e-detail-intent):not(.e-drag-intent)'));\n if (headerCol[parseInt(i.toString(), 10)].style.display === 'none') {\n continue;\n }\n }\n if (columns[parseInt(i.toString(), 10)].width) {\n tableWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n else {\n tableWidth = 0;\n break;\n }\n }\n }\n if (tableWidth) {\n var percentageWidth = this.isPercentageWidthGrid();\n var unit = this.widthUnit(percentageWidth);\n var contentTable = this.getContentTable();\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var indentWidth = this.defaultIndentWidth(percentageWidth);\n var indentWidthUnitFormat = indentWidth.toString() + unit;\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n var contentIndentCol = [].slice.call(contentTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n for (var i = 0; i < headerIndentCol.length; i++) {\n headerIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n contentIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n tableWidth += indentWidth;\n }\n }\n if ((percentageWidth && tableWidth < 100)\n || (!percentageWidth && tableWidth < contentTable.parentElement.clientWidth)) {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n var tableWidthUnitFormat = tableWidth.toString() + unit;\n headerTable.style.setProperty('width', tableWidthUnitFormat);\n contentTable.style.setProperty('width', tableWidthUnitFormat);\n }\n else {\n this.restoreAdjustColumns();\n }\n };\n Grid.prototype.restoreAdjustColumns = function () {\n if (this.isFrozenGrid() || (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n removeClass([headerTable, contentTable], ['e-tableborder']);\n headerTable.style.removeProperty('width');\n contentTable.style.removeProperty('width');\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var percentageWidth = this.isPercentageWidthGrid();\n var indentWidthUnitFormat_1 = this.defaultIndentWidth(percentageWidth).toString() + this.widthUnit(percentageWidth);\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n headerIndentCol.forEach(function (element) {\n element.style.setProperty('width', indentWidthUnitFormat_1);\n });\n headerTable.querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.recalcIndentWidth();\n }\n };\n Grid.prototype.widthUnit = function (percentageWidth) {\n return percentageWidth ? '%' : 'px';\n };\n Grid.prototype.defaultIndentWidth = function (percentageWidth) {\n return percentageWidth ? parseFloat((30 / this.element.offsetWidth * 100).toFixed(1)) : 30;\n };\n Grid.prototype.isPercentageWidthGrid = function () {\n return this.getColumns()[0].width.toString().indexOf('%') > -1;\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_1 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[parseInt(j.toString(), 10)].field === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[parseInt(i.toString(), 10)], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_1.allowSorting) {\n this_1.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_1.groupSettings.showGroupedColumn) {\n var column = this_1.enableColumnVirtualization ?\n this_1.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_1.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_1.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[parseInt(i.toString(), 10)].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n var _a;\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n (_a = this.element.classList).add.apply(_a, this.cssClass.split(' '));\n }\n else {\n this.element.classList.add(this.cssClass);\n }\n }\n // If the below if statement is removed, then drag and drop between grids will not work in firefox browser.\n if (this.allowRowDragAndDrop && this.rowDropSettings.targetID && Browser.info.name === 'mozilla') {\n this.element.classList.add('e-disableuserselect');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this, this.serviceLocator);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: literals.content, attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({\n opensOn: 'custom',\n content: '',\n cssClass: this.cssClass ? this.cssClass : null\n }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n this.isFreezeRefresh = true;\n if (this.enableVirtualization || this.enableInfiniteScrolling) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n var width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if (width > element.getBoundingClientRect().width) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (element.getAttribute('data-tooltip-id')) {\n return;\n }\n if (this.getTooltipStatus(element)) {\n var col = this.getColumns()[parseInt(element.getAttribute(literals.dataColIndex), 10)];\n var domSetter = col.disableHtmlEncode ? 'innerText' : 'innerHTML';\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n var innerElement = element.getElementsByClassName('e-headertext')[0];\n contentDiv[\"\" + domSetter] = this.sanitize(innerElement.innerText);\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv[\"\" + domSetter] = this.sanitize(element.innerText);\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n if (this.enableHtmlSanitizer) {\n this.toolTipObj.enableHtmlSanitizer = true;\n }\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\n this.toolTipObj['open'](element);\n }\n }\n }\n this.hoverFrozenRows(e);\n };\n /**\n * @param {MouseEvent} e - Defines the mouse event\n * @returns {void}\n * @hidden\n */\n Grid.prototype.hoverFrozenRows = function (e) {\n if (this.isFrozenGrid()) {\n var row = parentsUntil(e.target, literals.row);\n if ([].slice.call(this.element.getElementsByClassName('e-frozenhover')).length && e.type === 'mouseout') {\n var rows = [].slice.call(this.element.getElementsByClassName('e-frozenhover'));\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].classList.remove('e-frozenhover');\n }\n }\n else if (row) {\n var rows = [].slice.call(this.element.querySelectorAll('tr[data-rowindex=\"' + row.getAttribute(literals.dataRowIndex) + '\"]'));\n rows.splice(rows.indexOf(row), 1);\n for (var i = 0; i < rows.length; i++) {\n if (row.getAttribute('aria-selected') !== 'true' && rows[parseInt(i.toString(), 10)]) {\n rows[parseInt(i.toString(), 10)].classList.add('e-frozenhover');\n }\n else if (rows[parseInt(i.toString(), 10)]) {\n rows[parseInt(i.toString(), 10)].classList.remove('e-frozenhover');\n }\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table', { attrs: { role: 'grid' } });\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr');\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mousemove', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n *\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, literals.gridContent) ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell')) && (e.target &&\n ['A', 'BUTTON', 'INPUT'].indexOf(e.target.tagName) === -1)) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[\"\" + cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, literals.row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(literals.editedRow) || tr.classList.contains(literals.addedRow));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, literals.rowCell) &&\n parentsUntil(e.target, literals.rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear && !filterClear.parentElement.classList.contains('e-tbar-btn')) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch' && !((parentsUntil(relatedTarget, 'e-ddl') || parentsUntil(relatedTarget, 'e-ddt')) &&\n parentsUntil(relatedTarget, 'e-input-group')) && (parentsUntil(relatedTarget, 'e-uploader') || !isNullOrUndefined(parentsUntil(relatedTarget, 'e-input-group')))) {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if ((gridElement && gridElement.id !== this.element.id) || (parentsUntil(e.target, 'e-unboundcelldiv') &&\n isNullOrUndefined(gridElement))) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization && dataObj.pageSettings) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[\"\" + key] === 'object') && !isNullOrUndefined(this[\"\" + key])) {\n if (Array.isArray(this[\"\" + key]) && key === 'columns') {\n setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\n this[\"\" + key] = dataObj[\"\" + key];\n }\n else {\n extend(this[\"\" + key], dataObj[\"\" + key]);\n }\n }\n else {\n this[\"\" + key] = dataObj[\"\" + key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var _loop_2 = function (i) {\n var localCol = columns.filter(function (tCol) { return tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (localCol.columns && localCol.columns.length) {\n this_2.mergeColumns(storedColumns[parseInt(i.toString(), 10)].columns, localCol.columns);\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_2(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n if (this.focusModule && this.focusModule.currentInfo && this.focusModule.currentInfo.element) {\n removeClass([this.focusModule.currentInfo.element, this.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.focusModule.currentInfo.element.tabIndex = -1;\n }\n if (!this.element.classList.contains('e-childgrid')) {\n this.element.focus();\n }\n }\n }\n if (e.keyCode === 87) { //alt w\n var focusModule = this.focusModule;\n if (focusModule) {\n if (!this.currentViewData.length) {\n return;\n }\n focusModule.focusContent();\n focusModule.addOutline();\n }\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.setFrozenCount();\n var fCnt = this.getContent().querySelector('.e-frozen-left-content');\n var frCnt = this.getContent().querySelector('.e-frozen-right-content');\n var isColFrozen = !this.frozenRightCount && !this.frozenLeftCount;\n var isFrozen = this.getFrozenColumns() !== 0;\n if (!isFrozen && ((!fCnt && this.frozenLeftCount) || (!frCnt && this.frozenRightCount) || (fCnt && !this.frozenLeftCount)\n || (frCnt && !this.frozenRightCount))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else if (isColFrozen && ((this.getFrozenColumns() === 1 && !fCnt) || (this.getFrozenColumns() === 0 && fCnt))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else {\n this.isPreventScrollEvent = true;\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid()) {\n var mTbl = this.contentModule.getMovableContent().querySelector('.' + literals.table);\n remove(mTbl.querySelector(literals.colGroup));\n var colGroup = ((this.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup)).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector(literals.tbody));\n if (this.getFrozenMode() === 'Left-Right') {\n var frTbl = this.contentModule.getFrozenRightContent().querySelector('.' + literals.table);\n remove(frTbl.querySelector(literals.colGroup));\n var colGrp = ((this.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup)).cloneNode(true));\n frTbl.insertBefore(colGrp, frTbl.querySelector(literals.tbody));\n }\n }\n }\n if (this.isFrozenGrid()) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.headerModule.getMovableHeader().scrollLeft = left;\n this.contentModule.getMovableContent().scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n *\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n *\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\n *\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n *\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this = this;\n var refresh = function () {\n _this.scrollModule.refresh();\n _this.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n *\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.' + literals.content);\n var scrollBar = this.getContent().querySelector('.e-scrollbar');\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n if (this.isFrozenGrid() && scrollBar) {\n var mvblScrollBar = this.getContent().querySelector('.e-movablescrollbar');\n var mvblChild = this.getContent().querySelector('.e-movablechild');\n scrollBar.style.display = 'flex';\n if (mvblScrollBar.offsetWidth >= mvblChild.offsetWidth) {\n scrollBar.style.display = 'none';\n this.notify(events.frozenHeight, 0);\n }\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n *\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[\"\" + pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (field === gCols[parseInt(i.toString(), 10)].field || (gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if (this.allowFiltering && this.filterSettings.columns.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad|macintosh/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.movableContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.frozenContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.movableHeader);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.frozenHeader);\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n if (this.isFrozenGrid()) {\n var fRows = [].slice.call(this.getFrozenVirtualContent().querySelector(literals.tbody).children);\n var mRows = [].slice.call(this.getMovableVirtualContent().querySelector(literals.tbody).children);\n var frozenRigtRows = [];\n if (this.tablesCount === 3) {\n frozenRigtRows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n }\n if (this.frozenRows) {\n rows = [].slice.call(this.getFrozenVirtualHeader().querySelector(literals.tbody).children);\n rows = rows.concat([].slice.call(this.getMovableVirtualHeader().querySelector(literals.tbody).children));\n if (this.tablesCount === 3) {\n var frHdr = this.getHeaderContent().querySelector('.e-frozen-right-header');\n rows = rows.concat([].slice.call(frHdr.querySelector(literals.tbody).children)).concat(frozenRigtRows);\n }\n rows = rows.concat(fRows).concat(mRows);\n }\n else {\n rows = fRows.concat(mRows).concat(frozenRigtRows);\n }\n }\n else {\n var cntRows = [].slice.call(this.getContent().querySelector(literals.tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(literals.tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Calculates the page size by parent element height\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[parseInt(i.toString(), 10)].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n *\n * @returns {number} returns the summary values\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(columns[parseInt(i.toString(), 10)].format), columns[parseInt(i.toString(), 10)].type, this.isExcel, this.currencyCode);\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[\"\" + isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n if ((filterDlg.offsetWidth + fClient.right) > gClient.right) {\n filterDlg.style.left = ((fClient.right - filterDlg.offsetWidth) - gClient.left).toString() + 'px';\n }\n else {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n };\n /**\n * @param {any} callBack - specifies the callBack method\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line\n Grid.prototype.renderTemplates = function (callBack) {\n var isReactChild = this.parentDetails && this.parentDetails.parentInstObj && this.parentDetails.parentInstObj.isReact;\n if (isReactChild && this['portals']) {\n this.parentDetails.parentInstObj['portals'] = this.parentDetails.parentInstObj['portals']\n .concat(this['portals']);\n this.parentDetails.parentInstObj.renderTemplates(callBack);\n this['portals'] = undefined;\n }\n else {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[\"\" + portals]);\n this.renderReactTemplates(callBack);\n }\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this.processRowChanges(_this.dataToBeUpdated);\n _this.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [literals.addedRecords, literals.changedRecords, literals.deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[parseInt(i.toString(), 10)]]) {\n compareChanges(this, changes, loopstring[parseInt(i.toString(), 10)], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n var index = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n remove(tr);\n if (this.getFrozenColumns()) {\n var mtr = this.getMovableRows()[parseInt(index.toString(), 10)];\n remove(mtr);\n }\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_3 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_3.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_3(i);\n i = out_i_1;\n }\n var _loop_4 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[\"\" + keyField] === result[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (e !== result[parseInt(i.toString(), 10)]) {\n _this.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_4.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_4 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_4(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(literals.row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n var mTr;\n var mTbody;\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector(literals.tbody);\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.getFrozenColumns()) {\n var moveTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n }\n }\n if (this.getFrozenColumns()) {\n mTr = renderMovable(tr, this.getFrozenColumns(), this);\n if (this.frozenRows && index < this.frozenRows) {\n mTbody = this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody);\n }\n else {\n mTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n }\n mTbody.appendChild(mTr);\n if (this.height === 'auto') {\n this.notify(events.frozenHeight, {});\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector(literals.tbody);\n }\n else {\n tbody = this.getContent().querySelector(literals.tbody);\n }\n tbody = this.getContent().querySelector(literals.tbody);\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n var frzCols = this.getFrozenColumns();\n if (frzCols) {\n var mRows = this.getMovableRowsObject();\n var mRow = row.clone();\n mRow.cells = mRow.cells.slice(frzCols);\n row.cells = row.cells.slice(0, frzCols);\n mRows.splice(index, 1, mRow);\n }\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateVisibleExpandCollapseRows = function () {\n var rows = this.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if ((rows[parseInt(i.toString(), 10)].isDataRow || rows[parseInt(i.toString(), 10)].isAggregateRow)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid).style.display === 'none') {\n rows[parseInt(i.toString(), 10)].visible = false;\n }\n else {\n rows[parseInt(i.toString(), 10)].visible = true;\n }\n }\n };\n /**\n * Method to sanitize any suspected untrusted strings and scripts before rendering them.\n *\n * @param {string} value - Specifies the html value to sanitize\n * @returns {string} Returns the sanitized html string\n * @hidden\n */\n Grid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer) {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.getContent().querySelector('.e-frozen-right-content');\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozen-right-header');\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getMovableVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getMovableVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getFrozenVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getFrozenVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getFrozenRightHeader().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n var cnt = this.getFrozenRightContent();\n var tbody;\n if (cnt) {\n tbody = this.getFrozenRightContent().querySelector(literals.tbody);\n }\n return tbody;\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n Grid.prototype.enableInfiniteAggrgate = function () {\n if (this.enableInfiniteScrolling && this.groupSettings.columns.length && !this.groupSettings.disablePageWiseAggregates\n && !this.groupSettings.enableLazyLoading) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate([\n Property([])\n ], Grid.prototype, \"currentViewData\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"showHider\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"autoFit\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"cssClass\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('22.2.11')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Grid } from '@syncfusion/ej2-grids';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `GridComponent` represents the react Grid.\n * ```tsx\n * \n * ```\n */\nvar GridComponent = /** @class */ (function (_super) {\n __extends(GridComponent, _super);\n function GridComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.directivekeys = { 'columns': { 'column': { 'stackedColumns': 'stackedColumn' } }, 'aggregates': { 'aggregate': { 'aggregateColumns': 'aggregateColumn' } } };\n _this.statelessTemplateProps = null;\n _this.templateProps = [\"template\", \"headerTemplate\", \"commandsTemplate\", \"filter.itemTemplate\", \"editTemplate\", \"filterTemplate\"];\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n GridComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return GridComponent;\n}(Grid));\nexport { GridComponent };\napplyMixins(GridComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `ColumnDirective` represent a column of the react Grid.\n * It must be contained in a Grid component(`GridComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar ColumnDirective = /** @class */ (function (_super) {\n __extends(ColumnDirective, _super);\n function ColumnDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnDirective.moduleName = 'column';\n ColumnDirective.complexTemplate = { 'filter.itemTemplate': 'filter.itemTemplate' };\n return ColumnDirective;\n}(ComplexBase));\nexport { ColumnDirective };\nvar ColumnsDirective = /** @class */ (function (_super) {\n __extends(ColumnsDirective, _super);\n function ColumnsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnsDirective.propertyName = 'columns';\n ColumnsDirective.moduleName = 'columns';\n return ColumnsDirective;\n}(ComplexBase));\nexport { ColumnsDirective };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 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')) {\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')) {\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')) {\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')) {\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')) {\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","import { Browser } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, classList } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport { setCssInGridPopUp, getActualPropFromColl, isActionPrevent, iterateExtend, parentsUntil } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport * as literals from '../base/string-literals';\n/**\n *\n * The `Sort` module is used to handle sorting action.\n */\nvar Sort = /** @class */ (function () {\n /**\n * Constructor for Grid sorting module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SortSettings} sortSettings - specifies the SortSettings\n * @param {string[]} sortedColumns - specifies the string\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Sort(parent, sortSettings, sortedColumns, locator) {\n this.contentRefresh = true;\n this.isModelChanged = true;\n this.aria = new AriaService();\n this.currentTarget = null;\n this.parent = parent;\n this.sortSettings = sortSettings;\n this.sortedColumns = sortedColumns;\n this.serviceLocator = locator;\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * The function used to update sortSettings\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n var sortedColumn = { field: this.columnName, direction: this.direction };\n var index;\n var gCols = this.parent.groupSettings.columns;\n var flag = false;\n if (!this.isMultiSort) {\n if (!gCols.length) {\n this.sortSettings.columns = [sortedColumn];\n }\n else {\n var sortedCols = [];\n for (var i = 0, len = gCols.length; i < len; i++) {\n index = this.getSortedColsIndexByField(gCols[parseInt(i.toString(), 10)], sortedCols);\n if (this.columnName === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n sortedCols.push(sortedColumn);\n }\n else {\n var sCol = this.getSortColumnFromField(gCols[parseInt(i.toString(), 10)]);\n sortedCols.push({ field: sCol.field, direction: sCol.direction, isFromGroup: sCol.isFromGroup });\n }\n }\n if (!flag) {\n sortedCols.push(sortedColumn);\n }\n this.sortSettings.columns = sortedCols;\n }\n }\n else {\n index = this.getSortedColsIndexByField(this.columnName);\n if (index > -1) {\n this.sortSettings.columns.splice(index, 1);\n }\n this.sortSettings.columns.push(sortedColumn);\n // eslint-disable-next-line no-self-assign\n this.sortSettings.columns = this.sortSettings.columns;\n }\n this.parent.dataBind();\n this.lastSortedCol = this.columnName;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting', type: events.actionComplete\n } : { requestType: 'sorting', type: events.actionComplete };\n this.isRemove = false;\n this.parent.trigger(events.actionComplete, extend(e, args));\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to sort.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previously sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n var gObj = this.parent;\n if (this.parent.getColumnByField(columnName).allowSorting === false || this.parent.isContextMenuOpen()) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: columnName });\n return;\n }\n if (!gObj.allowMultiSorting) {\n isMultiSort = gObj.allowMultiSorting;\n }\n if (this.isActionPrevent()) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.sortColumn,\n arg1: columnName, arg2: direction, arg3: isMultiSort\n });\n return;\n }\n this.backupSettings();\n this.columnName = columnName;\n this.direction = direction;\n this.isMultiSort = isMultiSort;\n this.removeSortIcons();\n this.updateSortedCols(columnName, isMultiSort);\n this.updateModel();\n };\n Sort.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isSort);\n }\n };\n Sort.prototype.backupSettings = function () {\n this.lastSortedCols = iterateExtend(this.sortSettings.columns);\n this.lastCols = this.sortedColumns;\n };\n Sort.prototype.restoreSettings = function () {\n this.isModelChanged = false;\n this.isMultiSort = true;\n this.parent.setProperties({ sortSettings: { columns: this.lastSortedCols } }, true);\n //this.parent.sortSettings.columns = this.lastSortedCols;\n this.sortedColumns = this.lastCols;\n this.isModelChanged = true;\n };\n Sort.prototype.updateSortedCols = function (columnName, isMultiSort) {\n if (!isMultiSort) {\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.sortedColumns.length; i < len; i++) {\n if (this.parent.groupSettings.columns.indexOf(this.sortedColumns[parseInt(i.toString(), 10)]) < 0) {\n this.sortedColumns.splice(i, 1);\n len--;\n i--;\n }\n }\n }\n else {\n this.sortedColumns.splice(0, this.sortedColumns.length);\n }\n }\n if (this.sortedColumns.indexOf(columnName) < 0) {\n this.sortedColumns.push(columnName);\n }\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.contentRefresh) {\n var args = this.sortSettings.columns.length ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting',\n type: events.actionBegin, target: this.currentTarget, cancel: false\n } : {\n requestType: 'sorting', type: events.actionBegin, cancel: false,\n target: this.currentTarget\n };\n this.parent.notify(events.modelChanged, args);\n }\n this.refreshSortSettings();\n this.removeSortIcons();\n this.addSortIcons();\n };\n Sort.prototype.refreshSortSettings = function () {\n this.sortedColumns.length = 0;\n var sortColumns = this.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (!sortColumns[parseInt(i.toString(), 10)].isFromGroup) {\n this.sortedColumns.push(sortColumns[parseInt(i.toString(), 10)].field);\n }\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n var cols = getActualPropFromColl(this.sortSettings.columns);\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearSorting });\n return;\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.removeSortColumn(cols[parseInt(i.toString(), 10)].field);\n }\n };\n Sort.prototype.isActionPrevent = function () {\n return isActionPrevent(this.parent);\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeSortColumn = function (field) {\n var gObj = this.parent;\n var cols = this.sortSettings.columns;\n if (cols.length === 0 && this.sortedColumns.indexOf(field) < 0) {\n return;\n }\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.removeSortColumn, arg1: field });\n return;\n }\n this.backupSettings();\n this.removeSortIcons();\n var args = { requestType: 'sorting', type: events.actionBegin, target: this.currentTarget };\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n if (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n continue;\n }\n this.sortedColumns.splice(this.sortedColumns.indexOf(cols[parseInt(i.toString(), 10)].field), 1);\n cols.splice(i, 1);\n this.isRemove = true;\n if (this.isModelChanged) {\n this.parent.notify(events.modelChanged, args);\n }\n break;\n }\n }\n if (!args.cancel) {\n this.addSortIcons();\n }\n };\n Sort.prototype.getSortedColsIndexByField = function (field, sortedColumns) {\n var cols = sortedColumns ? sortedColumns : this.sortSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n Sort.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.sortSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.isMultiSort = this.sortSettings.columns.length > 1;\n for (var _i = 0, _a = gObj.sortSettings.columns.slice(); _i < _a.length; _i++) {\n var col = _a[_i];\n if (this.sortedColumns.indexOf(col.field) > -1) {\n this.sortColumn(col.field, col.direction, true);\n }\n }\n this.isMultiSort = false;\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.setFullScreenDialog },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.sortComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.click, handler: this.clickHandler },\n { event: events.headerRefreshed, handler: this.refreshSortIcons },\n { event: events.keyPressed, handler: this.keyPressed },\n { event: events.cancelBegin, handler: this.cancelBeginEvent },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the sorting\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.destroy = function () {\n this.isModelChanged = false;\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-sortdirect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowSorting)) {\n this.clearSorting();\n }\n this.isModelChanged = true;\n this.removeEventListener();\n };\n Sort.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'sorting') {\n this.restoreSettings();\n this.refreshSortIcons();\n this.isMultiSort = true;\n }\n };\n Sort.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n this.currentTarget = null;\n this.popUpClickHandler(e);\n var target = closest(e.target, '.e-headercell');\n if (target && !e.target.classList.contains('e-grptogglebtn') &&\n !(target.classList.contains('e-resized')) &&\n !e.target.classList.contains('e-rhandler') &&\n !e.target.classList.contains('e-columnmenu') &&\n !e.target.classList.contains('e-filtermenudiv') &&\n !parentsUntil(e.target, 'e-stackedheadercell') &&\n !(gObj.allowSelection && gObj.selectionSettings.allowColumnSelection &&\n e.target.classList.contains('e-headercell'))) {\n var gObj_1 = this.parent;\n var colObj = gObj_1.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n if (colObj.type !== 'checkbox') {\n this.initiateSort(target, e, colObj);\n if (Browser.isDevice) {\n this.showPopUp(e);\n }\n }\n }\n if (target) {\n target.classList.remove('e-resized');\n }\n if (parentsUntil(e.target, 'e-excel-ascending') ||\n parentsUntil(e.target, 'e-excel-descending')) {\n var colUid = closest(e.target, '.e-filter-popup').getAttribute('uid');\n var direction = isNullOrUndefined(parentsUntil(e.target, 'e-excel-descending')) ?\n 'Ascending' : 'Descending';\n this.sortColumn(gObj.getColumnByUid(colUid).field, direction, false);\n }\n };\n Sort.prototype.keyPressed = function (e) {\n var ele = e.target;\n if (!this.parent.isEdit && (e.action === 'enter' || e.action === 'ctrlEnter' || e.action === 'shiftEnter')\n && closest(ele, '.e-headercell')) {\n var target = this.focus.getFocusedElement();\n if (isNullOrUndefined(target) || !target.classList.contains('e-headercell')\n || !target.querySelector('.e-headercelldiv')) {\n return;\n }\n var col = this.parent.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n this.initiateSort(target, e, col);\n }\n };\n Sort.prototype.initiateSort = function (target, e, column) {\n var gObj = this.parent;\n var field = column.field;\n this.currentTarget = e.target;\n var direction = !target.getElementsByClassName('e-ascending').length ? 'Ascending' :\n 'Descending';\n this.isMultiSort = e.ctrlKey || this.enableSortMultiTouch ||\n (navigator.userAgent.indexOf('Mac OS') !== -1 && e.metaKey);\n if (e.shiftKey || (this.sortSettings.allowUnsort && target.getElementsByClassName('e-descending').length)\n && !(gObj.groupSettings.columns.indexOf(field) > -1)) {\n this.removeSortColumn(field);\n }\n else {\n this.sortColumn(field, direction, this.isMultiSort);\n }\n };\n Sort.prototype.showPopUp = function (e) {\n var target = closest(e.target, '.e-headercell');\n if (this.parent.allowMultiSorting && (!isNullOrUndefined(target) || this.parent.isContextMenuOpen())) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-sortdirect e-icons e-icon-sortdirect' + (this.sortedColumns.length > 1 ? ' e-spanclicked' : ''));\n }\n };\n Sort.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-sortdirect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSortMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSortMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Sort.prototype.addSortIcons = function () {\n var gObj = this.parent;\n var header;\n var filterElement;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = 0, len = cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1 || isNullOrUndefined(header)) {\n continue;\n }\n this.aria.setSort(header, (cols[parseInt(i.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }), header.querySelector('.e-headertext'));\n }\n filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(i.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n };\n Sort.prototype.removeSortIcons = function (position) {\n var gObj = this.parent;\n var header;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = position ? position : 0, len = !isNullOrUndefined(position) ? position + 1 : cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (isNullOrUndefined(header) || (gObj.allowGrouping\n && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1\n && !header.querySelector('.e-sortfilterdiv'))) {\n continue;\n }\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1) {\n continue;\n }\n this.aria.setSort(header, 'none');\n classList(header.querySelector('.e-sortfilterdiv'), [], ['e-descending', 'e-icon-descending', 'e-ascending', 'e-icon-ascending']);\n if (header.querySelector('.e-sortnumber')) {\n header.querySelector('.e-headercelldiv').removeChild(header.querySelector('.e-sortnumber'));\n }\n }\n };\n Sort.prototype.getSortColumnFromField = function (field) {\n for (var i = 0, len = this.sortSettings.columns.length; i < len; i++) {\n if (this.sortSettings.columns[parseInt(i.toString(), 10)].field === field) {\n return this.sortSettings.columns[parseInt(i.toString(), 10)];\n }\n }\n return false;\n };\n Sort.prototype.updateAriaAttr = function () {\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var _i = 0, _a = this.sortedColumns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (fieldNames.indexOf(col) === -1) {\n continue;\n }\n var header = this.parent.getColumnHeaderByField(col);\n this.aria.setSort(header, this.getSortColumnFromField(col).direction);\n }\n };\n Sort.prototype.refreshSortIcons = function (params) {\n if (params === void 0) { params = { args: { isFrozen: false } }; }\n if (!params.args.isFrozen) {\n this.removeSortIcons();\n this.isMultiSort = true;\n this.removeSortIcons();\n this.addSortIcons();\n this.isMultiSort = false;\n this.updateAriaAttr();\n }\n };\n /**\n * To show the responsive custom sort dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Sort.prototype.showCustomSort = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return Sort;\n}());\nexport { Sort };\n","import { isNullOrUndefined, addClass, extend, closest } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { appendChildren, alignFrozenEditForm, getMovableTbody, getFrozenRightTbody, setStyleAndAttributes } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar InlineEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - returns the IGrid\n */\n function InlineEditRender(parent) {\n this.parent = parent;\n }\n InlineEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n var tbody;\n var mTbody = getMovableTbody(this.parent);\n var frTbody = getFrozenRightTbody(this.parent);\n var isFrozenGrid = this.parent.isFrozenGrid();\n var isVirtualFrozen = isFrozenGrid && this.parent.enableColumnVirtualization && args.isScroll;\n if (this.parent.frozenRows && this.parent.editSettings.newRowPosition === 'Top') {\n tbody = isVirtualFrozen ? this.parent.getMovableHeaderTbody() : this.parent.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = isVirtualFrozen ? this.parent.getMovableContentTbody() : this.parent.getContentTable().querySelector(literals.tbody);\n }\n args.row = this.parent.createElement('tr', { className: 'e-row e-addedrow' });\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (isFrozenGrid && !isVirtualFrozen) {\n var moveTbody = this.parent.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frTbody_1 = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n (frTbody_1.firstElementChild).parentNode.removeChild(frTbody_1.firstElementChild);\n }\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(args.row, tbody.firstChild);\n }\n else {\n tbody.appendChild(args.row);\n }\n args.row.appendChild(this.getEditElement(elements, false, undefined, args, true));\n this.parent.editModule.checkLastRow(args.row, args);\n if (isFrozenGrid && !isVirtualFrozen) {\n var mEle = this.renderMovableform(args.row, args);\n if (this.parent.editSettings.newRowPosition === 'Top') {\n mTbody.insertBefore(mEle, mTbody.firstChild);\n }\n else {\n mTbody.appendChild(mEle);\n }\n args.row.querySelector('.e-normaledit').setAttribute('colspan', this.parent.getVisibleFrozenColumns() + '');\n mEle.querySelector('.e-normaledit').setAttribute('colspan', '' + (this.parent.getVisibleColumns().length - this.parent.getVisibleFrozenColumns()));\n if (frTbody) {\n var frEle = this.renderFrozenRightForm(args.row, args);\n if (this.parent.editSettings.newRowPosition === 'Top') {\n frTbody.insertBefore(frEle, frTbody.firstChild);\n }\n else {\n frTbody.appendChild(frEle);\n }\n var colSpan = this.parent.getVisibleFrozenColumns() - this.parent.getFrozenRightColumnsCount();\n args.row.querySelector('.e-normaledit').setAttribute('colspan', colSpan + '');\n frEle.querySelector('.e-normaledit').setAttribute('colspan', '' + this.parent.getFrozenRightColumnsCount());\n }\n if (this.parent.height === 'auto') {\n this.parent.notify(events.frozenHeight, {});\n }\n }\n };\n InlineEditRender.prototype.renderFrozenRightForm = function (ele, args) {\n var frEle = ele.cloneNode(true);\n var form = args.frozenRightForm = frEle.querySelector('form');\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, args.rowData, false);\n return frEle;\n }\n this.renderRightFrozen(ele, frEle);\n frEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup).innerHTML;\n return frEle;\n };\n InlineEditRender.prototype.renderMovableform = function (ele, args) {\n var mEle = ele.cloneNode(true);\n var form = args.movableForm = mEle.querySelector('form');\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, args.rowData, false);\n return mEle;\n }\n this.renderMovable(ele, mEle);\n mEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup).innerHTML;\n return mEle;\n };\n InlineEditRender.prototype.updateFreezeEdit = function (row, td) {\n td = td.concat([].slice.call(this.getFreezeRow(row).querySelectorAll('td.e-rowcell')));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n td = td.concat([].slice.call(this.getFreezeRightRow(row).querySelectorAll('td.e-rowcell')));\n }\n return td;\n };\n InlineEditRender.prototype.getFreezeRightRow = function (row) {\n var idx = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n var fCont = this.parent.getFrozenLeftContentTbody();\n var fHdr = this.parent.getFrozenHeaderTbody();\n var frHdr = this.parent.getFrozenRightHeaderTbody();\n var frCont = this.parent.getFrozenRightContentTbody();\n if (fCont.contains(row) || fHdr.contains(row)) {\n return this.parent.getFrozenRightRowByIndex(idx);\n }\n else if (frCont.contains(row) || frHdr.contains(row)) {\n return this.parent.getRowByIndex(idx);\n }\n return row;\n };\n InlineEditRender.prototype.getFreezeRow = function (row) {\n if (this.parent.isFrozenGrid()) {\n var idx = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n var fCont = this.parent.getFrozenLeftContentTbody();\n var mCont = this.parent.getMovableContentTbody();\n var fHdr = this.parent.getFrozenHeaderTbody();\n var mHdr = this.parent.getMovableHeaderTbody();\n if (fCont.contains(row) || fHdr.contains(row)) {\n return this.parent.getMovableRowByIndex(idx);\n }\n else if (mCont.contains(row) || mHdr.contains(row)) {\n return this.parent.getRowByIndex(idx);\n }\n }\n return row;\n };\n InlineEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n var isCustomFormValidation = args.isCustomFormValidation;\n var isScroll = args.isScroll;\n if (!isScroll && (closest(args.row, '.' + literals.movableContent) || closest(args.row, '.' + literals.movableHeader))) {\n args.row = this.getFreezeRow(args.row);\n }\n if (closest(args.row, '.e-frozen-right-content') || closest(args.row, '.e-frozen-right-header')) {\n args.row = this.getFreezeRightRow(args.row);\n }\n var isVirtualFrozen = this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization && isScroll;\n var tdElement = [].slice.call(args.row.querySelectorAll('td.e-rowcell'));\n args.row.innerHTML = '';\n if (!isVirtualFrozen && !isCustomFormValidation) {\n tdElement = this.updateFreezeEdit(args.row, tdElement);\n }\n args.row.appendChild(this.getEditElement(elements, true, tdElement, args, true));\n args.row.classList.add(literals.editedRow);\n this.parent.editModule.checkLastRow(args.row, args);\n if (!isVirtualFrozen && !isCustomFormValidation) {\n this.refreshFreezeEdit(args.row, args);\n }\n };\n InlineEditRender.prototype.refreshFreezeEdit = function (row, args) {\n var td = row.firstChild;\n if (this.parent.getVisibleFrozenColumns() && this.parent.editSettings.template) {\n td.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent().querySelector('.' + literals.frozenHeader).\n querySelector(literals.colGroup).innerHTML;\n }\n var fCls;\n var cont;\n var idx = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n if (this.parent.isFrozenGrid()) {\n if (idx < this.parent.frozenRows) {\n cont = this.parent.getHeaderContent();\n fCls = '.' + literals.frozenHeader;\n }\n else {\n cont = this.parent.getContent();\n fCls = '.' + literals.frozenContent;\n }\n var mTd = td.cloneNode(true);\n var frTd = td.cloneNode(true);\n var form = args.movableForm = mTd.querySelector('form');\n if (this.parent.editSettings.template) {\n this.refreshEditForm(form, args.rowData);\n }\n var fRows = void 0;\n var frRows = void 0;\n if (cont.querySelector(fCls).contains(row)) {\n fRows = this.parent.getMovableRowByIndex(idx);\n this.updateFrozenCont(fRows, td, mTd);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n args.frozenRightForm = frTd.querySelector('form');\n this.refreshEditForm(args.frozenRightForm, args.rowData);\n frRows = this.parent.getFrozenRightRowByIndex(idx);\n this.updateFrozenRightCont(frRows, td, frTd);\n }\n }\n else {\n fRows = this.parent.getRowByIndex(idx);\n this.updateFrozenCont(fRows, mTd, td);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n args.frozenRightForm = frTd.querySelector('form');\n this.refreshEditForm(args.frozenRightForm, args.rowData);\n frRows = this.parent.getFrozenRightRowByIndex(idx);\n this.updateFrozenRightCont(frRows, frTd, td);\n }\n }\n fRows.appendChild(mTd);\n fRows.classList.add(literals.editedRow);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frRows.appendChild(frTd);\n frRows.classList.add(literals.editedRow);\n alignFrozenEditForm(args.frozenRightForm.querySelector('td:not(.e-hide)'), args.form.querySelector('td:not(.e-hide)'));\n }\n alignFrozenEditForm(args.movableForm.querySelector('td:not(.e-hide)'), args.form.querySelector('td:not(.e-hide)'));\n }\n };\n InlineEditRender.prototype.refreshEditForm = function (form, data) {\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, data, false);\n }\n };\n InlineEditRender.prototype.updateFrozenRightCont = function (row, ele, frEle) {\n row.innerHTML = '';\n this.renderRightFrozen(ele, frEle);\n frEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup).innerHTML;\n ele.setAttribute('colspan', this.parent.getVisibleFrozenColumns() - this.parent.getFrozenRightColumnsCount() + '');\n frEle.setAttribute('colspan', this.parent.getFrozenRightColumnsCount() + '');\n };\n InlineEditRender.prototype.updateFrozenCont = function (row, ele, mEle) {\n row.innerHTML = '';\n this.renderMovable(ele, mEle);\n mEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup).innerHTML;\n ele.setAttribute('colspan', this.parent.getVisibleFrozenColumns() + '');\n mEle.setAttribute('colspan', this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length - this.parent.getVisibleFrozenColumns() + '');\n };\n InlineEditRender.prototype.renderRightFrozen = function (ele, frEle) {\n frEle.querySelector('tr').innerHTML = '';\n var cols = this.parent.getColumns();\n var k = 0;\n for (var i = 0; i < cols.length; i++, k++) {\n if (cols[parseInt(i.toString(), 10)].getFreezeTableName() === literals.frozenRight) {\n var index = k - this.parent.getMovableColumnsCount();\n frEle.querySelector('tr').appendChild(ele.querySelector('tr').removeChild(ele.querySelector('tr').children[parseInt(index.toString(), 10)]));\n k--;\n }\n }\n };\n InlineEditRender.prototype.renderMovable = function (ele, mEle) {\n mEle.querySelector('tr').innerHTML = '';\n var cols = this.parent.getColumns();\n var k = this.parent.isRowDragable() ? 1 : 0;\n for (var i = 0; i < cols.length; i++, k++) {\n if (cols[parseInt(i.toString(), 10)].getFreezeTableName() === 'movable') {\n mEle.querySelector('tr').appendChild(ele.querySelector('tr')\n .removeChild(ele.querySelector('tr').children[parseInt(k.toString(), 10)]));\n k--;\n }\n }\n };\n // eslint-disable-next-line max-len\n InlineEditRender.prototype.getEditElement = function (elements, isEdit, tdElement, args, isFrozen) {\n var gObj = this.parent;\n var gLen = 0;\n var isDetail = !isNullOrUndefined(gObj.detailTemplate) || !isNullOrUndefined(gObj.childGrid) ? 1 : 0;\n if (gObj.allowGrouping) {\n gLen = gObj.groupSettings.columns.length;\n }\n var td = this.parent.createElement('td', {\n className: 'e-editcell e-normaledit',\n attrs: {\n colspan: (gObj.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length - gObj.getVisibleFrozenColumns()\n + this.parent.getIndentCount()).toString()\n }\n });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n this.appendChildren(form, args.rowData, isFrozen);\n td.appendChild(form);\n return td;\n }\n var table = this.parent.createElement('table', { className: 'e-table e-inline-edit', attrs: { cellspacing: '0.25', role: 'grid' } });\n table.appendChild(gObj.getContentTable().querySelector(literals.colGroup).cloneNode(true));\n var tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var tr = this.parent.createElement('tr');\n var i = 0;\n if (isDetail) {\n tr.insertBefore(this.parent.createElement('td', { className: 'e-detailrowcollapse' }), tr.firstChild);\n }\n if (gObj.isRowDragable()) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-dragindentcell' }));\n }\n while (i < gLen) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n i++;\n }\n var m = 0;\n i = 0;\n var isVirtualFrozen = gObj.isFrozenGrid() && gObj.enableColumnVirtualization && args.isScroll;\n var cols = args.isCustomFormValidation ? this.parent.columnModel : gObj.getColumns();\n while ((isEdit && m < tdElement.length && i < cols.length) || i < cols.length) {\n var span = isEdit ? tdElement[parseInt(m.toString(), 10)].getAttribute('colspan') : null;\n var col = cols[parseInt(i.toString(), 10)];\n if ((isVirtualFrozen && col.getFreezeTableName() !== 'movable')\n || (args.isCustomFormValidation && (col.commands || col.commandsTemplate || !col.field))) {\n i++;\n continue;\n }\n var td_1 = this.parent.createElement('td', {\n className: literals.rowCell, attrs: { style: 'text-align:' + (col.textAlign ? col.textAlign : ''), 'colspan': span ? span : '' }\n });\n if (col.visible) {\n td_1.appendChild(elements[col.uid]);\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(td_1, { 'data-cell': col.headerText });\n if (i === 0) {\n td_1.classList.add('e-responsive-editcell');\n }\n }\n if (col.editType === 'booleanedit') {\n td_1.classList.add('e-boolcell');\n }\n else if (col.commands || col.commandsTemplate) {\n addClass([td_1], 'e-unboundcell');\n }\n }\n else {\n td_1.classList.add('e-hide');\n }\n tr.appendChild(td_1);\n i = span ? i + parseInt(span, 10) : i + 1;\n m++;\n }\n tbody.appendChild(tr);\n table.appendChild(tbody);\n form.appendChild(table);\n td.appendChild(form);\n return td;\n };\n InlineEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n InlineEditRender.prototype.appendChildren = function (form, data, isFrozen) {\n var _this = this;\n var dummyData = extend({}, data, { isAdd: !this.isEdit, isFrozen: isFrozen }, true);\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n if (this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string') {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n // eslint-disable-next-line\n var setRules = function () {\n var cols = _this.parent.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].validationRules) {\n _this.parent.editModule.formObj.rules[cols[parseInt(i.toString(), 10)].field] =\n cols[parseInt(i.toString(), 10)].validationRules;\n }\n }\n };\n };\n return InlineEditRender;\n}());\nexport { InlineEditRender };\n","import { classList } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar BatchEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function BatchEditRender(parent) {\n this.parent = parent;\n }\n BatchEditRender.prototype.update = function (elements, args) {\n if (this.parent.isReact && args.columnObject && args.columnObject.template) {\n var parentRow = args.cell.parentElement;\n var newTd = args.cell.cloneNode(true);\n parentRow.insertBefore(newTd, args.cell);\n newTd.focus();\n args.cell.remove();\n args.cell = newTd;\n }\n args.cell.innerHTML = '';\n args.cell.appendChild(this.getEditElement(elements, args));\n args.cell.classList.add('e-editedbatchcell');\n classList(args.row, [literals.editedRow, 'e-batchrow'], []);\n };\n BatchEditRender.prototype.getEditElement = function (elements, args) {\n var gObj = this.parent;\n var form = this.parent\n .createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n form.appendChild(elements[args.columnObject.uid]);\n if (args.columnObject.editType === 'booleanedit') {\n args.cell.classList.add('e-boolcell');\n }\n if (!args.columnObject.editType) {\n args.cell.classList.add('e-inputbox');\n }\n return form;\n };\n BatchEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n return BatchEditRender;\n}());\nexport { BatchEditRender };\n","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');\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 fForm;\n var frForm;\n var frzCols = gObj.isFrozenGrid();\n var index = gObj.getFrozenMode() === 'Right' && gObj.editSettings.mode === 'Normal' ? 1 : 0;\n var form = gObj.editSettings.mode === 'Dialog' ?\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document) :\n gObj.element.getElementsByClassName('e-gridform')[parseInt(index.toString(), 10)];\n var isVirtualFrozen = frzCols && this.parent.enableColumnVirtualization && args.isScroll;\n if (frzCols && gObj.editSettings.mode === 'Normal') {\n var rowIndex = parseInt(args.row.getAttribute(literals.dataRowIndex), 10);\n if (gObj.frozenRows && ((args.requestType === 'add' && gObj.editSettings.newRowPosition === 'Top')\n || rowIndex < gObj.frozenRows)) {\n fForm = gObj.element.querySelector('.' + literals.movableHeader).querySelector('.e-gridform');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frForm = args.frozenRightForm;\n }\n }\n else {\n fForm = gObj.element.querySelector('.' + literals.movableContent).querySelector('.e-gridform');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frForm = args.frozenRightForm;\n }\n }\n }\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n if (isVirtualFrozen && col.getFreezeTableName() !== 'movable') {\n continue;\n }\n if (this.parent.editSettings.template && !isNullOrUndefined(col.field)) {\n var cellArgs = extend({}, args);\n cellArgs.element = form.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n if (isNullOrUndefined(cellArgs.element) && frzCols) {\n cellArgs.element = fForm.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n }\n if (typeof col.edit.write === 'string') {\n getObject(col.edit.write, window)(cellArgs);\n }\n else {\n col.edit.write(cellArgs);\n }\n continue;\n }\n if (this.parent.editModule.checkColumnIsGrouped(col) || col.commands) {\n continue;\n }\n // eslint-disable-next-line\n value = (col.valueAccessor(col.field, args.rowData, col));\n if (fForm && col.getFreezeTableName() === 'movable' && gObj.editSettings.mode === 'Normal') {\n cell = fForm.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n else if (frForm && col.getFreezeTableName() === literals.frozenRight && gObj.editSettings.mode === 'Normal') {\n cell = frForm.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n else {\n cell = form.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n var temp = col.edit.write;\n if (!isNullOrUndefined(cell)) {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n temp({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n else {\n col.edit.write({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n if (!isFocused && !cell.getAttribute('disabled') && !parentsUntil(cell, 'e-checkbox-disabled')) {\n this.focusElement(cell, args.type);\n isFocused = true;\n }\n }\n }\n if (frzCols && !this.parent.allowTextWrap && ((args.requestType === 'add') || args.requestType === 'beginEdit')\n && this.parent.editSettings.mode !== 'Dialog' && !isNullOrUndefined(form) && !isNullOrUndefined(fForm)) {\n var mTdElement = (fForm.querySelector('tr').children[0]);\n var fTdElement = (form.querySelector('tr').children[0]);\n if (fTdElement.offsetHeight > mTdElement.offsetHeight) {\n mTdElement.style.height = fTdElement.offsetHeight + 'px';\n if (frForm) {\n var frTdElement = fForm.querySelector('tr').children[0];\n frTdElement.style.height = fTdElement.offsetHeight + 'px';\n }\n }\n else {\n fTdElement.style.height = mTdElement.offsetHeight + 'px';\n if (frForm) {\n var frTdElement = fForm.querySelector('tr').children[0];\n frTdElement.style.height = mTdElement.offsetHeight + 'px';\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n EditRender.prototype.focusElement = function (elem, type) {\n var chkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(chkBox) && chkBox.nextElementSibling) {\n chkBox.nextElementSibling.classList.add('e-focus');\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.focus.onClick({ target: closest(elem, 'td') }, true);\n }\n else {\n var isFocus = this.parent.enableVirtualization && this.parent.editSettings.mode === 'Normal' ? false : true;\n if (isFocus || (this.parent.enableVirtualization && this.parent.editSettings.newRowPosition === 'Bottom'\n && parentsUntil(elem, literals.addedRow))) {\n elem.focus();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n elem.focus({ preventScroll: true });\n }\n }\n if (elem.classList.contains('e-defaultcell')) {\n elem.setSelectionRange(elem.value.length, elem.value.length);\n }\n };\n EditRender.prototype.getEditElements = function (args) {\n var gObj = this.parent;\n var elements = {};\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n if (args.isCustomFormValidation) {\n cols = this.parent.columnModel;\n }\n if (this.parent.editSettings.template) {\n return {};\n }\n var isVirtualFrozen = gObj.isFrozenGrid() && gObj.enableColumnVirtualization && args.isScroll;\n for (var i = 0, len = cols.length; i < len; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (this.parent.editModule.checkColumnIsGrouped(col) || (isVirtualFrozen && cols[parseInt(i.toString(), 10)].getFreezeTableName() !== 'movable')\n || (args.isCustomFormValidation && (col.commands || col.commandsTemplate || !col.field))) {\n continue;\n }\n if (col.commands || col.commandsTemplate) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var model = new RowModelGenerator(this.parent);\n var cellRenderer = cellRendererFact.getCellRenderer(CellType.CommandColumn);\n var cells = model.generateRows(args.rowData)[0].cells;\n var cell = cells.filter(function (cell) { return cell.rowID; });\n var td = cellRenderer.render(cell[parseInt(i.toString(), 10)], args.rowData, { 'index': args.row ? args.row.getAttribute(literals.dataRowIndex) : 0 }, this.parent.enableVirtualization);\n var div = td.firstElementChild;\n div.setAttribute('textAlign', td.getAttribute('textAlign'));\n elements[col.uid] = div;\n continue;\n }\n 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 } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var ariaState;\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else if (state === 'uncheck') {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n this.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n if (this.isVue) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL') {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check', true);\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.validCheck ? this.element.checked : !this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n var wrapper = this.getWrapper();\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\n","import { 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', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, { 'name': this.cloneElement.id });\n }\n else {\n attributes(this.hiddenInput, { 'name': this.inputName });\n }\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n if (this.min !== -(Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemin': this.min.toString() });\n }\n if (this.max !== (Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemax': this.max.toString() });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n if (this.prevValue !== this.value || this.prevValue !== this.inputValue) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator && _this.decimals === 0 && _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) || ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && this.element.value[this.element.value.length - 1] === '0')) {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.inputValue = value;\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === 'NumpadDecimal' && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === 'touchmove') {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n if (this.spinUp) {\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n }\n if (this.spinDown) {\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex',\n 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","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 } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\nvar TEXTBOX_FOCUS = 'e-input-focus';\nvar containerAttr = ['title', 'style', 'class'];\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar TextBox = /** @class */ (function (_super) {\n __extends(TextBox, _super);\n /**\n *\n * @param {TextBoxModel} options - Specifies the TextBox model.\n * @param {string | HTMLInputElement | HTMLTextAreaElement} element - Specifies the element to render as component.\n * @private\n */\n function TextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isAngular = false;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.isVue = false;\n _this.textboxOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {TextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!this.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkAttributes(true);\n this.multiline && !isNullOrUndefined(this.textarea) ? Input.validateInputType(this.textboxWrapper.container, this.textarea) : Input.validateInputType(this.textboxWrapper.container, this.element);\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n TextBox.prototype.preRender = function () {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, true);\n }\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n if (this.type === 'text') {\n this.element.setAttribute('role', 'textbox');\n }\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttr.indexOf(attributeName) < 0 &&\n !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getInputValidClassList(this.cssClass);\n }\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttrToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(this.htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([this.textboxWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.textboxWrapper.container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.textboxWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.textboxWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.multiline && !isNullOrUndefined(this.textarea) ? this.textarea.setAttribute(key, this.htmlAttributes[\"\" + key]) : this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getInputValidClassList(newClass), [this.textboxWrapper.container], this.getInputValidClassList(oldClass));\n };\n TextBox.prototype.getInputValidClassList = function (inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n TextBox.prototype.setInitialValue = function () {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n };\n TextBox.prototype.wireEvents = function () {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'keydown', this.keydownHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-autofill') &&\n this.textboxWrapper.container.classList.contains('e-outline')) {\n EventHandler.add((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler, this);\n }\n };\n TextBox.prototype.animationHandler = function () {\n this.textboxWrapper.container.classList.add('e-valid-input');\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n label.classList.add('e-label-top');\n if (label.classList.contains('e-label-bottom')) {\n label.classList.remove('e-label-bottom');\n }\n }\n };\n TextBox.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n this.isProtectedOnChange = prevOnChange;\n };\n TextBox.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label) && this.floatLabelType !== 'Always') {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextBox.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextBox.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') &&\n (this.previousValue !== this.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextBox.prototype.keydownHandler = function (args) {\n if ((args.keyCode === 13 || args.keyCode === 9) && !((this.previousValue === null || this.previousValue === \"\") && (this.value === null || this.value === \"\") && this.respectiveElement.value === \"\")) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n }\n };\n TextBox.prototype.inputHandler = function (args) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var textboxObj = this;\n var eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({ value: this.respectiveElement.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextBox.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n if (this.previousValue != this.value) {\n this.raiseChangeEvent(args, true);\n }\n args.stopPropagation();\n };\n TextBox.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n //EJ2CORE-738:For this task we update the textarea value to the input when input tag with multiline is present\n if (this.element.tagName === 'INPUT' && this.multiline && Browser.info.name === 'mozilla') {\n this.element.value = this.respectiveElement.value;\n }\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n if (this.enabled) {\n EventHandler.add(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextBox.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!(this.textboxWrapper.clearButton.classList.contains(HIDE_CLEAR)) || this.textboxWrapper.container.classList.contains('e-static-clear')) {\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({ value: this.respectiveElement.value }, true);\n var eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n }\n };\n TextBox.prototype.unWireEvents = function () {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'keydown', this.keydownHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-outline') &&\n this.textboxWrapper.container.classList.contains('e-autofill')) {\n EventHandler.remove((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /**\n * Adding the icons to the TextBox component.\n *\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @returns {void}\n */\n TextBox.prototype.addIcon = function (position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextBox element.\n * @returns {void}\n */\n TextBox.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'class') {\n this.respectiveElement.classList.add(attributes[\"\" + key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes[\"\" + key] }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n else {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @returns {void}\n */\n TextBox.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextBox.prototype.focusOut = function () {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n __decorate([\n Property('text')\n ], TextBox.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"value\", void 0);\n __decorate([\n Property('Never')\n ], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property('')\n ], TextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('on')\n ], TextBox.prototype, \"autocomplete\", void 0);\n __decorate([\n Property({})\n ], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"multiline\", void 0);\n __decorate([\n Property(true)\n ], TextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate([\n NotifyPropertyChanges\n ], TextBox);\n return TextBox;\n}(Component));\nexport { TextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { 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, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `NormalEdit` module is used to handle normal('inline, dialog, external') editing actions.\n *\n * @hidden\n */\nvar NormalEdit = /** @class */ (function () {\n function NormalEdit(parent, serviceLocator, renderer) {\n this.args = {};\n this.currentVirtualData = {};\n this.parent = parent;\n this.renderer = renderer;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n NormalEdit.prototype.clickHandler = function (e) {\n var target = e.target;\n var gObj = this.parent;\n if ((((parentsUntil(target, literals.gridContent) &&\n parentsUntil(parentsUntil(target, literals.gridContent), 'e-grid').id === gObj.element.id)) || (gObj.frozenRows\n && parentsUntil(target, literals.headerContent))) && !parentsUntil(target, 'e-unboundcelldiv')) {\n this.rowIndex = parentsUntil(target, literals.rowCell)\n ? parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10) : -1;\n if (gObj.isEdit) {\n gObj.editModule.endEdit();\n }\n }\n };\n NormalEdit.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, literals.rowCell) && this.parent.editSettings.allowEditOnDblClick) {\n this.parent.editModule.startEdit(parentsUntil(e.target, literals.row));\n }\n };\n /**\n * The function used to trigger editComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.editComplete = function (e) {\n this.parent.isEdit = false;\n var action = 'action';\n switch (e.requestType) {\n case 'save':\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection)) {\n if (e[\"\" + action] !== 'edit') {\n this.parent.selectRow(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.enableInfiniteScrolling) {\n var selector = '.e-row[data-rowindex=\"' + this.rowIndex + '\"]';\n var virtualRow = this.parent.element.querySelector(selector);\n if (!virtualRow) {\n return;\n }\n }\n var e = { data: undefined, index: this.rowIndex, isScroll: false };\n this.parent.notify(events.virtualScrollEditActionBegin, e);\n if (isGroupAdaptive(gObj)) {\n var rObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n this.previousData = rObj.data;\n }\n else if (!this.previousData && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.previousData = e.data;\n }\n else if (!this.parent.enableVirtualization) {\n this.previousData = extend({}, {}, gObj.getCurrentViewRecords()[this.rowIndex], true);\n }\n var editedData = extend({}, {}, e.data || this.previousData, true);\n this.uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(this.uid);\n var args = this.getEditArgs(editedData, rowObj, e.isScroll);\n args.row = tr;\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.beginEdit, args, function (begineditargs) {\n begineditargs.type = 'actionBegin';\n gObj.trigger(events.actionBegin, begineditargs, function (editargs) {\n if (!editargs.cancel) {\n _this.inlineEditHandler(editargs, tr);\n }\n });\n });\n }\n else {\n this.inlineEditHandler(args, tr);\n }\n };\n NormalEdit.prototype.inlineEditHandler = function (editargs, tr) {\n var gObj = this.parent;\n gObj.isEdit = true;\n editargs.row = editargs.row ? editargs.row : tr;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n if (gObj.editSettings.mode === 'Dialog' && gObj.selectionModule) {\n gObj.selectionModule.preventFocus = true;\n editargs.row.classList.add('e-dlgeditrow');\n }\n this.renderer.update(editargs);\n this.uid = tr.getAttribute('data-uid');\n gObj.editModule.applyFormValidation();\n editargs.type = 'actionComplete';\n gObj.trigger(events.actionComplete, editargs);\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, editargs.form.ej2_instances[0].rules);\n }\n this.args = editargs;\n if (this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n };\n NormalEdit.prototype.updateRow = function (index, data) {\n var _this = this;\n var gObj = this.parent;\n this.editRowIndex = index;\n var args = {\n requestType: 'save', action: 'edit', type: events.actionBegin, data: data, cancel: false,\n previousData: gObj.getCurrentViewRecords()[parseInt(index.toString(), 10)],\n row: gObj.getRowByIndex(index)\n };\n gObj.showSpinner();\n if (gObj.enableInfiniteScrolling) {\n this.uid = args.row.getAttribute('data-uid');\n var index_1 = parseInt(args.row.getAttribute('data-rowindex'), 10);\n this.parent.notify(events.refreshInfiniteEditrowindex, { index: index_1 });\n }\n gObj.notify(events.updateData, args);\n if (args.promise) {\n args.promise.then(function () { return gObj.refresh(); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n if (!gObj.enableInfiniteScrolling) {\n gObj.refresh();\n }\n }\n };\n NormalEdit.prototype.editFormValidate = function () {\n var gObj = this.parent;\n var isValid = gObj.editModule.editFormValidate();\n var validationArgs = {\n prevData: this.previousData, isValid: true, editIdx: this.editRowIndex, addIdx: this.addedRowIndex\n };\n gObj.notify(events.validateVirtualForm, validationArgs);\n return (isValid && validationArgs.isValid);\n };\n NormalEdit.prototype.endEdit = function () {\n var _this = this;\n var gObj = this.parent;\n if (!this.parent.isEdit || !this.editFormValidate()) {\n return;\n }\n var editedData = extend({}, {}, this.previousData, true);\n var args = extend(this.args, {\n requestType: 'save', type: events.actionBegin, data: editedData, cancel: false,\n previousData: this.previousData, selectedRow: gObj.selectedRowIndex, foreignKeyData: {}\n });\n var index = gObj.getFrozenMode() === 'Right' ? 1 : 0;\n var isDlg = gObj.editSettings.mode === 'Dialog';\n var dlgWrapper = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n var dlgForm = isDlg ? dlgWrapper.querySelector('.e-gridform') : gObj.element.getElementsByClassName('e-gridform')[parseInt(index.toString(), 10)];\n var data = {\n virtualData: extend({}, {}, this.previousData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(events.getVirtualData, data);\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && this.parent.editSettings.mode === 'Normal' && Object.keys(data.virtualData).length) {\n if (this.parent.isEdit) {\n this.currentVirtualData = editedData = args.data = data.virtualData;\n }\n }\n else {\n editedData = gObj.editModule.getCurrentEditedData(dlgForm, editedData);\n }\n if (gObj.isFrozenGrid() && gObj.editSettings.mode === 'Normal') {\n var mhdrFrm = gObj.getMovableVirtualHeader().querySelector('.e-gridform');\n var mCntFrm = gObj.getMovableVirtualContent().querySelector('.e-gridform');\n var mvblEle = [mhdrFrm || mCntFrm];\n var frHdrFrm = void 0;\n var frCntFrm = void 0;\n var frEle = [];\n if (gObj.getFrozenMode() === literals.leftRight) {\n frHdrFrm = gObj.getFrozenRightHeader().querySelector('.e-gridform');\n frCntFrm = gObj.getFrozenRightContent().querySelector('.e-gridform');\n frEle = [frHdrFrm || frCntFrm];\n }\n gridActionHandler(this.parent, function (tableName, elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var ele = elements_1[_i];\n if (ele) {\n editedData = gObj.editModule.getCurrentEditedData(ele, editedData);\n }\n }\n }, [[], mvblEle, frEle]);\n }\n var eleLength = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow)).length;\n if (!data.isAdd && Object.keys(this.currentVirtualData).length && !eleLength) {\n eleLength = 1;\n }\n if (isDlg ? dlgWrapper.getElementsByClassName(literals.editedRow).length : eleLength) {\n args.action = 'edit';\n gObj.trigger(events.actionBegin, args, function (endEditArgs) {\n if (endEditArgs.cancel) {\n return;\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Spinner') {\n gObj.showSpinner();\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n _this.parent.showMaskRow();\n }\n gObj.notify(events.updateData, endEditArgs);\n });\n }\n else {\n args.action = 'add';\n args.selectedRow = 0;\n args.index = this.addedRowIndex;\n gObj.notify(events.virtualScrollEditSuccess, {});\n gObj.notify(events.modelChanged, args);\n this.addedRowIndex = null;\n if (args.cancel) {\n return;\n }\n }\n gObj.editModule.resetMovableContentValidation();\n };\n NormalEdit.prototype.destroyElements = function () {\n var gObj = this.parent;\n gObj.editModule.destroyWidgets();\n gObj.editModule.destroyForm();\n this.parent.notify(events.dialogDestroy, {});\n };\n NormalEdit.prototype.editHandler = function (args) {\n var _this = this;\n if (args.promise) {\n args.promise.then(function (e) { return _this.edSucc(e, args); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n this.editSuccess(args.data, args);\n }\n };\n NormalEdit.prototype.edSucc = function (e, args) {\n this.editSuccess(e, args);\n };\n NormalEdit.prototype.edFail = function (e) {\n this.editFailure(e);\n };\n NormalEdit.prototype.updateCurrentViewData = function (data) {\n if (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n this.parent.getCurrentViewRecords()[this.editRowIndex] = data;\n }\n };\n NormalEdit.prototype.requestSuccess = function (args) {\n if (this.parent.editModule.formObj && !this.parent.editModule.formObj.isDestroyed) {\n this.destroyElements();\n this.stopEditStatus();\n if (this.parent.editSettings.mode === 'Dialog' && args.action !== 'add' &&\n this.parent.selectionModule) {\n this.parent.element.querySelector('.e-dlgeditrow').classList.remove('e-dlgeditrow');\n }\n }\n };\n NormalEdit.prototype.editSuccess = function (e, args) {\n var _this = this;\n if (!isNullOrUndefined(e) && !(e instanceof Array)) {\n var rowData = 'rowData';\n args.data = extend({}, extend({}, args[\"\" + rowData], args.data), e);\n }\n this.requestSuccess(args);\n this.parent.trigger(events.beforeDataBound, args);\n args.type = events.actionComplete;\n this.parent.isEdit = false;\n this.refreshRow(args.data);\n this.parent.notify(events.virtualScrollEditSuccess, args);\n this.parent.editModule.checkLastRow(args.row);\n this.parent.editModule.isLastRow = false;\n this.updateCurrentViewData(args.data);\n this.blazorTemplate();\n this.editRowIndex = null;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\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 rows = rows.filter(function (data) {\n return data.isDataRow && data.data[_this.parent.groupSettings.columns[parseInt(i.toString(), 10)]] ===\n args.data[_this.parent.groupSettings.columns[parseInt(i.toString(), 10)]] && data !== dragRowObject_1;\n });\n };\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.parent.isFrozenGrid() && this.cloneFrozen) {\n this.cloneFrozen.remove();\n this.frozen.classList.remove('e-hiddenrow');\n }\n };\n NormalEdit.prototype.blazorTemplate = function () {\n var cols = this.parent.getColumns();\n if (this.parent.editSettings.template && this.parent.editSettings.mode === 'Normal') {\n updateBlazorTemplate(this.parent.element.id + 'editSettingsTemplate', 'Template', this.parent.editSettings);\n }\n for (var i = 0; i < cols.length; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (col.template) {\n updateBlazorTemplate(this.parent.element.id + col.uid, 'Template', col, false);\n }\n if (col.editTemplate) {\n updateBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate', col);\n }\n }\n };\n NormalEdit.prototype.editFailure = function (e) {\n this.parent.removeMaskRow();\n this.parent.trigger(events.actionFailure, ({ error: e }));\n this.parent.hideSpinner();\n this.parent.log('actionfailure', { error: e });\n };\n NormalEdit.prototype.needRefresh = function () {\n var refresh = true;\n var editedRow = this.parent.element.querySelector('.e-gridform');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && this.parent.editSettings.mode === 'Normal' && !editedRow) {\n refresh = false;\n }\n return refresh;\n };\n NormalEdit.prototype.refreshRow = function (data) {\n var frzCols = this.parent.isFrozenGrid();\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var rowObj = this.parent.getRowObjectFromUID(this.uid);\n if (rowObj) {\n rowObj.changes = data;\n this.parent.notify(events.refreshVirtualCache, { data: data });\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (this.needRefresh()) {\n row.refresh(rowObj, this.parent.getColumns(), true);\n }\n var tr = [].slice.call(this.parent.element.querySelectorAll('[data-rowindex=\"' + rowObj.index + '\"]'));\n if (frzCols && tr.length) {\n for (var i = 0; i < tr.length; i++) {\n var rowUid = tr[parseInt(i.toString(), 10)].getAttribute('data-uid');\n if (rowUid !== this.uid) {\n rowObj = this.parent.getRowObjectFromUID(rowUid);\n rowObj.changes = data;\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n row.refresh(rowObj, this.parent.getColumns(), true);\n this.parent.editModule.checkLastRow(tr[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n };\n NormalEdit.prototype.closeEdit = function () {\n var _this = this;\n if (!this.parent.isEdit) {\n return;\n }\n var gObj = this.parent;\n var args = extend(this.args, {\n requestType: 'cancel', type: events.actionBegin, cancel: false, data: this.previousData, selectedRow: gObj.selectedRowIndex\n });\n gObj.notify(events.virtualScrollEditCancel, args);\n this.blazorTemplate();\n gObj.trigger(events.actionBegin, args, function (closeEditArgs) {\n if (closeEditArgs.cancel) {\n return;\n }\n if (_this.parent.editSettings.mode === 'Dialog') {\n _this.parent.notify(events.dialogDestroy, {});\n }\n gObj.isEdit = false;\n _this.stopEditStatus();\n closeEditArgs.type = events.actionComplete;\n if (gObj.editSettings.mode !== 'Dialog') {\n _this.refreshRow(closeEditArgs.data);\n }\n var isLazyLoad = gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length\n && !gObj.getContentTable().querySelector('tr.e-emptyrow');\n if (!gObj.getContentTable().querySelector('tr.e-emptyrow') &&\n !gObj.getContentTable().querySelector('tr.e-row') && !isLazyLoad) {\n gObj.renderModule.emptyRow();\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.selectRow(_this.rowIndex);\n }\n gObj.editModule.resetMovableContentValidation();\n gObj.trigger(events.actionComplete, closeEditArgs);\n });\n };\n NormalEdit.prototype.addRecord = function (data, index) {\n var _this = this;\n var gObj = this.parent;\n this.addedRowIndex = index = !isNullOrUndefined(index) ? index : 0;\n if (data) {\n gObj.notify(events.modelChanged, {\n requestType: 'save', type: events.actionBegin, data: data, selectedRow: 0, action: 'add', index: index\n });\n return;\n }\n if (gObj.isEdit) {\n return;\n }\n this.previousData = {};\n this.uid = '';\n var cols = gObj.getColumns();\n var rowData = { virtualData: {}, isScroll: false };\n this.parent.notify(events.getVirtualData, rowData);\n for (var i = 0; i < cols.length; i++) {\n if (rowData.isScroll && cols[parseInt(i.toString(), 10)].getFreezeTableName() !== 'movable') {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].field) {\n if (cols[parseInt(i.toString(), 10)].type === 'string') {\n cols[parseInt(i.toString(), 10)].defaultValue = this.parent.sanitize(cols[parseInt(i.toString(), 10)].defaultValue);\n }\n DataUtil.setValue(cols[parseInt(i.toString(), 10)].field, cols[parseInt(i.toString(), 10)].defaultValue, this.previousData);\n }\n }\n var args = {\n cancel: false, foreignKeyData: {},\n requestType: 'add', data: this.previousData, type: events.actionBegin, index: index,\n rowData: this.previousData, target: undefined, isScroll: rowData.isScroll\n };\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && Object.keys(rowData.virtualData).length) {\n args.data = args.rowData = rowData.virtualData;\n }\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.actionBegin, args, function (addArgs) {\n if (addArgs.cancel) {\n return;\n }\n _this.inlineAddHandler(addArgs);\n });\n }\n else {\n this.inlineAddHandler(args);\n }\n };\n NormalEdit.prototype.inlineAddHandler = function (addArgs) {\n var gObj = this.parent;\n gObj.isEdit = true;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n this.renderer.addNew(addArgs);\n gObj.editModule.applyFormValidation();\n addArgs.type = events.actionComplete;\n addArgs.row = gObj.element.querySelector('.' + literals.addedRow);\n gObj.trigger(events.actionComplete, addArgs);\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, addArgs.form.ej2_instances[0].rules);\n }\n this.args = addArgs;\n };\n NormalEdit.prototype.deleteRecord = function (fieldname, data) {\n this.editRowIndex = this.parent.selectedRowIndex;\n if (data) {\n data = (data instanceof Array) ? data : [data];\n var gObj = this.parent;\n var dataLen = Object.keys(data).length;\n fieldname = fieldname || this.parent.getPrimaryKeyFieldNames()[0];\n var _loop_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 && args.data.length > 1) {\n var uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n args.data = [this.parent.getRowObjectFromUID(uid).data];\n }\n this.parent.notify(events.modelChanged, args);\n };\n NormalEdit.prototype.stopEditStatus = function () {\n var gObj = this.parent;\n var addElements = [].slice.call(gObj.element.getElementsByClassName(literals.addedRow));\n var editElements = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow));\n for (var i = 0; i < addElements.length; i++) {\n remove(addElements[parseInt(i.toString(), 10)]);\n }\n for (var i = 0; i < editElements.length; i++) {\n editElements[parseInt(i.toString(), 10)].classList.remove(literals.editedRow);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.crudAction, handler: this.editHandler },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.click, handler: this.clickHandler },\n { event: events.recordAdded, handler: this.requestSuccess },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.deleteComplete, handler: this.editComplete },\n { event: events.saveComplete, handler: this.editComplete },\n { event: events.rowModeChange, handler: this.closeEdit },\n { event: events.closeInline, handler: this.closeForm }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.destroy = function () {\n this.removeEventListener();\n this.renderer.destroy();\n };\n return NormalEdit;\n}());\nexport { NormalEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 } from '@syncfusion/ej2-base';\nimport { remove, classList } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { parentsUntil, inArray, refreshForeignData, getObject, alignFrozenEditForm, gridActionHandler, addRemoveEventListener } from '../base/util';\nimport { splitFrozenRowObjectCells, getGridRowElements } from '../base/util';\nimport { sliceElements, getCellByColAndRowIndex } from '../base/util';\nimport { getGridRowObjects } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent, serviceLocator, renderer) {\n this.cellDetails = {};\n this.originalCell = {};\n this.cloneCell = {};\n this.editNext = false;\n this.preventSaveCell = false;\n this.initialRender = true;\n this.validationColObj = [];\n /** @hidden */\n this.addBatchRow = false;\n this.prevEditedBatchCell = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = renderer;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.click, handler: this.clickHandler },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.beforeCellFocused, handler: this.onBeforeCellFocused },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.keyPressed, handler: this.keyDownHandler },\n { event: events.editNextValCell, handler: this.editNextValCell },\n { event: events.closeBatch, handler: this.closeForm },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.batchCancelFunction = this.batchCancel.bind(this);\n this.parent.addEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.addEventListener(events.batchCancel, this.batchCancelFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.removeEventListener(events.batchCancel, this.batchCancelFunction);\n };\n BatchEdit.prototype.batchCancel = function () {\n this.parent.focusModule.restoreFocus();\n };\n BatchEdit.prototype.dataBound = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n BatchEdit.prototype.clickHandler = function (e) {\n if (!parentsUntil(e.target, this.parent.element.id + '_add', true)) {\n if (this.parent.isEdit && closest(this.form, 'td') !== closest(e.target, 'td')) {\n this.saveCell();\n this.editNextValCell();\n }\n if (parentsUntil(e.target, literals.rowCell) && !this.parent.isEdit) {\n this.setCellIdx(e.target);\n }\n }\n };\n BatchEdit.prototype.dblClickHandler = function (e) {\n var target = parentsUntil(e.target, literals.rowCell);\n var tr = parentsUntil(e.target, literals.row);\n var rowIndex = tr && parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n var colIndex = target && parseInt(target.getAttribute(literals.dataColIndex), 10);\n if (!isNullOrUndefined(target) && !isNullOrUndefined(rowIndex) && !isNaN(colIndex)\n && !target.parentElement.classList.contains(literals.editedRow) &&\n this.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 frzCols = this.parent.getFrozenLeftCount();\n var frzRightCols = this.parent.getFrozenRightColumnsCount();\n var mCont = this.parent.getContent().querySelector('.' + literals.movableContent);\n var mHdr = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var clear = (!e.container.isContent || !e.container.isDataCell) && !(this.parent.frozenRows && e.container.isHeader);\n if (this.parent.focusModule.active) {\n this.prevEditedBatchCell = this.parent.focusModule.active.matrix.current.toString() === this.prevEditedBatchCellMatrix()\n .toString();\n this.crtRowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(closest(e.element, 'tr'));\n }\n if (!e.byKey || clear || (this.parent.isFrozenGrid() && e.element && closest(e.element, '.e-gridheader')\n && closest(e.element, 'thead'))) {\n if ((this.parent.isEdit && clear) || (this.parent.isFrozenGrid() && this.parent.isEdit && e.byKey)) {\n this.saveCell();\n }\n return;\n }\n var _a = e.container.indexes, rowIndex = _a[0], cellIndex = _a[1];\n if (frzCols && (mCont.contains(e.element) || (this.parent.frozenRows && mHdr.contains(e.element)))) {\n cellIndex += frzCols;\n }\n if (frzRightCols) {\n var frHdr = this.parent.getHeaderContent().querySelector('.e-frozen-right-header');\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n if (frCont.contains(e.element) || (this.parent.frozenRows && frHdr.contains(e.element))) {\n cellIndex += (frzCols + this.parent.getMovableColumnsCount());\n }\n }\n if (this.parent.frozenRows && e.container.isContent) {\n rowIndex += this.parent.frozenRows;\n }\n var isEdit = this.parent.isEdit;\n if (!this.parent.element.getElementsByClassName('e-popup-open').length) {\n isEdit = isEdit && !this.validateFormObj();\n switch (e.keyArgs.action) {\n case 'tab':\n case 'shiftTab':\n // eslint-disable-next-line no-case-declarations\n var indent = this.parent.isRowDragable() && this.parent.isDetail() ? 2 :\n this.parent.isRowDragable() || this.parent.isDetail() ? 1 : 0;\n // eslint-disable-next-line no-case-declarations\n var col = this.parent.getColumns()[cellIndex - indent];\n if (col && !this.parent.isEdit) {\n this.editCell(rowIndex, col.field);\n }\n if (isEdit || this.parent.isLastCellPrimaryKey) {\n this.editCellFromIndex(rowIndex, cellIndex);\n }\n break;\n case 'enter':\n case 'shiftEnter':\n e.keyArgs.preventDefault();\n // eslint-disable-next-line no-case-declarations\n var args = { cancel: false, keyArgs: e.keyArgs };\n this.parent.notify('beforeFocusCellEdit', args);\n if (!args.cancel && isEdit) {\n this.editCell(rowIndex, this.cellDetails.column.field);\n }\n break;\n case 'f2':\n this.editCellFromIndex(rowIndex, cellIndex);\n this.focus.focus();\n break;\n }\n }\n };\n BatchEdit.prototype.isAddRow = function (index) {\n return this.parent.getDataRows()[parseInt(index.toString(), 10)].classList.contains('e-insertedrow');\n };\n BatchEdit.prototype.editCellFromIndex = function (rowIdx, cellIdx) {\n this.cellDetails.rowIndex = rowIdx;\n this.cellDetails.cellIndex = cellIdx;\n this.editCell(rowIdx, this.parent.getColumns()[parseInt(cellIdx.toString(), 10)].field, this.isAddRow(rowIdx));\n };\n BatchEdit.prototype.closeEdit = function () {\n var _this = this;\n var gObj = this.parent;\n var rows = this.parent.getRowsObject();\n var argument = { cancel: false, batchChanges: this.getBatchChanges() };\n gObj.notify(events.beforeBatchCancel, argument);\n if (argument.cancel) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell(true);\n }\n this.isAdded = false;\n gObj.clearSelection();\n var allRows = getGridRowObjects(this.parent);\n var _loop_1 = function (i) {\n var isInsert = false;\n var isDirty = rows[parseInt(i.toString(), 10)].isDirty;\n gridActionHandler(this_1.parent, function (tableName, rows) {\n isInsert = _this.removeBatchElementChanges(rows[parseInt(i.toString(), 10)], isDirty);\n if (isInsert) {\n rows.splice(i, 1);\n }\n }, allRows);\n if (isInsert) {\n i--;\n }\n out_i_1 = i;\n };\n var this_1 = this, out_i_1;\n for (var i = 0; i < rows.length; i++) {\n _loop_1(i);\n i = out_i_1;\n }\n if (!gObj.getContentTable().querySelector('tr.e-row')) {\n gObj.renderModule.renderEmptyRow();\n }\n var args = {\n requestType: 'batchCancel', rows: this.parent.getRowsObject()\n };\n if (!this.parent.isFrozenGrid()) {\n gObj.notify(events.batchCancel, {\n rows: this.parent.getRowsObject().length ? this.parent.getRowsObject() :\n [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })]\n });\n }\n else {\n if (this.parent.getRowsObject().length) {\n gObj.notify(events.batchCancel, { rows: this.parent.getRowsObject(),\n args: { isFrozen: true } });\n }\n if (this.parent.getMovableRowsObject().length) {\n gObj.notify(events.batchCancel, { rows: this.parent.getMovableRowsObject() });\n }\n if (this.parent.getFrozenRightRowsObject().length) {\n gObj.notify(events.batchCancel, { rows: this.parent.getFrozenRightRowsObject(),\n args: { renderFrozenRightContent: true } });\n }\n }\n gObj.selectRow(this.cellDetails.rowIndex);\n this.refreshRowIdx();\n gObj.editModule.resetMovableContentValidation();\n gObj.notify(events.toolbarRefresh, {});\n this.parent.notify(events.tooltipDestroy, {});\n args = { requestType: 'batchCancel', rows: this.parent.getRowsObject() };\n gObj.trigger(events.batchCancel, args);\n };\n BatchEdit.prototype.removeBatchElementChanges = function (row, isDirty) {\n var gObj = this.parent;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInstertedRemoved = false;\n if (isDirty) {\n row.isDirty = isDirty;\n var tr = gObj.getRowElementByUID(row.uid);\n if (tr) {\n if (tr.classList.contains('e-insertedrow')) {\n remove(tr);\n isInstertedRemoved = true;\n }\n else {\n refreshForeignData(row, this.parent.getForeignKeyColumns(), row.data);\n delete row.changes;\n delete row.edit;\n row.isDirty = false;\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n rowRenderer.refresh(row, gObj.getColumns(), false);\n }\n if (this.parent.aggregates.length > 0) {\n var type = 'type';\n var editType = [];\n editType[\"\" + type] = 'cancel';\n this.parent.notify(events.refreshFooterRenderer, editType);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, editType);\n }\n }\n }\n }\n return isInstertedRemoved;\n };\n BatchEdit.prototype.removeHideAndSelection = function (tr) {\n if (tr.classList.contains('e-hiddenrow')) {\n tr.removeAttribute('aria-selected');\n var tdElements = [].slice.call(tr.getElementsByClassName('e-selectionbackground'));\n for (var i = 0; i < tdElements.length; i++) {\n removeClass([tdElements[parseInt(i.toString(), 10)]], ['e-selectionbackground', 'e-active']);\n }\n }\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n };\n BatchEdit.prototype.deleteRecord = function (fieldname, data) {\n this.saveCell();\n if (this.validateFormObj()) {\n this.saveCell(true);\n }\n this.isAdded = false;\n this.bulkDelete(fieldname, data);\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, {});\n }\n }\n };\n BatchEdit.prototype.addRecord = function (data) {\n this.bulkAddRow(data);\n };\n BatchEdit.prototype.endEdit = function () {\n if (this.parent.isEdit && this.validateFormObj()) {\n return;\n }\n this.batchSave();\n };\n BatchEdit.prototype.closeForm = function () {\n for (var i = 0; i < Object.keys(this.originalCell).length; i++) {\n for (var j = 0; j < Object.keys(this.cloneCell).length; j++) {\n if (Object.keys(this.originalCell)[parseInt(i.toString(), 10)] === Object\n .keys(this.cloneCell)[parseInt(j.toString(), 10)]) {\n this.cloneCell[Object.keys(this.cloneCell)[parseInt(j.toString(), 10)]].replaceWith(this.originalCell[Object\n .keys(this.originalCell)[parseInt(i.toString(), 10)]]);\n if (this.originalCell[Object.keys(this.originalCell)[parseInt(i.toString(), 10)]].classList.contains('e-selectionbackground')) {\n this.originalCell[Object.keys(this.originalCell)[parseInt(i.toString(), 10)]]\n .classList.remove('e-selectionbackground', 'e-cellselectionbackground', 'e-active');\n }\n }\n }\n }\n this.cloneCell = {};\n this.originalCell = {};\n };\n BatchEdit.prototype.validateFormObj = function () {\n return this.parent.editModule.formObj && !this.parent.editModule.formObj.validate();\n };\n BatchEdit.prototype.batchSave = function () {\n var gObj = this.parent;\n var deletedRecords = 'deletedRecords';\n if (gObj.isCheckBoxSelection) {\n var checkAllBox = gObj.element.querySelector('.e-checkselectall').parentElement;\n if (checkAllBox.classList.contains('e-checkbox-disabled') &&\n gObj.pageSettings.totalRecordsCount > gObj.currentViewData.length) {\n removeClass([checkAllBox], ['e-checkbox-disabled']);\n }\n }\n this.saveCell();\n if (gObj.isEdit || this.editNextValCell() || gObj.isEdit) {\n return;\n }\n var changes = this.getBatchChanges();\n if (this.parent.selectionSettings.type === 'Multiple' && changes[\"\" + deletedRecords].length &&\n this.parent.selectionSettings.persistSelection) {\n changes[\"\" + deletedRecords] = this.removeSelectedData;\n this.removeSelectedData = [];\n }\n var original = {\n changedRecords: this.parent.getRowsObject()\n .filter(function (row) { return row.isDirty && ['add', 'delete'].indexOf(row.edit) === -1; })\n .map(function (row) { return row.data; })\n };\n var args = { batchChanges: changes, cancel: false };\n gObj.trigger(events.beforeBatchSave, args, function (beforeBatchSaveArgs) {\n if (beforeBatchSaveArgs.cancel) {\n return;\n }\n gObj.showSpinner();\n gObj.notify(events.bulkSave, { changes: changes, original: original });\n });\n gObj.editModule.resetMovableContentValidation();\n };\n BatchEdit.prototype.getBatchChanges = function () {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var rows = this.parent.getRowsObject();\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isDirty) {\n switch (row.edit) {\n case 'add':\n changes.addedRecords.push(row.changes);\n break;\n case 'delete':\n changes.deletedRecords.push(row.data);\n break;\n default:\n changes.changedRecords.push(row.changes);\n }\n }\n }\n return changes;\n };\n /**\n * @param {string} uid - specifes the uid\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeRowObjectFromUID = function (uid) {\n var rows = this.parent.getRowsObject();\n var i = 0;\n for (var len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].uid === uid) {\n break;\n }\n }\n gridActionHandler(this.parent, function (tableName, rows) {\n rows.splice(i, 1);\n }, getGridRowObjects(this.parent));\n };\n /**\n * @param {Row} row - specifies the row object\n * @param {freezeTable} newTableName - specifies the table name\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addRowObject = function (row, newTableName) {\n var gObj = this.parent;\n var isTop = gObj.editSettings.newRowPosition === 'Top';\n gridActionHandler(this.parent, function (tableName, rows) {\n var rowClone = row.clone();\n if (gObj.isFrozenGrid()) {\n if (newTableName === tableName) {\n if (isTop) {\n rows.unshift(rowClone);\n }\n else {\n rows.push(rowClone);\n }\n }\n }\n else {\n if (isTop) {\n rows.unshift(rowClone);\n }\n else {\n rows.push(rowClone);\n }\n }\n }, getGridRowObjects(this.parent), true);\n };\n // tslint:disable-next-line:max-func-body-length\n BatchEdit.prototype.bulkDelete = function (fieldname, data) {\n var _this = this;\n this.removeSelectedData = [];\n var gObj = this.parent;\n var index = gObj.selectedRowIndex;\n var selectedRows = gObj.getSelectedRows();\n var args = {\n primaryKey: this.parent.getPrimaryKeyFieldNames(),\n rowIndex: index,\n rowData: data ? data : gObj.getSelectedRecords()[0],\n cancel: false\n };\n if (data) {\n args.row = gObj.editModule.deleteRowUid ? gObj.getRowElementByUID(gObj.editModule.deleteRowUid)\n : gObj.getRows()[gObj.getCurrentViewRecords().indexOf(data)];\n }\n else {\n args.row = data ? gObj.getRows()[parseInt(index.toString(), 10)] : selectedRows[0];\n }\n if (!args.row) {\n return;\n }\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeBatchDelete, args, function (beforeBatchDeleteArgs) {\n if (beforeBatchDeleteArgs.cancel) {\n return;\n }\n _this.removeSelectedData = gObj.getSelectedRecords();\n gObj.clearSelection();\n beforeBatchDeleteArgs.row = beforeBatchDeleteArgs.row ?\n beforeBatchDeleteArgs.row : data ? gObj.getRows()[parseInt(index.toString(), 10)] : selectedRows[0];\n if (_this.parent.isFrozenGrid()) {\n if (data) {\n index = parseInt(beforeBatchDeleteArgs.row.getAttribute(literals.dataRowIndex), 10);\n selectedRows = [];\n selectedRows.push(gObj.getRowByIndex(index));\n selectedRows.push(gObj.getMovableRowByIndex(index));\n if (gObj.getFrozenMode() === literals.leftRight) {\n selectedRows.push(gObj.getFrozenRightRowByIndex(index));\n }\n }\n for (var i = 0; i < selectedRows.length; i++) {\n var uid = selectedRows[parseInt(i.toString(), 10)].getAttribute('data-uid');\n if (selectedRows[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(selectedRows[parseInt(i.toString(), 10)]);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(selectedRows[parseInt(i.toString(), 10)], ['e-hiddenrow', 'e-updatedtd'], []);\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getMovableDataRows().length >= gObj.frozenRows) {\n gObj.getMovableHeaderTbody().appendChild(gObj.getMovableRowByIndex(gObj.frozenRows - 1));\n gObj.getFrozenHeaderTbody().appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n if (gObj.getFrozenMode() === literals.leftRight) {\n gObj.getFrozenRightHeaderTbody().appendChild(gObj.getFrozenRightRowByIndex(gObj.frozenRows - 1));\n }\n }\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(literals.tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n delete selectedRows[parseInt(i.toString(), 10)];\n }\n }\n else if (!_this.parent.isFrozenGrid() && (selectedRows.length === 1 || data)) {\n var uid = beforeBatchDeleteArgs.row.getAttribute('data-uid');\n uid = data && _this.parent.editModule.deleteRowUid ? uid = _this.parent.editModule.deleteRowUid : uid;\n if (beforeBatchDeleteArgs.row.classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(beforeBatchDeleteArgs.row);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(beforeBatchDeleteArgs.row, ['e-hiddenrow', 'e-updatedtd'], []);\n }\n delete beforeBatchDeleteArgs.row;\n }\n else {\n for (var i = 0; i < selectedRows.length; i++) {\n var uniqueid = selectedRows[parseInt(i.toString(), 10)].getAttribute('data-uid');\n if (selectedRows[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uniqueid);\n remove(selectedRows[parseInt(i.toString(), 10)]);\n }\n else {\n classList(selectedRows[parseInt(i.toString(), 10)], ['e-hiddenrow', 'e-updatedtd'], []);\n var selectedRow = gObj.getRowObjectFromUID(uniqueid);\n selectedRow.isDirty = true;\n selectedRow.edit = 'delete';\n delete selectedRows[parseInt(i.toString(), 10)];\n }\n }\n }\n _this.refreshRowIdx();\n if (data) {\n gObj.editModule.deleteRowUid = undefined;\n if (gObj.getSelectedRows().length) {\n index = parseInt(gObj.getSelectedRows()[0].getAttribute(literals.dataRowIndex), 10);\n }\n }\n if (!gObj.isCheckBoxSelection) {\n gObj.selectRow(index);\n }\n gObj.trigger(events.batchDelete, beforeBatchDeleteArgs);\n gObj.notify(events.batchDelete, { rows: _this.parent.getRowsObject() });\n gObj.notify(events.toolbarRefresh, {});\n });\n };\n BatchEdit.prototype.refreshRowIdx = function () {\n var gObj = this.parent;\n var rows = gObj.getAllDataRows(true);\n var dataRows = getGridRowElements(this.parent);\n var dataObjects = getGridRowObjects(this.parent);\n var _loop_2 = function (i, j, len) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row) && !rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow')) {\n gridActionHandler(this_2.parent, function (tableName, rowElements, rowObjects) {\n rowElements[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, j.toString());\n rowElements[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (j + 1).toString());\n rowObjects[parseInt(i.toString(), 10)].index = j;\n }, dataRows, null, dataObjects);\n j++;\n }\n else {\n gridActionHandler(this_2.parent, function (tableName, rowElements, rowObjects) {\n rowElements[parseInt(i.toString(), 10)].removeAttribute(literals.dataRowIndex);\n rowElements[parseInt(i.toString(), 10)].removeAttribute(literals.ariaRowIndex);\n rowObjects[parseInt(i.toString(), 10)].index = -1;\n }, dataRows, null, dataObjects);\n }\n out_j_1 = j;\n };\n var this_2 = this, out_j_1;\n for (var i = 0, j = 0, len = rows.length; i < len; i++) {\n _loop_2(i, j, len);\n j = out_j_1;\n }\n };\n BatchEdit.prototype.getIndexFromData = function (data) {\n return inArray(data, this.parent.getCurrentViewRecords());\n };\n BatchEdit.prototype.bulkAddRow = function (data) {\n var _this = this;\n var gObj = this.parent;\n if (!gObj.editSettings.allowAdding) {\n 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 (gObj.isEdit) {\n return;\n }\n if (this.initialRender) {\n var visibleColumns = gObj.getVisibleColumns();\n for (var i = 0; i < visibleColumns.length; i++) {\n if (visibleColumns[parseInt(i.toString(), 10)].validationRules &&\n visibleColumns[parseInt(i.toString(), 10)].validationRules['required']) {\n var obj = { field: (visibleColumns[parseInt(i.toString(), 10)]['field']).slice(), cellIdx: i };\n this.validationColObj.push(obj);\n }\n }\n this.initialRender = false;\n }\n this.parent.element.classList.add('e-editing');\n var defaultData = data ? data : this.getDefaultData();\n var args = {\n defaultData: defaultData,\n primaryKey: gObj.getPrimaryKeyFieldNames(),\n cancel: false\n };\n gObj.trigger(events.beforeBatchAdd, args, function (beforeBatchAddArgs) {\n if (beforeBatchAddArgs.cancel) {\n return;\n }\n _this.isAdded = true;\n gObj.clearSelection();\n if (gObj.isFrozenGrid()) {\n var movableCnt = _this.parent.getMovableColumnsCount();\n var leftCnt = _this.parent.getFrozenLeftCount();\n var rightCnt = _this.parent.getFrozenRightColumnsCount();\n var tbody$$1 = gObj.getContentTable().querySelector(literals.tbody);\n var totCount = movableCnt + leftCnt + rightCnt;\n var tableTanName = void 0;\n var selectedRowAdd = [];\n var selectedRowAddCells = [];\n var col = void 0;\n var index = void 0;\n var tr = void 0;\n var mTr = void 0;\n var frTr = void 0;\n for (var i = 0; i < totCount;) {\n var row = new RowRenderer(_this.serviceLocator, null, _this.parent);\n var model = new RowModelGenerator(_this.parent);\n var modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n if (leftCnt > 0) {\n leftCnt = 0;\n tableTanName = 'frozen-left';\n totCount = leftCnt + rightCnt + movableCnt;\n }\n else if (movableCnt > 0) {\n movableCnt = 0;\n tableTanName = 'movable';\n totCount = leftCnt + rightCnt + movableCnt;\n }\n else {\n rightCnt = 0;\n tableTanName = 'frozen-right';\n totCount = leftCnt + rightCnt + movableCnt;\n }\n for (var i_1 = 0; i_1 < modelData.length; i_1++) {\n modelData[parseInt(i_1.toString(), 10)]\n .cells = splitFrozenRowObjectCells(_this.parent, modelData[parseInt(i_1.toString(), 10)].cells, tableTanName);\n }\n if (tableTanName === 'frozen-left') {\n tr = row.render(modelData[0], gObj.getColumns());\n tr.classList.add('e-insertedrow');\n }\n else if (tableTanName === 'movable') {\n mTr = row.render(modelData[0], gObj.getColumns());\n mTr.classList.add('e-insertedrow');\n }\n else {\n frTr = row.render(modelData[0], gObj.getColumns());\n frTr.classList.add('e-insertedrow');\n }\n for (var i_2 = 0; i_2 < _this.parent.groupSettings.columns.length; i_2++) {\n tr.insertBefore(_this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n if (tbody$$1.querySelector('.e-emptyrow')) {\n var emptyRow = tbody$$1.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n _this.removeFrozenTbody();\n }\n if (tableTanName === 'frozen-left') {\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody$$1 = gObj.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody$$1 = gObj.getContentTable().querySelector(literals.tbody);\n }\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n tbody$$1.insertBefore(tr, tbody$$1.firstChild);\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n }\n else {\n tbody$$1.appendChild(tr);\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n }\n }\n if (tableTanName === 'movable' || tableTanName === 'frozen-right') {\n _this.renderFrozenAddRow(mTr, frTr, tableTanName);\n }\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n _this.addRowObject(modelData[0], tableTanName);\n }\n _this.refreshRowIdx();\n _this.focus.forgetPrevious();\n gObj.notify(events.batchAdd, { rows: _this.parent.getRowsObject(), args: { isFrozen: _this.parent.isFrozenGrid() } });\n var changes = _this.getBatchChanges();\n var btmIdx = _this.getBottomIndex();\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n gObj.selectRow(0);\n }\n else {\n gObj.selectRow(btmIdx);\n }\n if (!data) {\n index = _this.findNextEditableCell(0, true);\n col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n _this.editCell(0, col.field, true);\n }\n else {\n _this.editCell(btmIdx, col.field, true);\n }\n }\n if (_this.parent.aggregates.length > 0 && (data || changes[literals.addedRecords].length)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n if (tr) {\n alignFrozenEditForm(mTr.querySelector('td:not(.e-hide)'), tr.querySelector('td:not(.e-hide)'));\n selectedRowAdd.push(tr);\n selectedRowAddCells.push(tr.cells);\n }\n selectedRowAdd.push(mTr);\n selectedRowAddCells.push(mTr.cells);\n if (frTr) {\n selectedRowAdd.push(frTr);\n selectedRowAddCells.push(frTr.cells);\n }\n var args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: selectedRowAdd,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey, cell: selectedRowAddCells\n };\n gObj.trigger(events.batchAdd, args1);\n }\n else {\n var row = new RowRenderer(_this.serviceLocator, null, _this.parent);\n var model = new RowModelGenerator(_this.parent);\n var modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n var tr = row.render(modelData[0], gObj.getColumns());\n var col = void 0;\n var index = void 0;\n for (var i = 0; i < _this.parent.groupSettings.columns.length; i++) {\n tr.insertBefore(_this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n var tbody = gObj.getContentTable().querySelector(literals.tbody);\n tr.classList.add('e-insertedrow');\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n _this.removeFrozenTbody();\n }\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody = gObj.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = gObj.getContentTable().querySelector(literals.tbody);\n }\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(tr, tbody.firstChild);\n }\n else {\n tbody.appendChild(tr);\n }\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n _this.addRowObject(modelData[0]);\n _this.refreshRowIdx();\n _this.focus.forgetPrevious();\n gObj.notify(events.batchAdd, { rows: _this.parent.getRowsObject(), args: { isFrozen: _this.parent.isFrozenGrid() } });\n var changes = _this.getBatchChanges();\n var btmIdx = _this.getBottomIndex();\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n gObj.selectRow(0);\n }\n else {\n gObj.selectRow(btmIdx);\n }\n if (!data) {\n index = _this.findNextEditableCell(0, true);\n col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n _this.editCell(0, col.field, true);\n }\n else {\n _this.editCell(btmIdx, col.field, true);\n }\n }\n if (_this.parent.aggregates.length > 0 && (data || changes[literals.addedRecords].length)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n var args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: tr,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey,\n cell: !isNullOrUndefined(index) ? tr.cells[parseInt(index.toString(), 10)] : undefined\n };\n gObj.trigger(events.batchAdd, args1);\n }\n });\n };\n BatchEdit.prototype.renderFrozenAddRow = function (mTr, frTr, tableName$$1) {\n var gObj = this.parent;\n var mTbody;\n var frTbody;\n if (tableName$$1 === 'movable') {\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n mTbody = this.parent.getMovableHeaderTbody();\n }\n else {\n mTbody = this.parent.getContent().querySelector('.e-movablecontent').querySelector(literals.tbody);\n }\n if (gObj.editSettings.newRowPosition === 'Top') {\n mTbody.insertBefore(mTr, mTbody.firstChild);\n }\n else {\n mTbody.appendChild(mTr);\n }\n addClass([].slice.call(mTr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n }\n if (tableName$$1 === 'frozen-right') {\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n frTbody = this.parent.getFrozenRightHeaderTbody();\n }\n else {\n frTbody = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n }\n if (gObj.editSettings.newRowPosition === 'Top') {\n frTbody.insertBefore(frTr, frTbody.firstChild);\n }\n else {\n frTbody.appendChild(frTr);\n }\n addClass([].slice.call(frTr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n alignFrozenEditForm(frTr.querySelector('td:not(.e-hide)'), mTr.querySelector('td:not(.e-hide)'));\n }\n if (gObj.height === 'auto') {\n gObj.notify(events.frozenHeight, {});\n }\n };\n BatchEdit.prototype.removeFrozenTbody = function () {\n var gObj = this.parent;\n if (gObj.isFrozenGrid()) {\n var moveTbody = gObj.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n if (gObj.getFrozenMode() === literals.leftRight) {\n var frTbody = gObj.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n (frTbody.firstElementChild).parentNode.removeChild(frTbody.firstElementChild);\n }\n }\n };\n BatchEdit.prototype.renderMovable = function (ele, rightEle) {\n var mEle = ele.cloneNode(true);\n var movable = this.parent.getMovableColumnsCount();\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n sliceElements(ele, 0, left);\n sliceElements(mEle, left, right ? mEle.children.length - right : mEle.children.length);\n sliceElements(rightEle, left + movable, rightEle.children.length);\n return mEle;\n };\n BatchEdit.prototype.findNextEditableCell = function (columnIndex, isAdd, isValOnly) {\n var cols = this.parent.getColumns();\n var endIndex = cols.length;\n var validation;\n for (var i = columnIndex; i < endIndex; i++) {\n validation = isValOnly ? isNullOrUndefined(cols[parseInt(i.toString(), 10)].validationRules) : false;\n if (!isAdd && this.checkNPCell(cols[parseInt(i.toString(), 10)])) {\n return i;\n }\n else if (isAdd && (!cols[parseInt(i.toString(), 10)].template || cols[parseInt(i.toString(), 10)].field)\n && cols[parseInt(i.toString(), 10)].visible && !(cols[parseInt(i.toString(), 10)].isIdentity\n && cols[parseInt(i.toString(), 10)].isPrimaryKey) && !validation) {\n return i;\n }\n }\n return -1;\n };\n BatchEdit.prototype.checkNPCell = function (col) {\n return !col.template && col.visible && !col.isPrimaryKey && !col.isIdentity && col.allowEditing;\n };\n BatchEdit.prototype.getDefaultData = function () {\n var gObj = this.parent;\n var data = {};\n var dValues = { 'number': 0, 'string': null, 'boolean': false, 'date': null, 'datetime': null };\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field) {\n setValue(col.field, Object.keys(col).indexOf('defaultValue') >= 0 ? col.defaultValue : dValues[col.type], data);\n }\n }\n return data;\n };\n BatchEdit.prototype.setCellIdx = function (target) {\n var gLen = 0;\n if (this.parent.allowGrouping) {\n gLen = this.parent.groupSettings.columns.length;\n }\n this.cellDetails.cellIndex = target.cellIndex - gLen;\n this.cellDetails.rowIndex = parseInt(target.getAttribute('index'), 10);\n };\n BatchEdit.prototype.editCell = function (index, field, isAdd) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n this.index = index;\n this.field = field;\n this.isAdd = isAdd;\n var checkEdit = gObj.isEdit && !(this.cellDetails.column.field === field\n && (this.cellDetails.rowIndex === index && this.parent.getDataRows().length - 1 !== index && this.prevEditedBatchCell));\n if (gObj.editSettings.allowEditing) {\n if (!checkEdit && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex].classList.contains('e-insertedrow')))) {\n this.editCellExtend(index, field, isAdd);\n }\n else if (checkEdit) {\n this.editNext = true;\n this.saveCell();\n }\n }\n };\n BatchEdit.prototype.editCellExtend = function (index, field, isAdd) {\n var _this = this;\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var keys = gObj.getPrimaryKeyFieldNames();\n if (gObj.isEdit) {\n return;\n }\n var row;\n var mRowData;\n var rowData = extend({}, {}, this.getDataByIndex(index), true);\n if (col.getFreezeTableName() === 'movable' || col.getFreezeTableName() === literals.frozenRight) {\n row = col.getFreezeTableName() === 'movable' ? gObj.getMovableDataRows()[parseInt(index.toString(), 10)] : gObj.getFrozenRightDataRows()[parseInt(index.toString(), 10)];\n mRowData = this.parent.getRowObjectFromUID(row.getAttribute('data-uid'));\n rowData = mRowData.changes ? extend({}, {}, mRowData.changes, true) : rowData;\n }\n else {\n row = gObj.getDataRows()[parseInt(index.toString(), 10)];\n rowData = extend({}, {}, this.getDataByIndex(index), true);\n }\n if ((keys[0] === col.field && !row.classList.contains('e-insertedrow')) || col.columns ||\n (col.isPrimaryKey && col.isIdentity) || col.commands) {\n this.parent.isLastCellPrimaryKey = true;\n return;\n }\n this.parent.isLastCellPrimaryKey = false;\n this.parent.element.classList.add('e-editing');\n var rowObj = gObj.getRowObjectFromUID(row.getAttribute('data-uid'));\n var cells = [].slice.apply(row.cells);\n var args = {\n columnName: col.field, isForeignKey: !isNullOrUndefined(col.foreignKeyValue),\n primaryKey: keys, rowData: rowData,\n validationRules: extend({}, col.validationRules ? col.validationRules : {}),\n value: getObject(col.field, rowData),\n type: !isAdd ? 'edit' : 'add', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData\n };\n args.cell = cells[this.getColIndex(cells, this.getCellIdx(col.uid))];\n args.row = row;\n args.columnObject = col;\n if (!args.cell) {\n return;\n }\n gObj.trigger(events.cellEdit, args, function (cellEditArgs) {\n if (cellEditArgs.cancel) {\n return;\n }\n cellEditArgs.cell = cellEditArgs.cell ? cellEditArgs.cell : cells[_this.getColIndex(cells, _this.getCellIdx(col.uid))];\n cellEditArgs.row = cellEditArgs.row ? cellEditArgs.row : row;\n cellEditArgs.columnObject = cellEditArgs.columnObject ? cellEditArgs.columnObject : col;\n cellEditArgs.columnObject.index = isNullOrUndefined(cellEditArgs.columnObject.index) ? 0 : cellEditArgs.columnObject.index;\n _this.cellDetails = {\n rowData: rowData, column: col, value: cellEditArgs.value, isForeignKey: cellEditArgs.isForeignKey, rowIndex: index,\n cellIndex: parseInt(cellEditArgs.cell.getAttribute(literals.dataColIndex), 10),\n foreignKeyData: cellEditArgs.foreignKeyData\n };\n if (cellEditArgs.cell.classList.contains('e-updatedtd')) {\n _this.isColored = true;\n cellEditArgs.cell.classList.remove('e-updatedtd');\n }\n gObj.isEdit = true;\n gObj.clearSelection();\n if (!gObj.isCheckBoxSelection || !gObj.isPersistSelection) {\n gObj.selectRow(_this.cellDetails.rowIndex, true);\n }\n _this.renderer.update(cellEditArgs);\n _this.parent.notify(events.batchEditFormRendered, cellEditArgs);\n _this.form = select('#' + gObj.element.id + 'EditForm', gObj.element);\n gObj.editModule.applyFormValidation([col]);\n _this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n });\n };\n BatchEdit.prototype.updateCell = function (rowIndex, field, value) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var index = gObj.getColumnIndexByField(field);\n if (col && !col.isPrimaryKey && col.allowEditing) {\n var td_1 = getCellByColAndRowIndex(this.parent, col, rowIndex, index);\n var rowObj_1 = col.getFreezeTableName() === 'movable' ? this.parent.getMovableRowsObject()[parseInt(rowIndex.toString(), 10)] :\n col.getFreezeTableName() === literals.frozenRight ? gObj.getFrozenRightRowsObject()[parseInt(rowIndex.toString(), 10)]\n : gObj.getRowObjectFromUID(td_1.parentElement.getAttribute('data-uid'));\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 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 BatchEdit.prototype.setChanges = function (rowObj, field, value) {\n var currentRowObj;\n if (!this.parent.isFrozenGrid()) {\n if (!rowObj.changes) {\n rowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n if (typeof value === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(field, value, rowObj.changes);\n }\n if (rowObj.data[\"\" + field] !== value) {\n var type = this.parent.getColumnByField(field).type;\n if ((type === 'date' || type === 'datetime')) {\n if (new Date(rowObj.data[\"\" + field]).toString() !== new Date(value).toString()) {\n rowObj.isDirty = true;\n }\n }\n else {\n rowObj.isDirty = true;\n }\n }\n }\n else {\n var rowEle = this.parent.getRowElementByUID(rowObj.uid);\n var rowIndex = parseInt(rowEle.getAttribute(literals.dataRowIndex), 10);\n currentRowObj = this.parent.getRowsObject()[parseInt(rowIndex.toString(), 10)];\n if (!currentRowObj.changes) {\n currentRowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n setValue(field, value, currentRowObj.changes);\n }\n var movableRowObject = this.parent.getMovableRowsObject()[parseInt(rowIndex.toString(), 10)];\n movableRowObject.changes = extend({}, {}, currentRowObj.changes, true);\n if (rowObj.data[\"\" + field] !== value) {\n movableRowObject.isDirty = true;\n currentRowObj.isDirty = true;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frRowObject = this.parent.getFrozenRightRowsObject()[parseInt(rowIndex.toString(), 10)];\n frRowObject.changes = extend({}, {}, currentRowObj.changes, true);\n if (rowObj.data[\"\" + field] !== value) {\n frRowObject.isDirty = true;\n }\n }\n }\n };\n BatchEdit.prototype.updateRow = function (index, data) {\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var col = keys_1[_i];\n this.updateCell(index, col, data[\"\" + col]);\n }\n };\n BatchEdit.prototype.getCellIdx = function (uid) {\n var cIdx = this.parent.getColumnIndexByUid(uid) + this.parent.groupSettings.columns.length;\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n return cIdx;\n };\n BatchEdit.prototype.refreshTD = function (td, column, rowObj, value) {\n var cell = new CellRenderer(this.parent, this.serviceLocator);\n var rowcell;\n value = column.type === 'number' && !isNullOrUndefined(value) ? parseFloat(value) : value;\n this.setChanges(rowObj, column.field, value);\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()\n || this.parent.getFrozenRightColumnsCount();\n frzCols = frzCols && this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (frzCols && column.getFreezeTableName() === 'movable' && this.parent.getColumns().length === rowObj.cells.length) {\n rowcell = rowObj.cells.slice(frzCols, rowObj.cells.length);\n }\n else {\n rowcell = rowObj.cells;\n }\n var parentElement;\n var cellIndex;\n if (this.parent.isReact) {\n parentElement = td.parentElement;\n cellIndex = td.cellIndex;\n }\n var index = 0;\n if (frzCols) {\n index = column.getFreezeTableName() === 'movable' && this.parent.getFrozenMode() !== 'Right'\n ? frzCols : column.getFreezeTableName() === literals.frozenRight\n ? this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount() : index;\n }\n cell.refreshTD(td, rowcell[this.getCellIdx(column.uid) - index], rowObj.changes, { 'index': this.getCellIdx(column.uid) });\n if (this.parent.isReact) {\n this.newReactTd = parentElement.cells[parseInt(cellIndex.toString(), 10)];\n parentElement.cells[parseInt(cellIndex.toString(), 10)].classList.add('e-updatedtd');\n }\n else {\n td.classList.add('e-updatedtd');\n }\n td.classList.add('e-updatedtd');\n this.parent.notify(events.toolbarRefresh, {});\n };\n BatchEdit.prototype.getColIndex = function (cells, index) {\n var cIdx = 0;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n cIdx = this.parent.groupSettings.columns.length;\n }\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index - cIdx) {\n return m;\n }\n }\n return -1;\n };\n BatchEdit.prototype.editNextValCell = function () {\n var gObj = this.parent;\n var insertedRows = gObj.element.querySelectorAll('.e-insertedrow');\n var isSingleInsert = insertedRows.length === 1 ? true : (gObj.getFrozenColumns() > 0 ||\n gObj.getFrozenRightColumnsCount() > 0 || gObj.getFrozenLeftColumnsCount() > 0) && (insertedRows.length === 2 ||\n insertedRows.length === 3) ? true : false;\n if (isSingleInsert && this.isAdded && !gObj.isEdit) {\n var btmIdx = this.getBottomIndex();\n for (var i = this.cellDetails.cellIndex; i < gObj.getColumns().length; i++) {\n if (gObj.isEdit) {\n return;\n }\n var index = this.findNextEditableCell(this.cellDetails.cellIndex + 1, true, true);\n var col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (col) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n this.editCell(btmIdx, col.field, true);\n }\n else {\n var args = { index: 0, column: col };\n this.parent.notify(events.nextCellIndex, args);\n this.editCell(args.index, col.field, true);\n }\n this.saveCell();\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n else if (!isSingleInsert && this.isAdded && !gObj.isEdit && !gObj.isFrozenGrid()) {\n var editRowIdx = 0;\n if (gObj.editSettings.newRowPosition === 'Bottom') {\n var changes = this.getBatchChanges();\n editRowIdx = gObj.getCurrentViewRecords().length - changes[literals.deletedRecords].length;\n }\n for (var i = 0; i < insertedRows.length; i++) {\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(insertedRows[parseInt(i.toString(), 10)]['rowIndex'], this.validationColObj[parseInt(j.toString(), 10)].field);\n if (this.validateFormObj()) {\n this.saveCell();\n }\n }\n }\n }\n else {\n break;\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n else if (!isSingleInsert && this.isAdded && !gObj.isEdit && gObj.isFrozenGrid()) {\n var fLeftInsertedRow = gObj.getFrozenLeftContentTbody() ? gObj.getFrozenLeftContentTbody()\n .querySelectorAll('.e-insertedrow') : undefined;\n var fRightInsertedRow = gObj.getFrozenRightContentTbody() ? gObj.getFrozenRightContentTbody()\n .querySelectorAll('.e-insertedrow') : undefined;\n var mInsertedRow = gObj.getMovableContentTbody().querySelectorAll('.e-insertedrow');\n var editRowIdx = 0;\n var fLeftCount = gObj.getVisibleFrozenLeftCount() ? gObj.getVisibleFrozenLeftCount() :\n gObj.getFrozenColumns();\n var fRightCount = gObj.getVisibleFrozenRightCount();\n var mColumnCount = gObj.getVisibleMovableCount();\n if (gObj.editSettings.newRowPosition === 'Bottom') {\n var changes = this.getBatchChanges();\n editRowIdx = gObj.getCurrentViewRecords().length - changes[literals.deletedRecords].length;\n }\n else if (gObj.editSettings.newRowPosition === 'Top' && gObj.frozenRows) {\n fLeftInsertedRow = gObj.getFrozenHeaderTbody() ? gObj.getFrozenHeaderTbody()\n .querySelectorAll('.e-insertedrow') : undefined;\n fRightInsertedRow = gObj.getFrozenRightHeader() ? gObj.getFrozenRightHeader()\n .querySelectorAll('.e-insertedrow') : undefined;\n mInsertedRow = gObj.getMovableHeaderTbody().querySelectorAll('.e-insertedrow');\n }\n for (var i = 0; i < mInsertedRow.length; i++, editRowIdx++) {\n if (!gObj.isEdit) {\n for (var j = 0; j < this.validationColObj.length; j++) {\n if (gObj.isEdit) {\n break;\n }\n else if (fLeftCount && this.validationColObj[parseInt(j.toString(), 10)].cellIdx < fLeftCount) {\n if (fLeftInsertedRow[parseInt(i.toString(), 10)].querySelectorAll('td')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx].innerText === '') {\n this.editCell(editRowIdx, this.validationColObj[parseInt(j.toString(), 10)].field);\n if (gObj.editModule.formObj.validate()) {\n this.saveCell();\n }\n }\n }\n else if (fRightCount && mColumnCount <= this.validationColObj[parseInt(j.toString(), 10)].cellIdx) {\n if (fRightInsertedRow[parseInt(i.toString(), 10)].querySelectorAll('td')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx - (mColumnCount + fLeftCount)].innerText === '') {\n this.editCell(editRowIdx, this.validationColObj[parseInt(j.toString(), 10)].field);\n if (gObj.editModule.formObj.validate()) {\n this.saveCell();\n }\n }\n }\n else if (mInsertedRow[parseInt(i.toString(), 10)].querySelectorAll('td')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx - fLeftCount].innerText === '') {\n this.editCell(editRowIdx, this.validationColObj[parseInt(j.toString(), 10)].field);\n if (gObj.editModule.formObj.validate()) {\n this.saveCell();\n }\n }\n }\n }\n else {\n break;\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n };\n BatchEdit.prototype.escapeCellEdit = function () {\n var args = this.generateCellArgs();\n args.value = args.previousValue;\n if (args.value || !this.cellDetails.column.validationRules) {\n this.successCallBack(args, args.cell.parentElement, args.column, true)(args);\n }\n };\n BatchEdit.prototype.generateCellArgs = function () {\n var gObj = this.parent;\n this.parent.element.classList.remove('e-editing');\n var column = this.cellDetails.column;\n var obj = {};\n obj[column.field] = getObject(column.field, this.cellDetails.rowData);\n var editedData = gObj.editModule.getCurrentEditedData(this.form, obj);\n var cloneEditedData = extend({}, editedData);\n editedData = extend({}, editedData, this.cellDetails.rowData);\n var value = getObject(column.field, cloneEditedData);\n if (!isNullOrUndefined(column.field) && !isUndefined(value)) {\n setValue(column.field, value, editedData);\n }\n var args = {\n columnName: column.field,\n value: getObject(column.field, editedData),\n rowData: this.cellDetails.rowData,\n column: column,\n previousValue: this.cellDetails.value,\n isForeignKey: this.cellDetails.isForeignKey,\n cancel: false\n };\n args.cell = this.form.parentElement;\n args.columnObject = column;\n return args;\n };\n BatchEdit.prototype.saveCell = function (isForceSave) {\n if (this.preventSaveCell || !this.form) {\n return;\n }\n var gObj = this.parent;\n if (!isForceSave && (!gObj.isEdit || this.validateFormObj())) {\n return;\n }\n this.preventSaveCell = true;\n var args = this.generateCellArgs();\n var tr = args.cell.parentElement;\n var col = args.column;\n if (!isForceSave) {\n gObj.trigger(events.cellSave, args, this.successCallBack(args, tr, col));\n gObj.notify(events.batchForm, { formObj: this.form });\n }\n else {\n this.successCallBack(args, tr, col)(args);\n }\n };\n BatchEdit.prototype.successCallBack = function (cellSaveArgs, tr, column, isEscapeCellEdit) {\n var _this = this;\n return function (cellSaveArgs) {\n var gObj = _this.parent;\n cellSaveArgs.cell = cellSaveArgs.cell ? cellSaveArgs.cell : _this.form.parentElement;\n cellSaveArgs.columnObject = cellSaveArgs.columnObject ? cellSaveArgs.columnObject : column;\n cellSaveArgs.columnObject.index = isNullOrUndefined(cellSaveArgs.columnObject.index) ? 0 : cellSaveArgs.columnObject.index;\n if (cellSaveArgs.cancel) {\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field) {\n return;\n }\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n return;\n }\n gObj.editModule.destroyWidgets([column]);\n gObj.isEdit = false;\n gObj.editModule.destroyForm();\n _this.parent.notify(events.tooltipDestroy, {});\n var rowObj = parentsUntil(cellSaveArgs.cell, literals.movableContent)\n || parentsUntil(cellSaveArgs.cell, literals.movableHeader) ? gObj.getRowObjectFromUID(tr.getAttribute('data-uid'), true)\n : gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n if (gObj.getFrozenMode() === literals.leftRight && (parentsUntil(cellSaveArgs.cell, 'e-frozen-right-header')\n || parentsUntil(cellSaveArgs.cell, 'e-frozen-right-content'))) {\n rowObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'), false, true);\n }\n _this.refreshTD(cellSaveArgs.cell, column, rowObj, cellSaveArgs.value);\n if (_this.parent.isReact) {\n cellSaveArgs.cell = _this.newReactTd;\n }\n removeClass([tr], [literals.editedRow, 'e-batchrow']);\n removeClass([cellSaveArgs.cell], ['e-editedbatchcell', 'e-boolcell']);\n if (!isNullOrUndefined(cellSaveArgs.value) && cellSaveArgs.value.toString() ===\n (!isNullOrUndefined(_this.cellDetails.value) ? _this.cellDetails.value : '').toString() && !_this.isColored\n || (isNullOrUndefined(cellSaveArgs.value) && isNullOrUndefined(rowObj.data[column.field]) &&\n isNullOrUndefined(_this.cellDetails.value) && !cellSaveArgs.cell.parentElement.classList.contains('e-insertedrow'))) {\n cellSaveArgs.cell.classList.remove('e-updatedtd');\n }\n if (isNullOrUndefined(isEscapeCellEdit)) {\n 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 _this.parent.notify(events.refreshFooterRenderer, {});\n if (_this.parent.groupSettings.columns.length > 0 && !_this.isAddRow(_this.cellDetails.rowIndex)) {\n _this.parent.notify(events.groupAggregates, {});\n }\n }\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field && _this.prevEditedBatchCell) {\n return;\n }\n var col = gObj.getColumnByField(_this.field);\n if (col && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex].classList.contains('e-insertedrow')))) {\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n }\n if (isEscapeCellEdit) {\n gObj.notify(events.restoreFocus, {});\n }\n };\n };\n BatchEdit.prototype.prevEditedBatchCellMatrix = function () {\n var editedBatchCellMatrix = [];\n var gObj = this.parent;\n var editedBatchCell = gObj.focusModule.active ? gObj.focusModule.active.getTable().querySelector('.e-editedbatchcell')\n : undefined;\n if (editedBatchCell) {\n var tr = editedBatchCell.parentElement;\n var rowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(tr);\n var cellIndex = [].slice.call(tr.cells).indexOf(editedBatchCell);\n editedBatchCellMatrix = [rowIndex, cellIndex];\n }\n return editedBatchCellMatrix;\n };\n BatchEdit.prototype.getDataByIndex = function (index) {\n var row = this.parent.getRowObjectFromUID(this.parent.getDataRows()[parseInt(index.toString(), 10)].getAttribute('data-uid'));\n return row.changes ? row.changes : row.data;\n };\n BatchEdit.prototype.keyDownHandler = function (e) {\n if (this.addBatchRow || ((e.action === 'tab' || e.action === 'shiftTab') && this.parent.isEdit)) {\n var gObj = this.parent;\n var btmIdx = this.getBottomIndex();\n var rowcell = parentsUntil(e.target, literals.rowCell);\n if (this.addBatchRow || (rowcell && !this.parent.isReact)) {\n var cell = rowcell ? rowcell.querySelector('.e-field') : undefined;\n if (this.addBatchRow || cell) {\n var visibleColumns = this.parent.getVisibleColumns();\n var columnIndex = e.action === 'tab' ? visibleColumns.length - 1 : 0;\n if (this.addBatchRow\n || visibleColumns[parseInt(columnIndex.toString(), 10)].field === cell.getAttribute('id').slice(this.parent.element.id.length)) {\n if (this.cellDetails.rowIndex === btmIdx && e.action === 'tab') {\n if (gObj.editSettings.newRowPosition === 'Top') {\n gObj.editSettings.newRowPosition = 'Bottom';\n this.addRecord();\n gObj.editSettings.newRowPosition = 'Top';\n }\n else {\n this.addRecord();\n }\n this.addBatchRow = false;\n }\n else {\n this.saveCell();\n }\n }\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addCancelWhilePaging = function () {\n if (this.validateFormObj()) {\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.isColored = false;\n }\n };\n BatchEdit.prototype.getBottomIndex = function () {\n var changes = this.getBatchChanges();\n return this.parent.getCurrentViewRecords().length + changes[literals.addedRecords].length -\n changes[literals.deletedRecords].length - 1;\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 this.unBindEvents();\n var ariaAttribute = {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.rippleFn = null;\n this.openPopupEventArgs = null;\n this.selectedElement = null;\n this.listTag = null;\n this.liCollections = null;\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n this.popupWrapper = this.createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n this.createListItems();\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED);\n _this.unWireListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObj.element.style.maxHeight = \"100%\";\n this.popupObj.element.style.width = \"100%\";\n }\n else {\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.timePopupCloseHandler, this);\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n this.popupWrapper.insertBefore(modelHeader, this.popupWrapper.firstElementChild);\n }\n };\n TimePicker.prototype.timePopupCloseHandler = function (e) {\n this.hide();\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH;\n var year = value ? this.initValue.getFullYear() : YEAR;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if ((this.validateState(value) && !this.invalidValueString) ||\n (this.enableMask && this.inputElement.value === this.maskedDateValue)) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue('dayPeriods.format.wide', getDefaultDateObject());\n }\n else {\n var gregorianFormat = '.dates.calendars.gregorian.dayPeriods.format.abbreviated';\n var mainVal = 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n if (this.isPopupOpen()) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n if (this.enableMask) {\n event.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n return;\n }\n else {\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n // eslint-disable-next-line no-self-assign\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (!((event.action == 'right' || event.action == 'left' || event.action == 'tab') || ((event.action == 'home' || event.action == 'end') && !this.isPopupOpen()))) {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n if (!this.isPopupOpen()) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupObj = this.popupWrapper = null;\n }\n if (this.enableMask && !this.readonly && !this.isPopupOpen()) {\n event.preventDefault();\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: event\n });\n }\n if (this.isPopupOpen()) {\n this.keyHandler(event);\n }\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.updateValue(this.inputElement.value, event);\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n this.show(event);\n break;\n case 'escape':\n this.updateInputValue(this.objToString(this.value));\n if (this.enableMask) {\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.previousState(this.value);\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n case 'right':\n case 'left':\n case 'tab':\n case 'shiftTab':\n if (!this.isPopupOpen() && this.enableMask && !this.readonly) {\n if ((this.inputElement.selectionStart === 0 && this.inputElement.selectionEnd === this.inputElement.value.length) ||\n (this.inputElement.selectionEnd !== this.inputElement.value.length && event.action === 'tab') ||\n (this.inputElement.selectionStart !== 0 && event.action === 'shiftTab') || (event.action === 'left' || event.action === 'right')) {\n event.preventDefault();\n }\n this.notify('keyDownHandler', { module: 'MaskedDateTime',\n e: event\n });\n }\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setHover(currentLi, HOVER);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li)) {\n this.checkValue(li.getAttribute('data-value'));\n if (this.enableMask) {\n this.createMask();\n }\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n if (this.enableMask) {\n this.createMask();\n }\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.popupHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n EventHandler.add(this.inputElement, 'input', this.inputEventHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (this.enableMask) {\n if (!timeValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.checkErrorState(timeValue);\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.inputEventHandler = function () {\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.popupHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'input', this.inputEventHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper) && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n TimePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n this.changeEvent(event);\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR, MONTH, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n if (!inputVal) {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(val) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(val) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n if (this.enableMask) {\n if (!value_1) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n else {\n this.updateInputValue(time);\n if (this.enableMask) {\n if (time === '') {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(time) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(time) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n return time;\n };\n TimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (+value < this.timeCollections[i]) {\n var index = this.validLiElement(i);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n var index = this.validLiElement(i, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || !isNullOrUndefined(this.inputWrapper)\n && this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n return;\n }\n var count = this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n nextItem = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(new Date(nextItem));\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n this.selectInputText();\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask && this.value) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '-1' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n if (this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n };\n /**\n * Focuses out the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this\n };\n if (!this.readonly && !Browser.isDevice && !this.enableMask) {\n this.selectInputText();\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Hides the TimePicker popup.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup to show the list items.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.updatePlaceHolder();\n this.setValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n this.setValue(this.value);\n if (this.enableMask) {\n this.createMask();\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n if (this.enableMask && isNullOrUndefined(newProp.value)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], TimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\nexport { TimePicker };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, 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.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n this.setTimeZone(this.serverTimezoneOffset);\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n this.checkInvalidValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInput(true);\n this.updateInputValue(this.maskedDateValue);\n }\n else if (!this.enableMask) {\n this.updateInput(true);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'autocorrect': 'off',\n 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false'\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n var isBindClearAction = this.enableMask ? false : true;\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n bindClearAction: isBindClearAction,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n this.disabledDates(isDynamic, isBlur);\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n else {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString) || this.enableMask) {\n if (this.enableMask || this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateIconHandler, this);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n if (e.code !== 'Delete') {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n DatePicker.prototype.unBindEvents = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateIconHandler);\n }\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.enableMask) {\n EventHandler.remove(this.inputElement, 'keydown', this.keydownHandler);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.mouseUpHandler = function (e) {\n if (this.enableMask) {\n e.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n e.preventDefault();\n if (!this.readonly) {\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[\"\" + key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[\"\" + key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[\"\" + key];\n }\n }\n else {\n setStyle = this.htmlAttributes[\"\" + key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n case 'tab':\n this.hide(e);\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n this.isFocused = true;\n if (!this.enabled) {\n return;\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n var focusArguments = {\n model: this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.isBlur = true;\n this.updateInput(false, true);\n this.isBlur = false;\n this.popupUpdate();\n this.changeTrigger(e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n this.errorClass();\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(e.target) && e.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper')) && !isNullOrUndefined(this.inputWrapper)\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value))) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n if (this.getModuleName() === 'datepicker') {\n this.show(null, e);\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n {\n var start = this.inputElement.selectionStart;\n var end = this.inputElement.selectionEnd;\n if (this.enableMask && !this.popupObj && !this.readonly) {\n var length_1 = this.inputElement.value.length;\n if ((start === 0 && end === length_1) || (end !== length_1 && e.action === 'tab') || (start !== 0 && e.action === 'shiftTab')) {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n start = this.inputElement.selectionStart;\n end = this.inputElement.selectionEnd;\n }\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (this.enableMask) {\n this.inputElement.selectionStart = start;\n this.inputElement.selectionEnd = end;\n }\n this.hide(e);\n break;\n }\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (this.isCalendar()) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (+this.value !== +this.previousDate)) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [SELECTED]);\n }\n }\n if (!isNullOrUndefined(this.value)) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var pattern = /^y/;\n var charPattern = /[^a-zA-Z]/;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else if (!pattern.test(this.formatString) || charPattern.test(this.formatString)) {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n else {\n format = this.formatString;\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n date = this.globalize.parseDate(this.inputElement.value.toLocaleUpperCase(), dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === (this.enableMask ? this.maskedDateValue : '')) {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : (this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' }),\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n open: function () {\n if (Browser.isDevice && _this.fullScreenMode) {\n _this.iconRight = parseInt(window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).marginRight, 10) > 16 ? true : false;\n _this.touchModule = new Touch(_this.calendarElement.querySelector(\".e-content.e-month\"), {\n swipe: _this.CalendarSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector(\".e-content.e-month\"), \"touchstart\", _this.TouchStartHandler, _this);\n }\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObj.element.className += ' ' + this.cssClass;\n this.setAriaAttributes();\n };\n DatePicker.prototype.CalendarSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRight) {\n switch (e.swipeDirection) {\n case \"Left\":\n direction = 1;\n break;\n case \"Right\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case \"Up\":\n direction = 1;\n break;\n case \"Down\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n if (this.touchStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchStart = false;\n }\n };\n DatePicker.prototype.TouchStartHandler = function (e) {\n this.touchStart = true;\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.fullScreenMode) {\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelCloseHandler, this);\n var modelTodayButton = this.calendarElement.querySelector(\"button.e-today\");\n h2.classList.add(\"e-day-wrapper\");\n modelTodayButton.classList.add(\"e-outline\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTodayButton);\n }\n if (!this.fullScreenMode)\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.modelCloseHandler = function (e) {\n this.hide();\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged && this.isCalendar()) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (!this.isIconClicked && !this.isBlur) {\n this.selectCalendar(event);\n }\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n else if (event) {\n this.hide(event);\n }\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n if (this.enableMask) {\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +new Date(this.checkValue(this.min))\n && +this.value <= +new Date(this.checkValue(this.max)))) {\n outOfRange = new Date(this.checkValue(this.value));\n this.setProperties({ 'value': null }, true);\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper) && (prevent && (isNullOrUndefined(this.preventArgs) || !this.preventArgs.cancel))) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n _super.prototype.destroy.call(this);\n if (!isNullOrUndefined(this.keyboardModules)) {\n this.keyboardModules.destroy();\n }\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n this.keyboardModule.destroy();\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n if (!isNullOrUndefined(this.inputWrapper)) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n }\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n if (!isNullOrUndefined(this.inputWrapper)) {\n detach(this.inputWrapper.container);\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n this.inputWrapper = null;\n this.keyboardModules = null;\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic)) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic)) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic)) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic)) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!isDynamic || (isDynamic && !isNullOrUndefined(this.renderDayCell))) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement) && !isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime', isBlur: isBlur\n });\n }\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });\n if (this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !isNullOrUndefined(this.min) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && new Date(this.value).setMilliseconds(0) <= new Date(this.max).setMilliseconds(0)))\n || (!this.strictMode && this.inputElement.value !== '' && this.inputElement.value !== this.maskedDateValue && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else if (!isNullOrUndefined(this.inputWrapper)) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DatePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DatePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (isNullOrUndefined(this.value)) {\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n this.updateInputValue('');\n }\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput(true);\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n this.bindInputEvent();\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n default:\n if (this.calendarElement && this.isCalendar()) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DatePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\nexport { DatePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.moduleName = _this.getModuleName();\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n this.liCollections = null;\n this.rippleFn = null;\n this.selectedElement = null;\n this.listTag = null;\n this.timeIcon = null;\n this.popupObject = null;\n this.preventArgs = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.setValue(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this, isDynamic);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR);\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER + ' ' + TIMEICON + ' ' + ICONS, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld);\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject : new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_datepopup' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n if (!Browser.isDevice || (Browser.isDevice && !this.fullScreenMode)) {\n this.popupObject.refreshPosition(this.inputElement);\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.dateTimeWrapper.style.left = '0px';\n }\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && !isNullOrUndefined(this.inputWrapper) && target !== this.inputWrapper.container) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObject.element.style.display = \"flex\";\n this.popupObject.element.style.maxHeight = \"100%\";\n this.popupObject.element.style.width = \"100%\";\n }\n else {\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-datetime-mob-popup-wrap' });\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.dateTimeCloseHandler, this);\n var timeContent = this.dateTimeWrapper.querySelector(\".e-content\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(timeContent);\n this.dateTimeWrapper.insertBefore(modelWrapper, this.dateTimeWrapper.firstElementChild);\n }\n };\n DateTimePicker.prototype.dateTimeCloseHandler = function (e) {\n this.hide();\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n if (Browser.isDevice && this.fullScreenMode) {\n return popupHeight;\n }\n else {\n return popupHeight > height ? height : popupHeight;\n }\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n _super.prototype.changeEvent.call(this, e);\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.previousDate = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n if (Browser.isDevice && this.fullScreenMode) {\n var listContent = this.dateTimeWrapper.querySelector('.e-content');\n listContent.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n this.inputElement.removeAttribute('aria-owns');\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push(this.maskedDateModule());\n }\n return modules;\n };\n DateTimePicker.prototype.maskedDateModule = function () {\n var modules = { args: [this], member: 'MaskedDateTime' };\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n if (this.enableMask) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask && this.value) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.maskedDateValue = '';\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DateTimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend } from '@syncfusion/ej2-base';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isEditable, getObject, getCustomDateFormat } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `DatePickerEditCell` is used to handle datepicker cell type editing.\n *\n * @hidden\n */\nvar DatePickerEditCell = /** @class */ (function (_super) {\n __extends(DatePickerEditCell, _super);\n function DatePickerEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DatePickerEditCell.prototype.write = function (args) {\n this.edit = this.parent.editModule;\n if (args.column.editType === 'datepickeredit') {\n this.obj = new DatePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n else if (args.column.editType === 'datetimepickeredit') {\n this.obj = new DateTimePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n this.obj.appendTo(args.element);\n };\n return DatePickerEditCell;\n}(EditCellBase));\nexport { DatePickerEditCell };\n// eslint-disable-next-line\nfunction dateanddatetimerender(args, mode, rtl, css, datePickerEditCell) {\n var isInline = mode !== 'Dialog';\n var format = getCustomDateFormat(args.column.format, args.column.type);\n var value = getObject(args.column.field, args.rowData);\n value = value ? new Date(value) : null;\n return {\n floatLabelType: isInline ? 'Never' : 'Always',\n value: value,\n format: format,\n placeholder: isInline ?\n '' : args.column.headerText, enableRtl: rtl,\n enabled: isEditable(args.column, args.requestType, args.element),\n cssClass: css ? css : null,\n close: datePickerClose.bind(datePickerEditCell)\n };\n}\n// eslint-disable-next-line\nfunction datePickerClose(args) {\n if (args.event && args.event.action === 'escape') {\n this.edit.editCellDialogClose = true;\n }\n}\n","/**\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, getColumnModelByFieldName, 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 this.editType = { 'Inline': InlineEdit, 'Normal': InlineEdit, 'Batch': BatchEdit, 'Dialog': DialogEdit };\n this.isValidationApplied = false;\n /* @hidden */\n this.editCellDialogClose = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n this.addEventListener();\n this.updateEditObj();\n this.createAlertDlg();\n this.createConfirmDlg();\n }\n Edit.prototype.updateColTypeObj = function () {\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editSettings.template || cols[parseInt(i.toString(), 10)].editTemplate) {\n var templteCell = 'templateedit';\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[\"\" + templteCell](this.parent), cols[parseInt(i.toString(), 10)].edit || {});\n }\n else {\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[cols[parseInt(i.toString(), 10)].editType\n && Edit.editCellType[cols[parseInt(i.toString(), 10)].editType] ?\n cols[parseInt(i.toString(), 10)].editType : 'defaultedit'](this.parent, this.serviceLocator), cols[parseInt(i.toString(), 10)].edit || {});\n }\n }\n this.parent.log('primary_column_missing');\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowAdding':\n case 'allowDeleting':\n case 'allowEditing':\n if (gObj.editSettings.allowAdding || gObj.editSettings.allowEditing || gObj.editSettings.allowDeleting) {\n this.initialEnd();\n }\n break;\n case 'mode':\n this.updateEditObj();\n gObj.isEdit = false;\n gObj.refresh();\n break;\n }\n }\n };\n Edit.prototype.updateEditObj = function () {\n if (this.editModule) {\n this.editModule.destroy();\n }\n this.renderer = new EditRender(this.parent, this.serviceLocator);\n this.editModule = new this.editType[this.parent.editSettings.mode](this.parent, this.serviceLocator, this.renderer);\n };\n Edit.prototype.initialEnd = function () {\n this.updateColTypeObj();\n };\n /**\n * Edits any bound record in the Grid by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row to be edited.\n * @returns {void}\n */\n Edit.prototype.startEdit = function (tr) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowEditing || gObj.isEdit || gObj.editSettings.mode === 'Batch') {\n return;\n }\n this.parent.element.classList.add('e-editing');\n if (!gObj.getSelectedRows().length) {\n if (!tr) {\n this.showDialog('EditOperationAlert', this.alertDObj);\n return;\n }\n }\n else if (!tr) {\n tr = gObj.getSelectedRows()[0];\n }\n 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 this.isLastRow = tr.rowIndex === this.parent.getContent().querySelector('tr:last-child').rowIndex;\n if (tr.style.display === 'none') {\n return;\n }\n this.editModule.startEdit(tr);\n this.refreshToolbar();\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n this.parent.notify('start-edit', {});\n };\n /**\n * @param {Element} tr - specifies the tr element\n * @param {object} args - specifies the object\n * @param {Element} args.row -specfifes the row\n * @param {string} args.requestType - specifies the request type\n * @returns {void}\n * @hidden\n */\n Edit.prototype.checkLastRow = function (tr, args) {\n var checkLastRow = this.isLastRow;\n if (this.parent.height !== 'auto' && this.parent.editSettings.newRowPosition === 'Bottom' && args && args.requestType === 'add' &&\n this.parent.getContent().firstElementChild.offsetHeight > this.parent.getContentTable().scrollHeight) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowadded');\n }\n else if (checkLastRow && tr && tr.classList) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowcell');\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Edit.prototype.closeEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog\n && this.parent.element.getElementsByClassName('e-updatedtd').length) {\n this.showDialog('CancelEdit', this.dialogObj);\n return;\n }\n this.parent.element.classList.remove('e-editing');\n this.editModule.closeEdit();\n this.refreshToolbar();\n this.parent.notify(events.closeEdit, {});\n };\n Edit.prototype.refreshToolbar = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * To adds a new row at the top with the given data. When data is not passed, it will add empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index) {\n if (!this.parent.editSettings.allowAdding) {\n return;\n }\n var args = { startEdit: true };\n if (!data) {\n this.parent.notify(events.virtualScrollAddActionBegin, args);\n }\n if (args.startEdit) {\n this.parent.element.classList.add('e-editing');\n this.editModule.addRecord(data, index);\n this.refreshToolbar();\n this.parent.notify('start-add', {});\n }\n };\n /**\n * Deletes a record with the given options. If fieldname and data are not given, the Grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field name of the column.\n * @param {Object} data - Defines the JSON data record to be deleted.\n * @returns {void}\n */\n Edit.prototype.deleteRecord = function (fieldname, data) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowDeleting) {\n return;\n }\n if (!data) {\n if (!gObj.getSelectedRecords().length && isNullOrUndefined(gObj.commandDelIndex)) {\n this.showDialog('DeleteOperationAlert', this.alertDObj);\n return;\n }\n }\n if (gObj.editSettings.showDeleteConfirmDialog) {\n this.showDialog('ConfirmDelete', this.dialogObj);\n return;\n }\n this.editModule.deleteRecord(fieldname, data);\n };\n /**\n * Deletes a visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Edit.prototype.deleteRow = function (tr) {\n this.deleteRowUid = tr.getAttribute('data-uid');\n var rowObj = this.parent.getRowObjectFromUID(this.deleteRowUid);\n if (!isNullOrUndefined(rowObj)) {\n this.deleteRecord(null, rowObj.data);\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Edit.prototype.endEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog &&\n (isNullOrUndefined(this.formObj) || this.formObj.validate())) {\n this.parent.editModule.saveCell();\n this.parent.notify(events.editNextValCell, {});\n if (isNullOrUndefined(this.formObj) || this.formObj.validate()) {\n this.showDialog('BatchSaveConfirm', this.dialogObj);\n return;\n }\n }\n this.endEditing();\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n Edit.prototype.updateCell = function (rowIndex, field, value) {\n this.editModule.updateCell(rowIndex, field, value);\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n Edit.prototype.updateRow = function (index, data) {\n this.editModule.updateRow(index, data);\n };\n /**\n * Resets added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchCancel = function () {\n this.closeEdit();\n };\n /**\n * Bulk saves added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchSave = function () {\n this.endEdit();\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n * @returns {void}\n */\n Edit.prototype.editCell = function (index, field) {\n this.editModule.editCell(index, field);\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} returns whether the form is validated\n */\n Edit.prototype.editFormValidate = function () {\n var form1 = this.formObj ? this.formObj.validate() : true;\n var form2 = this.mFormObj ? this.mFormObj.validate() : true;\n var form3 = this.frFormObj ? this.frFormObj.validate() : true;\n return form1 && form2 && form3;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getBatchChanges = function () {\n return this.editModule.getBatchChanges ? this.editModule.getBatchChanges() : {};\n };\n /**\n * Gets the current value of the edited component.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getCurrentEditCellData = function () {\n var obj = this.getCurrentEditedData(this.formObj.element, {});\n return obj[Object.keys(obj)[0]];\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n Edit.prototype.saveCell = function () {\n this.editModule.saveCell();\n };\n Edit.prototype.endEditing = function () {\n this.parent.element.classList.remove('e-editing');\n this.editModule.endEdit();\n this.refreshToolbar();\n };\n Edit.prototype.showDialog = function (content, obj) {\n obj.content = '
' + this.l10n.getConstant(content) + '
';\n obj.dataBind();\n obj.show();\n };\n Edit.prototype.getValueFromType = function (col, value) {\n var val = value;\n switch (col.type) {\n case 'number':\n val = !isNaN(parseFloat(value)) ? parseFloat(value) : null;\n break;\n case 'boolean':\n if (col.editType !== 'booleanedit') {\n val = value === this.l10n.getConstant('True') || value === true ? true : false;\n }\n break;\n case 'date':\n case 'datetime':\n if (col.editType !== 'datepickeredit' && col.editType !== 'datetimepickeredit'\n && value && value.length) {\n val = new Date(value);\n }\n else if (value === '') {\n val = null;\n }\n break;\n case 'dateonly':\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 };\n Edit.prototype.createConfirmDlg = function () {\n this.dialogObj = this.dlgWidget([\n {\n click: this.dlgOk.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n {\n click: this.dlgCancel.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton') }\n }\n ], 'EditConfirm');\n };\n Edit.prototype.createAlertDlg = function () {\n this.alertDObj = this.dlgWidget([\n {\n click: this.alertClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n isPrimary: true }\n }\n ], 'EditAlert');\n };\n Edit.prototype.alertClick = function () {\n this.alertDObj.hide();\n };\n Edit.prototype.dlgWidget = function (btnOptions, name) {\n var div = this.parent.createElement('div', { id: this.parent.element.id + name });\n this.parent.element.appendChild(div);\n var options = {\n showCloseIcon: false,\n isModal: true,\n visible: false,\n closeOnEscape: true,\n target: this.parent.element,\n width: '320px',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n };\n options.buttons = btnOptions;\n var obj = new Dialog(options);\n var isStringTemplate = 'isStringTemplate';\n obj[\"\" + isStringTemplate] = true;\n obj.appendTo(div);\n return obj;\n };\n Edit.prototype.dlgCancel = function () {\n this.parent.focusModule.clearIndicator();\n this.parent.focusModule.restoreFocus();\n this.dialogObj.hide();\n this.parent.notify('cancelcnfrmDlg', {});\n };\n Edit.prototype.dlgOk = function () {\n switch (this.dialogObj.element.querySelector('.e-dlg-content').firstElementChild.innerText) {\n case this.l10n.getConstant('ConfirmDelete'):\n this.editModule.deleteRecord();\n break;\n case this.l10n.getConstant('CancelEdit'):\n this.editModule.closeEdit();\n break;\n case this.l10n.getConstant('BatchSaveConfirm'):\n this.endEditing();\n break;\n case this.l10n.getConstant('BatchSaveLostChanges'):\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.addCancelWhilePaging();\n }\n this.executeAction();\n break;\n }\n this.dlgCancel();\n };\n Edit.prototype.destroyEditComponents = function () {\n if (this.parent.isEdit) {\n this.destroyWidgets();\n this.destroyForm();\n }\n this.destroy();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.eventDetails = [{ event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.initialEnd, handler: this.initialEnd },\n { event: events.keyPressed, handler: this.keyPressHandler },\n { event: events.autoCol, handler: this.updateColTypeObj },\n { event: events.tooltipDestroy, handler: this.destroyToolTip },\n { event: events.preventBatch, handler: this.preventBatch },\n { event: events.destroyForm, handler: this.destroyForm },\n { event: events.destroy, handler: this.destroyEditComponents }];\n addRemoveEventListener(this.parent, this.eventDetails, true, this);\n this.actionBeginFunction = this.onActionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.eventDetails, false);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n };\n Edit.prototype.onDataBound = function () {\n this.resetMovableContentValidation();\n };\n Edit.prototype.actionComplete = function (e) {\n var actions = ['add', 'beginEdit', 'save', 'delete', 'cancel', 'filterafteropen', 'filterchoicerequest'];\n if (actions.indexOf(e.requestType) < 0) {\n this.parent.isEdit = false;\n }\n if (e.requestType === 'batchsave') {\n this.parent.focusModule.restoreFocus();\n }\n this.refreshToolbar();\n };\n /**\n * @param {Element} form - specifies the element\n * @param {Object} editedData - specifies the edited data\n * @returns {Object} returns the object\n * @hidden\n */\n Edit.prototype.getCurrentEditedData = function (form, editedData) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n var elements = [].slice.call(form.elements);\n for (var k = 0; k < elements.length; k++) {\n if (((elements[parseInt(k.toString(), 10)].hasAttribute('name') && (elements[parseInt(k.toString(), 10)].className !== 'e-multi-hidden')) ||\n elements[parseInt(k.toString(), 10)].classList.contains('e-multiselect')) && !(elements[parseInt(k.toString(), 10)].type === 'hidden' &&\n (parentsUntil(elements[parseInt(k.toString(), 10)], 'e-switch-wrapper') || parentsUntil(elements[parseInt(k.toString(), 10)], 'e-checkbox-wrapper')))) {\n var field = (elements[parseInt(k.toString(), 10)].hasAttribute('name')) ? setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('name')) :\n setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('id'));\n var column = gObj.getColumnByField(field) || { field: field, type: elements[parseInt(k.toString(), 10)].getAttribute('type') };\n var value = void 0;\n if (column.type === 'checkbox' || column.type === 'boolean') {\n value = elements[parseInt(k.toString(), 10)].checked;\n }\n else if (elements[parseInt(k.toString(), 10)].value) {\n value = elements[parseInt(k.toString(), 10)].value;\n if (elements[parseInt(k.toString(), 10)].ej2_instances &&\n elements[parseInt(k.toString(), 10)].ej2_instances.length &&\n !isNullOrUndefined(elements[parseInt(k.toString(), 10)].ej2_instances[0].value)) {\n elements[parseInt(k.toString(), 10)].blur();\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n }\n else if (elements[parseInt(k.toString(), 10)].ej2_instances) {\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n if (column.edit && typeof column.edit.read === 'string') {\n value = getValue(column.edit.read, window)(elements[parseInt(k.toString(), 10)], value);\n }\n else if (column.edit && column.edit.read) {\n value = column.edit.read(elements[parseInt(k.toString(), 10)], value);\n }\n value = gObj.editModule.getValueFromType(column, value);\n if (elements[parseInt(k.toString(), 10)].type === 'radio') {\n if (elements[parseInt(k.toString(), 10)].checked) {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n else {\n if (typeof value === 'string') {\n this.parent.sanitize(value);\n }\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n }\n return editedData;\n }\n var col = gObj.columnModel.filter(function (col) { return col.editTemplate; });\n for (var j = 0; j < col.length; j++) {\n if (form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]) {\n var inputElements = [].slice.call(form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]);\n inputElements = inputElements.length ? inputElements : [form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]];\n var temp = inputElements.filter(function (e) {\n return !isNullOrUndefined((e.ej2_instances));\n });\n if (temp.length === 0) {\n temp = inputElements.filter(function (e) { return e.hasAttribute('name'); });\n }\n for (var k = 0; k < temp.length; k++) {\n var value = this.getValue(col[parseInt(j.toString(), 10)], temp[parseInt(k.toString(), 10)], editedData);\n if (col[parseInt(j.toString(), 10)].type === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(col[parseInt(j.toString(), 10)].field, value, editedData);\n }\n }\n }\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col_1 = gObj.getColumnByUid(inputs[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n if (col_1 && col_1.field) {\n var value = this.getValue(col_1, inputs[parseInt(i.toString(), 10)], editedData);\n if (col_1.type === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(col_1.field, value, editedData);\n }\n }\n return editedData;\n };\n Edit.prototype.getValue = function (col, input, editedData) {\n var value = input.ej2_instances ?\n input.ej2_instances[0].value : input.value;\n var gObj = this.parent;\n var temp = col.edit.read;\n if (col.type === 'checkbox' || col.type === 'boolean') {\n value = input.checked;\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n value = gObj.editModule.getValueFromType(col, (temp)(input, value));\n }\n else {\n value = gObj.editModule.getValueFromType(col, col.edit.read(input, value));\n }\n if (isNullOrUndefined(editedData[col.field]) && value === '') {\n value = editedData[col.field];\n }\n return value;\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onActionBegin = function (e) {\n if (e.requestType === 'columnstate' && this.parent.isEdit\n && this.parent.editSettings.mode !== 'Batch') {\n this.closeEdit();\n }\n else {\n var editRow = this.parent.element.querySelector('.' + literals.editedRow);\n var addRow = this.parent.element.querySelector('.' + literals.addedRow);\n if (editRow && this.parent.frozenRows && e.requestType === 'virtualscroll'\n && parseInt(parentsUntil(editRow, literals.row).getAttribute(literals.dataRowIndex), 10) < this.parent.frozenRows) {\n return;\n }\n var restrictedRequestTypes = ['filterafteropen', 'filterbeforeopen', 'filterchoicerequest', 'filtersearchbegin', 'save', 'infiniteScroll', 'virtualscroll'];\n var isRestrict = restrictedRequestTypes.indexOf(e.requestType) === -1;\n var isDestroyVirtualForm = this.parent.enableVirtualization && this.formObj\n && !this.formObj.isDestroyed && (editRow || addRow || e.requestType === 'cancel') && isRestrict;\n if ((!this.parent.enableVirtualization && this.parent.editSettings.mode !== 'Batch' && this.formObj && !this.formObj.isDestroyed\n && isRestrict && !e.cancel) || isDestroyVirtualForm) {\n this.destroyWidgets();\n this.destroyForm();\n }\n }\n };\n /**\n * @param {Column[]} cols - specfies the column\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyWidgets = function (cols) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n this.parent.destroyTemplate(['editSettingsTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n cols = cols ? cols : this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization);\n if (cols.some(function (column) { return !isNullOrUndefined(column.editTemplate); })) {\n this.parent.destroyTemplate(['editTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n var temp = col.edit.destroy;\n if (col.edit.destroy) {\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp();\n }\n else {\n col.edit.destroy();\n }\n }\n }\n var elements = [].slice.call(this.formObj.element.elements);\n for (var i = 0; i < elements.length; i++) {\n if (elements[parseInt(i.toString(), 10)].hasAttribute('name')) {\n if (elements[parseInt(i.toString(), 10)].ej2_instances &&\n elements[parseInt(i.toString(), 10)].ej2_instances.length &&\n !elements[parseInt(i.toString(), 10)].ej2_instances[0].isDestroyed) {\n elements[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyForm = function () {\n this.destroyToolTip();\n var formObjects = [this.formObj, this.mFormObj, this.frFormObj, this.virtualFormObj];\n for (var i = 0; i < formObjects.length; i++) {\n if (formObjects[parseInt(i.toString(), 10)] && formObjects[parseInt(i.toString(), 10)].element\n && !formObjects[parseInt(i.toString(), 10)].isDestroyed) {\n formObjects[parseInt(i.toString(), 10)].destroy();\n }\n }\n this.destroyToolTip();\n };\n /**\n * To destroy the editing.\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.destroyForm();\n }\n this.removeEventListener();\n var elem = this.dialogObj.element;\n if (elem.childElementCount > 0) {\n this.dialogObj.destroy();\n remove(elem);\n }\n elem = this.alertDObj.element;\n if (elem.childElementCount > 0) {\n this.alertDObj.destroy();\n remove(elem);\n }\n if (!hasGridChild) {\n return;\n }\n if (this.editModule) {\n this.editModule.destroy();\n }\n };\n Edit.prototype.keyPressHandler = function (e) {\n switch (e.action) {\n case 'insert':\n this.addRecord();\n break;\n case 'delete':\n if ((e.target.tagName !== 'INPUT' || e.target.classList.contains('e-checkselect'))\n && !document.querySelector('.e-popup-open.e-edit-dialog')) {\n this.deleteRecord();\n }\n break;\n case 'f2':\n this.startEdit();\n break;\n case 'enter':\n if (!parentsUntil(e.target, 'e-unboundcelldiv') && this.parent.editSettings.mode !== 'Batch' &&\n (parentsUntil(e.target, literals.gridContent) || (this.parent.frozenRows\n && parentsUntil(e.target, literals.headerContent)))\n && !document.getElementsByClassName('e-popup-open').length) {\n e.preventDefault();\n this.endEdit();\n }\n break;\n case 'escape':\n if (this.parent.isEdit && !this.editCellDialogClose) {\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.escapeCellEdit();\n }\n else {\n this.curretRowFocus(e);\n }\n }\n if (this.editCellDialogClose) {\n this.editCellDialogClose = false;\n }\n break;\n case 'tab':\n case 'shiftTab':\n this.curretRowFocus(e);\n break;\n }\n };\n Edit.prototype.curretRowFocus = function (e) {\n if (this.parent.isEdit && this.parent.editSettings.mode !== 'Batch') {\n var editedRow = parentsUntil(e.target, 'e-editedrow') || parentsUntil(e.target, 'e-addedrow');\n if (editedRow) {\n var selector = editedRow.classList.contains('e-addedrow') ? 'e-addedrow' : 'e-editedrow';\n var focusableEditCells = [].slice.call(editedRow.querySelectorAll('.e-input:not(.e-disabled)'));\n var commandColCell = [].slice.call(editedRow.querySelectorAll('.e-unboundcell'));\n if (commandColCell) {\n for (var i = 0; i < commandColCell.length; i++) {\n focusableEditCells = focusableEditCells.concat([].slice\n .call(commandColCell[parseInt(i.toString(), 10)].querySelectorAll('.e-btn:not(.e-hide)')));\n }\n }\n if (this.parent.isFrozenGrid()) {\n if (!isNullOrUndefined(this.parent.frozenRows) && (!isNullOrUndefined(parentsUntil(e.target, 'e-frozenheader')) ||\n !isNullOrUndefined(parentsUntil(e.target, 'e-movableheader')))) {\n var movableHeditedRow = this.parent.getHeaderContent().querySelector('.e-movableheader ' + '.' + selector);\n focusableEditCells.push.apply(focusableEditCells, [].slice.call(movableHeditedRow.querySelectorAll('.e-input:not(.e-disabled)')));\n if (this.parent.getFrozenMode() === 'Left-Right' || this.parent.getFrozenMode() === 'Right') {\n var rightHEditRow = this.parent.getHeaderContent().querySelector('.e-frozen-right-header ' + '.' + selector);\n focusableEditCells.push.apply(focusableEditCells, [].slice.call(rightHEditRow.querySelectorAll('.e-input:not(.e-disabled)')));\n }\n }\n else {\n var movableEditRow = this.parent.getContent().querySelector('.e-movablecontent ' + '.' + selector);\n focusableEditCells.push.apply(focusableEditCells, [].slice.call(movableEditRow.querySelectorAll('.e-input:not(.e-disabled)')));\n if (this.parent.getFrozenMode() === 'Left-Right' || this.parent.getFrozenMode() === 'Right') {\n var rightFrEditRow = this.parent.getContent().querySelector('.e-frozen-right-content ' + '.' + selector);\n focusableEditCells.push.apply(focusableEditCells, [].slice.call(rightFrEditRow.querySelectorAll('.e-input:not(.e-disabled)')));\n }\n }\n }\n var rowCell = parentsUntil(e.target, 'e-rowcell');\n if ((rowCell === parentsUntil(focusableEditCells[focusableEditCells.length - 1], 'e-rowcell')\n && e.action === 'tab' && !rowCell.classList.contains('e-unboundcell'))\n || (rowCell === parentsUntil(focusableEditCells[0], 'e-rowcell') && e.action === 'shiftTab')\n || e.action === 'escape') {\n var uid = editedRow.getAttribute('data-uid');\n var rows = this.parent.getRows();\n if (this.parent.getFrozenMode() === 'Left-Right' || this.parent.getFrozenMode() === 'Right') {\n rows = this.parent.getFrozenRightRows();\n }\n if (this.parent.getFrozenColumns() || this.parent.getFrozenMode() === 'Left') {\n rows = this.parent.getMovableRows();\n }\n var rowIndex = rows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (this.parent.frozenRows && parentsUntil(editedRow, 'e-content')) {\n rowIndex = rowIndex - this.parent.frozenRows;\n }\n if (editedRow.classList.contains('e-addedrow')) {\n rowIndex = 0;\n }\n if (e.action === 'escape') {\n this.closeEdit();\n }\n else {\n this.endEdit();\n }\n if (this.parent.focusModule.active) {\n this.parent.focusModule.active.matrix.current = [rowIndex, 0];\n }\n }\n }\n }\n };\n Edit.prototype.preventBatch = function (args) {\n this.preventObj = args;\n this.showDialog('BatchSaveLostChanges', this.dialogObj);\n };\n Edit.prototype.executeAction = function () {\n this.preventObj.handler.call(this.preventObj.instance, this.preventObj.arg1, this.preventObj.arg2, this.preventObj.arg3, this.preventObj.arg4, this.preventObj.arg5, this.preventObj.arg6, this.preventObj.arg7, this.preventObj.arg8);\n };\n /**\n * @param {Column[]} cols - specifies the column\n * @param {Object} newRule - specifies the new rule object\n * @returns {void}\n * @hidden\n */\n Edit.prototype.applyFormValidation = function (cols, newRule) {\n var gObj = this.parent;\n var frzCols = gObj.isFrozenGrid();\n var isInline = this.parent.editSettings.mode === 'Normal';\n var idx = this.parent.getFrozenMode() === 'Right' && isInline ? 1 : 0;\n var form = this.parent.editSettings.mode !== 'Dialog' ?\n gObj.element.getElementsByClassName('e-gridform')[parseInt(idx.toString(), 10)] :\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document);\n var index = this.parent.getFrozenMode() === 'Right' && isInline ? 0 : 1;\n var mForm = gObj.element.getElementsByClassName('e-gridform')[parseInt(index.toString(), 10)];\n var rules = {};\n var mRules = {};\n var frRules = {};\n cols = cols ? cols : gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible && (gObj.editSettings.mode !== 'Dialog' || (gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) === -1\n && gObj.editSettings.mode === 'Dialog'))) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].validationRules && isNullOrUndefined(newRule)) {\n setValidationRuels(cols[parseInt(i.toString(), 10)], index, rules, mRules, frRules, cols.length);\n }\n }\n if (frzCols && this.parent.editSettings.mode !== 'Dialog') {\n this.parent.editModule.mFormObj = this.createFormObj(mForm, mRules);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frForm = gObj.element.getElementsByClassName('e-gridform')[2];\n this.parent.editModule.frFormObj = this.createFormObj(frForm, frRules);\n }\n }\n else {\n rules = extend(rules, mRules, frRules);\n }\n this.parent.editModule.formObj = this.createFormObj(form, newRule ? newRule : rules);\n };\n /**\n * @param {HTMLFormElement} form - Defined Form element\n * @param {Object} rules - Defines form rules\n * @returns {FormValidator} Returns formvalidator instance\n * @hidden\n */\n Edit.prototype.createFormObj = function (form, rules) {\n var _this = this;\n return new FormValidator(form, {\n rules: rules,\n locale: this.parent.locale,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n customPlacement: function (inputElement, error) {\n var uid = inputElement.getAttribute('e-mappinguid');\n var args = {\n column: _this.parent.getColumnByUid(uid),\n error: error,\n inputElement: inputElement,\n value: inputElement.value\n };\n _this.valErrorPlacement(inputElement, error);\n _this.parent.notify(events.valCustomPlacement, args);\n }\n });\n };\n Edit.prototype.valErrorPlacement = function (inputElement, error) {\n if (this.parent.isEdit) {\n var id = error.getAttribute('for');\n var elem = this.getElemTable(inputElement).querySelector('#' + 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 isFHdr;\n var gObj = this.parent;\n var table;\n if (gObj.editSettings.mode !== 'Dialog') {\n isFHdr = (gObj.frozenRows && gObj.frozenRows\n > (parseInt(closest(inputElement, '.' + literals.row).getAttribute(literals.dataRowIndex), 10) || 0));\n var field = inputElement.name;\n var col = void 0;\n if (field) {\n col = getColumnModelByFieldName(this.parent, setComplexFieldID(field));\n }\n if (col && gObj.isFrozenGrid()) {\n if (col.getFreezeTableName() === 'frozen-left') {\n table = isFHdr ? gObj.getFrozenVirtualHeader().querySelector('table')\n : gObj.getFrozenVirtualContent().querySelector('table');\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n table = isFHdr ? gObj.getFrozenRightHeader().querySelector('table')\n : gObj.getFrozenRightContent().querySelector('table');\n }\n else if (col.getFreezeTableName() === 'movable') {\n table = isFHdr ? gObj.getMovableVirtualHeader().querySelector('table')\n : gObj.getMovableVirtualContent().querySelector('table');\n }\n }\n else {\n table = isFHdr ? gObj.getHeaderTable() : gObj.getContentTable();\n }\n }\n else {\n table = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n }\n return table;\n };\n Edit.prototype.resetElemPosition = function (elem, args) {\n var td = parentsUntil(args.element, literals.rowCell);\n if (td) {\n var tdRight = td.getBoundingClientRect().right;\n var elemRight = elem.getBoundingClientRect().right;\n if (elemRight > tdRight) {\n var offSet = elemRight - tdRight;\n elem.style.left = (elem.offsetLeft - offSet) + 'px';\n }\n }\n };\n Edit.prototype.validationComplete = function (args) {\n if (this.parent.isEdit) {\n var elem = this.getElemTable(args.element).querySelector('#' + getParsedFieldID(args.inputName) + '_Error');\n if (elem) {\n if (args.status === 'failure') {\n elem.style.display = '';\n this.resetElemPosition(elem, args);\n }\n else {\n elem.style.display = 'none';\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.resetMovableContentValidation = function () {\n if (this.isValidationApplied && this.parent.getMovableVirtualContent() &&\n !(this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var elem = this.parent.getContent().querySelector('.' + literals.movableContent);\n elem.style.overflowX = 'auto';\n elem.style.overflowY = 'hidden';\n this.isValidationApplied = false;\n }\n };\n Edit.prototype.createTooltip = function (element, error, name, display) {\n var column = this.parent.getColumnByField(name);\n var formObj = this.parent.getFrozenMode() === literals.leftRight && this.parent.editSettings.mode === 'Normal'\n && column.getFreezeTableName() === literals.frozenRight ? this.frFormObj.element : this.formObj.element;\n var customForm = parentsUntil(element, 'e-virtual-validation');\n if (customForm) {\n formObj = this.virtualFormObj.element;\n }\n var gcontent = this.parent.getContent().firstElementChild;\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()\n || this.parent.getFrozenRightColumnsCount();\n if (frzCols) {\n gcontent = this.parent.getMovableVirtualContent();\n }\n var isScroll = gcontent.scrollHeight > gcontent.clientHeight || gcontent.scrollWidth > gcontent.clientWidth;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n var td = closest(element, '.' + literals.rowCell);\n var row = closest(element, '.' + literals.row);\n var fCont = this.parent.getContent().querySelector('.' + literals.frozenContent);\n var isFHdr;\n var isFHdrLastRow = false;\n var validationForBottomRowPos;\n var isBatchModeLastRow = false;\n var isSpace = this.parent.editSettings.newRowPosition === 'Bottom' &&\n this.parent.getContent().firstElementChild.offsetHeight > this.parent.getContentTable().scrollHeight;\n var viewPortRowCount = Math.round(this.parent.getContent().clientHeight / this.parent.getRowHeight()) - 1;\n var rows = !fCont ? [].slice.call(this.parent.getContent().getElementsByClassName(literals.row))\n : [].slice.call(this.parent.getFrozenVirtualContent().getElementsByClassName(literals.row));\n if (this.parent.editSettings.mode === 'Batch') {\n if (viewPortRowCount > 1 && rows.length >= viewPortRowCount && !isSpace\n && rows[rows.length - 1].getAttribute(literals.dataRowIndex) === row.getAttribute(literals.dataRowIndex)) {\n isBatchModeLastRow = true;\n }\n }\n if (isInline) {\n if (this.parent.frozenRows) {\n var fHeraderRows = frzCols ? this.parent.getFrozenVirtualHeader().querySelector(literals.tbody).children\n : this.parent.getHeaderTable().querySelector(literals.tbody).children;\n isFHdr = fHeraderRows.length > (parseInt(row.getAttribute(literals.dataRowIndex), 10) || 0);\n isFHdrLastRow = isFHdr && parseInt(row.getAttribute(literals.dataRowIndex), 10) === fHeraderRows.length - 1;\n }\n if (isFHdrLastRow || (viewPortRowCount > 1 && rows.length >= viewPortRowCount\n && ((this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) || (td.classList.contains('e-lastrowcell')\n && !row.classList.contains(literals.addedRow)))) || isBatchModeLastRow) {\n validationForBottomRowPos = true;\n }\n }\n var table = isInline ?\n (isFHdr ? this.parent.getHeaderTable() : this.parent.getContentTable()) :\n select('#' + this.parent.element.id + '_dialogEdit_wrapper .e-dlg-content', document);\n var client = table.getBoundingClientRect();\n var left = isInline ?\n this.parent.element.getBoundingClientRect().left : client.left;\n var input = closest(element, 'td');\n var inputClient = input ? input.getBoundingClientRect() : element.parentElement.getBoundingClientRect();\n var div = this.parent.createElement('div', {\n className: 'e-tooltip-wrap e-lib e-control e-popup e-griderror',\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n ((isFHdr ? inputClient.top + inputClient.height : inputClient.bottom - client.top\n - (frzCols ? fCont.scrollTop : 0)) + table.scrollTop + 9) + 'px;left:' +\n (inputClient.left - left + table.scrollLeft + inputClient.width / 2) + 'px;' +\n 'max-width:' + inputClient.width + 'px;text-align:center;'\n });\n if (this.parent.cssClass) {\n div.classList.add(this.parent.cssClass);\n }\n if (isInline && client.left < left) {\n div.style.left = parseInt(div.style.left, 10) - client.left + left + 'px';\n }\n var content = this.parent.createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n var arrow;\n if (validationForBottomRowPos) {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-bottom' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-bottom' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-bottom' }));\n }\n else {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n }\n div.appendChild(content);\n div.appendChild(arrow);\n if (!customForm && (frzCols || this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n var getEditCell = this.parent.editSettings.mode === 'Normal' ?\n closest(element, '.e-editcell') : closest(element, '.' + literals.table);\n getEditCell.style.position = 'relative';\n div.style.position = 'absolute';\n if (this.parent.editSettings.mode === 'Batch' ||\n (closest(element, '.' + literals.frozenContent) || closest(element, '.' + literals.frozenHeader))\n || (this.parent.frozenRows && !frzCols)) {\n formObj.appendChild(div);\n }\n else {\n this.mFormObj.element.appendChild(div);\n }\n }\n else {\n if (customForm) {\n this.virtualFormObj.element.appendChild(div);\n }\n else {\n this.formObj.element.appendChild(div);\n }\n }\n if (!validationForBottomRowPos && isInline && gcontent.getBoundingClientRect().bottom < inputClient.bottom + inputClient.height) {\n var contentDiv = this.parent.getContent().querySelector('.e-content');\n if (frzCols && this.parent.currentViewData.length === 0 && contentDiv.scrollTop === 0) {\n contentDiv.scrollTop = div.offsetHeight + arrow.scrollHeight;\n }\n else {\n gcontent.scrollTop = gcontent.scrollTop + div.offsetHeight + arrow.scrollHeight;\n }\n }\n var lineHeight = parseInt(document.defaultView.getComputedStyle(div, null).getPropertyValue('font-size'), 10);\n if (div.getBoundingClientRect().width < inputClient.width &&\n div.querySelector('label').getBoundingClientRect().height / (lineHeight * 1.2) >= 2) {\n div.style.width = div.style.maxWidth;\n }\n if ((frzCols || this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n div.style.left = input.offsetLeft + (input.offsetWidth / 2 - div.offsetWidth / 2) + 'px';\n }\n else {\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n }\n if (isInline && !isScroll && !this.parent.allowPaging || frzCols || this.parent.frozenRows) {\n gcontent.style.position = 'static';\n var pos = calculateRelativeBasedPosition(input, div);\n div.style.top = pos.top + inputClient.height + 9 + 'px';\n }\n if (closest(element, '.' + literals.movableContent) && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n var elem = this.parent.getContent().querySelector('.' + literals.movableContent);\n elem.style.overflowX = 'visible';\n elem.style.overflowY = 'visible';\n this.isValidationApplied = true;\n }\n if (validationForBottomRowPos) {\n if (isScroll && !frzCols && this.parent.height !== 'auto' && !this.parent.frozenRows\n && !this.parent.enableVirtualization) {\n var scrollWidth = gcontent.scrollWidth > gcontent.offsetWidth ? getScrollBarWidth() : 0;\n var gHeight = this.parent.height.toString().indexOf('%') === -1 ?\n parseInt(this.parent.height, 10) : gcontent.offsetHeight;\n div.style.bottom = (gHeight - gcontent.querySelector('table').offsetHeight\n - scrollWidth) + inputClient.height + 9 + 'px';\n }\n else {\n div.style.bottom = inputClient.height + 9 + 'px';\n }\n if (rows.length < viewPortRowCount && this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) {\n var rowsCount = this.parent.frozenRows ? this.parent.frozenRows + (rows.length - 1) : rows.length - 1;\n var rowsHeight = rowsCount * this.parent.getRowHeight();\n var position = this.parent.getContent().clientHeight - rowsHeight;\n div.style.bottom = position + 9 + 'px';\n }\n div.style.top = null;\n }\n };\n /**\n * @param {Column} col - specfies the column\n * @returns {boolean} returns the whether column is grouped\n * @hidden\n */\n Edit.prototype.checkColumnIsGrouped = function (col) {\n return !col.visible && !(this.parent.groupSettings.columns.indexOf(col.field) > -1);\n };\n /**\n * @param {object} editors -specfies the editors\n * @returns {void}\n * @hidden\n */\n Edit.AddEditors = function (editors) {\n Edit.editCellType = extend(Edit.editCellType, editors);\n };\n Edit.editCellType = {\n 'dropdownedit': DropDownEditCell, 'numericedit': NumericEditCell,\n 'datepickeredit': DatePickerEditCell, 'datetimepickeredit': DatePickerEditCell,\n 'booleanedit': BooleanEditCell, 'defaultedit': DefaultEditCell,\n 'templateedit': TemplateEditCell\n };\n return Edit;\n}());\nexport { Edit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n ele.classList.remove(CLS_RTL);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE, CLS_RTL]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n _this.orientationChangeContext = _this.orientationChange.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n window.addEventListener('orientationchange', this.orientationChangeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n window.removeEventListener('orientationchange', this.orientationChangeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index--;\n }\n return element;\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && sepItem.offsetHeight);\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = { minWidth: el.style.minWidth, height: el.style.height, minHeight: el.style.minHeight };\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n this.updateTabIndex('-1');\n curEle.removeAttribute('tabindex');\n }\n else {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, select, removeClass } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil, addRemoveEventListener } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\nimport { SearchBox } from '../services/focus-strategy';\n/**\n *\n * The `Toolbar` module is used to handle ToolBar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.predefinedItems = {};\n this.isSearched = false;\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n var isAdaptive = this.parent.enableAdaptiveUI;\n var excludingItems = ['Edit', 'Delete', 'Update', 'Cancel'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[\"\" + item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n if (isAdaptive) {\n this.predefinedItems[\"\" + item].text = '';\n this.predefinedItems[\"\" + item].visible = excludingItems.indexOf(item) === -1;\n }\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: isAdaptive ? '' : this.l10n.getConstant('Columnchooser'),\n tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right'\n };\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n this.predefinedItems.responsiveFilter = {\n id: this.gridID + '_' + 'responsivefilter', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resfilter-icon', tooltipText: this.l10n.getConstant('FilterButton')\n };\n }\n if (this.parent.allowSorting) {\n this.predefinedItems.responsiveSort = {\n id: this.gridID + '_' + 'responsivesort', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'ressort-icon', tooltipText: this.l10n.getConstant('Sort')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon', visible: false\n };\n }\n this.createToolbar();\n };\n /**\n * Gets the toolbar of the Grid.\n *\n * @returns {Element} returns the element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n if (this.element.parentNode) {\n remove(this.element);\n }\n }\n };\n Toolbar.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n var classList = this.parent.cssClass ? 'e-input-group e-search ' + this.parent.cssClass\n : 'e-input-group e-search';\n this.element.querySelector('.e-search-wrapper').innerHTML = '
\\\n \\\n \\\n \\\n
';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = '\\\n \\\n
';\n }\n }\n this.bindSearchEvents();\n };\n Toolbar.prototype.createToolbar = function () {\n var items = this.getItems();\n this.toolbar = new tool({\n items: items,\n clicked: this.toolbarClickHandler.bind(this),\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n created: this.toolbarCreated.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.toolbar.isReact = this.parent.isReact;\n this.toolbar.on('render-react-toolbar-template', this.addReactToolbarPortals, this);\n var isStringTemplate = 'isStringTemplate';\n this.toolbar[\"\" + isStringTemplate] = true;\n var viewStr = 'viewContainerRef';\n var registerTemp = 'registeredTemplate';\n if (this.parent[\"\" + viewStr]) {\n this.toolbar[\"\" + registerTemp] = {};\n this.toolbar[\"\" + viewStr] = this.parent[\"\" + viewStr];\n }\n this.element = this.parent.createElement('div', { id: this.gridID + '_toolbarItems' });\n if (this.parent.enableAdaptiveUI) {\n this.element.classList.add('e-res-toolbar');\n }\n if (this.parent.toolbarTemplate) {\n if (typeof (this.parent.toolbarTemplate) === 'string') {\n this.toolbar.appendTo(this.parent.toolbarTemplate);\n this.element = this.toolbar.element;\n }\n else {\n var isReactCompiler = this.parent.isReact && typeof (this.parent.toolbarTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var ID = this.parent.element.id + 'toolbarTemplate';\n if (isReactCompiler || isReactChild) {\n templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate', ID, null, null, this.element);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate'));\n }\n }\n this.element.classList.add('e-temp-toolbar');\n }\n else {\n this.toolbar.appendTo(this.element);\n }\n this.parent.element.insertBefore(this.element, this.parent.getHeaderContent());\n var tlbrLeftElement = this.element.querySelector('.e-toolbar-left');\n var tlbrCenterElement = this.element.querySelector('.e-toolbar-center');\n var tlbrRightElement = this.element.querySelector('.e-toolbar-right');\n var tlbrItems = this.element.querySelector('.e-toolbar-items');\n var tlbrElement = this.element;\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth || tlbrItemsWidth > tlbrWidth) {\n this.toolbar.refreshOverflow();\n }\n };\n Toolbar.prototype.addReactToolbarPortals = function (args) {\n if (this.parent.isReact && args) {\n this.parent.portals = this.parent.portals.concat(args);\n this.parent.renderTemplates();\n }\n };\n Toolbar.prototype.renderResponsiveSearch = function (isRender) {\n if (isRender) {\n this.toolbarCreated(true);\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isSearch);\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.add('e-responsive-right');\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n this.searchBoxObj.searchFocus({ target: this.searchElement });\n this.searchElement.focus();\n }\n else {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n Toolbar.prototype.refreshResponsiveToolbarItems = function (action) {\n if (action === ResponsiveToolbarAction.isInitial) {\n var id = this.parent.element.id;\n var items = [id + '_edit', id + '_delete'];\n var selectedRecords = this.parent.getSelectedRowIndexes();\n var excludingItems = [id + '_responsiveback', id + '_update', id + '_cancel'];\n for (var _i = 0, _a = this.toolbar.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var toolbarEle = item.template.length ? this.toolbar.element.querySelector(item.template) : this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n if (selectedRecords.length) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n else {\n if (excludingItems.indexOf(item.id) === -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n if (this.searchElement) {\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.remove('e-responsive-right');\n this.toolbarCreated(false);\n this.unWireEvent();\n this.searchElement = undefined;\n }\n }\n if (action === ResponsiveToolbarAction.isSearch) {\n var items = [this.parent.element.id + '_responsiveback', this.parent.element.id + '_search'];\n for (var _b = 0, _c = this.toolbar.items; _b < _c.length; _b++) {\n var item = _c[_b];\n var toolbarEle = this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.refreshToolbarItems = function (args) {\n var gObj = this.parent;\n var enableItems = [];\n var disableItems = [];\n var edit = gObj.editSettings;\n var hasData = gObj.currentViewData && gObj.currentViewData.length;\n if (edit.allowAdding) {\n enableItems.push(this.gridID + '_add');\n }\n else {\n disableItems.push(this.gridID + '_add');\n }\n if (edit.allowEditing && hasData) {\n enableItems.push(this.gridID + '_edit');\n }\n else {\n disableItems.push(this.gridID + '_edit');\n }\n if (edit.allowDeleting && hasData) {\n enableItems.push(this.gridID + '_delete');\n }\n else {\n disableItems.push(this.gridID + '_delete');\n }\n if (gObj.editSettings.mode === 'Batch') {\n if (gObj.element.getElementsByClassName('e-updatedtd').length && (edit.allowAdding || edit.allowEditing)) {\n enableItems.push(this.gridID + '_update');\n enableItems.push(this.gridID + '_cancel');\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n else {\n if (gObj.isEdit && (edit.allowAdding || edit.allowEditing)) {\n enableItems = [this.gridID + '_update', this.gridID + '_cancel'];\n disableItems = [this.gridID + '_add', this.gridID + '_edit', this.gridID + '_delete'];\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n this.enableItems(enableItems, true);\n this.enableItems(disableItems, false);\n };\n Toolbar.prototype.getItems = function () {\n var items = [];\n var toolbarItems = this.parent.toolbar || [];\n if (typeof (this.parent.toolbar) === 'string') {\n return [];\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n items.push(this.getItemObject('responsiveFilter'));\n }\n if (this.parent.allowSorting) {\n items.push(this.getItemObject('responsiveSort'));\n }\n }\n for (var _i = 0, toolbarItems_1 = toolbarItems; _i < toolbarItems_1.length; _i++) {\n var item = toolbarItems_1[_i];\n switch (typeof item) {\n case 'number':\n items.push(this.getItemObject(this.items[item]));\n break;\n case 'string':\n items.push(this.getItemObject(item));\n break;\n default:\n items.push(this.getItem(item));\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n items.push(this.getItemObject('responsiveBack'));\n }\n return items;\n };\n Toolbar.prototype.getItem = function (itemObject) {\n var item = this.predefinedItems[itemObject.text];\n return item ? extend(item, item, itemObject) : itemObject;\n };\n Toolbar.prototype.getItemObject = function (itemName) {\n return this.predefinedItems[\"\" + itemName] || { text: itemName, id: this.gridID + '_' + itemName };\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n var element = select('#' + item, this.element);\n if (element) {\n this.toolbar.enableItems(element.parentElement, isEnable);\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var _this = this;\n var gObj = this.parent;\n var gID = this.gridID;\n extend(args, { cancel: false });\n var newArgs = args;\n var originalEvent = args.originalEvent;\n gObj.trigger(events.toolbarClick, newArgs, function (toolbarargs) {\n toolbarargs.originalEvent = toolbarargs.originalEvent ? toolbarargs.originalEvent : originalEvent;\n if (!toolbarargs.cancel) {\n switch (!isNullOrUndefined(toolbarargs.item) && toolbarargs.item.id) {\n case gID + '_print':\n gObj.print();\n break;\n case gID + '_edit':\n gObj.startEdit();\n break;\n case gID + '_update':\n gObj.endEdit();\n break;\n case gID + '_cancel':\n gObj.closeEdit();\n break;\n case gID + '_add':\n gObj.addRecord();\n break;\n case gID + '_delete':\n gObj.deleteRecord();\n break;\n case gID + '_search':\n if (toolbarargs.originalEvent.target.id === gID + '_searchbutton' && _this.searchElement) {\n _this.search();\n }\n else if (gObj.enableAdaptiveUI && !_this.searchElement\n && (toolbarargs.originalEvent.target.classList.contains('e-search-wrapper')\n || toolbarargs.originalEvent.target.id === gID + '_searchbutton')) {\n _this.renderResponsiveSearch(true);\n }\n else if (toolbarargs.originalEvent.target.classList.contains('e-clear-icon') && toolbarargs.originalEvent.target.id === gID + '_clearbutton' && _this.searchElement) {\n _this.searchElement.value = '';\n if (_this.searchElement) {\n _this.sIcon = _this.searchElement.parentElement.querySelector('.e-sicon');\n _this.sIcon.classList.remove('e-clear-icon');\n _this.sIcon.removeAttribute('title');\n _this.sIcon.style.cursor = 'default';\n }\n if (_this.isSearched || _this.parent.searchSettings.key.length) {\n _this.parent.search(_this.searchElement.value);\n _this.isSearched = false;\n }\n }\n break;\n case gID + '_columnchooser':\n /* eslint-disable */\n var tarElement = _this.parent.element.querySelector('.e-ccdiv');\n var y = tarElement.getBoundingClientRect().top;\n var x = tarElement.getBoundingClientRect().left;\n var targetEle = toolbarargs.originalEvent.target;\n /* eslint-enable */\n y = tarElement.getBoundingClientRect().top + tarElement.offsetTop;\n gObj.createColumnchooser(x, y, targetEle);\n break;\n case gID + '_responsivefilter':\n gObj.showResponsiveCustomFilter();\n break;\n case gID + '_responsivesort':\n gObj.showResponsiveCustomSort();\n break;\n case gID + '_responsiveback':\n _this.renderResponsiveSearch(false);\n break;\n }\n }\n });\n };\n Toolbar.prototype.modelChanged = function (e) {\n if (e.module === 'edit') {\n this.refreshToolbarItems();\n }\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() || !this.parent.toolbar) {\n return;\n }\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.keyUpHandler = function (e) {\n if (e.keyCode === 13) {\n this.search();\n }\n if (this.searchElement) {\n this.sIcon = this.searchElement.parentElement.querySelector('.e-sicon');\n if (this.searchElement.value.length && !isNullOrUndefined(this.sIcon)) {\n this.sIcon.classList.add('e-clear-icon');\n this.sIcon.setAttribute('title', 'Clear');\n this.sIcon.style.cursor = 'pointer';\n }\n else {\n this.sIcon.classList.remove('e-clear-icon');\n this.sIcon.removeAttribute('title');\n this.sIcon.style.cursor = 'default';\n }\n }\n };\n Toolbar.prototype.search = function () {\n this.isSearched = true;\n this.parent.search(this.searchElement.value);\n };\n Toolbar.prototype.updateSearchBox = function () {\n if (this.searchElement) {\n this.searchElement.value = this.parent.searchSettings.key;\n }\n };\n Toolbar.prototype.wireEvent = function () {\n if (this.searchElement) {\n this.searchBoxObj = new SearchBox(this.searchElement);\n EventHandler.add(this.searchElement, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n };\n Toolbar.prototype.unWireEvent = function () {\n if (this.searchElement) {\n EventHandler.remove(this.searchElement, 'keyup', this.keyUpHandler);\n this.searchBoxObj.unWireEvent();\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n };\n Toolbar.prototype.onFocusIn = function (e) {\n var currentInfo = this.parent.focusModule.currentInfo;\n if (currentInfo && currentInfo.element) {\n removeClass([currentInfo.element, currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n currentInfo.element.tabIndex = -1;\n }\n e.target.tabIndex = 0;\n };\n Toolbar.prototype.onFocusOut = function (e) {\n e.target.tabIndex = -1;\n };\n Toolbar.prototype.setFocusToolbarItem = function (element) {\n var elementToFocus = element.querySelector('.e-btn,.e-input,.e-toolbar-item-focus');\n if (!elementToFocus && this.parent.enableAdaptiveUI && !this.searchElement\n && element.classList.contains('e-search-wrapper')) {\n elementToFocus = element.querySelector('#' + this.gridID + '_searchbutton');\n }\n elementToFocus.focus();\n };\n Toolbar.prototype.getFocusableToolbarItems = function () {\n var getFocusToolbarElements = [].slice.call(this.element.querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)'));\n var getFocusToolbarItems = [];\n for (var i = 0; i < getFocusToolbarElements.length; i++) {\n if (!isNullOrUndefined(getFocusToolbarElements[parseInt(i.toString(), 10)].querySelector('.e-btn,.e-input,.e-toolbar-item-focus'))) {\n getFocusToolbarItems.push(getFocusToolbarElements[parseInt(i.toString(), 10)]);\n }\n }\n return getFocusToolbarItems;\n };\n Toolbar.prototype.keyPressedHandler = function (e) {\n if (e.target && parentsUntil(e.target, 'e-toolbar-item')) {\n var targetParent = parentsUntil(e.target, 'e-toolbar-item');\n var focusableToolbarItems = this.getFocusableToolbarItems();\n if (e.action === 'tab' || e.action === 'shiftTab') {\n if ((e.action === 'tab' && targetParent === focusableToolbarItems[focusableToolbarItems.length - 1])\n || (e.action === 'shiftTab' && targetParent === focusableToolbarItems[0])) {\n return;\n }\n for (var i = 0; i < focusableToolbarItems.length; i++) {\n if (targetParent === focusableToolbarItems[parseInt(i.toString(), 10)]) {\n e.preventDefault();\n var index = e.action === 'tab' ? i + 1 : i - 1;\n this.setFocusToolbarItem(focusableToolbarItems[parseInt(index.toString(), 10)]);\n return;\n }\n }\n }\n if (e.action === 'enter') {\n if (this.parent.enableAdaptiveUI && !this.searchElement\n && e.target.id === this.gridID + '_searchbutton') {\n this.renderResponsiveSearch(true);\n }\n }\n }\n };\n Toolbar.prototype.reRenderToolbar = function () {\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.reRenderToolbar },\n { event: events.initialEnd, handler: this.render },\n { event: events.uiUpdate, handler: this.onPropertyChanged },\n { event: events.inBoundModelChanged, handler: this.updateSearchBox.bind(this) },\n { event: events.modelChanged, handler: this.refreshToolbarItems },\n { event: events.toolbarRefresh, handler: this.refreshToolbarItems },\n { event: events.inBoundModelChanged, handler: this.modelChanged },\n { event: events.dataBound, handler: this.refreshToolbarItems },\n { event: events.click, handler: this.removeResponsiveSearch },\n { event: events.rowModeChange, handler: this.reRenderToolbar },\n { event: events.destroy, handler: this.destroy },\n { event: events.keyPressed, handler: this.keyPressedHandler }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.rowSelectedFunction = this.rowSelected.bind(this);\n this.rowDeSelectedFunction = this.rowSelected.bind(this);\n this.parent.addEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.addEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.removeEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeResponsiveSearch = function (e) {\n var target = e.target;\n var isSearch = target.classList.contains('e-search-icon') || target.classList.contains('e-search-wrapper');\n if (this.parent.enableAdaptiveUI && !isSearch && this.searchElement\n && !parentsUntil(e.target, 'e-res-toolbar')) {\n this.renderResponsiveSearch(false);\n }\n };\n Toolbar.prototype.rowSelected = function () {\n if (this.parent.enableAdaptiveUI) {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","function _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); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\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); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { canUseDOM } from './utils';\nvar propTypes = {\n children: PropTypes.node.isRequired,\n node: PropTypes.any\n};\nvar Portal = /*#__PURE__*/function (_React$Component) {\n _inherits(Portal, _React$Component);\n var _super = _createSuper(Portal);\n function Portal() {\n _classCallCheck(this, Portal);\n return _super.apply(this, arguments);\n }\n _createClass(Portal, [{\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.defaultNode) {\n document.body.removeChild(this.defaultNode);\n }\n this.defaultNode = null;\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!canUseDOM) {\n return null;\n }\n if (!this.props.node && !this.defaultNode) {\n this.defaultNode = document.createElement('div');\n document.body.appendChild(this.defaultNode);\n }\n return /*#__PURE__*/ReactDOM.createPortal(this.props.children, this.props.node || this.defaultNode);\n }\n }]);\n return Portal;\n}(React.Component);\nPortal.propTypes = propTypes;\nexport default Portal;","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","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}","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}","var _excluded = [\"tag\", \"baseClass\", \"baseClassActive\", \"className\", \"cssModule\", \"children\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\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; }\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; }\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; }\nimport React, { useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\nimport { mapToCssModules, omit, pick, TransitionPropTypeKeys, TransitionTimeouts, tagPropType } from './utils';\nvar propTypes = _objectSpread(_objectSpread({}, Transition.propTypes), {}, {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n tag: tagPropType,\n baseClass: PropTypes.string,\n baseClassActive: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n});\nvar defaultProps = _objectSpread(_objectSpread({}, Transition.defaultProps), {}, {\n timeout: TransitionTimeouts.Fade,\n appear: true,\n enter: true,\n exit: true,\n \"in\": true\n});\nfunction Fade(props) {\n var ref = useRef(null);\n var _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n _props$baseClass = props.baseClass,\n baseClass = _props$baseClass === void 0 ? 'fade' : _props$baseClass,\n _props$baseClassActiv = props.baseClassActive,\n baseClassActive = _props$baseClassActiv === void 0 ? 'show' : _props$baseClassActiv,\n className = props.className,\n cssModule = props.cssModule,\n children = props.children,\n _props$innerRef = props.innerRef,\n innerRef = _props$innerRef === void 0 ? ref : _props$innerRef,\n otherProps = _objectWithoutProperties(props, _excluded);\n var transitionProps = pick(_objectSpread({\n defaultProps: defaultProps\n }, otherProps), TransitionPropTypeKeys);\n var childProps = omit(otherProps, TransitionPropTypeKeys);\n return /*#__PURE__*/React.createElement(Transition, _extends({\n nodeRef: innerRef\n }, transitionProps), function (status) {\n var isActive = status === 'entered';\n var classes = mapToCssModules(classNames(className, baseClass, isActive && baseClassActive), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n className: classes\n }, childProps, {\n ref: innerRef\n }), children);\n });\n}\nFade.propTypes = propTypes;\nFade.defaultProps = defaultProps;\nexport default Fade;","function _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); }\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; }\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; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\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); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Portal from './Portal';\nimport Fade from './Fade';\nimport { getOriginalBodyPadding, conditionallyUpdateScrollbar, setScrollbarWidth, mapToCssModules, omit, focusableElements, TransitionTimeouts, keyCodes, targetPropType, getTarget } from './utils';\nfunction noop() {}\nvar FadePropTypes = PropTypes.shape(Fade.propTypes);\nvar propTypes = {\n /** */\n autoFocus: PropTypes.bool,\n /** Add backdrop to modal */\n backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['static'])]),\n /** add custom classname to backdrop */\n backdropClassName: PropTypes.string,\n backdropTransition: FadePropTypes,\n /** Vertically center the modal */\n centered: PropTypes.bool,\n /** Add children for the modal to wrap */\n children: PropTypes.node,\n /** Add custom className for modal content */\n contentClassName: PropTypes.string,\n className: PropTypes.string,\n container: targetPropType,\n cssModule: PropTypes.object,\n external: PropTypes.node,\n /** Enable/Disable animation */\n fade: PropTypes.bool,\n /** Make the modal fullscreen */\n fullscreen: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['sm', 'md', 'lg', 'xl'])]),\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func]),\n /** The status of the modal, either open or close */\n isOpen: PropTypes.bool,\n /** Allow modal to be closed with escape key. */\n keyboard: PropTypes.bool,\n /** Identifies the element (or elements) that labels the current element. */\n labelledBy: PropTypes.string,\n modalClassName: PropTypes.string,\n modalTransition: FadePropTypes,\n /** Function to be triggered on close */\n onClosed: PropTypes.func,\n /** Function to be triggered on enter */\n onEnter: PropTypes.func,\n /** Function to be triggered on exit */\n onExit: PropTypes.func,\n /** Function to be triggered on open */\n onOpened: PropTypes.func,\n /** Returns focus to the element that triggered opening of the modal */\n returnFocusAfterClose: PropTypes.bool,\n /** Accessibility role */\n role: PropTypes.string,\n /** Make the modal scrollable */\n scrollable: PropTypes.bool,\n /** Two optional sizes `lg` and `sm` */\n size: PropTypes.string,\n /** Function to toggle modal visibility */\n toggle: PropTypes.func,\n trapFocus: PropTypes.bool,\n /** Unmounts the modal when modal is closed */\n unmountOnClose: PropTypes.bool,\n wrapClassName: PropTypes.string,\n zIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n};\nvar propsToOmit = Object.keys(propTypes);\nvar defaultProps = {\n isOpen: false,\n autoFocus: true,\n centered: false,\n scrollable: false,\n role: 'dialog',\n backdrop: true,\n keyboard: true,\n zIndex: 1050,\n fade: true,\n onOpened: noop,\n onClosed: noop,\n modalTransition: {\n timeout: TransitionTimeouts.Modal\n },\n backdropTransition: {\n mountOnEnter: true,\n timeout: TransitionTimeouts.Fade // uses standard fade transition\n },\n\n unmountOnClose: true,\n returnFocusAfterClose: true,\n container: 'body',\n trapFocus: false\n};\nvar Modal = /*#__PURE__*/function (_React$Component) {\n _inherits(Modal, _React$Component);\n var _super = _createSuper(Modal);\n function Modal(props) {\n var _this;\n _classCallCheck(this, Modal);\n _this = _super.call(this, props);\n _this._element = null;\n _this._originalBodyPadding = null;\n _this.getFocusableChildren = _this.getFocusableChildren.bind(_assertThisInitialized(_this));\n _this.handleBackdropClick = _this.handleBackdropClick.bind(_assertThisInitialized(_this));\n _this.handleBackdropMouseDown = _this.handleBackdropMouseDown.bind(_assertThisInitialized(_this));\n _this.handleEscape = _this.handleEscape.bind(_assertThisInitialized(_this));\n _this.handleStaticBackdropAnimation = _this.handleStaticBackdropAnimation.bind(_assertThisInitialized(_this));\n _this.handleTab = _this.handleTab.bind(_assertThisInitialized(_this));\n _this.onOpened = _this.onOpened.bind(_assertThisInitialized(_this));\n _this.onClosed = _this.onClosed.bind(_assertThisInitialized(_this));\n _this.manageFocusAfterClose = _this.manageFocusAfterClose.bind(_assertThisInitialized(_this));\n _this.clearBackdropAnimationTimeout = _this.clearBackdropAnimationTimeout.bind(_assertThisInitialized(_this));\n _this.trapFocus = _this.trapFocus.bind(_assertThisInitialized(_this));\n _this.state = {\n isOpen: false,\n showStaticBackdropAnimation: false\n };\n return _this;\n }\n _createClass(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props = this.props,\n isOpen = _this$props.isOpen,\n autoFocus = _this$props.autoFocus,\n onEnter = _this$props.onEnter;\n if (isOpen) {\n this.init();\n this.setState({\n isOpen: true\n });\n if (autoFocus) {\n this.setFocus();\n }\n }\n if (onEnter) {\n onEnter();\n }\n\n // traps focus inside the Modal, even if the browser address bar is focused\n document.addEventListener('focus', this.trapFocus, true);\n this._isMounted = true;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (this.props.isOpen && !prevProps.isOpen) {\n this.init();\n this.setState({\n isOpen: true\n });\n // let render() renders Modal Dialog first\n return;\n }\n\n // now Modal Dialog is rendered and we can refer this._element and this._dialog\n if (this.props.autoFocus && this.state.isOpen && !prevState.isOpen) {\n this.setFocus();\n }\n if (this._element && prevProps.zIndex !== this.props.zIndex) {\n this._element.style.zIndex = this.props.zIndex;\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearBackdropAnimationTimeout();\n if (this.props.onExit) {\n this.props.onExit();\n }\n if (this._element) {\n this.destroy();\n if (this.props.isOpen || this.state.isOpen) {\n this.close();\n }\n }\n document.removeEventListener('focus', this.trapFocus, true);\n this._isMounted = false;\n }\n\n // not mouseUp because scrollbar fires it, shouldn't close when user scrolls\n }, {\n key: \"handleBackdropClick\",\n value: function handleBackdropClick(e) {\n if (e.target === this._mouseDownElement) {\n e.stopPropagation();\n var backdrop = this._dialog ? this._dialog.parentNode : null;\n if (backdrop && e.target === backdrop && this.props.backdrop === 'static') {\n this.handleStaticBackdropAnimation();\n }\n if (!this.props.isOpen || this.props.backdrop !== true) return;\n if (backdrop && e.target === backdrop && this.props.toggle) {\n this.props.toggle(e);\n }\n }\n }\n }, {\n key: \"handleTab\",\n value: function handleTab(e) {\n if (e.which !== 9) return;\n if (this.modalIndex < Modal.openCount - 1) return; // last opened modal\n\n var focusableChildren = this.getFocusableChildren();\n var totalFocusable = focusableChildren.length;\n if (totalFocusable === 0) return;\n var currentFocus = this.getFocusedChild();\n var focusedIndex = 0;\n for (var i = 0; i < totalFocusable; i += 1) {\n if (focusableChildren[i] === currentFocus) {\n focusedIndex = i;\n break;\n }\n }\n if (e.shiftKey && focusedIndex === 0) {\n e.preventDefault();\n focusableChildren[totalFocusable - 1].focus();\n } else if (!e.shiftKey && focusedIndex === totalFocusable - 1) {\n e.preventDefault();\n focusableChildren[0].focus();\n }\n }\n }, {\n key: \"handleBackdropMouseDown\",\n value: function handleBackdropMouseDown(e) {\n this._mouseDownElement = e.target;\n }\n }, {\n key: \"handleEscape\",\n value: function handleEscape(e) {\n if (this.props.isOpen && e.keyCode === keyCodes.esc && this.props.toggle) {\n if (this.props.keyboard) {\n e.preventDefault();\n e.stopPropagation();\n this.props.toggle(e);\n } else if (this.props.backdrop === 'static') {\n e.preventDefault();\n e.stopPropagation();\n this.handleStaticBackdropAnimation();\n }\n }\n }\n }, {\n key: \"handleStaticBackdropAnimation\",\n value: function handleStaticBackdropAnimation() {\n var _this2 = this;\n this.clearBackdropAnimationTimeout();\n this.setState({\n showStaticBackdropAnimation: true\n });\n this._backdropAnimationTimeout = setTimeout(function () {\n _this2.setState({\n showStaticBackdropAnimation: false\n });\n }, 100);\n }\n }, {\n key: \"onOpened\",\n value: function onOpened(node, isAppearing) {\n this.props.onOpened();\n (this.props.modalTransition.onEntered || noop)(node, isAppearing);\n }\n }, {\n key: \"onClosed\",\n value: function onClosed(node) {\n var unmountOnClose = this.props.unmountOnClose;\n // so all methods get called before it is unmounted\n this.props.onClosed();\n (this.props.modalTransition.onExited || noop)(node);\n if (unmountOnClose) {\n this.destroy();\n }\n this.close();\n if (this._isMounted) {\n this.setState({\n isOpen: false\n });\n }\n }\n }, {\n key: \"setFocus\",\n value: function setFocus() {\n if (this._dialog && this._dialog.parentNode && typeof this._dialog.parentNode.focus === 'function') {\n this._dialog.parentNode.focus();\n }\n }\n }, {\n key: \"getFocusableChildren\",\n value: function getFocusableChildren() {\n return this._element.querySelectorAll(focusableElements.join(', '));\n }\n }, {\n key: \"getFocusedChild\",\n value: function getFocusedChild() {\n var currentFocus;\n var focusableChildren = this.getFocusableChildren();\n try {\n currentFocus = document.activeElement;\n } catch (err) {\n currentFocus = focusableChildren[0];\n }\n return currentFocus;\n }\n }, {\n key: \"trapFocus\",\n value: function trapFocus(ev) {\n if (!this.props.trapFocus) {\n return;\n }\n if (!this._element) {\n // element is not attached\n return;\n }\n if (this._dialog && this._dialog.parentNode === ev.target) {\n // initial focus when the Modal is opened\n return;\n }\n if (this.modalIndex < Modal.openCount - 1) {\n // last opened modal\n return;\n }\n var children = this.getFocusableChildren();\n for (var i = 0; i < children.length; i += 1) {\n // focus is already inside the Modal\n if (children[i] === ev.target) return;\n }\n if (children.length > 0) {\n // otherwise focus the first focusable element in the Modal\n ev.preventDefault();\n ev.stopPropagation();\n children[0].focus();\n }\n }\n }, {\n key: \"init\",\n value: function init() {\n try {\n this._triggeringElement = document.activeElement;\n } catch (err) {\n this._triggeringElement = null;\n }\n if (!this._element) {\n this._element = document.createElement('div');\n this._element.setAttribute('tabindex', '-1');\n this._element.style.position = 'relative';\n this._element.style.zIndex = this.props.zIndex;\n this._mountContainer = getTarget(this.props.container);\n this._mountContainer.appendChild(this._element);\n }\n this._originalBodyPadding = getOriginalBodyPadding();\n if (Modal.openCount < 1) {\n Modal.originalBodyOverflow = window.getComputedStyle(document.body).overflow;\n }\n conditionallyUpdateScrollbar();\n if (Modal.openCount === 0) {\n document.body.className = classNames(document.body.className, mapToCssModules('modal-open', this.props.cssModule));\n document.body.style.overflow = 'hidden';\n }\n this.modalIndex = Modal.openCount;\n Modal.openCount += 1;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this._element) {\n this._mountContainer.removeChild(this._element);\n this._element = null;\n }\n this.manageFocusAfterClose();\n }\n }, {\n key: \"manageFocusAfterClose\",\n value: function manageFocusAfterClose() {\n if (this._triggeringElement) {\n var returnFocusAfterClose = this.props.returnFocusAfterClose;\n if (this._triggeringElement.focus && returnFocusAfterClose) this._triggeringElement.focus();\n this._triggeringElement = null;\n }\n }\n }, {\n key: \"close\",\n value: function close() {\n if (Modal.openCount <= 1) {\n var modalOpenClassName = mapToCssModules('modal-open', this.props.cssModule);\n // Use regex to prevent matching `modal-open` as part of a different class, e.g. `my-modal-opened`\n var modalOpenClassNameRegex = new RegExp(\"(^| )\".concat(modalOpenClassName, \"( |$)\"));\n document.body.className = document.body.className.replace(modalOpenClassNameRegex, ' ').trim();\n document.body.style.overflow = Modal.originalBodyOverflow;\n }\n this.manageFocusAfterClose();\n Modal.openCount = Math.max(0, Modal.openCount - 1);\n setScrollbarWidth(this._originalBodyPadding);\n }\n }, {\n key: \"clearBackdropAnimationTimeout\",\n value: function clearBackdropAnimationTimeout() {\n if (this._backdropAnimationTimeout) {\n clearTimeout(this._backdropAnimationTimeout);\n this._backdropAnimationTimeout = undefined;\n }\n }\n }, {\n key: \"renderModalDialog\",\n value: function renderModalDialog() {\n var _classNames,\n _this3 = this;\n var attributes = omit(this.props, propsToOmit);\n var dialogBaseClass = 'modal-dialog';\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n className: mapToCssModules(classNames(dialogBaseClass, this.props.className, (_classNames = {}, _defineProperty(_classNames, \"modal-\".concat(this.props.size), this.props.size), _defineProperty(_classNames, \"\".concat(dialogBaseClass, \"-centered\"), this.props.centered), _defineProperty(_classNames, \"\".concat(dialogBaseClass, \"-scrollable\"), this.props.scrollable), _defineProperty(_classNames, 'modal-fullscreen', this.props.fullscreen === true), _defineProperty(_classNames, \"modal-fullscreen-\".concat(this.props.fullscreen, \"-down\"), typeof this.props.fullscreen === 'string'), _classNames)), this.props.cssModule),\n role: \"document\",\n ref: function ref(c) {\n _this3._dialog = c;\n }\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: mapToCssModules(classNames('modal-content', this.props.contentClassName), this.props.cssModule)\n }, this.props.children));\n }\n }, {\n key: \"render\",\n value: function render() {\n var unmountOnClose = this.props.unmountOnClose;\n if (!!this._element && (this.state.isOpen || !unmountOnClose)) {\n var isModalHidden = !!this._element && !this.state.isOpen && !unmountOnClose;\n this._element.style.display = isModalHidden ? 'none' : 'block';\n var _this$props2 = this.props,\n wrapClassName = _this$props2.wrapClassName,\n modalClassName = _this$props2.modalClassName,\n backdropClassName = _this$props2.backdropClassName,\n cssModule = _this$props2.cssModule,\n isOpen = _this$props2.isOpen,\n backdrop = _this$props2.backdrop,\n role = _this$props2.role,\n labelledBy = _this$props2.labelledBy,\n external = _this$props2.external,\n innerRef = _this$props2.innerRef;\n var modalAttributes = {\n onClick: this.handleBackdropClick,\n onMouseDown: this.handleBackdropMouseDown,\n onKeyUp: this.handleEscape,\n onKeyDown: this.handleTab,\n style: {\n display: 'block'\n },\n 'aria-labelledby': labelledBy,\n 'aria-modal': true,\n role: role,\n tabIndex: '-1'\n };\n var hasTransition = this.props.fade;\n var modalTransition = _objectSpread(_objectSpread(_objectSpread({}, Fade.defaultProps), this.props.modalTransition), {}, {\n baseClass: hasTransition ? this.props.modalTransition.baseClass : '',\n timeout: hasTransition ? this.props.modalTransition.timeout : 0\n });\n var backdropTransition = _objectSpread(_objectSpread(_objectSpread({}, Fade.defaultProps), this.props.backdropTransition), {}, {\n baseClass: hasTransition ? this.props.backdropTransition.baseClass : '',\n timeout: hasTransition ? this.props.backdropTransition.timeout : 0\n });\n var Backdrop = backdrop && (hasTransition ? /*#__PURE__*/React.createElement(Fade, _extends({}, backdropTransition, {\n \"in\": isOpen && !!backdrop,\n cssModule: cssModule,\n className: mapToCssModules(classNames('modal-backdrop', backdropClassName), cssModule)\n })) : /*#__PURE__*/React.createElement(\"div\", {\n className: mapToCssModules(classNames('modal-backdrop', 'show', backdropClassName), cssModule)\n }));\n return /*#__PURE__*/React.createElement(Portal, {\n node: this._element\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: mapToCssModules(wrapClassName)\n }, /*#__PURE__*/React.createElement(Fade, _extends({}, modalAttributes, modalTransition, {\n \"in\": isOpen,\n onEntered: this.onOpened,\n onExited: this.onClosed,\n cssModule: cssModule,\n className: mapToCssModules(classNames('modal', modalClassName, this.state.showStaticBackdropAnimation && 'modal-static'), cssModule),\n innerRef: innerRef\n }), external, this.renderModalDialog()), Backdrop));\n }\n return null;\n }\n }]);\n return Modal;\n}(React.Component);\nModal.propTypes = propTypes;\nModal.defaultProps = defaultProps;\nModal.openCount = 0;\nModal.originalBodyOverflow = null;\nexport default Modal;","var _excluded = [\"className\", \"cssModule\", \"children\", \"toggle\", \"tag\", \"wrapTag\", \"closeAriaLabel\", \"close\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n /** Add custom class */\n className: PropTypes.string,\n /** Custom close button */\n close: PropTypes.object,\n closeAriaLabel: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType,\n /** Function to be triggered when close button is clicked */\n toggle: PropTypes.func,\n wrapTag: tagPropType\n};\nfunction ModalHeader(props) {\n var closeButton;\n var className = props.className,\n cssModule = props.cssModule,\n children = props.children,\n toggle = props.toggle,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'h5' : _props$tag,\n _props$wrapTag = props.wrapTag,\n WrapTag = _props$wrapTag === void 0 ? 'div' : _props$wrapTag,\n _props$closeAriaLabel = props.closeAriaLabel,\n closeAriaLabel = _props$closeAriaLabel === void 0 ? 'Close' : _props$closeAriaLabel,\n close = props.close,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'modal-header'), cssModule);\n if (!close && toggle) {\n closeButton = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: toggle,\n className: mapToCssModules('btn-close', cssModule),\n \"aria-label\": closeAriaLabel\n });\n }\n return /*#__PURE__*/React.createElement(WrapTag, _extends({}, attributes, {\n className: classes\n }), /*#__PURE__*/React.createElement(Tag, {\n className: mapToCssModules('modal-title', cssModule)\n }, children), close || closeButton);\n}\nModalHeader.propTypes = propTypes;\nexport default ModalHeader;","var _excluded = [\"className\", \"cssModule\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction ModalBody(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'modal-body'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nModalBody.propTypes = propTypes;\nexport default ModalBody;","var _excluded = [\"className\", \"cssModule\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction ModalFooter(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'modal-footer'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nModalFooter.propTypes = propTypes;\nexport default ModalFooter;","/* eslint-disable no-case-declarations */\nimport { ColumnDirective, ColumnsDirective, Edit, GridComponent, Inject, Sort, Toolbar } from '@syncfusion/ej2-react-grids';\r\nimport { useEffect, useState } from 'react';\r\nimport { Button, Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';\r\nimport { getAuthToken } from '../../../helpers/authentication';\r\nimport { SearchGridToolbar } from '../../../helpers/Global';\r\nimport moment from 'moment';\n\nexport default function StockUpdates(props) {\n\n const [updateData, setUpdateData] = useState();\n const [editId, setEditId] = useState(0);\n\n const [dateUpdated, setDateUpdated] = useState();\n const [alertClass, setAlertClass] = useState('');\n\n const [editModal, setEditModal] = useState(false);\n\n const toggle = () => setEditModal(!editModal);\n\n\n const loadData = async () => {\n var bearer = 'Bearer ' + getAuthToken();\n try {\n const response = await fetch('/api/stockupdates', {\n method: 'GET',\n withCredentials: true,\n credentials: 'include',\n headers: {\n 'Authorization': bearer,\n 'Content-Type': 'application/json'\n }\n });\n if (response.ok) {\n const data = await response.json();\n //console.log(data);\n setDateUpdated(data.dateUpdated);\n const status = JSON.parse(data.stockStatus);\n //console.log(status.filter((p) => p.Exists));\n setUpdateData(status.filter((p) => p.Exists));\n const timeDifference = moment().diff(moment(data.dateUpdated), 'hours');\n\n // Determine the alert class based on time difference\n const alert =\n timeDifference >= 2 ? 'alert-danger' :\n timeDifference >= 1 ? 'alert-warning' :\n 'alert-success';\n setAlertClass(alert);\n //console.log(JSON.parse(data.stockStatus)); \n //setDateUpdated(data.dateUpdated);\n //setUpdateData(data.stockStatus);\n }\n else {\n console.log(response.status + \": \" + response.statusText);\n if (response.status === 401)\n window.location.href = \"/login\";\n }\n\n } catch (e) {\n console.error(e);\n }\n }\n\n\n useEffect(() => {\n loadData();\n }, []);\n\n return (\n <>\n
\n Last Stock Update: \n {` ${moment(dateUpdated).format('YYYY-MM-DD HH:mm:ss')}`}\n
\n \n
\n
\n\n \n\n \n Stock Updates\n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n\n \n );\n}\n\r\n","import { DateRangePickerComponent } from '@syncfusion/ej2-react-calendars';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport moment from 'moment';\r\nimport React, { Component } from 'react';\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Button, Col, Label, Row } from 'reactstrap';\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { Context } from '../../helpers/Context';\r\nimport RevenueSources from './Admin Dashboard/RevenueSources';\r\nimport SalesGraphs from './Admin Dashboard/SalesGraph';\r\nimport SalesPerfomance from './Admin Dashboard/SalesPerfomance';\r\nimport ShoppingFunnel from './Admin Dashboard/ShoppingFunnel';\r\nimport StockUpdates from './Admin Dashboard/StockUpdates';\r\n\r\n\r\nexport class AdminDashboard extends Component {\r\n\r\n static options = {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n };\r\n static endDate = moment().add(1, \"days\").format(\"yyyy-MM-DD\");\r\n static startDate = moment().add(-30, \"days\").format(\"yyyy-MM-DD\");\r\n static contextType = Context;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n\r\n this.state = {\r\n loading: true,\r\n reportStartDate: AdminDashboard.startDate, reportEndDate: AdminDashboard.endDate,\r\n SalePerformanceData: null,\r\n FunnelData: [],\r\n RevenueSaleData: [],\r\n RevenueSourceData: [],\r\n SocialMediaData: [],\r\n SearchData: [],\r\n fProductId: 0,\r\n ddProducts: [],\r\n };\r\n\r\n this.renderDashboard = this.renderDashboard.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Admin Dashboard :: TriggerCraft\";\r\n this.context.getProducts();\r\n this.loadData();\r\n //this.googleLogin();\r\n }\r\n\r\n ManageDateRange = (e) => {\r\n if (e.endDate)\r\n this.setState({ reportStartDate: moment(e.startDate).format(\"yyyy-MM-DD\"), reportEndDate: moment(e.endDate).format(\"yyyy-MM-DD\"), loading: true }, () => this.loadData());\r\n }\r\n\r\n renderDashboard = (PerformanceData, FunnelData, RevenueSaleData, RevenueSourceData, SocialMediaData, SearchData) => {\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 Revenue sources\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n )\r\n }\r\n\r\n render() {\r\n\r\n const { products, handleNavigate } = this.context;\r\n const content = this.state.loading ?

Loading...

: this.renderDashboard(this.state.SalePerformanceData, this.state.FunnelData, this.state.RevenueSaleData, this.state.RevenueSourceData, this.state.SocialMediaData, this.state.SearchData);\r\n const primaryyAxis = { minimum: 0, maximum: 700, interval: 150, valueType: 'Double', labelFormat: 'R###' };\r\n const ProductDropdownList = [{ id: 0, title: \"- All Products -\" }, ...products]\r\n\r\n return (\r\n <>\r\n
\r\n \r\n \r\n

Admin Dashboard

\r\n \r\n \r\n \r\n Order dashboard \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n Filter\r\n
\r\n
\r\n console.log(e)} dataSource={ProductDropdownList} fields={{ text: 'title', value: 'id' }} floatLabelType='Always' value={this.state.fProductId} select={e => this.setState({ fProductId: e.itemData ? e.itemData.id : 0, loading: true }, () => this.loadData())} />\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n {content}\r\n \r\n \r\n
\r\n \r\n );\r\n }\r\n\r\n async loadData() {\r\n console.log(\"Been called from somewhere\");\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch(`api/admindashboard/${this.state.fProductId}/${this.state.reportStartDate}/${this.state.reportEndDate}`, {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ SalePerformanceData: data.item1, FunnelData: data.item2, RevenueSaleData: data.item3, RevenueSourceData: data.item4, SocialMediaData: data.item5, SearchData: data.item6, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n window.location.href =\"/login\";\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Col, Row } from 'reactstrap';\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport StockUpdates from './Admin Dashboard/StockUpdates';\r\n\r\nexport class AdminLanding extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n \r\n this.state = {\r\n editData: [], loading: true,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Site Administration :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n render() {\r\n //let contents = this.state.loading ?

Loading...

: BannerLocations.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n //console.log(this.state)\r\n return (\r\n <>\r\n
\r\n \r\n \r\n

Site Administration

\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
Dashboards
\r\n Admin Dashboard\r\n \r\n Order Dashboard\r\n \r\n {!this.state.loading && this.state.editData.length}\r\n New Orders\r\n \r\n \r\n\r\n
Products
\r\n Products\r\n {/*Product Types*/}\r\n {/*Product Ranges*/}\r\n Product Categories\r\n Product Subcategories\r\n Product Brands\r\n Best Sellers\r\n Promo Codes\r\n Promotions\r\n\r\n
Contacts
\r\n Contact Messages\r\n Contact Reasons\r\n\r\n
Pages & Banners
\r\n Page Content\r\n FAQs\r\n TriggerCraft Banners\r\n Razer Banners\r\n\r\n {/*Banner Sections*/}\r\n {/*Banner Locations*/}\r\n \r\n\r\n
Users
\r\n Site Users\r\n\r\n
Admin Orders
\r\n Admin Order Creation\r\n \r\n
Audit
\r\n Audit Log \r\n \r\n
\r\n
\r\n \r\n\r\n );\r\n }\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/cart', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n let data = await response.json();\r\n data = data.filter(item => item.status !== 0 && item.status !== 3)\r\n this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n}\r\n\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { addClass, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren } from '../base/util';\nimport { destroy, commandColumnDestroy } from '../base/constant';\n/**\n * `CommandColumn` used to render command column in grid\n *\n * @hidden\n */\nvar CommandColumnRenderer = /** @class */ (function (_super) {\n __extends(CommandColumnRenderer, _super);\n function CommandColumnRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.buttonElement = _this.parent.createElement('button', {});\n _this.unbounDiv = _this.parent.createElement('div', { className: 'e-unboundcelldiv', styles: 'display: inline-block' });\n _this.childRefs = [];\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowcell e-unboundcell', attrs: {\n tabindex: '-1'\n }\n });\n _this.parent.on(destroy, _this.destroyButtons, _this);\n _this.parent.on(commandColumnDestroy, _this.destroyButtons, _this);\n return _this;\n }\n CommandColumnRenderer.prototype.destroyButtons = function (args) {\n for (var i = 0; i < this.childRefs.length; i++) {\n if (this.childRefs[parseInt(i.toString(), 10)] && !this.childRefs[parseInt(i.toString(), 10)].isDestroyed) {\n this.childRefs[parseInt(i.toString(), 10)].destroy();\n if (this.childRefs[parseInt(i.toString(), 10)].element) {\n this.childRefs[parseInt(i.toString(), 10)].element.innerHTML = '';\n }\n }\n }\n this.childRefs = [];\n if (args.type === 'refreshCommandColumn') {\n var elem = this.parent.element.querySelectorAll('.e-unboundcell');\n if (elem.length) {\n for (var i = 0; i < elem.length; i++) {\n if (elem[parseInt(i.toString(), 10)]) {\n if (elem[parseInt(i.toString(), 10)].querySelector('.e-unboundcelldiv')) {\n elem[parseInt(i.toString(), 10)].querySelector('.e-unboundcelldiv').innerHTML = '';\n }\n elem[parseInt(i.toString(), 10)].innerHTML = '';\n }\n }\n elem = null;\n }\n }\n else {\n this.parent.off(destroy, this.destroyButtons);\n this.parent.off(commandColumnDestroy, this.destroyButtons);\n }\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isVirtualEdit - specifies virtual scroll editing\n * @returns {Element} returns the element\n */\n CommandColumnRenderer.prototype.render = function (cell, data, attributes, isVirtualEdit) {\n var node = this.element.cloneNode();\n var uid = 'uid';\n node.appendChild(this.unbounDiv.cloneNode());\n node.setAttribute('aria-label', this.localizer.getConstant('CommandColumnAria') + cell.column.headerText);\n if (cell.column.commandsTemplate) {\n if (this.parent.isReact && typeof (cell.column.commandsTemplate) !== 'string') {\n var tempID = this.parent + 'commandsTemplate';\n cell.column.getColumnTemplate()(data, this.parent, 'commandsTemplate', tempID, null, null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(node.firstElementChild, cell.column.getColumnTemplate()(data));\n }\n }\n else {\n for (var _i = 0, _a = cell.commands; _i < _a.length; _i++) {\n var command = _a[_i];\n node = this.renderButton(node, command, attributes.index, command[\"\" + uid]);\n }\n }\n this.setAttributes(node, cell, attributes);\n if ((!this.parent.enableVirtualization && this.parent.isEdit) || isVirtualEdit) {\n addClass([].slice.call(node.getElementsByClassName('e-edit-delete')), 'e-hide');\n removeClass([].slice.call(node.getElementsByClassName('e-save-cancel')), 'e-hide');\n }\n else {\n addClass([].slice.call(node.getElementsByClassName('e-save-cancel')), 'e-hide');\n removeClass([].slice.call(node.getElementsByClassName('e-edit-delete')), 'e-hide');\n }\n return node;\n };\n CommandColumnRenderer.prototype.renderButton = function (node, buttonOption, index, uid) {\n var button = this.buttonElement.cloneNode();\n attributes(button, {\n 'id': this.parent.element.id + (buttonOption.type || '') + '_' + index + '_' + uid, 'type': 'button',\n title: !isNullOrUndefined(buttonOption.title) ? buttonOption.title :\n buttonOption.buttonOption.content || this.localizer.getConstant(buttonOption.type) || buttonOption.type,\n 'data-uid': uid\n });\n button.onclick = buttonOption.buttonOption.click;\n buttonOption.buttonOption.cssClass = this.parent.cssClass ?\n buttonOption.buttonOption.cssClass + ' ' + this.parent.cssClass : buttonOption.buttonOption.cssClass;\n var buttonObj = new Button(buttonOption.buttonOption, button);\n this.childRefs.push(buttonObj);\n buttonObj.commandType = buttonOption.type;\n node.firstElementChild.appendChild(buttonObj.element);\n switch (buttonOption.type) {\n case 'Edit':\n case 'Delete':\n addClass([button], ['e-edit-delete', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n case 'Cancel':\n case 'Save':\n addClass([button], ['e-save-cancel', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n }\n return node;\n };\n return CommandColumnRenderer;\n}(CellRenderer));\nexport { CommandColumnRenderer };\n","import { closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { click, keyPressed, commandClick, initialEnd, destroy } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport { CommandColumnRenderer } from '../renderer/command-column-renderer';\nimport { getUid } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `CommandColumn` used to handle the command column actions.\n *\n * @hidden\n */\nvar CommandColumn = /** @class */ (function () {\n function CommandColumn(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.initiateRender();\n this.addEventListener();\n }\n CommandColumn.prototype.initiateRender = function () {\n var cellFac = this.locator.getService('cellRendererFactory');\n cellFac.addCellRenderer(CellType.CommandColumn, new CommandColumnRenderer(this.parent, this.locator));\n };\n CommandColumn.prototype.commandClickHandler = function (e) {\n var gObj = this.parent;\n var target = closest(e.target, 'button');\n if (!target || !closest(e.target, '.e-unboundcell')) {\n return;\n }\n var buttonObj = target.ej2_instances[0];\n var type = buttonObj.commandType;\n var uid = target.getAttribute('data-uid');\n var commandColumn;\n var row = gObj.getRowObjectFromUID(closest(target, '.' + literals.row).getAttribute('data-uid'));\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].commands) {\n var commandCols = cols[parseInt(i.toString(), 10)].commands;\n for (var j = 0; j < commandCols.length; j++) {\n var idInString = 'uid';\n var typeInString = 'type';\n if (commandCols[parseInt(j.toString(), 10)][\"\" + idInString] === uid && commandCols[parseInt(j.toString(), 10)][\"\" + typeInString] === type) {\n commandColumn = commandCols[parseInt(j.toString(), 10)];\n }\n else {\n var buttons = [].slice.call(closest(target, '.e-unboundcell').querySelectorAll('button'));\n var index = buttons.findIndex(function (ele) { return ele === target; });\n if (index < commandCols.length && commandCols[parseInt(index.toString(), 10)][\"\" + typeInString] === type &&\n String(commandCols[parseInt(j.toString(), 10)][\"\" + idInString]) === uid) {\n commandColumn = commandCols[parseInt(index.toString(), 10)];\n }\n }\n }\n }\n }\n var args = {\n cancel: false,\n target: target,\n commandColumn: commandColumn,\n rowData: isNullOrUndefined(row) ? undefined : row.data\n };\n this.parent.trigger(commandClick, args, function (commandclickargs) {\n if (buttonObj.disabled || !gObj.editModule || commandclickargs.cancel) {\n return;\n }\n switch (type) {\n case 'Edit':\n gObj.editModule.endEdit();\n gObj.editModule.startEdit(closest(target, 'tr'));\n break;\n case 'Cancel':\n gObj.editModule.closeEdit();\n break;\n case 'Save':\n gObj.editModule.endEdit();\n break;\n case 'Delete':\n if (gObj.editSettings.mode !== 'Batch') {\n gObj.editModule.endEdit();\n }\n gObj.commandDelIndex = parseInt(closest(target, 'tr').getAttribute(literals.dataRowIndex), 10);\n gObj.clearSelection();\n //for toogle issue when dbl click\n gObj.selectRow(gObj.commandDelIndex, false);\n gObj.editModule.deleteRecord();\n gObj.commandDelIndex = undefined;\n break;\n }\n });\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n CommandColumn.prototype.getModuleName = function () {\n return 'commandColumn';\n };\n /**\n * To destroy CommandColumn.\n *\n * @function destroy\n * @returns {void}\n */\n CommandColumn.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n };\n CommandColumn.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(click, this.commandClickHandler);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(initialEnd, this.load);\n this.parent.off(destroy, this.destroy);\n };\n CommandColumn.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(click, this.commandClickHandler, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(initialEnd, this.load, this);\n this.parent.on(destroy, this.destroy, this);\n };\n CommandColumn.prototype.keyPressHandler = function (e) {\n if (e.action === 'enter' && closest(e.target, '.e-unboundcelldiv')) {\n this.commandClickHandler(e);\n e.preventDefault();\n }\n };\n CommandColumn.prototype.load = function () {\n var uid = 'uid';\n var col = this.parent.columnModel;\n for (var i = 0; i < col.length; i++) {\n if (col[parseInt(i.toString(), 10)].commands) {\n var commandCol = col[parseInt(i.toString(), 10)].commands;\n for (var j = 0; j < commandCol.length; j++) {\n commandCol[parseInt(j.toString(), 10)][\"\" + uid] = getUid('gridcommand');\n }\n }\n }\n };\n return CommandColumn;\n}());\nexport { CommandColumn };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React TextBox Component\n * ```html\n * \n * ```\n */\nvar TextBoxComponent = /** @class */ (function (_super) {\n __extends(TextBoxComponent, _super);\n function TextBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n TextBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return TextBoxComponent;\n}(TextBox));\nexport { TextBoxComponent };\napplyMixins(TextBoxComponent, [ComponentBase, React.Component]);\n","/* eslint-disable eqeqeq */\r\nexport const fieldRequired = (data, errorContainer, errorMessage) => {\r\n if (data === '' || data === 0 || data === null || data === undefined || data == false) {\r\n document.getElementById(errorContainer).innerText = errorMessage;\r\n return false;\r\n }\r\n else {\r\n document.getElementById(errorContainer).innerText = \"\";\r\n return true;\r\n }\r\n};\r\n\r\n","import { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, Edit, GridComponent, Sort, Toolbar } from '@syncfusion/ej2-react-grids';\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { Inject } from '@syncfusion/ej2-react-richtexteditor';\r\nimport { Query } from '@syncfusion/ej2-data';\r\nimport React, { Component } from 'react';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { Button, Col, Label, Modal, ModalBody, ModalFooter, ModalHeader, Row } from 'reactstrap';\r\n//import '../../css/Select2.css';\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { Context } from '../../helpers/Context';\r\nimport { capitalizeObjectKeys } from '../../helpers/Global';\r\nimport { getCurrentDomain } from '../../helpers/Lookup';\r\n//import Select2 from '../../helpers/Select2';\r\nimport { fieldRequired } from '../../helpers/validation';\r\n\r\nexport class AdminOrders extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n /*{ type: 'Send To Processing', buttonOption: { cssClass: 'e-flat', iconCss: 'fas fa-paper-plane' } },*/\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat text-danger', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n const CartObject = {\r\n id: 0,\r\n userId: 0,\r\n cartId: \"\",\r\n orderType: 5,\r\n dateStarted: new Date(),\r\n dateSubmitted: null,\r\n dateComplete: null,\r\n numItems: 0,\r\n orderId: 0,\r\n amount: 0,\r\n deliveryFee: 0,\r\n vat: 0,\r\n promoCode: 0,\r\n useCredit: true,\r\n stockCheck: true,\r\n status: 0,\r\n deliveryAddressId: 0,\r\n instructions: \"\",\r\n statusMessage: \"\",\r\n paymentMessage: \"\",\r\n paymentMeta: \"\",\r\n deliveryMessage: \"\",\r\n deliveryMeta: \"\",\r\n cartItems: []\r\n }\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, addProductModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n id: 0,\r\n Status: 0,\r\n UserId: 0,\r\n ProductQuantity: 1,\r\n CustomerOrders: [],\r\n CustomerCart: CartObject,\r\n ProductList: [],\r\n BrandList: [],\r\n CategoryList: [],\r\n SubCategoryList: [],\r\n fProductBrandId: 0,\r\n ProductId: 0,\r\n fSubcategoryId: [],\r\n couponCode: \"\",\r\n filteredProducts: []\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.toggleAddProduct = this.toggleAddProduct.bind(this);\r\n\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n toggleAddProduct() {\r\n this.setState({\r\n addProductModal: !this.state.addProductModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Admin Orders :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n const { setAdminAppliedCoupon, setAdminCouponError } = this.context;\r\n setAdminCouponError(\"\");\r\n if (id > 0) {\r\n let data = this.state.editData.find((item) => { return item.id == id });\r\n data = { ...data, cartItems: data.cartItems.map(ci => ({ ...ci, title: ci.Title, quantity: ci.Qty, price: ci.PriceCharged, productId: ci.ProductId, product: this.state.ProductList.find(item => item.id == ci.ProductId) })) };\r\n this.setState({ id: data.id, cartId: data.cartId, CustomerCart: data, CustomerOrders: data, UserId: data.userId, amount: data.amount, numItems: data.numItems, couponCode: \"\" });\r\n }\r\n else {\r\n const CartObject = {\r\n id: 0,\r\n userId: 0,\r\n cartId: \"\",\r\n orderType: 5,\r\n dateStarted: new Date(),\r\n dateSubmitted: null,\r\n dateComplete: null,\r\n numItems: 0,\r\n orderId: 0,\r\n amount: 0,\r\n deliveryFee: 0,\r\n vat: 0,\r\n promoCode: 0,\r\n useCredit: true,\r\n stockCheck: true,\r\n status: 0,\r\n deliveryAddressId: 0,\r\n instructions: \"\",\r\n statusMessage: \"\",\r\n paymentMessage: \"\",\r\n paymentMeta: \"\",\r\n deliveryMessage: \"\",\r\n deliveryMeta: \"\",\r\n cartItems: []\r\n }\r\n //clear state fields\r\n this.setState({\r\n id: 0,\r\n SiteSection: 0,\r\n UserId: 0,\r\n CustomerOrders: [],\r\n CustomerCart: CartObject,\r\n couponCode: \"\",\r\n Status: 0,\r\n //SubCategoryList: [],\r\n //ProductBrandId: 0,\r\n //fSubcategoryId: [],\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n reducePrice = (originalPrice, percentage) => {\r\n const decimalPercentage = percentage / 100;\r\n\r\n const reductionAmount = originalPrice * decimalPercentage;\r\n\r\n const newPrice = originalPrice - reductionAmount;\r\n\r\n return newPrice;\r\n }\r\n\r\n saveItem = async (event) => {\r\n const { adminPostToCart, adminAppliedCoupon, setAdminAppliedCoupon } = this.context;\r\n const { CustomerCart } = this.state;\r\n if (adminAppliedCoupon?.id && CustomerCart.promoCode == 0) {\r\n CustomerCart.promoCode = adminAppliedCoupon.id;\r\n CustomerCart.amount = adminAppliedCoupon.type == 1 ? (CustomerCart.amount - adminAppliedCoupon.amount) : this.reducePrice(CustomerCart.amount, adminAppliedCoupon.amount);\r\n }\r\n //console.log(CustomerCart)\r\n event.stopPropagation();\r\n var valid = true;\r\n valid &= this.state.CustomerOrders.cartItems.length > 0;\r\n valid &= fieldRequired(this.state.UserId, 'ddUserIdError', '* required');\r\n\r\n if (valid) {\r\n await adminPostToCart(CustomerCart);\r\n this.setState({ editModal: false, loading: true });\r\n setAdminAppliedCoupon(null);\r\n this.loadData();\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n handleFilterSelectChange(event) { const selectedValue = Array.from(event.target.selectedOptions).map(option => parseInt(option.value)); this.setState({ fSubcategoryId: selectedValue }); }\r\n\r\n handleFilterUnSelectChange(event) {\r\n this.setState({ fSubcategoryId: [] });\r\n }\r\n\r\n sendEmail(data) {\r\n const newData = data.cartItems.map(item => ({\r\n Id: item.Id,\r\n CartId: item.CartId,\r\n ProductId: item.ProductId,\r\n BuyType: 0,\r\n Qty: item.Qty,\r\n PriceCharged: item.PriceCharged,\r\n TotalCharged: item.TotalCharged,\r\n Status: 1,\r\n Title: item.Title,\r\n Sku: item.Sku\r\n }))\r\n data.orderData = JSON.stringify(newData)\r\n //console.log(capitalizeObjectKeys(data))\r\n this.saveData(capitalizeObjectKeys(data));\r\n this.setState({ editModal: false });\r\n }\r\n\r\n handleCouponChange = (code) => {\r\n\r\n this.setState({ couponCode: code })\r\n };\r\n\r\n addToCart() {\r\n const { CustomerCart, UserId, ProductId, ProductQuantity, ProductList } = this.state;\r\n const product = ProductList.find(item => item.id == ProductId);\r\n const currentPrice = (product.sPrice && product.dateSPriceEnds && new Date(product.dateSPriceEnds) >= new Date()) || product.price;\r\n const existingItem = CustomerCart?.cartItems.find(item => item.productId === ProductId);\r\n\r\n if (existingItem) {\r\n existingItem.quantity += ProductQuantity;\r\n } else {\r\n const newItem = {\r\n cartId: 0,\r\n id: 0,\r\n img: product.images,\r\n price: currentPrice,\r\n product: { ...product },\r\n productId: ProductId,\r\n quantity: ProductQuantity\r\n };\r\n\r\n CustomerCart.cartItems.push(newItem);\r\n }\r\n\r\n const updatedCart = {\r\n ...CustomerCart,\r\n numItems: CustomerCart.cartItems.reduce((total, item) => total + item.quantity, 0),\r\n amount: CustomerCart.cartItems.reduce((total, item) => total + (item.price * item.quantity), 0),\r\n userId: UserId\r\n };\r\n\r\n if (updatedCart.promoCode) updatedCart.amount = updatedCart.amount - updatedCart.promoCode;\r\n\r\n this.setState({ CustomerCart: updatedCart, ProductId: 0, ProductQuantity: 1, fProductBrandId: 0, fSubcategoryId: [], CustomerOrders: updatedCart, addProductModal: false });\r\n }\r\n\r\n async removeFromCart(productId, database, data, removeId = 0) {\r\n const { deleteFromCart } = this.context;\r\n const { CustomerCart } = this.state;\r\n\r\n const updatedCartItems = CustomerCart.cartItems.filter(item => item.productId !== productId);\r\n\r\n const updatedCart = {\r\n ...CustomerCart,\r\n cartItems: updatedCartItems,\r\n numItems: updatedCartItems.reduce((total, item) => total + item.quantity, 0),\r\n amount: updatedCartItems.reduce((total, item) => total + (item.price * item.quantity), 0),\r\n };\r\n\r\n if (updatedCart.promoCode) updatedCart.amount = updatedCart.amount - updatedCart.promoCode;\r\n\r\n if (database) await deleteFromCart(data, database, removeId)\r\n\r\n this.setState({ CustomerCart: updatedCart, CustomerOrders: updatedCart });\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n //headerTextAlign=\"right\" textAlign=\"right\" template={(props) => <>{currencySymbol + \" \" + props.CatastrophicLevel.toNumberString()}}\r\n return (\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n <>{\"R \" + props.amount.toNumberString()}} />\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderProductsTable(data) {\r\n //const { handleNavigate, deleteFromCart } = this.context;\r\n\r\n return (\r\n <>\r\n {data.cartItems?.length ? data.cartItems.map((item, index) => {\r\n let imageUrl = \"/assets/imgs/Trigger-Craft-Logo.png\";\r\n\r\n if (item.img || item.product.images) {\r\n let images = item.img || item.product.images;\r\n\r\n if (item.product.images.includes(\"DynamicData\") || item.img.includes(\"DynamicData\")) images = JSON.parse(item.product.images) || JSON.parse(item.img);\r\n\r\n if (Array.isArray(images)) {\r\n images.forEach((pic) => {\r\n if (pic.includes(\"DynamicData\") && pic.includes(\"[\")) {\r\n const parsedImage = JSON.parse(pic);\r\n imageUrl = getCurrentDomain() + parsedImage[0];\r\n } else {\r\n imageUrl = getCurrentDomain() + pic;\r\n }\r\n });\r\n } else if (images.includes(\"https\") && images.includes(\"[\")) {\r\n imageUrl = JSON.parse(images.split(\", \")[0])[0];\r\n } else {\r\n imageUrl = images.split(\", \")[0];\r\n }\r\n }\r\n\r\n return (\r\n
\r\n { item.Id ? this.removeFromCart(item.productId, true, data, item.Id) : this.removeFromCart(item.productId, false, data) }}>\r\n
\r\n
\r\n \"Product\r\n
\r\n

{item.product.title}

\r\n
\r\n

R{item.price}.00

\r\n

0 ? \"text-success col-md-2\" : \"text-danger col-md-2\"}>{item.product.stock > 0 ? \"In Stock\" : \"Out Of Stock\"}

\r\n

Qty: {item.quantity}

\r\n
\r\n );\r\n }) :\r\n
\r\n \r\n

No Items In Cart

\r\n
\r\n }\r\n \r\n );\r\n }\r\n\r\n onFilteringUser(args) {\r\n let filter = this.state.UserList.filter(p => p.FullName.toLowerCase().indexOf(args.text.toLowerCase()) > 0)\r\n args.updateData(filter);\r\n }\r\n\r\n onFilteringProduct(args) {\r\n let data = this.state.ProductList;\r\n if (this.state.fProductBrandId !== 0) {\r\n data = data?.filter(item => item.productBrandId === this.state.fProductBrandId || (!this.state.fProductBrandId && !item.productBrandId));\r\n }\r\n let filter = data?.filter(p => p.filterName.toLowerCase().indexOf(args.text.toLowerCase()) > 0)\r\n args.updateData(filter);\r\n }\r\n\r\n\r\n render() {\r\n const { handleNavigate, applyAdminCoupon, adminCouponError, adminAppliedCoupon } = this.context;\r\n\r\n let data = this.state.ProductList;\r\n let quantity = this.state.ProductQuantity;\r\n if (quantity < 1) quantity = 1;\r\n\r\n if (this.state.fProductBrandId !== 0) {\r\n data = data?.filter(item => item.productBrandId === this.state.fProductBrandId || (!this.state.fProductBrandId && !item.productBrandId));\r\n }\r\n if (this.state.fSubcategoryId.length) {\r\n data = data?.filter(item => item.selectedCategories && JSON.parse(item.selectedCategories) && JSON.parse(item.selectedCategories).some(categoryId => this.state.fSubcategoryId.includes(categoryId)));\r\n }\r\n //this.setState({ filteredProducts: data })\r\n let contents = this.state.loading ?

Loading...

: AdminOrders.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n let mapedData = this.state.CategoryList.map((item, index) => { return { text: item.title, children: this.state.SubCategoryList.filter(sub => sub.categoryId === item.id).map(sub => { return { text: sub.title, id: sub.id } }) } })\r\n //console.log(this.state, adminAppliedCoupon);\r\n return (\r\n <>\r\n
\r\n \r\n \r\n

Admin Orders

\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {contents}\r\n \r\n \r\n
\r\n\r\n \r\n }>Edit Admin Order\r\n \r\n
\r\n
\r\n {!this.state.id ?\r\n <> this.setState({ UserId: e.itemData.id })} />\r\n
\r\n :\r\n <>
\r\n }\r\n
\r\n {this.state.UserId ?
\r\n \r\n
: \"\"}\r\n
\r\n\r\n {this.renderProductsTable(this.state.CustomerOrders)}\r\n
\r\n {!this.state.CustomerOrders.promoCode ?
\r\n
\r\n this.handleCouponChange(e.target.value)} />\r\n \r\n
\r\n {adminCouponError &&

{adminCouponError}

}\r\n {adminAppliedCoupon?.id ? (\r\n
\r\n

Coupon applied: {adminAppliedCoupon.code}

\r\n
\r\n ) : \"\"}\r\n
: \"\"}\r\n \r\n \r\n \r\n \r\n {this.state.id && this.state.CustomerOrders.orderData && JSON.parse(this.state.CustomerOrders.orderData).length === this.state.CustomerOrders.cartItems.length ? : \"\"}\r\n \r\n \r\n\r\n \r\n }>Add Product\r\n \r\n
\r\n
\r\n this.setState({ fProductBrandId: e.itemData ? e.itemData.id : 0, ProductId: 0 })} />\r\n
\r\n
\r\n \r\n {/* this.handleFilterSelectChange(e)} onUnselect={() => this.handleFilterUnSelectChange()} />*/}\r\n
\r\n {this.state.fProductBrandId > 0 || this.state.fSubcategoryId.length ? <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n this.setState({ ProductId: e.itemData ? e.itemData.id : 0 })} />\r\n \r\n \r\n
\r\n this.setState({ ProductQuantity: this.state.ProductQuantity -= 1 })}>-\r\n {quantity}\r\n this.setState({ ProductQuantity: this.state.ProductQuantity += 1 })}>+\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n : \"\"}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n const { getProducts } = this.context;\r\n var bearer = 'Bearer ' + getAuthToken();\r\n\r\n let loadCnt = 5\r\n\r\n //get brands\r\n try {\r\n const response = await fetch('api/productbrands', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ BrandList: data });\r\n loadCnt--;\r\n if (loadCnt === 0)\r\n this.setState({ loading: false });\r\n //console.log(\"Product Brands\", loadCnt, data);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n //get prod sub categories\r\n try {\r\n const response = await fetch('api/productsubcategories', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ SubCategoryList: data });\r\n loadCnt--;\r\n if (loadCnt === 0)\r\n this.setState({ loading: false });\r\n //console.log(\"Sub Categories\", loadCnt, data);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n //get prod categories\r\n try {\r\n const response = await fetch('api/productcategories', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ CategoryList: data });\r\n loadCnt--;\r\n if (loadCnt === 0)\r\n this.setState({ loading: false });\r\n\r\n //console.log(\"Product Categories\", loadCnt, data);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n //get customers\r\n try {\r\n const response = await fetch('api/userdata/getcustomers', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n let data = await response.json();\r\n data = data?.map(item => ({ ...item, FullName: `${item.fullName} (${item.emailAddress})` }));\r\n //console.log(data)\r\n this.setState({ UserList: data });\r\n loadCnt--;\r\n if (loadCnt === 0)\r\n this.setState({ loading: false });\r\n //console.log(\"Customer\", loadCnt, data);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n //get admin orders\r\n try {\r\n const response = await fetch('api/cart/getadminorders', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n let data = await response.json();\r\n //console.log(data);\r\n data = data.map(item => ({ ...item, date: new Date(item.dateStarted).toDateString(), FullName: `${item.firstName} ${item.lastName}`, cartItems: JSON.parse(item.orderData) })).filter(item => item.status === 0);\r\n //data = data.filter(item => item.status !== 0)\r\n this.setState({ editData: data, ProductList: await getProducts() });\r\n\r\n loadCnt--;\r\n if (loadCnt === 0)\r\n this.setState({ loading: false });\r\n //console.log(\"Admin Orders\", loadCnt, data);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(data) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n //var data = { Id: this.state.Id, Id: this.state.Id, SiteSection: this.state.SiteSection, Title: this.state.Title, Filename: Array.isArray(this.state.Filename) ? this.state.Filename.join(\", \") : this.state.Filename, StartDate: this.state.StartDate, EndDate: this.state.EndDate, ActionType: this.state.ActionType, ActionData: this.state.ActionData, DisplayOrder: this.state.DisplayOrder, AddedBy: this.state.AddedBy, DateAdded: this.state.DateAdded, ModifiedBy: this.state.ModifiedBy, DateModified: this.state.DateModified, Status: this.state.Status, }\r\n\r\n try {\r\n const response = await fetch('api/cart/sendadminemail', {\r\n method: 'POST',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n //await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Customer Email', content: 'The email was successfully sent to the customer!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n else {\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Customer Email', content: 'There was an error sending the email to the customer!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Customer Email', content: 'There was an error sending the email to the customer!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/cart/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Cart', content: 'The cart was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Cart', content: 'There was an error deleting the cart!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the react CheckBox Component.\n * ```ts\n * \n * ```\n */\nvar CheckBoxComponent = /** @class */ (function (_super) {\n __extends(CheckBoxComponent, _super);\n function CheckBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n CheckBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return CheckBoxComponent;\n}(CheckBox));\nexport { CheckBoxComponent };\napplyMixins(CheckBoxComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the Essential JS 2 React DatePicker Component.\n * ```ts\n * \n * ```\n */\nvar DatePickerComponent = /** @class */ (function (_super) {\n __extends(DatePickerComponent, _super);\n function DatePickerComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n DatePickerComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return DatePickerComponent;\n}(DatePicker));\nexport { DatePickerComponent };\napplyMixins(DatePickerComponent, [ComponentBase, React.Component]);\n","/**\n * @hidden\n\n */\nexport var created = 'create';\n/**\n * @hidden\n\n */\nexport var destroyed = 'destroy';\n/**\n * @hidden\n\n */\nexport var tableclass = 'tableclass';\n/**\n * @hidden\n\n */\nexport var load = 'load';\n/**\n * Specifies Rich Text Editor internal events\n */\n/**\n * @hidden\n\n */\nexport var initialLoad = 'initial-load';\n/**\n * @hidden\n\n */\nexport var contentChanged = 'content-changed';\n/**\n * @hidden\n\n */\nexport var initialEnd = 'initial-end';\n/**\n * @hidden\n\n */\nexport var iframeMouseDown = 'iframe-click';\n/**\n * @hidden\n\n */\nexport var destroy = 'destroy';\n/**\n * @hidden\n\n */\nexport var toolbarClick = 'toolbarClick';\n/**\n * @hidden\n\n */\nexport var toolbarRefresh = 'toolbar-refresh';\n/**\n * @hidden\n\n */\nexport var refreshBegin = 'refresh-begin';\n/**\n * @hidden\n\n */\nexport var toolbarUpdated = 'toolbar-updated';\n/**\n * @hidden\n\n */\nexport var bindOnEnd = 'bind-on-end';\n/**\n * @hidden\n\n */\nexport var renderColorPicker = 'render-color-picker';\n/**\n * @hidden\n\n */\nexport var htmlToolbarClick = 'html-toolbar-click';\n/**\n * @hidden\n\n */\nexport var markdownToolbarClick = 'markdown-toolbar-click';\n/**\n * @hidden\n\n */\nexport var destroyColorPicker = 'destroy-color-picker';\n/**\n * @hidden\n\n */\nexport var modelChanged = 'model-changed';\n/**\n * @hidden\n\n */\nexport var tableModulekeyUp = 'tableModulekeyUp';\n/**\n * @hidden\n\n */\nexport var keyUp = 'keyUp';\n/**\n * @hidden\n\n */\nexport var keyDown = 'keyDown';\n/**\n * @hidden\n\n */\nexport var mouseUp = 'mouseUp';\n/**\n * @hidden\n\n */\nexport var toolbarCreated = 'toolbarCreated';\n/**\n * @hidden\n\n */\nexport var toolbarRenderComplete = 'toolbarRenderComplete';\n/**\n * @hidden\n\n */\nexport var enableFullScreen = 'enableFullScreen';\n/**\n * @hidden\n\n */\nexport var disableFullScreen = 'disableFullScreen';\n/**\n * @hidden\n\n */\nexport var dropDownSelect = 'dropDownSelect';\n/**\n * @hidden\n\n */\nexport var beforeDropDownItemRender = 'beforeDropDownItemRender';\n/**\n * @hidden\n\n */\nexport var execCommandCallBack = 'execCommandCallBack';\n/**\n * @hidden\n\n */\nexport var imageToolbarAction = 'image-toolbar-action';\n/**\n * @hidden\n\n */\nexport var audioToolbarAction = 'audio-toolbar-action';\n/**\n * @hidden\n\n */\nexport var videoToolbarAction = 'video-toolbar-action';\n/**\n * @hidden\n\n */\nexport var linkToolbarAction = 'link-toolbar-action';\n/**\n * @hidden\n\n */\nexport var windowResize = 'resize';\n/**\n * @hidden\n\n */\nexport var resizeStart = 'resizeStart';\n/**\n * @hidden\n\n */\nexport var onResize = 'resizing';\n/**\n * @hidden\n\n */\nexport var resizeStop = 'resizeStop';\n/**\n * @hidden\n\n */\nexport var undo = 'undo';\n/**\n * @hidden\n\n */\nexport var redo = 'redo';\n/**\n * @hidden\n\n */\nexport var insertLink = 'insertLink';\n/**\n * @hidden\n\n */\nexport var unLink = 'unLink';\n/**\n * @hidden\n\n */\nexport var editLink = 'editLink';\n/**\n * @hidden\n\n */\nexport var openLink = 'openLink';\n/**\n * @hidden\n\n */\nexport var actionBegin = 'actionBegin';\n/**\n * @hidden\n\n */\nexport var actionComplete = 'actionComplete';\n/**\n * @hidden\n\n */\nexport var updatedToolbarStatus = 'updatedToolbarStatus';\n/**\n * @hidden\n\n */\nexport var actionSuccess = 'actionSuccess';\n/**\n * @hidden\n\n */\nexport var updateToolbarItem = 'updateToolbarItem';\n/**\n * @hidden\n\n */\nexport var insertImage = 'insertImage';\n/**\n * @hidden\n\n */\nexport var insertAudio = 'insertAudio';\n/**\n * @hidden\n\n */\nexport var insertVideo = 'insertVideo';\n/**\n * @hidden\n\n */\nexport var insertCompleted = 'insertCompleted';\n/**\n * @hidden\n\n */\nexport var imageLeft = 'justifyLeft';\n/**\n * @hidden\n\n */\nexport var imageRight = 'justifyRight';\n/**\n * @hidden\n\n */\nexport var imageCenter = 'justifyCenter';\n/**\n * @hidden\n\n */\nexport var imageBreak = 'break';\n/**\n * @hidden\n\n */\nexport var imageInline = 'inline';\n/**\n * @hidden\n\n */\nexport var imageLink = 'insertImgLink';\n/**\n * @hidden\n\n */\nexport var imageAlt = 'imgAltText';\n/**\n * @hidden\n\n */\nexport var imageDelete = 'delete';\n/**\n * @hidden\n\n */\nexport var audioDelete = 'delete';\n/**\n * @hidden\n\n */\nexport var videoDelete = 'delete';\n/**\n * @hidden\n\n */\nexport var imageCaption = 'caption';\n/**\n * @hidden\n\n */\nexport var imageSize = 'imageSize';\n/**\n * @hidden\n\n */\nexport var videoSize = 'videoSize';\n/**\n * @hidden\n\n */\nexport var sourceCode = 'sourceCode';\n/**\n * @hidden\n\n */\nexport var updateSource = 'updateSource';\n/**\n * @hidden\n\n */\nexport var toolbarOpen = 'toolbarOpen';\n/**\n * @hidden\n\n */\nexport var beforeDropDownOpen = 'beforeDropDownOpen';\n/**\n * @hidden\n\n */\nexport var selectionSave = 'selection-save';\n/**\n * @hidden\n\n */\nexport var selectionRestore = 'selection-restore';\n/**\n * @hidden\n\n */\nexport var expandPopupClick = 'expandPopupClick';\n/**\n * @hidden\n\n */\nexport var count = 'count';\n/**\n * @hidden\n\n */\nexport var contentFocus = 'contentFocus';\n/**\n * @hidden\n\n */\nexport var contentBlur = 'contentBlur';\n/**\n * @hidden\n\n */\nexport var mouseDown = 'mouseDown';\n/**\n * @hidden\n\n */\nexport var sourceCodeMouseDown = 'sourceCodeMouseDown';\n/**\n * @hidden\n\n */\nexport var editAreaClick = 'editAreaClick';\n/**\n * @hidden\n\n */\nexport var scroll = 'scroll';\n/**\n * @hidden\n\n */\nexport var contentscroll = 'contentscroll';\n/**\n * @hidden\n\n */\nexport var colorPickerChanged = 'colorPickerChanged';\n/**\n * @hidden\n\n */\nexport var tableColorPickerChanged = 'tableColorPickerChanged';\n/**\n * @hidden\n\n */\nexport var focusChange = 'focusChange';\n/**\n * @hidden\n\n */\nexport var selectAll = 'selectAll';\n/**\n * @hidden\n\n */\nexport var selectRange = 'selectRange';\n/**\n * @hidden\n\n */\nexport var getSelectedHtml = 'getSelectedHtml';\n/**\n * @hidden\n\n */\nexport var renderInlineToolbar = 'renderInlineToolbar';\n/**\n * @hidden\n\n */\nexport var paste = 'paste-content';\n/**\n * @hidden\n\n */\nexport var imgModule = 'imageModule';\n/**\n * @hidden\n\n */\nexport var rtlMode = 'rtl-mode';\n/**\n * @hidden\n\n */\nexport var createTable = 'createTable';\n/**\n * @hidden\n\n */\nexport var docClick = 'docClick';\n/**\n * @hidden\n\n */\nexport var tableToolbarAction = 'table-toolbar-action';\n/**\n * @hidden\n\n */\nexport var checkUndo = 'checkUndoStack';\n/**\n * @hidden\n\n */\nexport var readOnlyMode = 'readOnlyMode';\n/**\n * @hidden\n\n */\nexport var moduleDestroy = 'moduleDestroy';\n/**\n * @hidden\n\n */\nexport var pasteClean = 'pasteClean';\n/**\n * @hidden\n\n */\nexport var enterHandler = 'enterHandler';\n/**\n * @hidden\n\n */\nexport var beforeDialogOpen = 'beforeDialogOpen';\n/**\n * @hidden\n\n */\nexport var clearDialogObj = 'clearDialogObj';\n/**\n * @hidden\n\n */\nexport var dialogOpen = 'dialogOpen';\n/**\n * @hidden\n\n */\nexport var beforeDialogClose = 'beforeDialogClose';\n/**\n * @hidden\n\n */\nexport var dialogClose = 'dialogClose';\n/**\n * @hidden\n\n */\nexport var beforeQuickToolbarOpen = 'beforeQuickToolbarOpen';\n/**\n * @hidden\n\n */\nexport var quickToolbarOpen = 'quickToolbarOpen';\n/**\n * @hidden\n\n */\nexport var quickToolbarClose = 'quickToolbarClose';\n/**\n * @hidden\n\n */\nexport var popupHide = 'popupHide';\n/**\n * @hidden\n\n */\nexport var imageSelected = 'imageSelected';\n/**\n * @hidden\n\n */\nexport var imageUploading = 'imageUploading';\n/**\n * @hidden\n\n */\nexport var imageUploadSuccess = 'imageUploadSuccess';\n/**\n * @hidden\n\n */\nexport var imageUploadFailed = 'imageUploadFailed';\n/**\n * @hidden\n\n */\nexport var imageRemoving = 'imageRemoving';\n/**\n * @hidden\n\n */\nexport var fileSelected = 'fileSelected';\n/**\n * @hidden\n\n */\nexport var fileUploading = 'fileUploading';\n/**\n * @hidden\n\n */\nexport var fileUploadSuccess = 'fileUploadSuccess';\n/**\n * @hidden\n\n */\nexport var fileUploadFailed = 'fileUploadFailed';\n/**\n * @hidden\n\n */\nexport var fileRemoving = 'fileRemoving';\n/**\n * @hidden\n\n */\nexport var afterImageDelete = 'afterImageDelete';\n/**\n * @hidden\n\n */\nexport var afterMediaDelete = 'afterMediaDelete';\n/**\n * @hidden\n\n */\nexport var drop = 'drop';\n/**\n * @hidden\n\n */\nexport var xhtmlValidation = 'xhtmlValidation';\n/**\n * @hidden\n\n */\nexport var beforeImageUpload = 'beforeImageUpload';\n/**\n * @hidden\n\n */\nexport var beforeFileUpload = 'beforeFileUpload';\n/**\n * @hidden\n\n */\nexport var resizeInitialized = 'resizeInitialized';\n/**\n * @hidden\n\n */\nexport var renderFileManager = 'renderFileManager';\n/**\n * @hidden\n\n */\nexport var beforeImageDrop = 'beforeImageDrop';\n/**\n * @hidden\n\n */\nexport var dynamicModule = 'dynamicModule';\n/**\n * @hidden\n\n */\nexport var beforePasteCleanup = 'beforePasteCleanup';\n/**\n * @hidden\n\n */\nexport var afterPasteCleanup = 'afterPasteCleanup';\n/**\n * @hidden\n\n */\nexport var updateTbItemsStatus = 'updateTbItemsStatus';\n/**\n * @hidden\n\n */\nexport var showLinkDialog = 'showLinkDialog';\n/**\n * @hidden\n\n */\nexport var closeLinkDialog = 'closeLinkDialog';\n/**\n * @hidden\n\n */\nexport var showImageDialog = 'showImageDialog';\n/**\n * @hidden\n\n */\nexport var showAudioDialog = 'showAudioDialog';\n/**\n * @hidden\n\n */\nexport var showVideoDialog = 'showVideoDialog';\n/**\n * @hidden\n\n */\nexport var closeImageDialog = 'closeImageDialog';\n/**\n * @hidden\n\n */\nexport var closeAudioDialog = 'closeAudioDialog';\n/**\n * @hidden\n\n */\nexport var closeVideoDialog = 'closeVideoDialog';\n/**\n * @hidden\n\n */\nexport var showTableDialog = 'showTableDialog';\n/**\n * @hidden\n\n */\nexport var closeTableDialog = 'closeTableDialog';\n/**\n * @hidden\n\n */\nexport var bindCssClass = 'closeTableDialog';\n/**\n * @hidden\n\n */\nexport var formatPainterClick = 'formatPainterClick';\n/**\n * @hidden\n\n */\nexport var formatPainterDoubleClick = 'formatPainterDoubleClick';\n/**\n * @hidden\n\n */\nexport var emojiPicker = 'emojiPicker';\n/**\n * @hidden\n\n */\nexport var maximizeMinimizeClick = 'maximizeMinimizeClick';\n/**\n * @hidden\n\n */\nexport var blockEmptyNodes = \"address:empty, article:empty, aside:empty, blockquote:empty,\\n details:empty, dd:empty, div:empty, dl:empty, dt:empty, fieldset:empty, footer:empty,form:empty, h1:empty,\\n h2:empty, h3:empty, h4:empty, h5:empty, h6:empty, header:empty, hgroup:empty, li:empty, main:empty, nav:empty,\\n noscript:empty, output:empty, p:empty, pre:empty, section:empty, td:empty, th:empty\";\n/**\n * @hidden\n\n */\nexport var inlineEmptyNodes = \"a:empty, abbr:empty, acronym:empty, b:empty, bdi:empty, bdo:empty, big:empty, button:empty,\\ncanvas:empty, cite:empty, code:empty, data:empty, datalist:empty, del:empty, dfn:empty, em:empty, font:empty, i:empty, iframe:empty,\\nins:empty, kbd:empty, label:empty, map:empty, mark:empty, meter:empty, noscript:empty, object:empty, output:empty, picture:empty, progress:empty,\\nq:empty, ruby:empty, s:empty, samp:empty, script:empty, select:empty, slot:empty, small:empty, span:empty, strong:empty, strike:empty, sub:empty, sup:empty, svg:empty,\\ntemplate:empty, textarea:empty, time:empty, u:empty, tt:empty, var:empty, wbr:empty\";\n","/**\n * Defines types of Render\n *\n * @hidden\n\n */\nexport var RenderType;\n(function (RenderType) {\n /* eslint-disable */\n /** Defines RenderType as Toolbar */\n RenderType[RenderType[\"Toolbar\"] = 0] = \"Toolbar\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Popup */\n RenderType[RenderType[\"Popup\"] = 2] = \"Popup\";\n /** Defines RenderType as LinkToolbar */\n RenderType[RenderType[\"LinkToolbar\"] = 3] = \"LinkToolbar\";\n /** Defines RenderType as TextToolbar */\n RenderType[RenderType[\"TextToolbar\"] = 4] = \"TextToolbar\";\n /** Defines RenderType as ImageToolbar */\n RenderType[RenderType[\"ImageToolbar\"] = 5] = \"ImageToolbar\";\n /** Defines RenderType as AudioToolbar */\n RenderType[RenderType[\"AudioToolbar\"] = 6] = \"AudioToolbar\";\n /** Defines RenderType as AudioToolbar */\n RenderType[RenderType[\"VideoToolbar\"] = 7] = \"VideoToolbar\";\n /** Defines RenderType as InlineToolbar */\n RenderType[RenderType[\"InlineToolbar\"] = 8] = \"InlineToolbar\";\n /** Defines RenderType as TableToolbar */\n RenderType[RenderType[\"TableToolbar\"] = 9] = \"TableToolbar\";\n /* eslint-enable */\n})(RenderType || (RenderType = {}));\n/**\n * Defines types to be used as Toolbar.\n */\nexport var ToolbarType;\n(function (ToolbarType) {\n /* eslint-disable */\n /** Defines ToolbarType as Standard */\n ToolbarType[\"Expand\"] = \"Expand\";\n /** Defines ToolbarType as MultiRow */\n ToolbarType[\"MultiRow\"] = \"MultiRow\";\n /** Defines ToolbarType as Scrollable */\n ToolbarType[\"Scrollable\"] = \"Scrollable\";\n /* eslint-enable */\n})(ToolbarType || (ToolbarType = {}));\n/**\n * Defines the type of dialog, which open or close in the Rich Text Editor.\n */\nexport var DialogType;\n(function (DialogType) {\n /* eslint-disable */\n /** Defines ToolbarType as Standard */\n DialogType[\"InsertLink\"] = \"InsertLink\";\n /** Defines ToolbarType as MultiRow */\n DialogType[\"InsertImage\"] = \"InsertImage\";\n /** Defines DialogType as Audio*/\n DialogType[\"InsertAudio\"] = \"InsertAudio\";\n /** Defines DialogType as Video*/\n DialogType[\"InsertVideo\"] = \"InsertVideo\";\n /** Defines ToolbarType as Scrollable */\n DialogType[\"InsertTable\"] = \"InsertTable\";\n /* eslint-enable */\n})(DialogType || (DialogType = {}));\n","/**\n * Rich Text Editor classes defined here.\n */\n/**\n * @hidden\n\n */\nexport var CLS_RTE = 'e-richtexteditor';\n/**\n * @hidden\n\n */\nexport var CLS_RTL = 'e-rtl';\n/**\n * @hidden\n\n */\nexport var CLS_CONTENT = 'e-content';\n/**\n * @hidden\n\n */\nexport var CLS_DISABLED = 'e-disabled';\n/**\n * @hidden\n\n */\nexport var CLS_SCRIPT_SHEET = 'rte-iframe-script-sheet';\n/**\n * @hidden\n\n */\nexport var CLS_STYLE_SHEET = 'rte-iframe-style-sheet';\n/**\n * @hidden\n\n */\nexport var CLS_TOOLBAR = 'e-rte-toolbar';\n/**\n * @hidden\n\n */\nexport var CLS_TB_FIXED = 'e-rte-tb-fixed';\n/**\n * @hidden\n\n */\nexport var CLS_TB_FLOAT = 'e-rte-tb-float';\n/**\n * @hidden\n\n */\nexport var CLS_TB_ABS_FLOAT = 'e-rte-tb-abs-float';\n/**\n * @hidden\n\n */\nexport var CLS_INLINE = 'e-rte-inline';\n/**\n * @hidden\n\n */\nexport var CLS_TB_INLINE = 'e-rte-tb-inline';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_EXPAND_TB = 'e-rte-tb-expand';\n/**\n * @hidden\n\n */\nexport var CLS_FULL_SCREEN = 'e-rte-full-screen';\n/**\n * @hidden\n\n */\nexport var CLS_QUICK_TB = 'e-rte-quick-toolbar';\n/**\n * @hidden\n\n */\nexport var CLS_POP = 'e-rte-pop';\n/**\n * @hidden\n\n */\nexport var CLS_TB_STATIC = 'e-tb-static';\n/**\n * @hidden\n\n */\nexport var CLS_QUICK_POP = 'e-rte-quick-popup';\n/**\n * @hidden\n\n */\nexport var CLS_QUICK_DROPDOWN = 'e-quick-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_IMAGE_POP = 'e-rte-image-popup';\n/**\n * @hidden\n\n */\nexport var CLS_INLINE_POP = 'e-rte-inline-popup';\n/**\n * @hidden\n\n */\nexport var CLS_INLINE_DROPDOWN = 'e-rte-inline-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_DROPDOWN_POPUP = 'e-rte-dropdown-popup';\n/**\n * @hidden\n\n */\nexport var CLS_DROPDOWN_ICONS = 'e-rte-dropdown-icons';\n/**\n * @hidden\n\n */\nexport var CLS_DROPDOWN_ITEMS = 'e-rte-dropdown-items';\n/**\n * @hidden\n\n */\nexport var CLS_DROPDOWN_BTN = 'e-rte-dropdown-btn';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_CONTENT = 'e-rte-content';\n/**\n * @hidden\n\n */\nexport var CLS_TB_ITEM = 'e-toolbar-item';\n/**\n * @hidden\n\n */\nexport var CLS_TB_EXTENDED = 'e-toolbar-extended';\n/**\n * @hidden\n\n */\nexport var CLS_TB_WRAP = 'e-toolbar-wrapper';\n/**\n * @hidden\n\n */\nexport var CLS_POPUP = 'e-popup';\n/**\n * @hidden\n\n */\nexport var CLS_SEPARATOR = 'e-separator';\n/**\n * @hidden\n\n */\nexport var CLS_MINIMIZE = 'e-minimize';\n/**\n * @hidden\n\n */\nexport var CLS_MAXIMIZE = 'e-maximize';\n/**\n * @hidden\n\n */\nexport var CLS_BACK = 'e-back';\n/**\n * @hidden\n\n */\nexport var CLS_SHOW = 'e-show';\n/**\n * @hidden\n\n */\nexport var CLS_HIDE = 'e-hide';\n/**\n * @hidden\n\n */\nexport var CLS_VISIBLE = 'e-visible';\n/**\n * @hidden\n\n */\nexport var CLS_FOCUS = 'e-focused';\n/**\n * @hidden\n\n */\nexport var CLS_RM_WHITE_SPACE = 'e-remove-white-space';\n/**\n * @hidden\n\n */\nexport var CLS_IMGRIGHT = 'e-imgright';\n/**\n * @hidden\n\n */\nexport var CLS_IMGLEFT = 'e-imgleft';\n/**\n * @hidden\n\n */\nexport var CLS_IMGCENTER = 'e-imgcenter';\n/**\n * @hidden\n\n */\nexport var CLS_IMGBREAK = 'e-imgbreak';\n/**\n * @hidden\n\n */\nexport var CLS_AUDIOBREAK = 'e-audio-break';\n/**\n * @hidden\n\n */\nexport var CLS_CLICKELEM = 'e-clickelem';\n/**\n * @hidden\n\n */\nexport var CLS_VID_CLICK_ELEM = 'e-video-clickelem';\n/**\n * @hidden\n\n */\nexport var CLS_AUDIOWRAP = 'e-audio-wrap';\n/**\n * @hidden\n\n */\nexport var CLS_VIDEOWRAP = 'e-video-wrap';\n/**\n * @hidden\n\n */\nexport var CLS_VIDEOBREAK = 'e-video-break';\n/**\n * @hidden\n\n */\nexport var CLS_CAPTION = 'e-img-caption';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_CAPTION = 'e-rte-img-caption';\n/**\n * @hidden\n\n */\nexport var CLS_CAPINLINE = 'e-caption-inline';\n/**\n * @hidden\n\n */\nexport var CLS_IMGINLINE = 'e-imginline';\n/**\n * @hidden\n\n */\nexport var CLS_AUDIOINLINE = 'e-audio-inline';\n/**\n * @hidden\n\n */\nexport var CLS_VIDEOINLINE = 'e-video-inline';\n/**\n * @hidden\n\n */\nexport var CLS_COUNT = 'e-rte-character-count';\n/**\n * @hidden\n\n */\nexport var CLS_WARNING = 'e-warning';\n/**\n * @hidden\n\n */\nexport var CLS_ERROR = 'e-error';\n/**\n * @hidden\n\n */\nexport var CLS_ICONS = 'e-icons';\n/**\n * @hidden\n\n */\nexport var CLS_ACTIVE = 'e-active';\n/**\n * @hidden\n\n */\nexport var CLS_EXPAND_OPEN = 'e-expand-open';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_ELEMENTS = 'e-rte-elements';\n/**\n * @hidden\n\n */\nexport var CLS_TB_BTN = 'e-tbar-btn';\n/**\n * @hidden\n\n */\nexport var CLS_HR_SEPARATOR = 'e-rte-horizontal-separator';\n/**\n * @hidden\n\n */\nexport var CLS_TB_IOS_FIX = 'e-tbar-ios-fixed';\n/**\n * @hidden\n\n */\nexport var CLS_LIST_PRIMARY_CONTENT = 'e-rte-list-primary-content';\n/**\n * @hidden\n\n */\nexport var CLS_NUMBERFORMATLIST_TB_BTN = 'e-rte-numberformatlist-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_BULLETFORMATLIST_TB_BTN = 'e-rte-bulletformatlist-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_FORMATS_TB_BTN = 'e-formats-tbar-btn';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_NAME_TB_BTN = 'e-font-name-tbar-btn';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_SIZE_TB_BTN = 'e-font-size-tbar-btn';\n/**\n * @hidden\n\n */\nexport var CLS_ALIGN_TB_BTN = 'e-alignment-tbar-btn';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_COLOR_TARGET = 'e-rte-fontcolor-element';\n/**\n * @hidden\n\n */\nexport var CLS_BACKGROUND_COLOR_TARGET = 'e-rte-backgroundcolor-element';\n/**\n * @hidden\n\n */\nexport var CLS_COLOR_CONTENT = 'e-rte-color-content';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_COLOR_DROPDOWN = 'e-rte-fontcolor-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_BACKGROUND_COLOR_DROPDOWN = 'e-rte-backgroundcolor-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_COLOR_PALETTE = 'e-rte-square-palette';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_COLOR_PICKER = 'e-rte-fontcolor-colorpicker';\n/**\n * @hidden\n\n */\nexport var CLS_BACKGROUND_COLOR_PICKER = 'e-rte-backgroundcolor-colorpicker';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_READONLY = 'e-rte-readonly';\n/**\n * @hidden\n\n */\nexport var CLS_TABLE_SEL = 'e-cell-select';\n/**\n * @hidden\n\n */\nexport var CLS_TB_DASH_BOR = 'e-dashed-border';\n/**\n * @hidden\n\n */\nexport var CLS_TB_ALT_BOR = 'e-alternate-border';\n/**\n * @hidden\n\n */\nexport var CLS_TB_COL_RES = 'e-column-resize';\n/**\n * @hidden\n\n */\nexport var CLS_TB_ROW_RES = 'e-row-resize';\n/**\n * @hidden\n\n */\nexport var CLS_TB_BOX_RES = 'e-table-box';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_HIDDEN = 'e-rte-hidden';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_KEEP_FORMAT = 'e-rte-keepformat';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_REMOVE_FORMAT = 'e-rte-removeformat';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_PLAIN_FORMAT = 'e-rte-plainformat';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_OK = 'e-rte-pasteok';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_CANCEL = 'e-rte-pastecancel';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_DIALOG_MIN_HEIGHT = 'e-rte-dialog-minheight';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_RES_HANDLE = 'e-resize-handle';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_RES_EAST = 'e-south-east';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_IMAGE = 'e-rte-image';\n/**\n * @hidden\n\n */\nexport var CLS_RESIZE = 'e-resize';\n/**\n * @hidden\n\n */\nexport var CLS_IMG_FOCUS = 'e-img-focus';\n/**\n * @hidden\n\n */\nexport var CLS_AUD_FOCUS = 'e-audio-focus';\n/**\n * @hidden\n\n */\nexport var CLS_VID_FOCUS = 'e-video-focus';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_DRAG_IMAGE = 'e-rte-drag-image';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_UPLOAD_POPUP = 'e-rte-upload-popup';\n/**\n * @hidden\n\n */\nexport var CLS_POPUP_OPEN = 'e-popup-open';\n/**\n * @hidden\n\n */\nexport var CLS_IMG_RESIZE = 'e-img-resize';\n/**\n * @hidden\n\n */\nexport var CLS_DROPAREA = 'e-droparea';\n/**\n * @hidden\n\n */\nexport var CLS_IMG_INNER = 'e-img-inner';\n/**\n * @hidden\n\n */\nexport var CLS_UPLOAD_FILES = 'e-upload-files';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_DIALOG_UPLOAD = 'e-rte-dialog-upload';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_RES_CNT = 'e-rte-resize';\n/**\n * @hidden\n\n */\nexport var CLS_CUSTOM_TILE = 'e-custom-tile';\n/**\n * @hidden\n\n */\nexport var CLS_NOCOLOR_ITEM = 'e-nocolor-item';\n/**\n * @hidden\n\n */\nexport var CLS_TABLE = 'e-rte-table';\n/**\n * @hidden\n\n */\nexport var CLS_TABLE_BORDER = 'e-rte-table-border';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_TABLE_RESIZE = 'e-rte-table-resize';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_FIXED_TB_EXPAND = 'e-rte-fixed-tb-expand';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_TB_ENABLED = 'e-rte-toolbar-enabled';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_RES_WEST = 'e-south-west';\n","import { RenderType } from '../base/enum';\nimport * as events from '../base/constant';\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IRichTextEditor} parent - specifies the parent\n * @param {ServiceLocator} locator - specifies the locator.\n * @returns {void}\n */\n function Render(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize Rich Text Editor header, content and footer rendering\n *\n * @returns {void}\n * @hidden\n\n */\n Render.prototype.render = function () {\n // eslint-disable-next-line\n var rteObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.contentRenderer.renderPanel();\n };\n /**\n * Refresh the entire RichTextEditor.\n *\n * @param {NotifyArgs} e - specifies the arguments.\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n if (e === void 0) { e = { requestType: 'refresh' }; }\n this.parent.notify(e.requestType + \"-begin\", e);\n };\n /**\n * Destroy the entire RichTextEditor.\n *\n * @returns {void}\n */\n Render.prototype.destroy = function () {\n this.removeEventListener();\n };\n Render.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n Render.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.keyUp, this.keyUp, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n Render.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.modelChanged, this.refresh);\n this.parent.off(events.keyUp, this.keyUp);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n Render.prototype.keyUp = function (e) {\n if (this.parent.editorMode === 'HTML') {\n switch (e.args.which) {\n case 46:\n case 8:\n // eslint-disable-next-line\n var childNodes = this.parent.contentModule.getEditPanel().childNodes;\n if ((childNodes.length === 0) ||\n (childNodes.length === 1 && childNodes[0].childNodes.length === 0 && ((childNodes[0].tagName === 'BR') ||\n ((childNodes[0].tagName === 'P' || childNodes[0].tagName === 'DIV') && childNodes[0].textContent === '')))) {\n var node = this.parent.contentModule.getEditPanel();\n if (this.parent.enterKey === 'DIV') {\n node.innerHTML = '

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


';\n }\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), node.childNodes[0], 0);\n }\n break;\n }\n }\n };\n return Render;\n}());\nexport { Render };\n","/**\n * Constant values for Common\n */\n/**\n * Keydown event trigger\n *\n * @hidden\n */\nexport var KEY_DOWN = 'keydown';\n/**\n * Undo and Redo action HTML plugin events\n *\n * @hidden\n */\nexport var ACTION = 'action';\n/**\n * Formats plugin events\n *\n * @hidden\n */\nexport var FORMAT_TYPE = 'format-type';\n/**\n * Keydown handler event trigger\n *\n * @hidden\n */\nexport var KEY_DOWN_HANDLER = 'keydown-handler';\n/**\n * List plugin events\n *\n * @hidden\n */\nexport var LIST_TYPE = 'list-type';\n/**\n * Keyup handler event trigger\n *\n * @hidden\n */\nexport var KEY_UP_HANDLER = 'keyup-handler';\n/**\n * Keyup event trigger\n *\n * @hidden\n */\nexport var KEY_UP = 'keyup';\n/**\n * Model changed plugin event trigger\n *\n * @hidden\n */\nexport var MODEL_CHANGED_PLUGIN = 'model_changed_plugin';\n/**\n * Model changed event trigger\n *\n * @hidden\n */\nexport var MODEL_CHANGED = 'model_changed';\n/**\n * PasteCleanup plugin for MSWord content\n *\n * @hidden\n */\nexport var MS_WORD_CLEANUP_PLUGIN = 'ms_word_cleanup_plugin';\n/**\n * PasteCleanup for MSWord content\n *\n * @hidden\n */\nexport var MS_WORD_CLEANUP = 'ms_word_cleanup';\n/**\n * ActionBegin event callback\n *\n * @hidden\n */\nexport var ON_BEGIN = 'onBegin';\n/**\n * Callback for spacelist action\n *\n * @hidden\n */\nexport var SPACE_ACTION = 'actionBegin';\n/**\n * Format painter event constant\n *\n * @hidden\n */\nexport var FORMAT_PAINTER_ACTIONS = 'format_painter_actions';\n/**\n * Emoji picker event constant\n *\n * @hidden\n */\nexport var EMOJI_PICKER_ACTIONS = 'emoji_picker_actions';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from '@syncfusion/ej2-base';\nimport { Base } from '@syncfusion/ej2-base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222,\n ']': 221,\n '[': 219,\n '=': 187\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n *\n * @hidden\n\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element - specifies the elements.\n * @param {KeyboardEventsModel} options - specify the options\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e - specifies the event arguments.\n * @returns {void}\n */\n _this.keyPressHandler = function (e) {\n /* eslint-disable */\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var isMetaKey = e.metaKey;\n /* eslint-enable */\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && (isCtrlKey === rKeyObj.ctrlKey || isMetaKey) &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n }\n }\n }\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void}\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp - specifies the keyboard event.\n * @param {KeyboardEventsModel} oldProp - specifies the old property.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {void}\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void}\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void}\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} - specifies the key data\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { removeClass, selectAll, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { CLS_EXPAND_OPEN, CLS_TB_ITEM, CLS_ACTIVE } from '../base/classes';\nimport * as CONSTANT from '../../common/constant';\nimport { RenderType } from '../base/enum';\nimport { KeyboardEvents } from '../actions/keyboard';\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n\n */\nvar ViewSource = /** @class */ (function () {\n /**\n * Constructor for view source module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n * @param {ServiceLocator} locator - specifies the locator.\n * @returns {void}\n */\n function ViewSource(parent, locator) {\n this.parent = parent;\n var serviceLocator = locator;\n this.rendererFactory = serviceLocator.getService('rendererFactory');\n this.addEventListener();\n }\n ViewSource.prototype.addEventListener = function () {\n this.parent.on(events.sourceCode, this.sourceCode, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.updateSource, this.updateSourceCode, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n ViewSource.prototype.onInitialEnd = function () {\n this.parent.formatter.editorManager.observer.on(CONSTANT.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n ViewSource.prototype.removeEventListener = function () {\n this.unWireEvent();\n this.parent.off(events.sourceCode, this.sourceCode);\n this.parent.off(events.updateSource, this.updateSourceCode);\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n this.parent.formatter.editorManager.observer.off(CONSTANT.KEY_DOWN_HANDLER, this.onKeyDown);\n };\n ViewSource.prototype.getSourceCode = function () {\n return this.parent.createElement('textarea', { className: 'e-rte-srctextarea' + ' ' + this.parent.cssClass });\n };\n ViewSource.prototype.wireEvent = function (element) {\n this.keyboardModule = new KeyboardEvents(element, {\n keyAction: this.previewKeyDown.bind(this), keyConfigs: this.parent.formatter.keyConfig, eventName: 'keydown'\n });\n EventHandler.add(this.previewElement, 'mousedown', this.mouseDownHandler, this);\n };\n ViewSource.prototype.unWireEvent = function () {\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n if (this.previewElement) {\n EventHandler.remove(this.previewElement, 'mousedown', this.mouseDownHandler);\n }\n };\n ViewSource.prototype.wireBaseKeyDown = function () {\n this.parent.keyboardModule = new KeyboardEvents(this.contentModule.getEditPanel(), {\n keyAction: this.parent.keyDown.bind(this.parent), keyConfigs: this.parent.formatter.keyConfig, eventName: 'keydown'\n });\n };\n ViewSource.prototype.unWireBaseKeyDown = function () {\n this.parent.keyboardModule.destroy();\n };\n ViewSource.prototype.mouseDownHandler = function (e) {\n this.parent.notify(events.sourceCodeMouseDown, { args: e });\n };\n ViewSource.prototype.previewKeyDown = function (event) {\n switch (event.action) {\n case 'html-source':\n this.updateSourceCode(event);\n event.preventDefault();\n break;\n case 'toolbar-focus':\n if (this.parent.toolbarSettings.enable) {\n var selector = '.e-toolbar-item[title] [tabindex]';\n this.parent.toolbarModule.baseToolbar.toolbarObj.element.querySelector(selector).focus();\n }\n break;\n }\n };\n ViewSource.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'html-source':\n e.event.preventDefault();\n this.sourceCode(e);\n e.callBack({\n requestType: 'SourceCode',\n editorMode: 'HTML',\n event: e.event\n });\n break;\n }\n };\n /**\n * sourceCode method\n *\n * @param {ClickEventArgs} args - specifies the click event.\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.sourceCode = function (args) {\n this.parent.isBlur = false;\n this.parent.trigger(events.actionBegin, { requestType: 'SourceCode', targetItem: 'SourceCode', args: args });\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.parent.element);\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n this.parent.notify(events.updateToolbarItem, {\n targetItem: 'SourceCode', updateItem: 'Preview',\n baseToolbar: this.parent.getBaseToolbarObject()\n });\n if (isNullOrUndefined(this.previewElement)) {\n this.previewElement = this.getSourceCode();\n }\n this.parent.updateValueData();\n if (this.parent.iframeSettings.enable) {\n var rteContent = void 0;\n if (isNullOrUndefined(this.parent.element.querySelector('#' + this.parent.element.id + '_source-view'))) {\n rteContent = this.parent.createElement('div', {\n className: 'e-source-content', id: this.parent.element.id + '_source-view'\n });\n }\n else {\n rteContent = this.parent.element.querySelector('#' + this.parent.element.id + '_source-view');\n }\n rteContent.appendChild(this.previewElement);\n this.parent.element.appendChild(rteContent);\n rteContent.style.height = this.contentModule.getPanel().style.height;\n rteContent.style.marginTop = this.contentModule.getPanel().style.marginTop;\n this.getPanel().value = this.getTextAreaValue();\n this.contentModule.getPanel().style.display = 'none';\n rteContent.style.display = 'block';\n this.getPanel().style.display = 'block';\n }\n else {\n this.contentModule.getPanel().appendChild(this.previewElement);\n this.getPanel().value = this.getTextAreaValue();\n this.contentModule.getEditPanel().style.display = 'none';\n this.previewElement.style.display = 'block';\n }\n this.parent.isBlur = false;\n this.parent.disableToolbarItem(this.parent.toolbarSettings.items);\n this.parent.enableToolbarItem('SourceCode');\n if (this.parent.getToolbar()) {\n removeClass([this.parent.getToolbar()], [CLS_EXPAND_OPEN]);\n }\n removeClass(tbItems, [CLS_ACTIVE]);\n this.parent.setContentHeight('sourceCode', true);\n this.wireEvent(this.previewElement);\n this.unWireBaseKeyDown();\n this.previewElement.focus();\n this.parent.updateValue();\n if (!isNullOrUndefined(this.parent.placeholder) && !this.parent.iframeSettings.enable) {\n var placeHolderWrapper = this.parent.element.querySelector('.rte-placeholder.e-rte-placeholder');\n placeHolderWrapper.style.display = 'none';\n }\n this.parent.trigger(events.actionComplete, { requestType: 'SourceCode', targetItem: 'SourceCode', args: args });\n this.parent.invokeChangeEvent();\n };\n /**\n * updateSourceCode method\n *\n * @param {ClickEventArgs} args - specifies the click event.\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.updateSourceCode = function (args) {\n this.parent.isBlur = false;\n this.parent.trigger(events.actionBegin, { requestType: 'Preview', targetItem: 'Preview', args: args });\n var editHTML = this.getPanel();\n this.parent.notify(events.updateToolbarItem, {\n targetItem: 'Preview', updateItem: 'SourceCode',\n baseToolbar: this.parent.getBaseToolbarObject()\n });\n var serializeValue = this.parent.serializeValue(editHTML.value);\n var value;\n if (serializeValue === null || serializeValue === '') {\n if (this.parent.enterKey === 'DIV') {\n value = '

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


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


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

') ||\n (this.contentModule.getEditPanel().innerHTML === '
') ||\n (this.contentModule.getEditPanel().childNodes.length === 1 &&\n (this.contentModule.getEditPanel().childNodes[0].tagName === 'P' &&\n this.contentModule.getEditPanel().innerHTML.length === 7) ||\n (this.contentModule.getEditPanel().childNodes[0].tagName === 'DIV' &&\n this.contentModule.getEditPanel().innerHTML.length === 11)) ? '' : this.parent.value;\n };\n /**\n * getPanel method\n *\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.getPanel = function () {\n return this.parent.element && this.parent.element.querySelector('.e-rte-srctextarea');\n };\n /**\n * getViewPanel method\n *\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.getViewPanel = function () {\n return (this.parent.iframeSettings.enable && this.getPanel()) ? this.getPanel().parentElement : this.getPanel();\n };\n /**\n * Destroy the entire RichTextEditor.\n *\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.destroy = function () {\n this.removeEventListener();\n };\n ViewSource.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n return ViewSource;\n}());\nexport { ViewSource };\n","/**\n * @hidden\n\n */\nexport var executeGroup = {\n 'bold': {\n command: 'Style',\n subCommand: 'Bold',\n value: 'strong'\n },\n 'italic': {\n command: 'Style',\n subCommand: 'Italic',\n value: 'em'\n },\n 'underline': {\n command: 'Style',\n subCommand: 'Underline',\n value: 'span'\n },\n 'strikeThrough': {\n command: 'Style',\n subCommand: 'StrikeThrough',\n value: 'span'\n },\n 'insertCode': {\n command: 'Formats',\n subCommand: 'Pre',\n value: 'pre'\n },\n 'superscript': {\n command: 'Effects',\n subCommand: 'SuperScript',\n value: 'sup'\n },\n 'subscript': {\n command: 'Effects',\n subCommand: 'SubScript',\n value: 'sub'\n },\n 'uppercase': {\n command: 'Casing',\n subCommand: 'UpperCase'\n },\n 'lowercase': {\n command: 'Casing',\n subCommand: 'LowerCase'\n },\n 'fontColor': {\n command: 'font',\n subCommand: 'fontcolor',\n value: '#ff0000'\n },\n 'fontName': {\n command: 'font',\n subCommand: 'fontname',\n value: 'Segoe UI'\n },\n 'fontSize': {\n command: 'font',\n subCommand: 'fontsize',\n value: '10pt'\n },\n 'backColor': {\n command: 'font',\n subCommand: 'backgroundcolor',\n value: '#ffff00'\n },\n 'justifyCenter': {\n command: 'Alignments',\n subCommand: 'JustifyCenter'\n },\n 'justifyFull': {\n command: 'Alignments',\n subCommand: 'JustifyFull'\n },\n 'justifyLeft': {\n command: 'Alignments',\n subCommand: 'JustifyLeft'\n },\n 'justifyRight': {\n command: 'Alignments',\n subCommand: 'JustifyRight'\n },\n 'undo': {\n command: 'Actions',\n subCommand: 'Undo'\n },\n 'redo': {\n command: 'Actions',\n subCommand: 'Redo'\n },\n 'createLink': {\n command: 'Links',\n subCommand: 'createLink'\n },\n 'editLink': {\n command: 'Links',\n subCommand: 'createLink'\n },\n 'createImage': {\n command: 'Images',\n subCommand: 'Images'\n },\n 'formatBlock': {\n command: 'Formats',\n value: 'P'\n },\n 'heading': {\n command: 'Formats',\n value: 'H1'\n },\n 'indent': {\n command: 'Indents',\n subCommand: 'Indent'\n },\n 'outdent': {\n command: 'Indents',\n subCommand: 'Outdent'\n },\n 'insertHTML': {\n command: 'InsertHTML',\n subCommand: 'InsertHTML',\n value: ''\n },\n 'insertText': {\n command: 'InsertText',\n subCommand: 'InsertText',\n value: ''\n },\n 'insertHorizontalRule': {\n command: 'InsertHTML',\n subCommand: 'InsertHTML',\n value: '
'\n },\n 'insertImage': {\n command: 'Images',\n subCommand: 'Image'\n },\n 'insertAudio': {\n command: 'Audios',\n subCommand: 'Audio'\n },\n 'insertVideo': {\n command: 'Videos',\n subCommand: 'Video'\n },\n 'editImage': {\n command: 'Images',\n subCommand: 'Image'\n },\n 'insertTable': {\n command: 'Table',\n subCommand: 'CreateTable'\n },\n 'insertBrOnReturn': {\n command: 'InsertHTML',\n subCommand: 'InsertHTML',\n value: '
'\n },\n 'insertOrderedList': {\n command: 'Lists',\n value: 'OL'\n },\n 'insertUnorderedList': {\n command: 'Lists',\n value: 'UL'\n },\n 'insertParagraph': {\n command: 'Formats',\n value: 'P'\n },\n 'removeFormat': {\n command: 'Clear',\n subCommand: 'ClearFormat'\n },\n 'copyFormatPainter': {\n command: 'FormatPainter',\n value: 'format-copy'\n },\n 'applyFormatPainter': {\n command: 'FormatPainter',\n value: 'format-paste'\n },\n 'escapeFormatPainter': {\n command: 'FormatPainter',\n value: 'escape'\n }\n};\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * ServiceLocator\n *\n * @hidden\n\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n /* eslint-disable */\n /**\n * register method\n *\n * @param {string} name - specifies the name.\n * @param {T} type - specifies the type.\n * @returns {void}\n * @hidden\n\n */\n /* eslint-enable */\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n /**\n * getService method\n *\n * @param {string} name - specifies the name.\n * @returns {void}\n * @hidden\n\n */\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n /**\n * addRenderer method\n *\n * @param {RenderType} name - specifies the render type\n * @param {IRenderer} type - specifies the renderer.\n * @returns {void}\n * @hidden\n\n */\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n /**\n * getRenderer method\n *\n * @param {RenderType} name - specifies the render type\n * @returns {void}\n * @hidden\n\n */\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","import * as events from '../base/constant';\nimport { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\n/**\n * `ExecCommandCallBack` module is used to run the editor manager command\n */\nvar ExecCommandCallBack = /** @class */ (function () {\n function ExecCommandCallBack(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n ExecCommandCallBack.prototype.addEventListener = function () {\n this.parent.on(events.execCommandCallBack, this.commandCallBack, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n ExecCommandCallBack.prototype.commandCallBack = function (args) {\n var formatPainterCopy = !isNOU(args.requestType) && args.requestType === 'FormatPainter' && args.action === 'format-copy';\n if (!isNOU(args) && !isNOU(args.requestType) && args.requestType !== 'Undo' && args.requestType !== 'Redo' && !formatPainterCopy) {\n this.parent.formatter.saveData();\n }\n this.parent.notify(events.toolbarRefresh, { args: args });\n this.parent.notify(events.count, {});\n };\n ExecCommandCallBack.prototype.removeEventListener = function () {\n this.parent.off(events.execCommandCallBack, this.commandCallBack);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n return ExecCommandCallBack;\n}());\nexport { ExecCommandCallBack };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, initializeCSPTemplate } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120, isPrimaryKey: true,\n template: initializeCSPTemplate(function (data) {\n return \"\" + data.name + \"\";\n }),\n customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110',\n template: initializeCSPTemplate(function (data) {\n return \"\" + data.size + \"\";\n }), format: 'n2'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], SearchSettings.prototype, \"placeholder\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var toolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(toolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\n","/* eslint-disable */\n/**\n * Export items model\n */\nexport var templateItems = ['alignments', 'formats', 'fontname', 'fontsize', 'fontcolor', 'backgroundcolor', 'align', 'display', 'audiolayoutoption', 'videolayoutoption', 'videoalign', 'tablerows', 'tablecolumns', 'tablecell', 'tablecellhorizontalalign', 'tablecellverticalalign', 'styles', 'numberformatlist', 'bulletformatlist'];\nexport var tools = {\n 'alignments': {\n 'id': 'Alignments',\n 'icon': 'e-alignments',\n 'tooltip': 'Alignments',\n 'command': 'Alignments',\n 'subCommand': 'Alignments'\n },\n 'justifyleft': {\n 'id': 'JustifyLeft',\n 'icon': 'e-justify-left',\n 'tooltip': 'JustifyLeft',\n 'command': 'Alignments',\n 'subCommand': 'JustifyLeft'\n },\n 'justifycenter': {\n 'id': 'JustifyCenter',\n 'icon': 'e-justify-center',\n 'tooltip': 'JustifyCenter',\n 'command': 'Alignments',\n 'subCommand': 'JustifyCenter'\n },\n 'justifyright': {\n 'id': 'JustifyRight',\n 'icon': 'e-justify-right',\n 'tooltip': 'JustifyRight',\n 'command': 'Alignments',\n 'subCommand': 'JustifyRight'\n },\n 'justifyfull': {\n 'id': 'JustifyFull',\n 'icon': 'e-justify-full',\n 'tooltip': 'JustifyFull',\n 'command': 'Alignments',\n 'subCommand': 'JustifyFull'\n },\n 'fontname': {\n 'id': 'FontName',\n 'icon': 'e-font-name',\n 'tooltip': 'Font Name',\n 'command': 'Font',\n 'subCommand': 'FontName'\n },\n 'fontsize': {\n 'id': 'FontSize',\n 'icon': 'e-font-size',\n 'tooltip': 'Font Size',\n 'command': 'Font',\n 'subCommand': 'FontSize'\n },\n 'fontcolor': {\n 'id': 'FontColor',\n 'icon': 'e-rte-font-color',\n 'tooltip': 'Font Color',\n 'command': 'Font',\n 'subCommand': 'FontColor',\n 'value': '#ff0000ff'\n },\n 'backgroundcolor': {\n 'id': 'BackgroundColor',\n 'icon': 'e-background-color',\n 'tooltip': 'Background Color',\n 'command': 'Font',\n 'subCommand': 'BackgroundColor',\n 'value': '#ffff00ff'\n },\n 'bold': {\n 'id': 'Bold',\n 'icon': 'e-bold',\n 'tooltip': 'Bold',\n 'command': 'Style',\n 'subCommand': 'Bold'\n },\n 'italic': {\n 'id': 'Italic',\n 'icon': 'e-italic',\n 'tooltip': 'Italic',\n 'command': 'Style',\n 'subCommand': 'Italic'\n },\n 'underline': {\n 'id': 'Underline',\n 'icon': 'e-underline',\n 'tooltip': 'Underline',\n 'command': 'Style',\n 'subCommand': 'Underline'\n },\n 'strikethrough': {\n 'id': 'StrikeThrough',\n 'icon': 'e-strike-through',\n 'tooltip': 'StrikeThrough',\n 'command': 'Style',\n 'subCommand': 'StrikeThrough'\n },\n 'clearformat': {\n 'id': 'ClearFormat',\n 'icon': 'e-clear-format',\n 'tooltip': 'Clear Format',\n 'command': 'Clear',\n 'subCommand': 'ClearFormat'\n },\n 'clearall': {\n 'id': 'ClearAll',\n 'icon': 'e-clear-all',\n 'tooltip': 'Clear All',\n 'command': 'Clear',\n 'subCommand': 'ClearAll'\n },\n 'cut': {\n 'id': 'Cut',\n 'icon': 'e-cut',\n 'tooltip': 'Cut',\n 'command': 'ClipBoard',\n 'subCommand': 'Cut'\n },\n 'copy': {\n 'id': 'Copy',\n 'icon': 'e-copy',\n 'tooltip': 'Copy',\n 'command': 'ClipBoard',\n 'subCommand': 'Copy'\n },\n 'paste': {\n 'id': 'Paste',\n 'icon': 'e-paste',\n 'tooltip': 'Paste',\n 'command': 'ClipBoard',\n 'subCommand': 'Paste'\n },\n 'unorderedlist': {\n 'id': 'UnorderedList',\n 'icon': 'e-unorder-list',\n 'tooltip': 'Bulleted List',\n 'command': 'Lists',\n 'subCommand': 'UL'\n },\n 'orderedlist': {\n 'id': 'OrderedList',\n 'icon': 'e-order-list',\n 'tooltip': 'Numbered List',\n 'command': 'Lists',\n 'subCommand': 'OL'\n },\n 'numberformatlist': {\n 'id': 'NumberFormatList',\n 'icon': 'e-order-list',\n 'tooltip': 'Number Format List',\n 'command': 'NumberFormatList',\n 'subCommand': 'NumberFormatList'\n },\n 'bulletformatlist': {\n 'id': 'BulletFormatList',\n 'icon': 'e-unorder-list',\n 'tooltip': 'Bullet Format List',\n 'command': 'BulletFormatList',\n 'subCommand': 'BulletFormatList'\n },\n 'indent': {\n 'id': 'Indent',\n 'icon': 'e-indent',\n 'tooltip': 'Increase Indent',\n 'command': 'Indents',\n 'subCommand': 'Indent'\n },\n 'outdent': {\n 'id': 'Outdent',\n 'icon': 'e-outdent',\n 'tooltip': 'Decrease Indent',\n 'command': 'Indents',\n 'subCommand': 'Outdent'\n },\n 'undo': {\n 'id': 'Undo',\n 'icon': 'e-undo',\n 'tooltip': 'Undo',\n 'command': 'Actions',\n 'subCommand': 'Undo'\n },\n 'redo': {\n 'id': 'Redo',\n 'icon': 'e-redo',\n 'tooltip': 'Redo',\n 'command': 'Actions',\n 'subCommand': 'Redo'\n },\n 'superscript': {\n 'id': 'SuperScript',\n 'icon': 'e-super-script',\n 'tooltip': 'Superscript',\n 'command': 'Effects',\n 'subCommand': 'SuperScript'\n },\n 'subscript': {\n 'id': 'SubScript',\n 'icon': 'e-sub-script',\n 'tooltip': 'Subscript',\n 'command': 'Effects',\n 'subCommand': 'SubScript'\n },\n 'createlink': {\n 'id': 'CreateLink',\n 'icon': 'e-create-link',\n 'tooltip': 'Insert Hyperlink',\n 'command': 'Links',\n 'subCommand': 'CreateLink'\n },\n 'openlink': {\n 'id': 'OpenLink',\n 'icon': 'e-open-link',\n 'tooltip': 'Open Link',\n 'command': 'Links',\n 'subCommand': 'OpenLink'\n },\n 'editlink': {\n 'id': 'EditLink',\n 'icon': 'e-edit-link',\n 'tooltip': 'Edit Link',\n 'command': 'Links',\n 'subCommand': 'EditLink'\n },\n 'removelink': {\n 'id': 'RemoveLink',\n 'icon': 'e-remove-link',\n 'tooltip': 'Remove Link',\n 'command': 'Links',\n 'subCommand': 'RemoveLink'\n },\n 'image': {\n 'id': 'Image',\n 'icon': 'e-image',\n 'tooltip': 'Insert Image',\n 'command': 'Images',\n 'subCommand': 'Image'\n },\n 'audio': {\n 'id': 'Audio',\n 'icon': 'e-audio',\n 'tooltip': 'Insert Audio',\n 'command': 'Audios',\n 'subCommand': 'Audio'\n },\n 'video': {\n 'id': 'Video',\n 'icon': 'e-video',\n 'tooltip': 'Insert Video',\n 'command': 'Videos',\n 'subCommand': 'Video'\n },\n 'filemanager': {\n 'id': 'FileManager',\n 'icon': 'e-rte-file-manager',\n 'tooltip': 'File Manager',\n 'command': 'Files',\n 'subCommand': 'File'\n },\n 'createtable': {\n 'id': 'CreateTable',\n 'icon': 'e-create-table',\n 'tooltip': 'Create Table',\n 'command': 'Table',\n 'subCommand': 'CreateTable'\n },\n 'removetable': {\n 'id': 'removeTable',\n 'icon': 'e-remove-table',\n 'tooltip': 'Remove Table',\n 'command': 'removeTable',\n 'subCommand': 'removeTable'\n },\n 'replace': {\n 'id': 'Replace',\n 'icon': 'e-replace',\n 'tooltip': 'Replace',\n 'command': 'Images',\n 'subCommand': 'Replace'\n },\n 'audioreplace': {\n 'id': 'AudioReplace',\n 'icon': 'e-audio-replace',\n 'tooltip': 'Audio Replace',\n 'command': 'Audios',\n 'subCommand': 'AudioReplace'\n },\n 'audioremove': {\n 'id': 'AudioRemove',\n 'icon': 'e-audio-remove',\n 'tooltip': 'Audio Remove',\n 'command': 'Audios',\n 'subCommand': 'AudioRemove'\n },\n 'audiolayoutoption': {\n 'id': 'AudioLayoutOption',\n 'icon': 'e-audio-display',\n 'tooltip': 'Audio LayoutOption',\n 'command': 'Audios',\n 'subCommand': 'AudioLayoutOption'\n },\n 'videoreplace': {\n 'id': 'VideoReplace',\n 'icon': 'e-video-replace',\n 'tooltip': 'Video Replace',\n 'command': 'Videos',\n 'subCommand': 'VideoReplace'\n },\n 'videoalign': {\n 'id': 'VideoAlign',\n 'icon': 'e-video-align',\n 'tooltip': 'Video Align',\n 'command': 'Videos',\n 'subCommand': 'VideoAlign'\n },\n 'videoremove': {\n 'id': 'VideoRemove',\n 'icon': 'e-video-remove',\n 'tooltip': 'Video Remove',\n 'command': 'Videos',\n 'subCommand': 'VideoRemove'\n },\n 'videolayoutoption': {\n 'id': 'VideoLayoutOption',\n 'icon': 'e-video-display',\n 'tooltip': 'Video LayoutOption',\n 'command': 'Videos',\n 'subCommand': 'VideoLayoutOption'\n },\n 'videodimension': {\n 'id': 'VideoDimension',\n 'icon': 'e-video-dimension',\n 'tooltip': 'Video Dimension',\n 'command': 'Videos',\n 'subCommand': 'VideoDimension'\n },\n 'align': {\n 'id': 'Align',\n 'icon': 'e-align',\n 'tooltip': 'Align',\n 'command': 'Images',\n 'subCommand': 'Align'\n },\n 'caption': {\n 'id': 'Caption',\n 'icon': 'e-caption',\n 'tooltip': 'Image Caption',\n 'command': 'Images',\n 'subCommand': 'Caption'\n },\n 'remove': {\n 'id': 'Remove',\n 'icon': 'e-remove',\n 'tooltip': 'Remove',\n 'command': 'Images',\n 'subCommand': 'Remove'\n },\n 'openimagelink': {\n 'id': 'OpenImageLink',\n 'icon': 'e-open-link',\n 'tooltip': 'Open Link',\n 'command': 'Images',\n 'subCommand': 'OpenImageLink'\n },\n 'editimagelink': {\n 'id': 'EditImageLink',\n 'icon': 'e-edit-link',\n 'tooltip': 'Edit Link',\n 'command': 'Images',\n 'subCommand': 'EditImageLink'\n },\n 'removeimagelink': {\n 'id': 'RemoveImageLink',\n 'icon': 'e-remove-link',\n 'tooltip': 'Remove Link',\n 'command': 'Images',\n 'subCommand': 'RemoveImageLink'\n },\n 'insertlink': {\n 'id': 'InsertLink',\n 'icon': 'e-insert-link',\n 'tooltip': 'Insert Link',\n 'command': 'Images',\n 'subCommand': 'InsertLink'\n },\n 'display': {\n 'id': 'Display',\n 'icon': 'e-display',\n 'tooltip': 'Display',\n 'command': 'Images',\n 'subCommand': 'Display'\n },\n 'alttext': {\n 'id': 'AltText',\n 'icon': 'e-alt-text',\n 'tooltip': 'Alternative Text',\n 'command': 'Images',\n 'subCommand': 'AltText'\n },\n 'dimension': {\n 'id': 'Dimension',\n 'icon': 'e-img-dimension',\n 'tooltip': 'Change Size',\n 'command': 'Images',\n 'subCommand': 'Dimension'\n },\n 'fullscreen': {\n 'id': 'Maximize',\n 'icon': 'e-maximize',\n 'tooltip': 'Maximize',\n 'command': 'View',\n 'subCommand': 'Maximize'\n },\n 'maximize': {\n 'id': 'Maximize',\n 'icon': 'e-maximize',\n 'tooltip': 'Maximize',\n 'command': 'FullScreen',\n 'subCommand': 'Maximize'\n },\n 'minimize': {\n 'id': 'Minimize',\n 'icon': 'e-minimize',\n 'tooltip': 'Minimize',\n 'command': 'FullScreen',\n 'subCommand': 'Minimize'\n },\n 'lowercase': {\n 'id': 'LowerCase',\n 'icon': 'e-lower-case',\n 'tooltip': 'Lower Case',\n 'command': 'Casing',\n 'subCommand': 'LowerCase'\n },\n 'uppercase': {\n 'id': 'UpperCase',\n 'icon': 'e-upper-case',\n 'tooltip': 'Upper Case',\n 'command': 'Casing',\n 'subCommand': 'UpperCase'\n },\n 'print': {\n 'id': 'Print',\n 'icon': 'e-print',\n 'tooltip': 'Print',\n 'command': 'Print',\n 'subCommand': 'Print'\n },\n 'formats': {\n 'id': 'Formats',\n 'icon': 'e-formats',\n 'tooltip': 'Formats',\n 'command': 'Formats',\n 'subCommand': 'Formats'\n },\n 'sourcecode': {\n 'id': 'SourceCode',\n 'icon': 'e-source-code',\n 'tooltip': 'Source Code',\n 'command': 'SourceCode',\n 'subCommand': 'SourceCode'\n },\n 'preview': {\n 'id': 'Preview',\n 'icon': 'e-preview',\n 'tooltip': 'Preview',\n 'command': 'Preview',\n 'subCommand': 'Preview'\n },\n 'viewside': {\n 'id': 'ViewSide',\n 'icon': 'e-view-side',\n 'tooltip': 'ViewSide',\n 'command': 'ViewSide',\n 'subCommand': 'ViewSide'\n },\n 'insertcode': {\n 'id': 'InsertCode',\n 'icon': 'e-insert-code',\n 'tooltip': 'Insert Code',\n 'command': 'Formats',\n 'subCommand': 'Pre'\n },\n 'tableheader': {\n 'id': 'TableHeader',\n 'icon': 'e-table-header',\n 'tooltip': 'Table Header',\n 'command': 'Table',\n 'subCommand': 'TableHeader'\n },\n 'tableremove': {\n 'id': 'TableRemove',\n 'icon': 'e-table-remove',\n 'tooltip': 'Table Remove',\n 'command': 'Table',\n 'subCommand': 'TableRemove'\n },\n 'tablerows': {\n 'id': 'TableRows',\n 'icon': 'e-table-rows',\n 'tooltip': 'Table Rows',\n 'command': 'Table',\n 'subCommand': 'TableRows'\n },\n 'tablecolumns': {\n 'id': 'TableColumns',\n 'icon': 'e-table-columns',\n 'tooltip': 'Table Columns',\n 'command': 'Table',\n 'subCommand': 'TableColumns'\n },\n 'tablecell': {\n 'id': 'TableCell',\n 'icon': 'e-table-cell',\n 'tooltip': 'Table Cell',\n 'command': 'Table',\n 'subCommand': 'TableCell'\n },\n 'tablecellbackground': {\n 'id': 'TableCellBackground',\n 'icon': 'e-table-cell-background',\n 'tooltip': 'Table Cell Background',\n 'command': 'Table',\n 'subCommand': 'TableCellBackground'\n },\n 'tablecellhorizontalalign': {\n 'id': 'TableCellHorizontalAlign',\n 'icon': 'e-table-cell-horizontalAlign',\n 'tooltip': 'Table Cell HorizontalAlign',\n 'command': 'Table',\n 'subCommand': 'TableCellHorizontalAlign'\n },\n 'tablecellverticalalign': {\n 'id': 'TableCellVerticalAlign',\n 'icon': 'e-table-cell-verticalAlign',\n 'tooltip': 'Table Cell VerticalAlign',\n 'command': 'Table',\n 'subCommand': 'TableCellVerticalAlign'\n },\n 'tableeditproperties': {\n 'id': 'TableEditProperties',\n 'icon': 'e-table-edit-properties',\n 'tooltip': 'Table Edit Properties',\n 'command': 'Table',\n 'subCommand': 'TableEditProperties'\n },\n 'styles': {\n 'id': 'Styles',\n 'icon': 'e-table-styles',\n 'tooltip': 'Styles',\n 'command': 'Table',\n 'subCommand': 'Styles'\n },\n 'formatpainter': {\n 'id': 'FormatPainter',\n 'icon': 'e-rte-format-painter',\n 'tooltip': 'Format Painter',\n 'command': 'FormatPainter',\n 'subCommand': 'FormatPainter'\n },\n 'emojipicker': {\n 'id': 'EmojiPicker',\n 'icon': 'e-emoji',\n 'tooltip': 'Emoji Icon',\n 'command': 'EmojiPicker',\n 'subCommand': 'EmojiPicker'\n }\n};\nvar alignmentLocale = [\n { locale: 'alignmentsDropDownLeft', value: 'JustifyLeft' },\n { locale: 'alignmentsDropDownCenter', value: 'JustifyCenter' },\n { locale: 'alignmentsDropDownRight', value: 'JustifyRight' },\n { locale: 'alignmentsDropDownJustify', value: 'JustifyFull' }\n];\nexport var alignmentItems = [\n { iconCss: 'e-icons e-justify-left', text: 'Align Left', command: 'Alignments', subCommand: 'JustifyLeft' },\n { iconCss: 'e-icons e-justify-center', text: 'Align Center', command: 'Alignments', subCommand: 'JustifyCenter' },\n { iconCss: 'e-icons e-justify-right', text: 'Align Right', command: 'Alignments', subCommand: 'JustifyRight' },\n { iconCss: 'e-icons e-justify-full', text: 'Align Justify', command: 'Alignments', subCommand: 'JustifyFull' }\n];\nexport var imageAlignItems = [\n { iconCss: 'e-icons e-justify-left', command: 'Images', subCommand: 'JustifyLeft' },\n { iconCss: 'e-icons e-justify-center', command: 'Images', subCommand: 'JustifyCenter' },\n { iconCss: 'e-icons e-justify-right', command: 'Images', subCommand: 'JustifyRight' },\n];\nexport var videoAlignItems = [\n { iconCss: 'e-icons e-justify-left', command: 'Videos', subCommand: 'JustifyLeft' },\n { iconCss: 'e-icons e-justify-center', command: 'Videos', subCommand: 'JustifyCenter' },\n { iconCss: 'e-icons e-justify-right', command: 'Videos', subCommand: 'JustifyRight' },\n];\nvar displayLocale = [\n { locale: 'imageDisplayDropDownInline', value: 'Inline' },\n { locale: 'imageDisplayDropDownBreak', value: 'Break' }\n];\nvar audioLayoutOptionLocale = [\n { locale: 'audioLayoutOptionDropDownInline', value: 'Inline' },\n { locale: 'audioLayoutOptionDropDownBreak', value: 'Break' }\n];\nvar videoLayoutOptionLocale = [\n { locale: 'videoLayoutOptionDropDownInline', value: 'Inline' },\n { locale: 'videoLayoutOptionDropDownBreak', value: 'Break' }\n];\nexport var imageDisplayItems = [\n { text: 'Inline', cssClass: 'e-inline', command: 'Images', subCommand: 'Inline' },\n { text: 'Break', cssClass: 'e-break', command: 'Images', subCommand: 'Break' },\n];\nexport var audioLayoutOptionItems = [\n { text: 'Inline', cssClass: 'e-audio-inline', command: 'Audios', subCommand: 'Inline' },\n { text: 'Break', cssClass: 'e-audio-break', command: 'Audios', subCommand: 'Break' },\n];\nexport var videoLayoutOptionItems = [\n { text: 'Inline', cssClass: 'e-video-inline', command: 'Videos', subCommand: 'Inline' },\n { text: 'Break', cssClass: 'e-video-break', command: 'Videos', subCommand: 'Break' },\n];\nexport var tableCellItems = [\n { iconCss: 'e-icons e-cell-merge', text: 'Merge cells', command: 'Table', subCommand: 'Merge' },\n { iconCss: 'e-icons e-cell-horizontal-split', text: 'Horizontal split', command: 'Table', subCommand: 'HorizontalSplit' },\n { iconCss: 'e-icons e-cell-vertical-split', text: 'Vertical split', command: 'Table', subCommand: 'VerticalSplit' },\n];\nvar tableRowLocale = [\n { locale: 'tableInsertRowDropDownBefore', value: 'InsertRowBefore' },\n { locale: 'tableInsertRowDropDownAfter', value: 'InsertRowAfter' },\n { locale: 'tableInsertRowDropDownDelete', value: 'DeleteRow' }\n];\nexport var tableRowsItems = [\n { iconCss: 'e-icons e-insert-row-before', text: 'Insert row before', command: 'Table', subCommand: 'InsertRowBefore' },\n { iconCss: 'e-icons e-insert-row-after', text: 'Insert row after', command: 'Table', subCommand: 'InsertRowAfter' },\n { iconCss: 'e-icons e-delete-row', text: 'Delete row', command: 'Table', subCommand: 'DeleteRow' },\n];\nvar tableColumnLocale = [\n { locale: 'tableInsertColumnDropDownLeft', value: 'InsertColumnLeft' },\n { locale: 'tableInsertColumnDropDownRight', value: 'InsertColumnRight' },\n { locale: 'tableInsertColumnDropDownDelete', value: 'DeleteColumn' }\n];\nexport var tableColumnsItems = [\n { iconCss: 'e-icons e-insert-column-left', text: 'Insert column left', command: 'Table', subCommand: 'InsertColumnLeft' },\n { iconCss: 'e-icons e-insert-column-right', text: 'Insert column right', command: 'Table', subCommand: 'InsertColumnRight' },\n { iconCss: 'e-icons e-delete-column', text: 'Delete column', command: 'Table', subCommand: 'DeleteColumn' },\n];\nvar tableVerticalLocale = [\n { locale: 'tableVerticalAlignDropDownTop', value: 'AlignTop' },\n { locale: 'tableVerticalAlignDropDownMiddle', value: 'AlignMiddle' },\n { locale: 'tableVerticalAlignDropDownBottom', value: 'AlignBottom' }\n];\nexport var TableCellVerticalAlignItems = [\n { iconCss: 'e-icons e-align-top', text: 'Align Top', command: 'Table', subCommand: 'AlignTop' },\n { iconCss: 'e-icons e-align-middle', text: 'Align Middle', command: 'Table', subCommand: 'AlignMiddle' },\n { iconCss: 'e-icons e-align-bottom', text: 'Align Bottom', command: 'Table', subCommand: 'AlignBottom' },\n];\nvar tableStyleLocale = [\n { locale: 'tableStylesDropDownDashedBorder', value: 'Dashed' },\n { locale: 'tableStylesDropDownAlternateRows', value: 'Alternate' }\n];\nexport var TableStyleItems = [\n { text: 'Dashed Borders', cssClass: 'e-dashed-borders', command: 'Table', subCommand: 'Dashed' },\n { text: 'Alternate Rows', cssClass: 'e-alternate-rows', command: 'Table', subCommand: 'Alternate' }\n];\nexport var predefinedItems = ['Bold', 'Italic', 'Underline', '|', 'Formats', 'Alignments',\n 'OrderedList', 'UnorderedList', '|', 'CreateLink', 'Image', '|', 'SourceCode', 'Undo', 'Redo'];\nexport var fontFamily = [\n { cssClass: 'e-segoe-ui', text: 'Segoe UI', command: 'Font', subCommand: 'FontName', value: 'Segoe UI' },\n { cssClass: 'e-arial', text: 'Arial', command: 'Font', subCommand: 'FontName', value: 'Arial,Helvetica,sans-serif' },\n { cssClass: 'e-georgia', text: 'Georgia', command: 'Font', subCommand: 'FontName', value: 'Georgia,serif' },\n { cssClass: 'e-impact', text: 'Impact', command: 'Font', subCommand: 'FontName', value: 'Impact,Charcoal,sans-serif' },\n { cssClass: 'e-tahoma', text: 'Tahoma', command: 'Font', subCommand: 'FontName', value: 'Tahoma,Geneva,sans-serif' },\n { cssClass: 'e-times-new-roman', text: 'Times New Roman', command: 'Font', subCommand: 'FontName', value: 'Times New Roman,Times,serif' },\n { cssClass: 'e-verdana', text: 'Verdana', command: 'Font', subCommand: 'FontName', value: 'Verdana,Geneva,sans-serif' }\n];\nexport var fontSize = [\n { text: '8 pt', value: '8pt' },\n { text: '10 pt', value: '10pt' },\n { text: '12 pt', value: '12pt' },\n { text: '14 pt', value: '14pt' },\n { text: '18 pt', value: '18pt' },\n { text: '24 pt', value: '24pt' },\n { text: '36 pt', value: '36pt' }\n];\nexport var formatItems = [\n { cssClass: 'e-paragraph', text: 'Paragraph', command: 'Formats', subCommand: 'P', value: 'P' },\n { cssClass: 'e-code', text: 'Code', command: 'Formats', subCommand: 'Pre', value: 'Pre' },\n { cssClass: 'e-quote', text: 'Quotation', command: 'Formats', subCommand: 'BlockQuote', value: 'BlockQuote' },\n { cssClass: 'e-h1', text: 'Heading 1', command: 'Formats', subCommand: 'H1', value: 'H1' },\n { cssClass: 'e-h2', text: 'Heading 2', command: 'Formats', subCommand: 'H2', value: 'H2' },\n { cssClass: 'e-h3', text: 'Heading 3', command: 'Formats', subCommand: 'H3', value: 'H3' },\n { cssClass: 'e-h4', text: 'Heading 4', command: 'Formats', subCommand: 'H4', value: 'H4' }\n];\nexport var fontColor = {\n 'Custom': [\n '', '#000000', '#e7e6e6', '#44546a', '#4472c4', '#ed7d31', '#a5a5a5', '#ffc000', '#70ad47', '#ff0000',\n '#f2f2f2', '#808080', '#cfcdcd', '#d5dce4', '#d9e2f3', '#fbe4d5', '#ededed', '#fff2cc', '#e2efd9', '#ffcccc',\n '#d9d9d9', '#595959', '#aeaaaa', '#acb9ca', '#b4c6e7', '#f7caac', '#dbdbdb', '#ffe599', '#c5e0b3', '#ff8080',\n '#bfbfbf', '#404040', '#747070', '#8496b0', '#8eaadb', '#f4b083', '#c9c9c9', '#ffd966', '#a8d08d', '#ff3333',\n '#a6a6a6', '#262626', '#3b3838', '#323e4f', '#2f5496', '#c45911', '#7b7b7b', '#bf8f00', '#538135', '#b30000',\n '#7f7f7f', '#0d0d0d', '#161616', '#212934', '#1f3763', '#823b0b', '#525252', '#7f5f00', '#375623', '#660000'\n ]\n};\nexport var backgroundColor = {\n 'Custom': [\n '', '#000000', '#ffff00', '#00ff00', '#00ffff', '#0000ff', '#ff0000', '#000080', '#800080', '#996633',\n '#f2f2f2', '#808080', '#ffffcc', '#b3ffb3', '#ccffff', '#ccccff', '#ffcccc', '#ccccff', '#ff80ff', '#f2e6d9',\n '#d9d9d9', '#595959', '#ffff80', '#80ff80', '#b3ffff', '#8080ff', '#ff8080', '#8080ff', '#ff00ff', '#dfbf9f',\n '#bfbfbf', '#404040', '#ffff33', '#33ff33', '#33ffff', '#3333ff', '#ff3333', '#0000b3', '#b300b3', '#c68c53',\n '#a6a6a6', '#262626', '#e6e600', '#00b300', '#009999', '#000099', '#b30000', '#000066', '#660066', '#86592d',\n '#7f7f7f', '#0d0d0d', '#999900', '#006600', '#006666', '#000066', '#660000', '#00004d', '#4d004d', '#734d26'\n ]\n};\nexport var numberFormatList = [\n { text: 'None', command: 'Lists', subCommand: 'NumberFormatList', value: 'none' },\n { text: 'Number', command: 'Lists', subCommand: 'NumberFormatList', value: 'decimal' },\n { text: 'Lower Greek', command: 'Lists', subCommand: 'NumberFormatList', value: 'lowerGreek' },\n { text: 'Lower Roman', command: 'Lists', subCommand: 'NumberFormatList', value: 'lowerRoman' },\n { text: 'Upper Alpha', command: 'Lists', subCommand: 'NumberFormatList', value: 'upperAlpha' },\n { text: 'Lower Alpha', command: 'Lists', subCommand: 'NumberFormatList', value: 'lowerAlpha' },\n { text: 'Upper Roman', command: 'Lists', subCommand: 'NumberFormatList', value: 'upperRoman' },\n];\nexport var bulletFormatList = [\n { text: 'None', command: 'Lists', subCommand: 'BulletFormatList', value: 'none' },\n { text: 'Disc', command: 'Lists', subCommand: 'BulletFormatList', value: 'disc' },\n { text: 'Circle', command: 'Lists', subCommand: 'BulletFormatList', value: 'circle' },\n { text: 'Square', command: 'Lists', subCommand: 'BulletFormatList', value: 'square' },\n];\nfunction getLocale(self, localeItems, item) {\n for (var i = 0; localeItems.length > i; i++) {\n if (localeItems[i].value === item.subCommand) {\n return self.localeObj.getConstant(localeItems[i].locale);\n }\n }\n return item.text;\n}\nexport function updateDropDownLocale(self) {\n alignmentItems.forEach(function (item, i) {\n alignmentItems[i].text = getLocale(self, alignmentLocale, alignmentItems[i]);\n });\n imageDisplayItems.forEach(function (item, i) {\n imageDisplayItems[i].text = getLocale(self, displayLocale, imageDisplayItems[i]);\n });\n audioLayoutOptionItems.forEach(function (item, i) {\n audioLayoutOptionItems[i].text = getLocale(self, audioLayoutOptionLocale, audioLayoutOptionItems[i]);\n });\n videoLayoutOptionItems.forEach(function (item, i) {\n videoLayoutOptionItems[i].text = getLocale(self, videoLayoutOptionLocale, videoLayoutOptionItems[i]);\n });\n tableRowsItems.forEach(function (item, i) {\n tableRowsItems[i].text = getLocale(self, tableRowLocale, tableRowsItems[i]);\n });\n tableColumnsItems.forEach(function (item, i) {\n tableColumnsItems[i].text = getLocale(self, tableColumnLocale, tableColumnsItems[i]);\n });\n TableCellVerticalAlignItems.forEach(function (item, i) {\n TableCellVerticalAlignItems[i].text = getLocale(self, tableVerticalLocale, TableCellVerticalAlignItems[i]);\n });\n TableStyleItems.forEach(function (item, i) {\n TableStyleItems[i].text = getLocale(self, tableStyleLocale, TableStyleItems[i]);\n });\n}\nexport var windowKeys = {\n 'Insert Link': 'Ctrl + K',\n 'Insert Image': 'Ctrl + Shift + I',\n 'Create Table': 'Ctrl + Shift + E',\n 'Undo': 'Ctrl + Z',\n 'Redo': 'Ctrl + Y',\n 'Copy': 'Ctrl + C',\n 'Cut': 'Ctrl + X',\n 'Paste': 'Ctrl + V',\n 'Bold': 'Ctrl + B',\n 'Italic': 'Ctrl + I',\n 'Underline': 'Ctrl + U',\n 'Strikethrough': 'Ctrl + Shift + S',\n 'Upper Case': 'Ctrl + Shift + U',\n 'Lower Case': 'Ctrl + Shift + L',\n 'Superscript': 'Ctrl + Shift + =',\n 'Subscript': 'Ctrl + =',\n 'Source Code': 'Ctrl + Shift + H',\n 'Maximize': 'Ctrl + Shift + F',\n 'Minimize': 'Esc',\n 'Clear Format': 'Ctrl + Shift + R',\n 'Numbered List': 'Ctrl + Shift + O',\n 'Bulleted List': 'Ctrl + Alt + O',\n 'Format Painter': 'Alt + Shift + C, Alt + Shift + V'\n};\nexport var defaultEmojiIcons = [{\n name: 'Smilies & People', code: '1F600', iconCss: 'e-emoji', icons: [{ code: '1F600', desc: 'Grinning face' },\n { code: '1F603', desc: 'Grinning face with big eyes' },\n { code: '1F604', desc: 'Grinning face with smiling eyes' },\n { code: '1F606', desc: 'Grinning squinting face' },\n { code: '1F605', desc: 'Grinning face with sweat' },\n { code: '1F602', desc: 'Face with tears of joy' },\n { code: '1F923', desc: 'Rolling on the floor laughing' },\n { code: '1F60A', desc: 'Smiling face with smiling eyes' },\n { code: '1F607', desc: 'Smiling face with halo' },\n { code: '1F642', desc: 'Slightly smiling face' },\n { code: '1F643', desc: 'Upside-down face' },\n { code: '1F60D', desc: 'Smiling face with heart-eyes' },\n { code: '1F618', desc: 'Face blowing a kiss' },\n { code: '1F61B', desc: 'Face with tongue' },\n { code: '1F61C', desc: 'Winking face with tongue' },\n { code: '1F604', desc: 'Grinning face with smiling eyes' },\n { code: '1F469', desc: 'Woman' },\n { code: '1F468', desc: 'Man' },\n { code: '1F467', desc: 'Girl' },\n { code: '1F466', desc: 'Boy' },\n { code: '1F476', desc: 'Baby' },\n { code: '1F475', desc: 'Old woman' },\n { code: '1F474', desc: 'Old man' },\n { code: '1F46E', desc: 'Police officer' },\n { code: '1F477', desc: 'Construction worker' },\n { code: '1F482', desc: 'Guard' },\n { code: '1F575', desc: 'Detective' },\n { code: '1F9D1', desc: 'Cook' }]\n }, {\n name: 'Animals & Nature', code: '1F435', iconCss: 'e-animals', icons: [{ code: '1F436', desc: 'Dog face' },\n { code: '1F431', desc: 'Cat face' },\n { code: '1F42D', desc: 'Mouse face' },\n { code: '1F439', desc: 'Hamster face' },\n { code: '1F430', desc: 'Rabbit face' },\n { code: '1F98A', desc: 'Fox face' },\n { code: '1F43B', desc: 'Bear face' },\n { code: '1F43C', desc: 'Panda face' },\n { code: '1F428', desc: 'Koala' },\n { code: '1F42F', desc: 'Tiger face' },\n { code: '1F981', desc: 'Lion face' },\n { code: '1F42E', desc: 'Cow face' },\n { code: '1F437', desc: 'Pig face' },\n { code: '1F43D', desc: 'Pig nose' },\n { code: '1F438', desc: 'Frog face' },\n { code: '1F435', desc: 'Monkey face' },\n { code: '1F649', desc: 'Hear-no-evil monkey' },\n { code: '1F64A', desc: 'Speak-no-evil monkey' },\n { code: '1F412', desc: 'Monkey' },\n { code: '1F414', desc: 'Chicken' },\n { code: '1F427', desc: 'Penguin' },\n { code: '1F426', desc: 'Bird' },\n { code: '1F424', desc: 'Baby chick' },\n { code: '1F986', desc: 'Duck' },\n { code: '1F985', desc: 'Eagle' }]\n }, {\n name: 'Food & Drink', code: '1F347', iconCss: 'e-food-and-drinks', icons: [{ code: '1F34E', desc: 'Red apple' },\n { code: '1F34C', desc: 'Banana' },\n { code: '1F347', desc: 'Grapes' },\n { code: '1F353', desc: 'Strawberry' },\n { code: '1F35E', desc: 'Bread' },\n { code: '1F950', desc: 'Croissant' },\n { code: '1F955', desc: 'Carrot' },\n { code: '1F354', desc: 'Hamburger' },\n { code: '1F355', desc: 'Pizza' },\n { code: '1F32D', desc: 'Hot dog' },\n { code: '1F35F', desc: 'French fries' },\n { code: '1F37F', desc: 'Popcorn' },\n { code: '1F366', desc: 'Soft ice cream' },\n { code: '1F367', desc: 'Shaved ice' },\n { code: '1F36A', desc: 'Cookie' },\n { code: '1F382', desc: 'Birthday cake' },\n { code: '1F370', desc: 'Shortcake' },\n { code: '1F36B', desc: 'Chocolate bar' },\n { code: '1F369', desc: 'Donut' },\n { code: '1F36E', desc: 'Custard' },\n { code: '1F36D', desc: 'Lollipop' },\n { code: '1F36C', desc: 'Candy' },\n { code: '1F377', desc: 'Wine glass' },\n { code: '1F37A', desc: 'Beer mug' },\n { code: '1F37E', desc: 'Bottle with popping cork' }]\n }, {\n name: 'Activities', code: '1F383', iconCss: 'e-activities', icons: [{ code: '26BD', desc: 'Soccer ball' },\n { code: '1F3C0', desc: 'Basketball' },\n { code: '1F3C8', desc: 'American football' },\n { code: '26BE', desc: 'Baseball' },\n { code: '1F3BE', desc: 'Tennis' },\n { code: '1F3D0', desc: 'Volleyball' },\n { code: '1F3C9', desc: 'Rugby football' },\n { code: '1F3B1', desc: 'Pool 8 ball' },\n { code: '1F3D3', desc: 'Ping pong' },\n { code: '1F3F8', desc: 'Badminton' },\n { code: '1F94A', desc: 'Boxing glove' },\n { code: '1F3CA', desc: 'Swimmer' },\n { code: '1F3CB', desc: 'Weightlifter' },\n { code: '1F6B4', desc: 'Bicyclist' },\n { code: '1F6F9', desc: 'Skateboard' },\n { code: '1F3AE', desc: 'Video game' },\n { code: '1F579', desc: 'Joystick' },\n { code: '1F3CF', desc: 'Cricket' },\n { code: '1F3C7', desc: 'Horse racing' },\n { code: '1F3AF', desc: 'Direct hit' },\n { code: '1F3D1', desc: 'Field hockey' },\n { code: '1F3B0', desc: 'Slot machine' },\n { code: '1F3B3', desc: 'Bowling' },\n { code: '1F3B2', desc: 'Game die' },\n { code: '265F', desc: 'Chess pawn' }]\n }, {\n name: 'Travel & Places', code: '1F30D', iconCss: 'e-travel-and-places', icons: [{ code: '2708', desc: 'Airplane' },\n { code: '1F697', desc: 'Automobile' },\n { code: '1F695', desc: 'Taxi' },\n { code: '1F6B2', desc: 'Bicycle' },\n { code: '1F68C', desc: 'Bus' },\n { code: '1F682', desc: 'Locomotive' },\n { code: '1F6F3', desc: 'Passenger ship' },\n { code: '1F680', desc: 'Rocket' },\n { code: '1F681', desc: 'Helicopter' },\n { code: '1F6A2', desc: 'Ship' },\n { code: '1F3DF', desc: 'Stadium' },\n { code: '1F54C', desc: 'Mosque' },\n { code: '26EA', desc: 'Church' },\n { code: '1F6D5', desc: 'Hindu Temple' },\n { code: '1F3D4', desc: 'Snow-capped mountain' },\n { code: '1F3EB', desc: 'School' },\n { code: '1F30B', desc: 'Volcano' },\n { code: '1F3D6', desc: 'Beach with umbrella' },\n { code: '1F3DD', desc: 'Desert island' },\n { code: '1F3DE', desc: 'National park' },\n { code: '1F3F0', desc: 'Castle' },\n { code: '1F5FC', desc: 'Tokyo tower' },\n { code: '1F5FD', desc: 'Statue of liberty' },\n { code: '26E9', desc: 'Shinto shrine' },\n { code: '1F3EF', desc: 'Japanese castle' },\n { code: '1F3A2', desc: 'Roller coaster' }]\n }, {\n name: 'Objects', code: '1F507', iconCss: 'e-objects', icons: [{ code: '1F4A1', desc: 'Light bulb' },\n { code: '1F526', desc: 'Flashlight' },\n { code: '1F4BB', desc: 'Laptop computer' },\n { code: '1F5A5', desc: 'Desktop computer' },\n { code: '1F5A8', desc: 'Printer' },\n { code: '1F4F7', desc: 'Camera' },\n { code: '1F4F8', desc: 'Camera with flash' },\n { code: '1F4FD', desc: 'Film projector' },\n { code: '1F3A5', desc: 'Movie camera' },\n { code: '1F4FA', desc: 'Television' },\n { code: '1F4FB', desc: 'Radio' },\n { code: '1F50B', desc: 'Battery' },\n { code: '231A', desc: 'Watch' },\n { code: '1F4F1', desc: 'Mobile phone' },\n { code: '260E', desc: 'Telephone' },\n { code: '1F4BE', desc: 'Floppy disk' },\n { code: '1F4BF', desc: 'Optical disk' },\n { code: '1F4C0', desc: 'Digital versatile disc' },\n { code: '1F4BD', desc: 'Computer disk' },\n { code: '1F3A7', desc: 'Headphone' },\n { code: '1F3A4', desc: 'Microphone' },\n { code: '1F3B6', desc: 'Multiple musical notes' },\n { code: '1F4DA', desc: 'Books' }]\n }, {\n name: 'Symbols', code: '1F3E7', iconCss: 'e-symbols', icons: [{ code: '274C', desc: 'Cross mark' },\n { code: '2714', desc: 'Check mark' },\n { code: '26A0', desc: 'Warning sign' },\n { code: '1F6AB', desc: 'Prohibited' },\n { code: '2139', desc: 'Information' },\n { code: '267B', desc: 'Recycling symbol' },\n { code: '1F6AD', desc: 'No smoking' },\n { code: '1F4F5', desc: 'No mobile phones' },\n { code: '1F6AF', desc: 'No littering' },\n { code: '1F6B3', desc: 'No bicycles' },\n { code: '1F6B7', desc: 'No pedestrians' },\n { code: '2795', desc: 'Plus' },\n { code: '2796', desc: 'Minus' },\n { code: '2797', desc: 'Divide' },\n { code: '2716', desc: 'Multiplication' },\n { code: '1F4B2', desc: 'Dollar banknote' },\n { code: '1F4AC', desc: 'Speech balloon' },\n { code: '2755', desc: 'White exclamation mark' },\n { code: '2754', desc: 'White question mark' },\n { code: '2764', desc: 'Red heart' }]\n }];\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex, Event } from '@syncfusion/ej2-base';\nimport { AjaxSettings, ContextMenuSettings } from '@syncfusion/ej2-filemanager';\nimport { DetailsViewSettings, NavigationPaneSettings } from '@syncfusion/ej2-filemanager';\nimport { SearchSettings } from '@syncfusion/ej2-filemanager';\nimport { ToolbarSettings as FileToolbarSettings } from '@syncfusion/ej2-filemanager';\nimport { UploadSettings } from '@syncfusion/ej2-filemanager';\nimport { ToolbarType } from '../base/enum';\nimport { backgroundColor, fontColor, fontFamily, fontSize, formatItems, predefinedItems, TableStyleItems, numberFormatList, bulletFormatList, defaultEmojiIcons } from './items';\n/**\n * Configures the toolbar settings of the RichTextEditor.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"enableFloating\", void 0);\n __decorate([\n Property(ToolbarType.Expand)\n ], ToolbarSettings.prototype, \"type\", void 0);\n __decorate([\n Property(predefinedItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property({})\n ], ToolbarSettings.prototype, \"itemConfigs\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n/**\n * Configures the image settings of the RichTextEditor.\n */\nvar ImageSettings = /** @class */ (function (_super) {\n __extends(ImageSettings, _super);\n function ImageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(['.jpeg', '.jpg', '.png'])\n ], ImageSettings.prototype, \"allowedTypes\", void 0);\n __decorate([\n Property('inline')\n ], ImageSettings.prototype, \"display\", void 0);\n __decorate([\n Property('Blob')\n ], ImageSettings.prototype, \"saveFormat\", void 0);\n __decorate([\n Property('auto')\n ], ImageSettings.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], ImageSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"saveUrl\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"path\", void 0);\n __decorate([\n Property(true)\n ], ImageSettings.prototype, \"resize\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"removeUrl\", void 0);\n __decorate([\n Property(0)\n ], ImageSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(0)\n ], ImageSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(false)\n ], ImageSettings.prototype, \"resizeByPercent\", void 0);\n return ImageSettings;\n}(ChildProperty));\nexport { ImageSettings };\n/**\n * Configures the audio settings of the RichTextEditor.\n */\nvar AudioSettings = /** @class */ (function (_super) {\n __extends(AudioSettings, _super);\n function AudioSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(['.wav', '.mp3', '.m4a', '.wma'])\n ], AudioSettings.prototype, \"allowedTypes\", void 0);\n __decorate([\n Property('Inline')\n ], AudioSettings.prototype, \"layoutOption\", void 0);\n __decorate([\n Property('Blob')\n ], AudioSettings.prototype, \"saveFormat\", void 0);\n __decorate([\n Property(null)\n ], AudioSettings.prototype, \"saveUrl\", void 0);\n __decorate([\n Property(null)\n ], AudioSettings.prototype, \"removeUrl\", void 0);\n __decorate([\n Property(null)\n ], AudioSettings.prototype, \"path\", void 0);\n return AudioSettings;\n}(ChildProperty));\nexport { AudioSettings };\n/**\n * Configures the video settings of the RichTextEditor.\n */\nvar VideoSettings = /** @class */ (function (_super) {\n __extends(VideoSettings, _super);\n function VideoSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(['.mp4', '.mov', '.wmv', '.avi'])\n ], VideoSettings.prototype, \"allowedTypes\", void 0);\n __decorate([\n Property('Inline')\n ], VideoSettings.prototype, \"layoutOption\", void 0);\n __decorate([\n Property('Blob')\n ], VideoSettings.prototype, \"saveFormat\", void 0);\n __decorate([\n Property('auto')\n ], VideoSettings.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], VideoSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"saveUrl\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"path\", void 0);\n __decorate([\n Property(true)\n ], VideoSettings.prototype, \"resize\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"removeUrl\", void 0);\n __decorate([\n Property(0)\n ], VideoSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(0)\n ], VideoSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(false)\n ], VideoSettings.prototype, \"resizeByPercent\", void 0);\n return VideoSettings;\n}(ChildProperty));\nexport { VideoSettings };\n/**\n * Configures the file manager settings of the RichTextEditor.\n */\nvar FileManagerSettings = /** @class */ (function (_super) {\n __extends(FileManagerSettings, _super);\n function FileManagerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Event()\n ], FileManagerSettings.prototype, \"beforeSend\", void 0);\n __decorate([\n Complex({ getImageUrl: null, url: null, uploadUrl: null }, AjaxSettings)\n ], FileManagerSettings.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property(false)\n ], FileManagerSettings.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Complex({ visible: true, file: ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Rename', '|', 'Details'], folder: ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', '|', 'Details'], layout: ['SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'] }, ContextMenuSettings)\n ], FileManagerSettings.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManagerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManagerSettings.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(false)\n ], FileManagerSettings.prototype, \"enable\", void 0);\n __decorate([\n Complex({ maxWidth: '650px', minWidth: '240px', visible: true }, NavigationPaneSettings)\n ], FileManagerSettings.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManagerSettings.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManagerSettings.prototype, \"rootAliasName\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManagerSettings.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManagerSettings.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(false)\n ], FileManagerSettings.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManagerSettings.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManagerSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Complex({ visible: true, items: ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename', 'SortBy', 'Refresh', 'Selection', 'View', 'Details'] }, FileToolbarSettings)\n ], FileManagerSettings.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({ autoUpload: true, minFileSize: 0, maxFileSize: 30000000, allowedExtensions: '', autoClose: false }, UploadSettings)\n ], FileManagerSettings.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManagerSettings.prototype, \"view\", void 0);\n return FileManagerSettings;\n}(ChildProperty));\nexport { FileManagerSettings };\nvar TableSettings = /** @class */ (function (_super) {\n __extends(TableSettings, _super);\n function TableSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('100%')\n ], TableSettings.prototype, \"width\", void 0);\n __decorate([\n Property(TableStyleItems)\n ], TableSettings.prototype, \"styles\", void 0);\n __decorate([\n Property(true)\n ], TableSettings.prototype, \"resize\", void 0);\n __decorate([\n Property(0)\n ], TableSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(null)\n ], TableSettings.prototype, \"maxWidth\", void 0);\n return TableSettings;\n}(ChildProperty));\nexport { TableSettings };\n/**\n * Configures the quick toolbar settings of the RichTextEditor.\n */\nvar QuickToolbarSettings = /** @class */ (function (_super) {\n __extends(QuickToolbarSettings, _super);\n function QuickToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], QuickToolbarSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(false)\n ], QuickToolbarSettings.prototype, \"showOnRightClick\", void 0);\n __decorate([\n Property('hide')\n ], QuickToolbarSettings.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(['Open', 'Edit', 'UnLink'])\n ], QuickToolbarSettings.prototype, \"link\", void 0);\n __decorate([\n Property(['Replace', 'Align', 'Caption', 'Remove', '-', 'InsertLink', 'OpenImageLink', 'EditImageLink', 'RemoveImageLink', 'Display', 'AltText', 'Dimension'])\n ], QuickToolbarSettings.prototype, \"image\", void 0);\n __decorate([\n Property(['AudioReplace', 'AudioRemove', 'AudioLayoutOption'])\n ], QuickToolbarSettings.prototype, \"audio\", void 0);\n __decorate([\n Property(['VideoReplace', 'VideoAlign', 'VideoRemove', 'VideoLayoutOption', 'VideoDimension'])\n ], QuickToolbarSettings.prototype, \"video\", void 0);\n __decorate([\n Property(['Cut', 'Copy', 'Paste'])\n ], QuickToolbarSettings.prototype, \"text\", void 0);\n __decorate([\n Property(['TableHeader', 'TableRows', 'TableColumns', 'BackgroundColor', '-', 'TableRemove', 'Alignments', 'TableCellVerticalAlign', 'Styles'])\n ], QuickToolbarSettings.prototype, \"table\", void 0);\n return QuickToolbarSettings;\n}(ChildProperty));\nexport { QuickToolbarSettings };\n/**\n * Configure the format painter settings of the Rich Text Editor.\n */\nvar FormatPainterSettings = /** @class */ (function (_super) {\n __extends(FormatPainterSettings, _super);\n function FormatPainterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('b; em; font; sub; sup; kbd; i; s; u; code; strong; span; p; div; h1; h2; h3; h4; h5; h6; blockquote; ol; ul; li; pre;')\n ], FormatPainterSettings.prototype, \"allowedFormats\", void 0);\n __decorate([\n Property(null)\n ], FormatPainterSettings.prototype, \"deniedFormats\", void 0);\n return FormatPainterSettings;\n}(ChildProperty));\nexport { FormatPainterSettings };\n/**\n * Specifies the emoji picker options in Rich Text Editor with the following properties.\n */\nvar EmojiSettings = /** @class */ (function (_super) {\n __extends(EmojiSettings, _super);\n function EmojiSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(defaultEmojiIcons)\n ], EmojiSettings.prototype, \"iconsSet\", void 0);\n __decorate([\n Property(true)\n ], EmojiSettings.prototype, \"showSearchBox\", void 0);\n return EmojiSettings;\n}(ChildProperty));\nexport { EmojiSettings };\n/**\n * Configures the Paste Cleanup settings of the RichTextEditor.\n */\nvar PasteCleanupSettings = /** @class */ (function (_super) {\n __extends(PasteCleanupSettings, _super);\n function PasteCleanupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], PasteCleanupSettings.prototype, \"prompt\", void 0);\n __decorate([\n Property(null)\n ], PasteCleanupSettings.prototype, \"deniedAttrs\", void 0);\n __decorate([\n Property(['background', 'background-color', 'border', 'border-bottom', 'border-left', 'border-radius', 'border-right', 'border-style', 'border-top', 'border-width', 'clear', 'color', 'cursor', 'direction', 'display', 'float', 'font', 'font-family', 'font-size', 'font-weight', 'font-style', 'height', 'left', 'line-height', 'list-style-type', 'margin', 'margin-top', 'margin-left', 'margin-right', 'margin-bottom', 'max-height', 'max-width', 'min-height', 'min-width', 'overflow', 'overflow-x', 'overflow-y', 'padding', 'padding-bottom', 'padding-left', 'padding-right', 'padding-top', 'position', 'right', 'table-layout', 'text-align', 'text-decoration', 'text-indent', 'top', 'vertical-align', 'visibility', 'white-space', 'width'])\n ], PasteCleanupSettings.prototype, \"allowedStyleProps\", void 0);\n __decorate([\n Property(null)\n ], PasteCleanupSettings.prototype, \"deniedTags\", void 0);\n __decorate([\n Property(true)\n ], PasteCleanupSettings.prototype, \"keepFormat\", void 0);\n __decorate([\n Property(false)\n ], PasteCleanupSettings.prototype, \"plainText\", void 0);\n return PasteCleanupSettings;\n}(ChildProperty));\nexport { PasteCleanupSettings };\n/**\n * Configures the font family settings of the RichTextEditor.\n */\nvar FontFamily = /** @class */ (function (_super) {\n __extends(FontFamily, _super);\n function FontFamily() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], FontFamily.prototype, \"default\", void 0);\n __decorate([\n Property('65px')\n ], FontFamily.prototype, \"width\", void 0);\n __decorate([\n Property(fontFamily)\n ], FontFamily.prototype, \"items\", void 0);\n return FontFamily;\n}(ChildProperty));\nexport { FontFamily };\n/**\n * Configures the font size settings of the RichTextEditor.\n */\nvar FontSize = /** @class */ (function (_super) {\n __extends(FontSize, _super);\n function FontSize() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], FontSize.prototype, \"default\", void 0);\n __decorate([\n Property('35px')\n ], FontSize.prototype, \"width\", void 0);\n __decorate([\n Property(fontSize)\n ], FontSize.prototype, \"items\", void 0);\n return FontSize;\n}(ChildProperty));\nexport { FontSize };\n/**\n * Configures the format settings of the RichTextEditor.\n */\nvar Format = /** @class */ (function (_super) {\n __extends(Format, _super);\n function Format() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Format.prototype, \"default\", void 0);\n __decorate([\n Property('65px')\n ], Format.prototype, \"width\", void 0);\n __decorate([\n Property(formatItems)\n ], Format.prototype, \"types\", void 0);\n return Format;\n}(ChildProperty));\nexport { Format };\n/**\n * Configures the font Color settings of the RichTextEditor.\n */\nvar FontColor = /** @class */ (function (_super) {\n __extends(FontColor, _super);\n function FontColor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#ff0000')\n ], FontColor.prototype, \"default\", void 0);\n __decorate([\n Property('Palette')\n ], FontColor.prototype, \"mode\", void 0);\n __decorate([\n Property(10)\n ], FontColor.prototype, \"columns\", void 0);\n __decorate([\n Property(fontColor)\n ], FontColor.prototype, \"colorCode\", void 0);\n __decorate([\n Property(false)\n ], FontColor.prototype, \"modeSwitcher\", void 0);\n return FontColor;\n}(ChildProperty));\nexport { FontColor };\n/**\n * Configures the background Color settings of the RichTextEditor.\n */\nvar BackgroundColor = /** @class */ (function (_super) {\n __extends(BackgroundColor, _super);\n function BackgroundColor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#ffff00')\n ], BackgroundColor.prototype, \"default\", void 0);\n __decorate([\n Property('Palette')\n ], BackgroundColor.prototype, \"mode\", void 0);\n __decorate([\n Property(10)\n ], BackgroundColor.prototype, \"columns\", void 0);\n __decorate([\n Property(backgroundColor)\n ], BackgroundColor.prototype, \"colorCode\", void 0);\n __decorate([\n Property(false)\n ], BackgroundColor.prototype, \"modeSwitcher\", void 0);\n return BackgroundColor;\n}(ChildProperty));\nexport { BackgroundColor };\n/**\n * Configures the numberFormatList settings of the RichTextEditor.\n */\nvar NumberFormatList = /** @class */ (function (_super) {\n __extends(NumberFormatList, _super);\n function NumberFormatList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(numberFormatList)\n ], NumberFormatList.prototype, \"types\", void 0);\n return NumberFormatList;\n}(ChildProperty));\nexport { NumberFormatList };\n/**\n * Configures the bulletFormatList settings of the RichTextEditor.\n */\nvar BulletFormatList = /** @class */ (function (_super) {\n __extends(BulletFormatList, _super);\n function BulletFormatList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(bulletFormatList)\n ], BulletFormatList.prototype, \"types\", void 0);\n return BulletFormatList;\n}(ChildProperty));\nexport { BulletFormatList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex } from '@syncfusion/ej2-base';\n/**\n * Objects used for configuring the iframe resources properties.\n */\nvar Resources = /** @class */ (function (_super) {\n __extends(Resources, _super);\n function Resources() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], Resources.prototype, \"styles\", void 0);\n __decorate([\n Property([])\n ], Resources.prototype, \"scripts\", void 0);\n return Resources;\n}(ChildProperty));\nexport { Resources };\n/**\n * Configures the iframe settings of the RTE.\n */\nvar IFrameSettings = /** @class */ (function (_super) {\n __extends(IFrameSettings, _super);\n function IFrameSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], IFrameSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], IFrameSettings.prototype, \"attributes\", void 0);\n __decorate([\n Complex({}, Resources)\n ], IFrameSettings.prototype, \"resources\", void 0);\n return IFrameSettings;\n}(ChildProperty));\nexport { IFrameSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the inlineMode property of the RTE.\n */\nvar InlineMode = /** @class */ (function (_super) {\n __extends(InlineMode, _super);\n function InlineMode() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InlineMode.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], InlineMode.prototype, \"onSelection\", void 0);\n return InlineMode;\n}(ChildProperty));\nexport { InlineMode };\n","/* eslint-disable */\n/**\n * Export default locale\n */\nexport var defaultLocale = {\n 'alignments': 'Alignments',\n 'justifyLeft': 'Align Left',\n 'justifyCenter': 'Align Center',\n 'justifyRight': 'Align Right',\n 'justifyFull': 'Align Justify',\n 'fontName': 'Font Name',\n 'fontSize': 'Font Size',\n 'fontColor': 'Font Color',\n 'backgroundColor': 'Background Color',\n 'bold': 'Bold',\n 'italic': 'Italic',\n 'underline': 'Underline',\n 'strikethrough': 'Strikethrough',\n 'clearFormat': 'Clear Format',\n 'clearAll': 'Clear All',\n 'cut': 'Cut',\n 'copy': 'Copy',\n 'paste': 'Paste',\n 'unorderedList': 'Bulleted List',\n 'orderedList': 'Numbered List',\n 'indent': 'Increase Indent',\n 'outdent': 'Decrease Indent',\n 'undo': 'Undo',\n 'redo': 'Redo',\n 'superscript': 'Superscript',\n 'subscript': 'Subscript',\n 'createLink': 'Insert Link',\n 'openLink': 'Open Link',\n 'editLink': 'Edit Link',\n 'removeLink': 'Remove Link',\n 'image': 'Insert Image',\n 'audio': 'Insert Audio',\n 'video': 'Insert Video',\n 'replace': 'Replace',\n 'numberFormatList': 'Number Format List',\n 'bulletFormatList': 'Bullet Format List',\n 'audioReplace': 'Replace',\n 'videoReplace': 'Replace',\n 'videoAlign': 'Align',\n 'videoDimension': 'Dimension',\n 'audioRemove': 'Remove',\n 'videoRemove': 'Remove',\n 'audioLayoutOption': 'Layout option',\n 'videoLayoutOption': 'Layout option',\n 'align': 'Align',\n 'caption': 'Image Caption',\n 'remove': 'Remove',\n 'insertLink': 'Insert Link',\n 'display': 'Display',\n 'altText': 'Alternative Text',\n 'dimension': 'Change Size',\n 'fullscreen': 'Maximize',\n 'maximize': 'Maximize',\n 'minimize': 'Minimize',\n 'lowerCase': 'Lower Case',\n 'upperCase': 'Upper Case',\n 'print': 'Print',\n 'formats': 'Formats',\n 'sourcecode': 'Code View',\n 'preview': 'Preview',\n 'viewside': 'ViewSide',\n 'insertCode': 'Insert Code',\n 'linkText': 'Display Text',\n 'linkTooltipLabel': 'Title',\n 'linkWebUrl': 'Web Address',\n 'linkTitle': 'Enter a title',\n 'linkurl': 'http://example.com',\n 'linkOpenInNewWindow': 'Open Link in New Window',\n 'linkHeader': 'Insert Link',\n 'dialogInsert': 'Insert',\n 'dialogCancel': 'Cancel',\n 'dialogUpdate': 'Update',\n 'imageHeader': 'Insert Image',\n 'audioHeader': 'Insert Audio',\n 'videoHeader': 'Insert Video',\n 'imageLinkHeader': 'You can also provide a link from the web',\n 'audioLinkHeader': 'You can also provide a link from the web',\n 'videoLinkHeader': 'Web URL',\n 'embedVideoLinkHeader': 'Media Embed URL',\n 'mdimageLink': 'Please provide a URL for your image',\n 'imageUploadMessage': 'Drop image here or browse to upload',\n 'audioUploadMessage': 'Drop an audio file or browse to upload',\n 'videoUploadMessage': 'Drop a video file or browse to upload',\n 'imageDeviceUploadMessage': 'Click here to upload',\n 'audioDeviceUploadMessage': 'Click here to upload',\n 'videoDeviceUploadMessage': 'Click here to upload',\n 'imageAlternateText': 'Alternate Text',\n 'alternateHeader': 'Alternative Text',\n 'browse': 'Browse',\n 'imageUrl': 'http://example.com/image.png',\n 'audioUrl': 'http://example.com/audio.mp3',\n 'videoUrl': 'http://example.com/video.mp3',\n 'webUrl': 'Web URL',\n 'embedUrl': 'Embed Code',\n 'imageCaption': 'Caption',\n 'imageSizeHeader': 'Image Size',\n 'videoSizeHeader': 'Video Size',\n 'imageHeight': 'Height',\n 'imageWidth': 'Width',\n 'videoHeight': 'Height',\n 'videoWidth': 'Width',\n 'textPlaceholder': 'Enter Text',\n 'inserttablebtn': 'Insert Table',\n 'tabledialogHeader': 'Insert Table',\n 'tableWidth': 'Width',\n 'cellpadding': 'Cell Padding',\n 'cellspacing': 'Cell Spacing',\n 'columns': 'Number of columns',\n 'rows': 'Number of rows',\n 'tableRows': 'Table Rows',\n 'tableColumns': 'Table Columns',\n 'tableCellHorizontalAlign': 'Table Cell Horizontal Align',\n 'tableCellVerticalAlign': 'Table Cell Vertical Align',\n 'createTable': 'Create Table',\n 'removeTable': 'Remove Table',\n 'tableHeader': 'Table Header',\n 'tableRemove': 'Table Remove',\n 'tableCellBackground': 'Table Cell Background',\n 'tableEditProperties': 'Table Edit Properties',\n 'styles': 'Styles',\n 'insertColumnLeft': 'Insert Column Left',\n 'insertColumnRight': 'Insert Column Right',\n 'deleteColumn': 'Delete Column',\n 'insertRowBefore': 'Insert Row Before',\n 'insertRowAfter': 'Insert Row After',\n 'deleteRow': 'Delete Row',\n 'tableEditHeader': 'Edit Table',\n 'TableHeadingText': 'Heading',\n 'TableColText': 'Col',\n 'imageInsertLinkHeader': 'Insert Link',\n 'editImageHeader': 'Edit Image',\n 'editAudioHeader': 'Edit Audio',\n 'editVideoHeader': 'Edit Video',\n \"alignmentsDropDownLeft\": 'Align Left',\n \"alignmentsDropDownCenter\": 'Align Center',\n \"alignmentsDropDownRight\": 'Align Right',\n \"alignmentsDropDownJustify\": 'Align Justify',\n \"imageDisplayDropDownInline\": 'Inline',\n \"imageDisplayDropDownBreak\": 'Break',\n \"audioLayoutOptionDropDownInline\": 'Inline',\n \"audioLayoutOptionDropDownBreak\": 'Break',\n \"videoLayoutOptionDropDownInline\": 'Inline',\n \"videoLayoutOptionDropDownBreak\": 'Break',\n \"tableInsertRowDropDownBefore\": 'Insert row before',\n \"tableInsertRowDropDownAfter\": 'Insert row after',\n \"tableInsertRowDropDownDelete\": 'Delete row',\n \"tableInsertColumnDropDownLeft\": 'Insert column left',\n \"tableInsertColumnDropDownRight\": 'Insert column right',\n \"tableInsertColumnDropDownDelete\": 'Delete column',\n \"tableVerticalAlignDropDownTop\": 'Align Top',\n \"tableVerticalAlignDropDownMiddle\": 'Align Middle',\n \"tableVerticalAlignDropDownBottom\": 'Align Bottom',\n \"tableStylesDropDownDashedBorder\": 'Dashed Borders',\n \"tableStylesDropDownAlternateRows\": 'Alternate Rows',\n 'pasteFormat': 'Paste Format',\n 'pasteFormatContent': 'Choose the formatting action',\n 'plainText': 'Plain Text',\n 'cleanFormat': 'Clean',\n 'keepFormat': 'Keep',\n 'pasteDialogOk': 'OK',\n 'pasteDialogCancel': 'Cancel',\n 'fileManager': 'File Manager',\n 'fileDialogHeader': 'File Browser',\n \"formatsDropDownParagraph\": 'Paragraph',\n 'formatsDropDownCode': 'Code',\n 'formatsDropDownQuotation': 'Quotation',\n 'formatsDropDownHeading1': 'Heading 1',\n 'formatsDropDownHeading2': 'Heading 2',\n 'formatsDropDownHeading3': 'Heading 3',\n 'formatsDropDownHeading4': 'Heading 4',\n 'fontNameSegoeUI': 'Segoe UI',\n 'fontNameArial': 'Arial',\n 'fontNameGeorgia': 'Georgia',\n 'fontNameImpact': 'Impact',\n 'fontNameTahoma': 'Tahoma',\n 'fontNameTimesNewRoman': 'Times New Roman',\n 'fontNameVerdana': 'Verdana',\n 'numberFormatListNumber': 'Number',\n 'numberFormatListLowerAlpha': 'LowerAlpha',\n 'numberFormatListUpperAlpha': 'UpperAlpha',\n 'numberFormatListLowerRoman': 'LowerRoman',\n 'numberFormatListUpperRoman': 'UpperRoman',\n 'numberFormatListLowerGreek': 'LowerGreek',\n 'bulletFormatListDisc': 'Disc',\n 'bulletFormatListCircle': 'Circle',\n 'bulletFormatListSquare': 'Square',\n 'numberFormatListNone': 'None',\n 'bulletFormatListNone': 'None',\n 'formatPainter': 'Format Painter',\n 'emojiPicker': 'Emoji Picker',\n 'embeddedCode': 'Embedded Code',\n 'pasteEmbeddedCodeHere': 'Paste Embedded Code here',\n 'emojiPickerTypeToFind': 'Type to find',\n 'emojiPickerNoResultFound': 'No results found',\n 'emojiPickerTrySomethingElse': 'Try something else',\n};\nexport var toolsLocale = {\n 'alignments': 'alignments',\n 'justifyleft': 'justifyLeft',\n 'justifycenter': 'justifyCenter',\n 'justifyright': 'justifyRight',\n 'justifyfull': 'justifyFull',\n 'fontname': 'fontName',\n 'fontsize': 'fontSize',\n 'fontcolor': 'fontColor',\n 'backgroundcolor': 'backgroundColor',\n 'bold': 'bold',\n 'italic': 'italic',\n 'underline': 'underline',\n 'strikethrough': 'strikethrough',\n 'clearformat': 'clearFormat',\n 'clearall': 'clearAll',\n 'cut': 'cut',\n 'copy': 'copy',\n 'paste': 'paste',\n 'unorderedlist': 'unorderedList',\n 'orderedlist': 'orderedList',\n 'indent': 'indent',\n 'outdent': 'outdent',\n 'numberformatlist': 'numberFormatList',\n 'bulletformatlist': 'bulletFormatList',\n 'undo': 'undo',\n 'redo': 'redo',\n 'superscript': 'superscript',\n 'subscript': 'subscript',\n 'createlink': 'createLink',\n 'openlink': 'openLink',\n 'editlink': 'editLink',\n 'removelink': 'removeLink',\n 'openimagelink': 'openLink',\n 'editimagelink': 'editLink',\n 'removeimagelink': 'removeLink',\n 'image': 'image',\n 'audio': 'audio',\n 'video': 'video',\n 'replace': 'replace',\n 'audioreplace': 'audioReplace',\n 'videoreplace': 'videoReplace',\n 'videoalign': 'videoAlign',\n 'videodimension': 'videoDimension',\n 'audioremove': 'audioRemove',\n 'videoremove': 'videoRemove',\n 'audiolayoutoption': 'audioLayoutOption',\n 'videolayoutoption': 'videoLayoutOption',\n 'align': 'align',\n 'caption': 'caption',\n 'remove': 'remove',\n 'insertlink': 'insertLink',\n 'display': 'display',\n 'alttext': 'altText',\n 'dimension': 'dimension',\n 'fullscreen': 'fullscreen',\n 'maximize': 'maximize',\n 'minimize': 'minimize',\n 'lowercase': 'lowerCase',\n 'uppercase': 'upperCase',\n 'print': 'print',\n 'formats': 'formats',\n 'sourcecode': 'sourcecode',\n 'preview': 'preview',\n 'viewside': 'viewside',\n 'insertcode': 'insertCode',\n 'tablerows': 'tableRows',\n 'tablecolumns': 'tableColumns',\n 'tablecellhorizontalalign': 'tableCellHorizontalAlign',\n 'tablecellverticalalign': 'tableCellVerticalAlign',\n 'createtable': 'createTable',\n 'removetable': 'removeTable',\n 'tableheader': 'tableHeader',\n 'tableremove': 'tableRemove',\n 'tablecellbackground': 'tableCellBackground',\n 'tableeditproperties': 'tableEditProperties',\n 'styles': 'styles',\n 'insertcolumnleft': 'insertColumnLeft',\n 'insertcolumnright': 'insertColumnRight',\n 'deletecolumn': 'deleteColumn',\n 'aligntop': 'AlignTop',\n 'alignmiddle': 'AlignMiddle',\n 'alignbottom': 'AlignBottom',\n 'insertrowbefore': 'insertRowBefore',\n 'insertrowafter': 'insertRowAfter',\n 'deleterow': 'deleteRow',\n 'formatpainter': 'formatPainter',\n 'emojipicker': 'emojiPicker',\n 'embeddedCode': 'Embedded Code',\n 'pasteEmbeddedCodeHere': 'Paste Embedded Code here',\n 'emojiPickerTypeToFind': 'Type to find',\n 'emojiPickerNoResultFound': 'No results found',\n 'emojiPickerTrySomethingElse': 'Try something else',\n};\nexport var fontNameLocale = [\n { locale: 'fontNameSegoeUI', value: 'Segoe UI' },\n { locale: 'fontNameArial', value: 'Arial,Helvetica,sans-serif' },\n { locale: 'fontNameGeorgia', value: 'Georgia,serif' },\n { locale: 'fontNameImpact', value: 'Impact,Charcoal,sans-serif' },\n { locale: 'fontNameTahoma', value: 'Tahoma,Geneva,sans-serif' },\n { locale: 'fontNameTimesNewRoman', value: 'Times New Roman,Times,serif' },\n { locale: 'fontNameVerdana', value: 'Verdana,Geneva,sans-serif' }\n];\nexport var formatsLocale = [\n { locale: 'formatsDropDownParagraph', value: 'P' },\n { locale: 'formatsDropDownCode', value: 'Pre' },\n { locale: 'formatsDropDownQuotation', value: 'BlockQuote' },\n { locale: 'formatsDropDownHeading1', value: 'H1' },\n { locale: 'formatsDropDownHeading2', value: 'H2' },\n { locale: 'formatsDropDownHeading3', value: 'H3' },\n { locale: 'formatsDropDownHeading4', value: 'H4' }\n];\nexport var numberFormatListLocale = [\n { locale: 'numberFormatListNone', value: 'none' },\n { locale: 'numberFormatListNumber', value: 'decimal' },\n { locale: 'numberFormatListLowerAlpha', value: 'lower-alpha' },\n { locale: 'numberFormatListUpperAlpha', value: 'upper-alpha' },\n { locale: 'numberFormatListLowerRoman', value: 'lower-roman' },\n { locale: 'numberFormatListUpperRoman', value: 'upper-roman' },\n { locale: 'numberFormatListLowerGreek', value: 'lower-greek' }\n];\nexport var bulletFormatListLocale = [\n { locale: 'bulletFormatListNone', value: 'none' },\n { locale: 'bulletFormatListDisc', value: 'disc' },\n { locale: 'bulletFormatListCircle', value: 'circle' },\n { locale: 'bulletFormatListSquare', value: 'square' },\n];\n","/**\n * @param {string} htmlAttributes - specifies the string value\n * @param {IRichTextEditor} rte - specifies the rte value\n * @param {boolean} isFrame - specifies the boolean value\n * @param {boolean} initial - specifies the boolean value\n * @returns {void}\n * @hidden\n */\nexport function setAttributes(htmlAttributes, rte, isFrame, initial) {\n var target;\n if (isFrame) {\n var iFrame = rte.contentModule.getDocument();\n target = iFrame.querySelector('body');\n }\n else {\n target = rte.element;\n }\n if (Object.keys(htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n target.classList.add(htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'disabled' && htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n rte.enabled = false;\n rte.setEnable();\n }\n else if (htmlAttr === 'readonly' && htmlAttributes[\"\" + htmlAttr] === 'readonly') {\n rte.readonly = true;\n rte.setReadOnly(initial);\n }\n else if (htmlAttr === 'style') {\n target.setAttribute('style', htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'tabindex') {\n rte.inputElement.setAttribute('tabindex', htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'placeholder') {\n rte.placeholder = htmlAttributes[\"\" + htmlAttr];\n rte.setPlaceHolder();\n }\n else {\n var validateAttr = ['name', 'required'];\n if (validateAttr.indexOf(htmlAttr) > -1) {\n rte.valueContainer.setAttribute(htmlAttr, htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n target.setAttribute(htmlAttr, htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n}\n","import { Browser, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\n/**\n * `FullScreen` module is used to maximize and minimize screen\n */\nvar FullScreen = /** @class */ (function () {\n function FullScreen(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * showFullScreen method\n *\n * @param {MouseEvent} event - specifies the mouse event\n * @returns {void}\n * @hidden\n\n */\n FullScreen.prototype.showFullScreen = function (event) {\n var _this = this;\n if (this.parent.toolbarSettings.enable === true && this.parent.editorMode !== 'Markdown'\n && !isNOU(this.parent.quickToolbarModule)) {\n this.parent.quickToolbarModule.hideQuickToolbars();\n }\n if (this.parent.showTooltip && !isNOU(document.querySelector('.e-tooltip-wrap'))) {\n this.parent.notify(events.maximizeMinimizeClick, { args: event });\n }\n this.scrollableParent = getScrollableParent(this.parent.element);\n if (!this.parent.element.classList.contains(classes.CLS_FULL_SCREEN)) {\n var evenArgs = {\n cancel: false,\n requestType: 'Maximize',\n targetItem: 'Maximize',\n args: event\n };\n this.parent.trigger(events.actionBegin, evenArgs, function (beginEventArgs) {\n if (!beginEventArgs.cancel) {\n if (_this.parent.toolbarSettings.enableFloating &&\n !_this.parent.inlineMode.enable && _this.parent.toolbarSettings.enable) {\n _this.parent.getToolbarElement().style.width = '100%';\n _this.parent.getToolbarElement().style.top = '0px';\n }\n _this.parent.element.classList.add(classes.CLS_FULL_SCREEN);\n _this.toggleParentOverflow(true);\n var isExpand = _this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;\n _this.parent.setContentHeight(null, isExpand);\n if (_this.parent.toolbarModule) {\n if (!_this.parent.getBaseToolbarObject().toolbarObj.items[0].properties) {\n _this.parent.getBaseToolbarObject().toolbarObj.removeItems(0);\n }\n if (Browser.isDevice) {\n _this.parent.toolbarModule.removeFixedTBarClass();\n }\n _this.parent.toolbarModule.updateItem({\n targetItem: 'Maximize',\n updateItem: 'Minimize',\n baseToolbar: _this.parent.getBaseToolbarObject()\n });\n }\n _this.parent.refreshUI();\n _this.parent.trigger(events.actionComplete, { requestType: 'Maximize', targetItem: 'Maximize', args: event });\n }\n });\n }\n };\n /**\n * hideFullScreen method\n *\n * @param {MouseEvent} event - specifies the mouse event\n * @returns {void}\n * @hidden\n\n */\n FullScreen.prototype.hideFullScreen = function (event) {\n var _this = this;\n if (this.parent.toolbarSettings.enable === true && this.parent.editorMode !== 'Markdown'\n && !isNOU(this.parent.quickToolbarModule)) {\n this.parent.quickToolbarModule.hideQuickToolbars();\n }\n if (this.parent.showTooltip && !isNOU(document.querySelector('.e-tooltip-wrap'))) {\n this.parent.notify(events.maximizeMinimizeClick, { args: event });\n }\n if (this.parent.element.classList.contains(classes.CLS_FULL_SCREEN)) {\n var evenArgs = {\n cancel: false,\n requestType: 'Minimize',\n targetItem: 'Minimize',\n args: event\n };\n this.parent.trigger(events.actionBegin, evenArgs, function (beginEventArgs) {\n if (!beginEventArgs.cancel) {\n _this.parent.element.classList.remove(classes.CLS_FULL_SCREEN);\n var elem = document.querySelectorAll('.e-rte-overflow');\n for (var i = 0; i < elem.length; i++) {\n removeClass([elem[i]], ['e-rte-overflow']);\n }\n var isExpand = _this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;\n _this.parent.setContentHeight(null, isExpand);\n if (_this.parent.toolbarModule) {\n if (!_this.parent.getBaseToolbarObject().toolbarObj.items[0].properties) {\n _this.parent.getBaseToolbarObject().toolbarObj.removeItems(0);\n }\n _this.parent.toolbarModule.updateItem({\n targetItem: 'Minimize',\n updateItem: 'Maximize',\n baseToolbar: _this.parent.getBaseToolbarObject()\n });\n if (Browser.isDevice && _this.parent.inlineMode.enable) {\n _this.parent.toolbarModule.addFixedTBarClass();\n }\n }\n _this.parent.trigger(events.actionComplete, { requestType: 'Minimize', targetItem: 'Minimize', args: event });\n }\n });\n }\n };\n // eslint-disable-next-line\n FullScreen.prototype.toggleParentOverflow = function (isAdd) {\n if (isNOU(this.scrollableParent)) {\n return;\n }\n for (var i = 0; i < this.scrollableParent.length; i++) {\n if (this.scrollableParent[i].nodeName === '#document') {\n var elem = document.querySelector('body');\n addClass([elem], ['e-rte-overflow']);\n }\n else {\n var elem = this.scrollableParent[i];\n addClass([elem], ['e-rte-overflow']);\n }\n }\n };\n FullScreen.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n switch (originalEvent.action) {\n case 'full-screen':\n this.showFullScreen(event.args);\n originalEvent.preventDefault();\n break;\n case 'escape':\n this.hideFullScreen(event.args);\n originalEvent.preventDefault();\n break;\n }\n };\n FullScreen.prototype.addEventListener = function () {\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n FullScreen.prototype.removeEventListener = function () {\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n /**\n * destroy method\n *\n * @returns {void}\n * @hidden\n\n */\n FullScreen.prototype.destroy = function () {\n if (this.parent.element.classList.contains(classes.CLS_FULL_SCREEN)) {\n this.toggleParentOverflow(false);\n }\n var elem = document.querySelectorAll('.e-rte-overflow');\n for (var i = 0; i < elem.length; i++) {\n removeClass([elem[i]], ['e-rte-overflow']);\n }\n this.removeEventListener();\n };\n FullScreen.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n return FullScreen;\n}());\nexport { FullScreen };\n","import { isNullOrUndefined as isNOU, detach, Browser } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * `EnterKey` module is used to handle enter key press actions.\n */\nvar EnterKeyAction = /** @class */ (function () {\n function EnterKeyAction(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n EnterKeyAction.prototype.addEventListener = function () {\n this.parent.on(events.enterHandler, this.enterHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n EnterKeyAction.prototype.destroy = function () {\n this.removeEventListener();\n };\n EnterKeyAction.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n EnterKeyAction.prototype.removeEventListener = function () {\n this.parent.off(events.enterHandler, this.enterHandler);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n EnterKeyAction.prototype.getRangeNode = function () {\n this.range = this.parent.getRange();\n this.startNode = this.range.startContainer.nodeName === '#text' ? this.range.startContainer.parentElement :\n this.range.startContainer;\n this.endNode = this.range.endContainer.nodeName === '#text' ? this.range.endContainer.parentElement :\n this.range.endContainer;\n };\n EnterKeyAction.prototype.enterHandler = function (e) {\n var _this = this;\n this.getRangeNode();\n var isTableEnter = true;\n this.formatTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote'];\n if (!isNOU(this.startNode.closest('TABLE')) && !isNOU(this.endNode.closest('TABLE'))) {\n isTableEnter = false;\n var curElement = this.startNode;\n var blockElement = curElement;\n while (!this.parent.formatter.editorManager.domNode.isBlockNode(curElement)) {\n curElement = curElement.parentElement;\n blockElement = curElement;\n }\n isTableEnter = blockElement.tagName === 'TD' || blockElement.tagName === 'TBODY' ? false : true;\n }\n if (e.args.which === 13 && !e.args.ctrlKey && (!Browser.isDevice ? e.args.code === 'Enter' : e.args.key === 'Enter')) {\n if (isNOU(this.startNode.closest('LI, UL, OL')) && isNOU(this.endNode.closest('LI, UL, OL')) && isTableEnter &&\n isNOU(this.startNode.closest('PRE')) && isNOU(this.endNode.closest('PRE'))) {\n var shiftKey_1 = e.args.shiftKey;\n var actionBeginArgs = {\n cancel: false,\n name: events.actionBegin,\n requestType: shiftKey_1 ? 'ShiftEnterAction' : 'EnterAction',\n originalEvent: e.args\n };\n this.parent.trigger(events.actionBegin, actionBeginArgs, function (actionBeginArgs) {\n if (!actionBeginArgs.cancel) {\n if (!(_this.range.startOffset === _this.range.endOffset && _this.range.startContainer === _this.range.endContainer)) {\n if (!(_this.range.startContainer.nodeName === 'SPAN' && (_this.range.startContainer.classList.contains('e-video-wrap') ||\n _this.range.startContainer.classList.contains('e-audio-wrap')))) {\n _this.range.deleteContents();\n }\n if (_this.range.startContainer.nodeName === '#text' && _this.range.startContainer.textContent.length === 0 &&\n _this.range.startContainer.parentElement !== _this.parent.inputElement) {\n if (_this.parent.enterKey === 'BR') {\n _this.range.startContainer.parentElement.innerHTML = '​';\n }\n else {\n _this.range.startContainer.parentElement.innerHTML = '
';\n }\n }\n else if (_this.range.startContainer === _this.parent.inputElement && _this.range.startContainer.innerHTML === '') {\n _this.range.startContainer.innerHTML = '
';\n var focusElem = _this.range.startContainer.childNodes[_this.range.startOffset];\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, 0);\n }\n else if (_this.parent.inputElement === _this.range.startContainer) {\n var focusElem = _this.range.startContainer.childNodes[_this.range.startOffset];\n if (focusElem.nodeName === '#text' && focusElem.textContent.length === 0) {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, focusElem.textContent.length === 0 ? 0 : focusElem.previousSibling.textContent.length);\n }\n else {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, focusElem.textContent.length >= 0 ? 0 : 1);\n if (focusElem.previousSibling.textContent.length === 0) {\n detach(focusElem.previousSibling);\n if (!shiftKey_1) {\n var currentFocusElem = !isNOU(focusElem.lastChild) ? focusElem.lastChild : focusElem;\n while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text' && currentFocusElem.nodeName !== 'BR') {\n currentFocusElem = currentFocusElem.lastChild;\n }\n if (currentFocusElem.nodeName !== 'BR' && currentFocusElem.parentElement.textContent.length === 0 && currentFocusElem.parentElement.innerHTML.length === 0 &&\n currentFocusElem.parentElement.nodeName !== 'BR') {\n currentFocusElem.parentElement.appendChild(_this.parent.createElement('BR'));\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentFocusElem.nodeName === 'BR' ? currentFocusElem : currentFocusElem.parentElement, currentFocusElem.parentElement.textContent.length >= 0 || currentFocusElem.nodeName === 'BR' ? 0 : 1);\n }\n }\n else if (focusElem.textContent.length === 0) {\n var currentFocusElem = focusElem.previousSibling.nodeName === '#text' ? focusElem.previousSibling : focusElem.previousSibling.lastChild;\n while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text') {\n currentFocusElem = currentFocusElem.lastChild;\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentFocusElem, currentFocusElem.textContent.length);\n detach(focusElem);\n }\n else if (_this.parent.enterKey !== 'BR' &&\n focusElem.previousSibling.textContent.length !== 0 && focusElem.textContent.length !== 0) {\n e.args.preventDefault();\n return;\n }\n }\n _this.getRangeNode();\n }\n }\n if (_this.range.startContainer === _this.range.endContainer &&\n _this.range.startOffset === _this.range.endOffset && _this.range.startContainer === _this.parent.inputElement) {\n if (!(_this.parent.inputElement.childNodes.length === 1 && _this.parent.inputElement.childNodes[0].nodeName === 'TABLE')) {\n if (isNOU(_this.range.startContainer.childNodes[_this.range.startOffset])) {\n var currentLastElem = _this.range.startContainer.childNodes[_this.range.startOffset - 1];\n while (currentLastElem.lastChild !== null && currentLastElem.nodeName !== '#text') {\n currentLastElem = currentLastElem.lastChild;\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentLastElem, (currentLastElem.nodeName === 'BR' ? 0 : currentLastElem.textContent.length));\n }\n else {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.range.startContainer.childNodes[_this.range.startOffset], 0);\n }\n }\n _this.getRangeNode();\n }\n if ((_this.parent.enterKey === 'P' && !shiftKey_1) || (_this.parent.enterKey === 'DIV' && !shiftKey_1) ||\n (_this.parent.shiftEnterKey === 'P' && shiftKey_1) ||\n (_this.parent.shiftEnterKey === 'DIV' && shiftKey_1)) {\n if (_this.range.startOffset === 1 && _this.parent.inputElement.childNodes.length === 1 && _this.parent.inputElement.childNodes[0].nodeName === 'TABLE') {\n var newElem = _this.createInsertElement(shiftKey_1);\n newElem.appendChild(_this.parent.createElement('BR'));\n _this.parent.inputElement.appendChild(newElem);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, 0);\n }\n else {\n var nearBlockNode = void 0;\n if (isTableEnter && _this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode)) {\n nearBlockNode = _this.startNode;\n }\n else {\n nearBlockNode = _this.parent.formatter.editorManager.domNode.blockParentNode(_this.startNode);\n }\n var isMediaNode = false; // To check the image audio and video node cases\n var isFocusedFirst = false;\n if (_this.range.startOffset !== 0 && _this.range.endOffset !== 0 &&\n _this.range.startContainer === _this.range.endContainer && !(!isNOU(nearBlockNode.childNodes[0])\n && (nearBlockNode.childNodes[0].nodeName === 'IMG' || nearBlockNode.querySelectorAll('img, audio, video').length > 0))) {\n var startNodeText = _this.range.startContainer.textContent;\n var splitFirstText = startNodeText.substring(0, _this.range.startOffset);\n // eslint-disable-next-line max-len\n if (splitFirstText.charCodeAt(_this.range.startOffset - 1) !== 160 && splitFirstText.trim().length === 0) {\n isFocusedFirst = true;\n }\n }\n else if (_this.range.startOffset === 0 && _this.range.endOffset === 0) {\n isFocusedFirst = true;\n }\n _this.removeBRElement(nearBlockNode);\n var fireFoxEnterAtMiddle = Browser.userAgent.indexOf('Firefox') !== -1 && _this.range.startOffset === 0 && _this.range.startContainer === _this.range.endContainer &&\n _this.range.startContainer.nodeName === '#text' && !_this.parent.formatter.editorManager.domNode.isBlockNode(_this.range.startContainer.previousSibling) &&\n _this.range.startContainer.parentElement === _this.range.startContainer.previousSibling.parentElement;\n // eslint-disable-next-line max-len\n if (!fireFoxEnterAtMiddle && ((_this.range.startOffset === 0 && _this.range.endOffset === 0) || isFocusedFirst) &&\n !(!isNOU(_this.range.startContainer.previousSibling) &&\n (_this.range.startContainer.previousSibling.nodeName === 'IMG' || _this.range.startContainer.previousSibling.nodeName === 'BR'))) {\n var isNearBlockLengthZero = void 0;\n var newElem = void 0;\n if (!isNOU(_this.range.startContainer.childNodes) && _this.range.startContainer.textContent.length === 0\n && (_this.range.startContainer.querySelectorAll('img, audio, video').length > 0 ||\n _this.range.startContainer.nodeName === 'IMG' || _this.range.startContainer.nodeName === 'TABLE')) {\n newElem = _this.createInsertElement(shiftKey_1);\n isMediaNode = true;\n isNearBlockLengthZero = false;\n }\n else {\n if ((nearBlockNode.textContent.trim().length !== 0 ||\n nearBlockNode.childNodes[0].nodeName === 'IMG' ||\n (nearBlockNode.textContent.trim() === '' && nearBlockNode.querySelectorAll('img, audio, video').length > 0))) {\n if ((_this.range.startOffset === _this.range.endOffset && _this.range.startOffset !== 0)) {\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, false).cloneNode(true);\n }\n else {\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true).cloneNode(true);\n isMediaNode = true;\n }\n isNearBlockLengthZero = false;\n }\n else {\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true).cloneNode(true);\n isNearBlockLengthZero = true;\n }\n }\n var insertElem = void 0;\n if (_this.formatTags.indexOf(newElem.nodeName.toLocaleLowerCase()) < 0) {\n insertElem = _this.createInsertElement(shiftKey_1);\n }\n else {\n insertElem = _this.parent.createElement(newElem.nodeName);\n }\n while (newElem.firstChild) {\n insertElem.appendChild(newElem.firstChild);\n }\n nearBlockNode.parentElement.insertBefore(insertElem, nearBlockNode);\n if (!isNearBlockLengthZero) {\n var currentFocusElem = insertElem;\n var finalFocusElem = void 0;\n if (_this.range.startOffset === _this.range.endOffset && _this.range.startOffset !== 0) {\n while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text' &&\n currentFocusElem.nodeName !== 'BR') {\n finalFocusElem = currentFocusElem;\n currentFocusElem = currentFocusElem.lastChild;\n }\n }\n else {\n finalFocusElem = currentFocusElem;\n }\n finalFocusElem.innerHTML = '
';\n if (!isMediaNode) {\n detach(nearBlockNode);\n }\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), insertElem.nextElementSibling, 0);\n }\n else if (nearBlockNode.textContent.length === 0 && !(!isNOU(nearBlockNode.childNodes[0]) && nearBlockNode.childNodes[0].nodeName === 'IMG')) {\n if (!isNOU(nearBlockNode.children[0]) && nearBlockNode.children[0].tagName !== 'BR') {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, false).cloneNode(true);\n _this.parent.formatter.editorManager.domNode.insertAfter(newElem, nearBlockNode);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, newElem.textContent.length >= 0 ? 0 : 1);\n }\n else {\n var insertElem = _this.createInsertElement(shiftKey_1);\n insertElem.innerHTML = '
';\n _this.parent.formatter.editorManager.domNode.insertAfter(insertElem, nearBlockNode);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), insertElem, 0);\n }\n }\n else if (_this.range.startContainer === _this.range.endContainer && _this.range.startContainer.nodeName === 'SPAN' &&\n (_this.range.startContainer.classList.contains('e-video-wrap') ||\n _this.range.startContainer.classList.contains('e-audio-wrap'))) {\n if (nearBlockNode.textContent.trim().length > 0) {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true);\n var audioVideoElem = !isNOU(newElem.previousSibling.querySelector('.e-video-wrap')) ?\n newElem.previousSibling.querySelector('.e-video-wrap') : newElem.previousSibling.querySelector('.e-audio-wrap');\n var isBRInserted = false;\n var lastNode = audioVideoElem.previousSibling;\n while (!isNOU(lastNode) && lastNode.nodeName !== '#text') {\n lastNode = lastNode.lastChild;\n }\n if (isNOU(lastNode)) {\n var brElm = _this.parent.createElement('br');\n audioVideoElem.parentElement.appendChild(brElm);\n isBRInserted = true;\n }\n if (isBRInserted) {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), audioVideoElem.parentElement, 0);\n }\n else {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), lastNode, lastNode.textContent.length);\n }\n detach(audioVideoElem);\n }\n else {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true);\n var focusElem = newElem.previousSibling;\n while (!isNOU(focusElem.firstChild)) {\n detach(focusElem.firstChild);\n }\n var brElm = _this.parent.createElement('br');\n focusElem.appendChild(brElm);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, 0);\n }\n if (!isNOU(_this.parent.audioModule)) {\n _this.parent.audioModule.hideAudioQuickToolbar();\n }\n if (!isNOU(_this.parent.videoModule)) {\n _this.parent.videoModule.hideVideoQuickToolbar();\n }\n }\n else {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true);\n if (!isNOU(newElem.childNodes[0]) && newElem.childNodes[0].nodeName === '#text' &&\n newElem.childNodes[0].textContent.length === 0) {\n detach(newElem.childNodes[0]);\n }\n if (newElem.textContent.trim().length === 0) {\n var brElm = _this.parent.createElement('br');\n if (_this.startNode.nodeName === 'A') {\n var startParentElem = _this.startNode.parentElement;\n _this.startNode.parentElement.insertBefore(brElm, _this.startNode);\n detach(_this.startNode);\n _this.startNode = startParentElem;\n }\n else {\n if (_this.startNode.nodeName !== 'BR') {\n _this.startNode.appendChild(brElm);\n }\n }\n if (newElem.childNodes[0].textContent === '\\n') {\n detach(newElem.childNodes[0]);\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.startNode, 0);\n }\n if (((_this.parent.enterKey === 'P' || _this.parent.enterKey === 'DIV') && !shiftKey_1) || ((_this.parent.shiftEnterKey === 'DIV' ||\n _this.parent.shiftEnterKey === 'P') && shiftKey_1)) {\n var isHeadingTag = _this.formatTags.indexOf(newElem.nodeName.toLocaleLowerCase());\n if ((isHeadingTag < 0) || (isHeadingTag >= 0 && newElem.textContent.trim().length === 0)) {\n var insertElm = _this.createInsertElement(shiftKey_1);\n while (newElem.firstChild) {\n insertElm.appendChild(newElem.firstChild);\n }\n _this.parent.formatter.editorManager.domNode.insertAfter(insertElm, newElem);\n detach(newElem);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode) ?\n insertElm : _this.startNode, 0);\n }\n }\n }\n }\n e.args.preventDefault();\n }\n if ((_this.parent.enterKey === 'BR' && !shiftKey_1) || (_this.parent.shiftEnterKey === 'BR' && shiftKey_1)) {\n var currentParent = void 0;\n if (!_this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode)) {\n var currentNode = _this.startNode;\n var previousNode = currentNode;\n while (!_this.parent.formatter.editorManager.domNode.isBlockNode(currentNode)) {\n previousNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n currentParent = currentNode === _this.parent.inputElement ?\n previousNode : currentNode;\n }\n else {\n currentParent = _this.startNode;\n }\n _this.removeBRElement(currentParent);\n var isEmptyBrInserted = false;\n var currentParentLastChild = currentParent.lastChild;\n while (!isNOU(currentParentLastChild) && !(currentParentLastChild.nodeName === '#text' || currentParentLastChild.nodeName === 'BR'\n || currentParentLastChild.nodeName === 'IMG')) {\n currentParentLastChild = currentParentLastChild.lastChild;\n }\n var isLastNodeLength = _this.range.startContainer === currentParentLastChild ?\n _this.range.startContainer.textContent.length : currentParent.textContent.length;\n var isImageElement = (_this.range.startContainer.nodeName === 'IMG' || (_this.range.startContainer.childNodes.length > 0\n && _this.range.startContainer.childNodes[_this.range.startOffset].nodeName === 'IMG'));\n if (currentParent !== _this.parent.inputElement &&\n _this.parent.formatter.editorManager.domNode.isBlockNode(currentParent) &&\n _this.range.startOffset === _this.range.endOffset &&\n (_this.range.startOffset === isLastNodeLength ||\n (currentParent.textContent.trim().length === 0 && isImageElement))) {\n var focusBRElem = _this.parent.createElement('br');\n if (_this.range.startOffset === 0 && _this.range.startContainer.nodeName === 'TABLE') {\n _this.range.startContainer.parentElement.insertBefore(focusBRElem, _this.range.startContainer);\n }\n else {\n if (currentParentLastChild.nodeName === 'BR' && currentParent.textContent.length === 0) {\n _this.parent.formatter.editorManager.domNode.insertAfter(focusBRElem, currentParentLastChild);\n }\n else if (_this.range.startOffset === 0 && _this.range.endOffset === 0 && isImageElement) {\n var imageElement = _this.range.startContainer.nodeName === 'IMG' ? _this.range.startContainer :\n _this.range.startContainer.childNodes[_this.range.startOffset];\n currentParent.insertBefore(focusBRElem, imageElement);\n focusBRElem = imageElement;\n }\n else {\n var lineBreakBRElem = _this.parent.createElement('br');\n _this.parent.formatter.editorManager.domNode.insertAfter(focusBRElem, _this.range.startContainer);\n _this.parent.formatter.editorManager.domNode.insertAfter(lineBreakBRElem, _this.range.startContainer);\n }\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusBRElem, 0);\n }\n else if (!isNOU(currentParent) && currentParent !== _this.parent.inputElement && currentParent.nodeName !== 'BR') {\n if (currentParent.textContent.trim().length === 0 || (currentParent.textContent.trim().length === 1 &&\n currentParent.textContent.charCodeAt(0) === 8203)) {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, currentParent, true).cloneNode(true);\n _this.parent.formatter.editorManager.domNode.insertAfter(newElem, currentParent);\n var outerBRElem = _this.parent.createElement('br');\n newElem.parentElement.insertBefore(outerBRElem, newElem);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, 0);\n }\n else {\n var newElem = void 0;\n var outerBRElem = _this.parent.createElement('br');\n if (_this.range.startOffset === 0 && _this.range.endOffset === 0 &&\n !isNOU(currentParent.previousSibling) && currentParent.previousSibling.nodeName === 'BR') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, currentParent, false).cloneNode(true);\n _this.parent.formatter.editorManager.domNode.insertAfter(outerBRElem, currentParent);\n _this.insertFocusContent();\n var currentFocusElem = outerBRElem.nextSibling;\n while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text') {\n currentFocusElem = currentFocusElem.lastChild;\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentFocusElem, 0);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isEmptyBrInserted = true;\n }\n else {\n _this.insertBRElement();\n }\n }\n }\n else {\n _this.insertBRElement();\n }\n e.args.preventDefault();\n }\n _this.parent.trigger(events.actionComplete, { requestType: shiftKey_1 ? 'ShiftEnterAction' : 'EnterAction', args: e.args });\n }\n });\n }\n }\n };\n EnterKeyAction.prototype.removeBRElement = function (currentElement) {\n if (Browser.userAgent.indexOf('Firefox') !== -1 &&\n this.range.endOffset === currentElement.textContent.length && (currentElement.textContent.length !== 0 ||\n currentElement.querySelectorAll('BR').length > 1) &&\n !isNOU(currentElement.lastChild) && currentElement.lastChild.nodeName === 'BR') {\n detach(currentElement.lastChild);\n }\n };\n EnterKeyAction.prototype.insertBRElement = function () {\n var isEmptyBrInserted = false;\n var isFocusTextNode = true;\n if (this.range.endContainer.textContent.length === 0 && this.range.startContainer.nodeName === 'BR') {\n isFocusTextNode = false;\n }\n var brElm = this.parent.createElement('br');\n if (this.startNode.nodeName === 'BR' && this.endNode.nodeName === 'BR' && this.range.startOffset === 0 && this.range.startOffset === this.range.endOffset) {\n this.parent.formatter.editorManager.domNode.insertAfter(brElm, this.startNode);\n isEmptyBrInserted = true;\n }\n else {\n if (this.startNode === this.parent.inputElement && !isNOU(this.range.startContainer.previousSibling) &&\n this.range.startContainer.previousSibling.nodeName === 'BR' && this.range.startContainer.textContent.length === 0) {\n isEmptyBrInserted = true;\n }\n this.range.insertNode(brElm);\n }\n if (isEmptyBrInserted || (!isNOU(brElm.nextElementSibling) && brElm.nextElementSibling.tagName === 'BR') || (!isNOU(brElm.nextSibling) && brElm.nextSibling.textContent.length > 0)) {\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), !isNOU(brElm.nextSibling) && isFocusTextNode ? brElm.nextSibling : brElm, 0);\n isEmptyBrInserted = false;\n }\n else {\n var brElm2 = this.parent.createElement('br');\n this.range.insertNode(brElm2);\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), brElm, 0);\n }\n };\n EnterKeyAction.prototype.insertFocusContent = function () {\n if (this.range.startContainer.textContent.length === 0) {\n if (this.range.startContainer.nodeName === '#text') {\n this.range.startContainer.parentElement.innerHTML = '​';\n }\n else {\n this.range.startContainer.innerHTML = '​';\n }\n }\n };\n EnterKeyAction.prototype.createInsertElement = function (shiftKey) {\n var insertElem;\n if ((this.parent.enterKey === 'DIV' && !shiftKey) || (this.parent.shiftEnterKey === 'DIV' && shiftKey)) {\n insertElem = this.parent.createElement('div');\n }\n else if ((this.parent.enterKey === 'P' && !shiftKey) || (this.parent.shiftEnterKey === 'P' && shiftKey)) {\n insertElem = this.parent.createElement('p');\n }\n return insertElem;\n };\n return EnterKeyAction;\n}());\nexport { EnterKeyAction };\n","/**\n * Defines util methods used by Rich Text Editor.\n */\nimport { isNullOrUndefined as isNOU, addClass, removeClass, selectAll, createElement } from '@syncfusion/ej2-base';\nimport { Browser, detach, SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nimport * as classes from '../base/classes';\nimport * as CONSTANT from '../base/constant';\nimport * as model from '../models/items';\nimport { toolsLocale, fontNameLocale, formatsLocale, numberFormatListLocale, bulletFormatListLocale } from '../models/default-locale';\nvar undoRedoItems = ['Undo', 'Redo'];\nvar inlineNode = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button',\n 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'font', 'i', 'iframe', 'img', 'input',\n 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',\n 'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'strike', 'sub', 'sup', 'svg',\n 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];\n/**\n * @param {string} val - specifies the string value\n * @param {string} items - specifies the value\n * @returns {number} - returns the number value\n * @hidden\n */\nexport function getIndex(val, items) {\n var index = -1;\n items.some(function (item, i) {\n if (typeof item === 'string' && val === item.toLocaleLowerCase()) {\n index = i;\n return true;\n }\n return false;\n });\n return index;\n}\n/**\n * @param {Element} element - specifies the element\n * @param {string} className - specifies the string value\n * @returns {boolean} - returns the boolean value\n * @hidden\n */\nexport function hasClass(element, className) {\n var hasClass = false;\n if (element.classList.contains(className)) {\n hasClass = true;\n }\n return hasClass;\n}\n/**\n * @param {IDropDownItemModel} items - specifies the item model\n * @param {string} value - specifies the string value\n * @param {string} type - specifies the string value\n * @param {string} returnType - specifies the return type\n * @returns {string} - returns the string value\n * @hidden\n */\nexport function getDropDownValue(items, value, type, returnType) {\n var data;\n var result;\n for (var k = 0; k < items.length; k++) {\n if (type === 'value' && items[k].value.toLocaleLowerCase() === value.toLocaleLowerCase()) {\n data = items[k];\n break;\n }\n else if (type === 'text' && items[k].text.toLocaleLowerCase() === value.toLocaleLowerCase()) {\n data = items[k];\n break;\n }\n else if (type === 'subCommand' && items[k].subCommand.toLocaleLowerCase() === value.toLocaleLowerCase()) {\n data = items[k];\n break;\n }\n }\n if (!isNOU(data)) {\n switch (returnType) {\n case 'text':\n result = data.text;\n break;\n case 'value':\n result = data.value;\n break;\n case 'iconCss':\n result = data.iconCss;\n break;\n }\n }\n return result;\n}\n/**\n * @returns {boolean} - returns the boolean value\n * @hidden\n */\nexport function isIDevice() {\n var result = false;\n if (Browser.isDevice && Browser.isIos) {\n result = true;\n }\n return result;\n}\n/**\n * @param {string} value - specifies the value\n * @returns {string} - returns the string value\n * @hidden\n */\nexport function getFormattedFontSize(value) {\n if (isNOU(value)) {\n return '';\n }\n return value;\n}\n/**\n * @param {MouseEvent} e - specifies the mouse event\n * @param {HTMLElement} parentElement - specifies the parent element\n * @param {boolean} isIFrame - specifies the boolean value\n * @returns {number} - returns the number\n * @hidden\n */\nexport function pageYOffset(e, parentElement, isIFrame) {\n var y = 0;\n if (isIFrame) {\n y = window.pageYOffset + parentElement.getBoundingClientRect().top + e.clientY;\n }\n else {\n y = e.pageY;\n }\n return y;\n}\n/**\n * @param {string} item - specifies the string\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @returns {string} - returns the string\n * @hidden\n */\nexport function getTooltipText(item, serviceLocator) {\n var i10n = serviceLocator.getService('rteLocale');\n var itemLocale = toolsLocale[\"\" + item];\n var tooltipText = i10n.getConstant(itemLocale);\n return tooltipText;\n}\n/**\n * @param {ISetToolbarStatusArgs} e - specifies the e element\n * @param {boolean} isPopToolbar - specifies the boolean value\n * @param {IRichTextEditor} self - specifies the parent element\n * @returns {void}\n * @hidden\n */\nexport function setToolbarStatus(e, isPopToolbar, self) {\n updateDropDownFontFormatLocale(self);\n var dropDown = e.dropDownModule;\n var data = e.args;\n var keys = Object.keys(e.args);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n for (var j = 0; j < e.tbItems.length; j++) {\n var item = e.tbItems[j].subCommand;\n var itemStr = item && item.toLocaleLowerCase();\n if (item && (itemStr === key) || (item === 'UL' && key === 'unorderedlist') || (item === 'OL' && key === 'orderedlist') ||\n (itemStr === 'pre' && key === 'insertcode') || (item === 'NumberFormatList' && key === 'numberFormatList' ||\n item === 'BulletFormatList' && key === 'bulletFormatList')) {\n if (typeof data[\"\" + key] === 'boolean') {\n if (data[\"\" + key] === true) {\n addClass([e.tbElements[j]], [classes.CLS_ACTIVE]);\n }\n else {\n removeClass([e.tbElements[j]], [classes.CLS_ACTIVE]);\n }\n }\n else if ((typeof data[\"\" + key] === 'string' || data[\"\" + key] === null) &&\n getIndex(key, e.parent.toolbarSettings.items) > -1) {\n var value = ((data[\"\" + key]) ? data[\"\" + key] : '');\n var result = '';\n switch (key) {\n case 'formats': {\n if (isNOU(dropDown.formatDropDown) || isPopToolbar ||\n (!isNOU(dropDown.formatDropDown) && dropDown.formatDropDown.isDestroyed)) {\n break;\n }\n var formatItems = e.parent.format.types;\n var formatContent = isNOU(e.parent.format.default) ? formatItems[0].text :\n e.parent.format.default;\n result = getDropDownValue(formatItems, value, 'subCommand', 'text');\n dropDown.formatDropDown.content = ('' +\n ''\n + (isNOU(result) ? formatContent : result) +\n '');\n dropDown.formatDropDown.dataBind();\n break;\n }\n case 'alignments': {\n if (isNOU(dropDown.alignDropDown) ||\n (!isNOU(dropDown.alignDropDown) && dropDown.alignDropDown.isDestroyed)) {\n break;\n }\n var alignItems = model.alignmentItems;\n result = getDropDownValue(alignItems, value, 'subCommand', 'iconCss');\n dropDown.alignDropDown.iconCss = isNOU(result) ? 'e-icons e-justify-left' : result;\n dropDown.alignDropDown.dataBind();\n break;\n }\n case 'fontname': {\n if (isNOU(dropDown.fontNameDropDown) || isPopToolbar ||\n (!isNOU(dropDown.fontNameDropDown) && dropDown.fontNameDropDown.isDestroyed)) {\n break;\n }\n var fontNameItems = e.parent.fontFamily.items;\n result = getDropDownValue(fontNameItems, value, 'value', 'text');\n var fontNameContent = isNOU(e.parent.fontFamily.default) ? fontNameItems[0].text :\n e.parent.fontFamily.default;\n var name_1 = (isNOU(result) ? fontNameContent : result);\n dropDown.fontNameDropDown.content = ('' +\n ''\n + name_1 + '');\n dropDown.fontNameDropDown.dataBind();\n break;\n }\n case 'fontsize': {\n if (isNOU(dropDown.fontSizeDropDown) ||\n (!isNOU(dropDown.fontSizeDropDown) && dropDown.fontSizeDropDown.isDestroyed)) {\n break;\n }\n var fontSizeItems = e.parent.fontSize.items;\n var fontSizeContent = isNOU(e.parent.fontSize.default) ? fontSizeItems[1].text :\n e.parent.fontSize.default;\n result = getDropDownValue(fontSizeItems, (value === '' ? fontSizeContent.replace(/\\s/g, '') : value), 'value', 'text');\n dropDown.fontSizeDropDown.content = ('' +\n ''\n + getFormattedFontSize(result) + '');\n dropDown.fontSizeDropDown.dataBind();\n break;\n }\n }\n }\n }\n }\n }\n}\n/**\n * @param {string} items - specifies the string value\n * @returns {string[]} - returns the array value\n * @hidden\n */\nexport function getCollection(items) {\n if (typeof items === 'object') {\n return items;\n }\n else {\n return [items];\n }\n}\n/**\n * @param {string[]} items - specifies the array of string value\n * @param {IToolbarItemModel} toolbarItems - specifies the tool bar model\n * @returns {number} - returns the number\n * @hidden\n */\nexport function getTBarItemsIndex(items, toolbarItems) {\n var itemsIndex = [];\n for (var i = 0; i < items.length; i++) {\n for (var j = 0; j < toolbarItems.length; j++) {\n if (toolbarItems[j].type === 'Separator') {\n continue;\n }\n else {\n if (items[i] === 'OrderedList' && toolbarItems[j].subCommand === 'OL') {\n itemsIndex.push(j);\n break;\n }\n else if (items[i] === 'UnorderedList' && toolbarItems[j].subCommand === 'UL') {\n itemsIndex.push(j);\n break;\n }\n else if (items[i] === 'InsertCode' && toolbarItems[j].subCommand === 'Pre') {\n itemsIndex.push(j);\n break;\n }\n else if (items[i] === 'FileManager' && toolbarItems[j].subCommand === 'File') {\n itemsIndex.push(j);\n break;\n }\n else if (typeof (items[i]) === 'object' && items[i].command === 'Custom') {\n itemsIndex.push(i);\n break;\n }\n else if (items[i] === toolbarItems[j].subCommand) {\n itemsIndex.push(j);\n break;\n }\n }\n }\n }\n return itemsIndex;\n}\n/**\n * @param {BaseToolbar} baseToolbar - specifies the base\n * @param {boolean} undoRedoStatus - specifies the boolean value\n * @returns {void}\n * @hidden\n */\nexport function updateUndoRedoStatus(baseToolbar, undoRedoStatus) {\n var i = 0;\n var trgItems = getTBarItemsIndex(getCollection(undoRedoItems), baseToolbar.toolbarObj.items);\n var tbItems = selectAll('.' + classes.CLS_TB_ITEM, baseToolbar.toolbarObj.element);\n var keys = Object.keys(undoRedoStatus);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var target = tbItems[trgItems[i]];\n if (target) {\n baseToolbar.toolbarObj.enableItems(target, undoRedoStatus[\"\" + key]);\n }\n i++;\n }\n}\n/**\n * To dispatch the event manually\n *\n * @param {Element} element - specifies the element.\n * @param {string} type - specifies the string type.\n * @returns {void}\n * @hidden\n\n */\nexport function dispatchEvent(element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n}\n/**\n * To parse the HTML\n *\n * @param {string} value - specifies the string value\n * @returns {DocumentFragment} - returns the document\n * @hidden\n */\nexport function parseHtml(value) {\n var tempNode = createElement('template');\n tempNode.innerHTML = value;\n if (tempNode.content instanceof DocumentFragment) {\n return tempNode.content;\n }\n else {\n return document.createRange().createContextualFragment(value);\n }\n}\n/**\n * @param {Document} docElement - specifies the document element\n * @param {Element} node - specifies the node\n * @returns {Node[]} - returns the node array\n * @hidden\n */\nexport function getTextNodesUnder(docElement, node) {\n var nodes = [];\n for (node = node.firstChild; node; node = node.nextSibling) {\n if (node.nodeType === 3) {\n nodes.push(node);\n }\n else {\n nodes = nodes.concat(getTextNodesUnder(docElement, node));\n }\n }\n return nodes;\n}\n/**\n * @param {IToolsItemConfigs} obj - specifies the configuration\n * @returns {void}\n * @hidden\n */\nexport function toObjectLowerCase(obj) {\n var convertedValue = {};\n var keys = Object.keys(obj);\n for (var i = 0; i < Object.keys(obj).length; i++) {\n convertedValue[keys[i].toLocaleLowerCase()] = obj[keys[i]];\n }\n return convertedValue;\n}\n/**\n * @param {string} value - specifies the string value\n * @param {IRichTextEditor} rteObj - specifies the rte object\n * @returns {string} - returns the string\n * @hidden\n */\nexport function getEditValue(value, rteObj) {\n var val;\n if (value !== null && value !== '') {\n val = rteObj.enableHtmlEncode ? updateTextNode(decode(value), rteObj) : updateTextNode(value, rteObj);\n rteObj.setProperties({ value: val }, true);\n }\n else {\n if (rteObj.enterKey === 'DIV') {\n val = rteObj.enableHtmlEncode ? '<div><br/></div>' : '

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


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

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


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


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

' || value === '<div><br></div>'\n || value === '
' || value === '<br>'\n || value === '') ? true : false;\n}\n/**\n * @param {string} value - specifies the string value\n * @returns {string} - returns the string\n * @hidden\n */\nexport function decode(value) {\n return value.replace(/&/g, '&').replace(/&lt;/g, '<')\n .replace(/</g, '<').replace(/&gt;/g, '>')\n .replace(/>/g, '>').replace(/ /g, ' ')\n .replace(/&nbsp;/g, ' ').replace(/"/g, '');\n}\n/**\n * @param {string} value - specifies the string value\n * @param {IRichTextEditor} parent - specifies the rte\n * @returns {string} - returns the string value\n * @hidden\n */\nexport function sanitizeHelper(value, parent) {\n if (parent.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n if (item.selectors.tags[2] && item.selectors.tags[2].indexOf('iframe') > -1) {\n item.selectors.tags[2] = 'iframe:not(.e-rte-embed-url)';\n }\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n parent.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNOU(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n}\n/**\n * @param {string} dataUrl - specifies the string value\n * @returns {BaseToolbar} - returns the value\n * @hidden\n */\n//Converting the base64 url to blob\nexport function convertToBlob(dataUrl) {\n var arr = dataUrl.split(',');\n var mime = arr[0].match(/:(.*?);/)[1];\n var bstr = atob(arr[1]);\n var n = bstr.length;\n var u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new Blob([u8arr], { type: mime });\n}\n/**\n * @param {IRichTextEditor} self - specifies the rte\n * @param {string} localeItems - specifies the locale items\n * @param {IDropDownItemModel} item - specifies the dropdown item\n * @returns {string} - returns the value\n * @hidden\n */\nexport function getLocaleFontFormat(self, localeItems, item) {\n for (var i = 0; localeItems.length > i; i++) {\n if (localeItems[i].value === item.value || localeItems[i].value === item.subCommand) {\n return self.localeObj.getConstant(localeItems[i].locale);\n }\n }\n return item.text;\n}\n/**\n * @param {IRichTextEditor} self - specifies the rte\n * @returns {void}\n * @hidden\n */\nexport function updateDropDownFontFormatLocale(self) {\n model.fontFamily.forEach(function (item, i) {\n model.fontFamily[i].text = getLocaleFontFormat(self, fontNameLocale, model.fontFamily[i]);\n });\n model.formatItems.forEach(function (item, i) {\n model.formatItems[i].text = getLocaleFontFormat(self, formatsLocale, model.formatItems[i]);\n });\n model.numberFormatList.forEach(function (item, i) {\n model.numberFormatList[i].text = getLocaleFontFormat(self, numberFormatListLocale, model.numberFormatList[i]);\n });\n model.bulletFormatList.forEach(function (item, i) {\n model.bulletFormatList[i].text = getLocaleFontFormat(self, bulletFormatListLocale, model.bulletFormatList[i]);\n });\n}\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * Dialog Renderer\n */\nvar DialogRenderer = /** @class */ (function () {\n function DialogRenderer(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n DialogRenderer.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n DialogRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.destroy, this.removeEventListener);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n /**\n * dialog render method\n *\n * @param {DialogModel} e - specifies the dialog model.\n * @returns {void}\n * @hidden\n\n */\n DialogRenderer.prototype.render = function (e) {\n var dlgObj;\n e.beforeOpen = this.beforeOpen.bind(this);\n e.open = this.open.bind(this);\n if (isNOU(e.close)) {\n e.close = this.close.bind(this);\n }\n e.beforeClose = this.beforeClose.bind(this);\n // eslint-disable-next-line\n dlgObj = new Dialog(e);\n dlgObj.isStringTemplate = true;\n return dlgObj;\n };\n DialogRenderer.prototype.beforeOpen = function (args) {\n this.parent.trigger(events.beforeDialogOpen, args, this.beforeOpenCallback.bind(this, args));\n };\n DialogRenderer.prototype.beforeOpenCallback = function (args) {\n if (args.cancel) {\n this.parent.notify(events.clearDialogObj, null);\n }\n };\n DialogRenderer.prototype.open = function (args) {\n this.parent.trigger(events.dialogOpen, args);\n };\n DialogRenderer.prototype.beforeClose = function (args) {\n this.parent.trigger(events.beforeDialogClose, args, function (closeArgs) {\n if (!closeArgs.cancel) {\n if (closeArgs.container.classList.contains('e-popup-close')) {\n closeArgs.cancel = true;\n }\n }\n });\n };\n /**\n * dialog close method\n *\n * @param {Object} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n DialogRenderer.prototype.close = function (args) {\n this.parent.trigger(events.dialogClose, args);\n };\n DialogRenderer.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n return DialogRenderer;\n}());\nexport { DialogRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Complex, Browser, addClass, select, detach } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, formatUnit, L10n, closest } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, Event, removeClass, print as printWindow, attributes } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, compile, append, extend, debounce } from '@syncfusion/ej2-base';\nimport { Touch as EJ2Touch } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { Render } from '../renderer/render';\nimport { ViewSource } from '../renderer/view-source';\nimport { executeGroup } from './interface';\nimport { ServiceLocator } from '../services/service-locator';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { RenderType, ToolbarType, DialogType } from './enum';\nimport { ExecCommandCallBack } from '../actions/execute-command-callback';\nimport { KeyboardEvents } from '../actions/keyboard';\nimport { ToolbarSettings, ImageSettings, AudioSettings, VideoSettings, QuickToolbarSettings, FontFamily, FontSize, Format, NumberFormatList, BulletFormatList, FormatPainterSettings, EmojiSettings } from '../models/toolbar-settings';\nimport { FileManagerSettings } from '../models/toolbar-settings';\nimport { TableSettings, PasteCleanupSettings } from '../models/toolbar-settings';\nimport { FontColor, BackgroundColor } from '../models/toolbar-settings';\nimport { IFrameSettings } from '../models/iframe-settings';\nimport { InlineMode } from '../models/inline-mode';\nimport { defaultLocale } from '../models/default-locale';\nimport { setAttributes } from '../actions/html-attributes';\nimport { FullScreen } from '../actions/full-screen';\nimport { EnterKeyAction } from '../actions/enter-key';\nimport * as CONSTANT from '../../common/constant';\nimport { dispatchEvent, getEditValue, isIDevice, decode, isEditableValueEmpty, getDefaultValue } from '../base/util';\nimport { DialogRenderer } from '../renderer/dialog-renderer';\n/**\n * Represents the Rich Text Editor component.\n * ```html\n * \n * \n * ```\n */\nvar RichTextEditor = /** @class */ (function (_super) {\n __extends(RichTextEditor, _super);\n function RichTextEditor(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - specifies the declaration.\n * @hidden\n\n */\n RichTextEditor.prototype.requiredModules = function () {\n var modules = [];\n if (this.toolbarSettings.enable) {\n modules.push({ member: 'toolbar', args: [this, this.serviceLocator] });\n modules.push({\n member: 'link',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'table',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'image',\n args: [this, this.serviceLocator]\n });\n if (this.quickToolbarSettings.enable) {\n modules.push({ member: 'quickToolbar', args: [this, this.serviceLocator] });\n }\n }\n if (this.showCharCount) {\n modules.push({ member: 'count', args: [this, this.serviceLocator] });\n }\n if (this.editorMode === 'Markdown') {\n modules.push({ member: 'markdownEditor', args: [this, this.serviceLocator] });\n }\n if (this.editorMode === 'HTML') {\n modules.push({ member: 'htmlEditor', args: [this, this.serviceLocator] });\n modules.push({ member: 'pasteCleanup', args: [this, this.serviceLocator] });\n modules.push({\n member: 'audio',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'video',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'formatPainter',\n args: [this]\n });\n modules.push({\n member: 'emojiPicker',\n args: [this, this.serviceLocator]\n });\n }\n if (this.fileManagerSettings.enable) {\n modules.push({ member: 'fileManager', args: [this, this.serviceLocator] });\n }\n if (this.enableResize) {\n modules.push({ member: 'resize', args: [this] });\n }\n return modules;\n };\n RichTextEditor.prototype.updateEnable = function () {\n if (this.enabled) {\n removeClass([this.element], classes.CLS_DISABLED);\n this.element.setAttribute('aria-disabled', 'false');\n if (!isNOU(this.htmlAttributes.tabindex)) {\n this.inputElement.setAttribute('tabindex', this.htmlAttributes.tabindex);\n }\n else {\n this.inputElement.setAttribute('tabindex', '0');\n }\n }\n else {\n if (this.getToolbar()) {\n removeClass(this.getToolbar().querySelectorAll('.' + classes.CLS_ACTIVE), classes.CLS_ACTIVE);\n removeClass([this.getToolbar()], [classes.CLS_TB_FLOAT, classes.CLS_TB_ABS_FLOAT]);\n }\n addClass([this.element], classes.CLS_DISABLED);\n this.element.tabIndex = -1;\n this.element.setAttribute('aria-disabled', 'true');\n this.inputElement.setAttribute('tabindex', '-1');\n }\n };\n /**\n * setEnable method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.setEnable = function () {\n this.updateEnable();\n // eslint-disable-next-line\n (this.enabled) ? this.eventInitializer() : this.unWireEvents();\n };\n RichTextEditor.prototype.initializeValue = function () {\n this.isFocusOut = false;\n this.isRTE = false;\n this.isBlur = true;\n this.defaultResetValue = null;\n this.isResizeInitialized = false;\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @hidden\n * @private\n */\n RichTextEditor.prototype.preRender = function () {\n this.initializeValue();\n this.onBlurHandler = this.blurHandler.bind(this);\n this.onFocusHandler = this.focusHandler.bind(this);\n this.onResizeHandler = this.resizeHandler.bind(this);\n this.clickPoints = { clientX: 0, clientY: 0 };\n this.initialValue = this.value;\n this.serviceLocator = new ServiceLocator;\n this.initializeServices();\n this.setContainer();\n this.persistData();\n setStyleAttribute(this.element, { 'width': formatUnit(this.width) });\n attributes(this.element, { role: 'application', 'aria-label': 'Rich Text Editor' });\n };\n RichTextEditor.prototype.persistData = function () {\n if (this.enablePersistence && this.originalElement.tagName === 'TEXTAREA') {\n this.element.id = this.originalElement.id + '_wrapper';\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNOU(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n }\n };\n RichTextEditor.prototype.setContainer = function () {\n this.originalElement = this.element.cloneNode(true);\n if (this.value === null || this.valueTemplate !== null) {\n this.setValue();\n }\n if (this.element.hasAttribute('tabindex')) {\n this.htmlAttributes = { 'tabindex': this.element.getAttribute('tabindex') };\n this.element.removeAttribute('tabindex');\n }\n this.element.innerHTML = '';\n var invalidAttr = ['class', 'style', 'id', 'ejs-for'];\n var htmlAttr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(/^data-val/.test(this.element.attributes[a].name))) { // data-val for asp.net core data annotation validation.\n htmlAttr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(htmlAttr, this.htmlAttributes, htmlAttr);\n this.setProperties({ htmlAttributes: htmlAttr }, true);\n if (!isNOU(this.htmlAttributes.id)) {\n this.element.id = this.htmlAttributes.id;\n }\n if (this.element.tagName === 'TEXTAREA') {\n var rteOuterWrapper = this.createElement('div', {\n className: this.element.getAttribute('class')\n });\n this.element.innerHTML = '';\n this.element.parentElement.insertBefore(rteOuterWrapper, this.element);\n this.valueContainer = this.element;\n removeClass([this.valueContainer], this.element.getAttribute('class').split(' '));\n this.element = rteOuterWrapper;\n }\n else {\n this.valueContainer = this.createElement('textarea', {\n id: this.getID() + '-value',\n attrs: { 'aria-labelledby': this.getID() }\n });\n }\n this.valueContainer.name = this.getID();\n addClass([this.valueContainer], classes.CLS_RTE_HIDDEN);\n if (!isNOU(this.cssClass)) {\n var currentClassList = this.cssClass.split(' ');\n for (var i = 0; i < currentClassList.length; i++) {\n addClass([this.valueContainer], currentClassList[i]);\n }\n }\n this.element.appendChild(this.valueContainer);\n };\n /**\n * getPersistData method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Focuses the Rich Text Editor component\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.focusIn = function () {\n if (this.enabled) {\n this.inputElement.focus();\n this.focusHandler({});\n }\n };\n /**\n * Blurs the Rich Text Editor component\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.focusOut = function () {\n if (this.enabled) {\n this.inputElement.blur();\n this.blurHandler({});\n }\n };\n /**\n * Selects all the content in RichTextEditor\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.selectAll = function () {\n this.notify(events.selectAll, {});\n };\n /**\n * Selects a content range or an element\n *\n * @param {Range} range - Specify the range which you want to select within the content.\n * The method used to select a particular sentence or word or entire document.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.selectRange = function (range) {\n this.notify(events.selectRange, { range: range });\n };\n /**\n * Retrieves the HTML markup content from currently selected content of RichTextEditor.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.getSelection = function () {\n var str = '';\n this.notify(events.getSelectedHtml, {\n callBack: function (txt) {\n str = txt;\n }\n });\n return str;\n };\n /**\n * Shows the emoji picker\n *\n * @param {number} x - specifies the number value.\n * @param {number} y - specifies the number value.\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.showEmojiPicker = function (x, y) {\n if (this.readonly) {\n return;\n }\n this.notify(events.emojiPicker, { x: x, y: y });\n };\n /**\n * Executes the commands\n *\n * @returns {void}\n * @param {CommandName} commandName - Specifies the name of the command to be executed.\n * @param {string | HTMLElement | ILinkCommandsArgs | IImageCommandsArgs} value - Specifies the value that you want to execute.\n * @param {ExecuteCommandOption} option - specifies the command option\n * @public\n */\n RichTextEditor.prototype.executeCommand = function (commandName, value, option) {\n value = this.htmlPurifier(commandName, value);\n var internalValue;\n if (this.editorMode === 'HTML') {\n var range = this.getRange();\n if (this.iframeSettings.enable) {\n this.formatter.editorManager.nodeSelection.Clear(this.element.ownerDocument);\n }\n var toFocus = (this.iframeSettings.enable &&\n range.startContainer === this.inputElement) ? true : !this.inputElement.contains(range.startContainer);\n if (toFocus) {\n this.focusIn();\n }\n }\n var tool = executeGroup[\"\" + commandName];\n if (option && option.undo) {\n if (option.undo && this.formatter.getUndoRedoStack().length === 0) {\n this.formatter.saveData();\n }\n }\n if (this.maxLength !== -1 && !isNOU(tool.command)) {\n var currentInsertContentLength = 0;\n if (tool.command === 'Links') {\n currentInsertContentLength = value.text.length === 0 ?\n value.url.length : value.text.length;\n }\n if (tool.command === 'Images' || tool.command === 'Table' || tool.command === 'Files') {\n currentInsertContentLength = 1;\n }\n if (tool.command === 'InsertHTML') {\n if (!isNOU(value)) {\n var tempElem = this.createElement('div');\n tempElem.innerHTML = value;\n currentInsertContentLength = tempElem.textContent.length;\n }\n else if (!isNOU(tool.value) && (tool.value === '
' || tool.value === '
')) {\n currentInsertContentLength = 1;\n }\n }\n if (tool.command === 'InsertText') {\n currentInsertContentLength = value.length;\n }\n var currentLength = this.getText().trim().length;\n var selectionLength = this.getSelection().length;\n var totalLength = (currentLength - selectionLength) + currentInsertContentLength;\n if (!(this.maxLength === -1 || totalLength <= this.maxLength)) {\n return;\n }\n }\n internalValue = value;\n if (tool.command === 'FormatPainter') {\n if (!isNOU(value)) {\n this.formatPainterSettings = value;\n }\n internalValue = {\n formatPainterAction: tool.value\n };\n }\n this.formatter.editorManager.execCommand(tool.command, tool.subCommand ? tool.subCommand : (internalValue ? internalValue : tool.value), null, null, (internalValue ? internalValue : tool.value), (internalValue ? internalValue : tool.value));\n if (option && option.undo) {\n this.formatter.saveData();\n this.formatter.enableUndo(this);\n }\n this.setPlaceHolder();\n this.notify(events.contentChanged, {});\n };\n RichTextEditor.prototype.htmlPurifier = function (command, value) {\n if (this.editorMode === 'HTML') {\n switch (command) {\n case 'insertHTML':\n if (this.enableHtmlSanitizer) {\n if (typeof value === 'string') {\n value = this.htmlEditorModule.sanitizeHelper(value);\n }\n else {\n value = this.htmlEditorModule.sanitizeHelper(value.outerHTML);\n }\n }\n break;\n case 'insertTable':\n if (isNOU(value.width)) {\n value.width = { minWidth: this.tableSettings.minWidth,\n maxWidth: this.tableSettings.maxWidth, width: this.tableSettings.width };\n }\n break;\n case 'insertImage': {\n var temp = this.createElement('img', {\n attrs: {\n src: value.url\n }\n });\n var imageValue = temp.outerHTML;\n if (this.enableHtmlSanitizer) {\n imageValue = this.htmlEditorModule.sanitizeHelper(temp.outerHTML);\n }\n var url = (imageValue !== '' && (this.createElement('div', {\n innerHTML: imageValue\n }).firstElementChild).getAttribute('src')) || null;\n url = !isNOU(url) ? url : '';\n value.url = url;\n if (isNOU(value.width)) {\n value.width = { minWidth: this.insertImageSettings.minWidth,\n maxWidth: this.insertImageSettings.maxWidth, width: this.insertImageSettings.width };\n }\n if (isNOU(value.height)) {\n value.height = { minHeight: this.insertImageSettings.minHeight,\n maxHeight: this.insertImageSettings.maxHeight, height: this.insertImageSettings.height };\n }\n break;\n }\n case 'insertAudio': {\n var wrapTemp = this.createElement('audio', {\n attrs: {\n controls: ''\n }\n });\n var temp = this.createElement('source', {\n attrs: {\n src: value.url,\n type: value.url && value.url.split('.').length > 0\n ? 'audio/' + value.url.split('.')[value.url.split('.').length - 1] : ''\n }\n });\n wrapTemp.appendChild(temp);\n var audioValue = wrapTemp.outerHTML;\n if (this.enableHtmlSanitizer) {\n audioValue = this.htmlEditorModule.sanitizeHelper(wrapTemp.outerHTML);\n }\n var url = (audioValue !== '' && (this.createElement('div', {\n innerHTML: audioValue\n }).firstElementChild.firstElementChild).getAttribute('src')) || null;\n url = !isNOU(url) ? url : '';\n value.url = url;\n break;\n }\n case 'insertVideo': {\n var wrapTemp = this.createElement('video', {\n attrs: {\n controls: ''\n }\n });\n var temp = this.createElement('source', {\n attrs: {\n src: value.url,\n type: value.url && value.url.split('.').length > 0\n ? 'video/' + value.url.split('.')[value.url.split('.').length - 1] : ''\n }\n });\n wrapTemp.appendChild(temp);\n var audioValue = wrapTemp.outerHTML;\n if (this.enableHtmlSanitizer) {\n audioValue = this.htmlEditorModule.sanitizeHelper(temp.outerHTML);\n }\n var url = (audioValue !== '' && (this.createElement('div', {\n innerHTML: audioValue\n }).firstElementChild).getAttribute('src')) || null;\n url = !isNOU(url) ? url : '';\n value.url = url;\n if (isNOU(value.width)) {\n value.width = { minWidth: this.insertVideoSettings.minWidth,\n maxWidth: this.insertVideoSettings.maxWidth, width: this.insertVideoSettings.width };\n }\n if (isNOU(value.height)) {\n value.height = { minHeight: this.insertVideoSettings.minHeight,\n maxHeight: this.insertVideoSettings.maxHeight, height: this.insertVideoSettings.height };\n }\n break;\n }\n case 'createLink': {\n var tempNode = this.createElement('a', {\n attrs: {\n href: value.url\n }\n });\n var linkValue = tempNode.outerHTML;\n if (this.enableHtmlSanitizer) {\n linkValue = this.htmlEditorModule.sanitizeHelper(tempNode.outerHTML);\n }\n var href = (linkValue !== '' && (this.createElement('div', {\n innerHTML: linkValue\n }).firstElementChild).getAttribute('href')) || null;\n href = !isNOU(href) ? href : '';\n value.url = href;\n break;\n }\n }\n }\n return value;\n };\n RichTextEditor.prototype.encode = function (value) {\n var divNode = this.createElement('div');\n divNode.innerText = value.trim();\n // eslint-disable-next-line\n return divNode.innerHTML.replace(//gi, '\\n');\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n\n */\n RichTextEditor.prototype.render = function () {\n if (this.value && !this.valueTemplate) {\n this.setProperties({ value: this.serializeValue(this.value) }, true);\n }\n this.renderModule = new Render(this, this.serviceLocator);\n this.sourceCodeModule = new ViewSource(this, this.serviceLocator);\n this.notify(events.initialLoad, {});\n this.trigger(events.load);\n this.RTERender();\n // eslint-disable-next-line\n var execCommandCallBack = new ExecCommandCallBack(this);\n this.notify(events.initialEnd, {});\n if (this.enableXhtml) {\n this.setProperties({ value: this.getXhtml() }, true);\n }\n if (this.toolbarSettings.enable && this.toolbarSettings.type === 'Expand' && !isNOU(this.getToolbar()) &&\n (this.toolbarSettings.items.indexOf('Undo') > -1 && this.toolbarSettings.items.indexOf('Redo') > -1)) {\n this.disableToolbarItem(['Undo', 'Redo']);\n }\n this.setContentHeight();\n if (this.value !== null) {\n this.valueContainer.defaultValue = this.value;\n }\n // eslint-disable-next-line\n (this.enabled && !this.readonly) ? this.eventInitializer() : this.unWireEvents();\n this.notify(events.bindCssClass, { cssClass: this.cssClass });\n this.addAudioVideoWrapper();\n this.notify(events.tableclass, {});\n this.renderComplete();\n };\n /**\n * addAudioVideoWrapper method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.addAudioVideoWrapper = function () {\n var _this = this;\n var insertElem;\n var audioElm = this.element.querySelectorAll('audio');\n for (var i = 0; i < audioElm.length; i++) {\n if (!audioElm[i].classList.contains('e-rte-audio')) {\n audioElm[i].classList.add('e-rte-audio');\n audioElm[i].classList.add(classes.CLS_AUDIOINLINE);\n }\n // eslint-disable-next-line max-len\n if (!audioElm[i].parentElement.classList.contains(classes.CLS_CLICKELEM) && !audioElm[i].parentElement.classList.contains(classes.CLS_AUDIOWRAP)) {\n var audioWrapElem = this.createElement('span', { className: classes.CLS_AUDIOWRAP });\n audioWrapElem.setAttribute('style', 'width:300px; margin:0 auto;');\n audioWrapElem.contentEditable = 'false';\n var audioInnerWrapElem = this.createElement('span', { className: classes.CLS_CLICKELEM });\n audioWrapElem.appendChild(audioInnerWrapElem);\n audioElm[i].parentNode.insertBefore(audioWrapElem, audioElm[i].nextSibling);\n audioInnerWrapElem.appendChild(audioElm[i]);\n if (audioWrapElem.nextElementSibling === null) {\n insertElem = this.createElement('br');\n audioWrapElem.parentNode.insertBefore(insertElem, audioWrapElem.nextSibling);\n }\n }\n }\n var videoElm = this.element.querySelectorAll('video');\n for (var i = 0; i < videoElm.length; i++) {\n if (!videoElm[i].classList.contains('e-rte-video')) {\n videoElm[i].classList.add('e-rte-video');\n videoElm[i].classList.add(classes.CLS_VIDEOINLINE);\n }\n // eslint-disable-next-line max-len\n if (!videoElm[i].parentElement.classList.contains(classes.CLS_CLICKELEM) && !videoElm[i].parentElement.classList.contains(classes.CLS_VIDEOWRAP)) {\n var videoWrapElem = this.createElement('span', { className: classes.CLS_VIDEOWRAP });\n videoWrapElem.contentEditable = 'false';\n videoElm[i].parentNode.insertBefore(videoWrapElem, videoElm[i].nextSibling);\n videoWrapElem.appendChild(videoElm[i]);\n if (videoWrapElem.nextElementSibling === null) {\n insertElem = this.createElement('br');\n videoWrapElem.parentNode.insertBefore(insertElem, videoWrapElem.nextSibling);\n }\n }\n if (Browser.userAgent.indexOf('Firefox') !== -1) {\n // eslint-disable-next-line\n videoElm[i].addEventListener('play', function (args) {\n _this.notify(events.mouseDown, { args: args });\n _this.notify('editAreaClick', { args: args });\n });\n // eslint-disable-next-line\n videoElm[i].addEventListener('pause', function (args) {\n _this.notify(events.mouseDown, { args: args });\n _this.notify('editAreaClick', { args: args });\n });\n }\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n\n * @hidden\n */\n RichTextEditor.prototype.eventInitializer = function () {\n this.wireEvents();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RichTextEditor.prototype.cleanList = function (e) {\n var range = this.getRange();\n var currentStartContainer = range.startContainer;\n var currentEndContainer = range.endContainer;\n var currentStartOffset = range.startOffset;\n var isSameContainer = currentStartContainer === currentEndContainer ? true : false;\n // eslint-disable-next-line\n var currentEndOffset = currentEndContainer.textContent.length;\n var endNode = range.endContainer.nodeName === '#text' ? range.endContainer.parentElement :\n range.endContainer;\n var closestLI = closest(endNode, 'LI');\n var isDetached = false;\n if (!isNOU(closestLI) && endNode.textContent.length === range.endOffset &&\n !range.collapsed && isNOU(endNode.nextElementSibling)) {\n for (var i = 0; i < closestLI.childNodes.length; i++) {\n if (closestLI.childNodes[i].nodeName === '#text' && closestLI.childNodes[i].textContent.trim().length === 0) {\n detach(closestLI.childNodes[i]);\n isDetached = true;\n i--;\n }\n }\n var currentLastElem = closestLI;\n while (currentLastElem.lastChild !== null && currentLastElem.nodeName !== '#text') {\n currentLastElem = currentLastElem.lastChild;\n }\n if (isDetached) {\n var currentLast = currentLastElem.nodeName === 'BR' && !isNOU(currentLastElem.previousSibling) ?\n currentLastElem.previousSibling : currentLastElem;\n this.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), isSameContainer ? currentLast : currentStartContainer, currentLast, currentStartOffset, (currentLast.nodeName === 'BR' ? 0 : currentLast.textContent.length));\n }\n }\n };\n /**\n * For internal use only - keydown the event handler;\n *\n * @param {KeyboardEvent} e - specifies the event.\n * @returns {void}\n * @private\n\n * @hidden\n */\n RichTextEditor.prototype.keyDown = function (e) {\n this.notify(events.keyDown, { member: 'keydown', args: e });\n this.restrict(e);\n if (this.editorMode === 'HTML') {\n this.cleanList(e);\n }\n if (this.editorMode === 'HTML' && ((e.which === 8 && e.code === 'Backspace') || (e.which === 46 && e.code === 'Delete'))) {\n var range = this.getRange();\n var startNode = range.startContainer.nodeName === '#text' ? range.startContainer.parentElement :\n range.startContainer;\n if (closest(startNode, 'pre') &&\n (e.which === 8 && range.startContainer.textContent.charCodeAt(range.startOffset - 1) === 8203) ||\n (e.which === 46 && range.startContainer.textContent.charCodeAt(range.startOffset) === 8203)) {\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n var pointer = e.which === 8 ? range.startOffset - 1 : range.startOffset;\n range.startContainer.textContent = range.startContainer.textContent.replace(regEx, '');\n this.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), range.startContainer, pointer);\n }\n else if ((e.code === 'Backspace' && e.which === 8) &&\n range.startContainer.textContent.charCodeAt(0) === 8203 && range.collapsed) {\n var parentEle = range.startContainer.parentElement;\n var index = void 0;\n var i = void 0;\n for (i = 0; i < parentEle.childNodes.length; i++) {\n if (parentEle.childNodes[i] === range.startContainer) {\n index = i;\n }\n }\n var bool = true;\n var removeNodeArray = [];\n for (i = index; i >= 0; i--) {\n // eslint-disable-next-line max-len\n if (parentEle.childNodes[i].nodeType === 3 && parentEle.childNodes[i].textContent.charCodeAt(0) === 8203 && bool) {\n removeNodeArray.push(i);\n }\n else {\n bool = false;\n }\n }\n if (removeNodeArray.length > 0) {\n for (i = removeNodeArray.length - 1; i > 0; i--) {\n parentEle.childNodes[removeNodeArray[i]].textContent = '';\n }\n }\n this.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), range.startContainer, range.startOffset);\n }\n }\n var notFormatPainterCopy = !isNOU(e.action) && e.action !== 'format-copy';\n if (this.formatter.getUndoRedoStack().length === 0 && notFormatPainterCopy) {\n this.formatter.saveData();\n }\n if (e.action !== 'insert-link' &&\n e.action !== 'format-copy' && e.action !== 'format-paste' &&\n (!e.target || !e.target.classList.contains('e-mention')) &&\n (e.action && e.action !== 'paste' && e.action !== 'space'\n || e.which === 9 || (e.code === 'Backspace' && e.which === 8))) {\n var FormatPainterEscapeAction = false;\n if (!isNOU(this.formatPainterModule)) {\n FormatPainterEscapeAction = this.formatPainterModule.previousAction === 'escape';\n }\n if (!FormatPainterEscapeAction) {\n this.formatter.process(this, null, e);\n }\n switch (e.action) {\n case 'toolbar-focus':\n if (this.toolbarSettings.enable) {\n // eslint-disable-next-line\n var selector = '.e-toolbar-item[title] [tabindex]';\n this.toolbarModule.baseToolbar.toolbarObj.element.querySelector(selector).focus();\n }\n break;\n case 'escape':\n this.contentModule.getEditPanel().focus();\n break;\n }\n }\n if (!isNOU(this.placeholder)) {\n if ((!isNOU(this.placeHolderWrapper)) && (this.inputElement.textContent.length !== 1)) {\n this.placeHolderWrapper.style.display = 'none';\n }\n else if (this.iframeSettings.enable && this.inputElement.classList.contains('e-rte-placeholder')) {\n removeClass([this.inputElement], 'e-rte-placeholder');\n }\n else {\n this.setPlaceHolder();\n }\n }\n this.autoResize();\n };\n RichTextEditor.prototype.keyUp = function (e) {\n if (this.editorMode === 'HTML') {\n var range = this.getRange();\n if (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer.nodeName === '#text' &&\n range.startContainer.parentElement === this.inputElement && this.enterKey !== 'BR') {\n var range_1 = this.getRange();\n var tempElem = this.createElement(this.enterKey);\n range_1.startContainer.parentElement.insertBefore(tempElem, range_1.startContainer);\n tempElem.appendChild(range_1.startContainer);\n this.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), tempElem.childNodes[0], tempElem.childNodes[0], tempElem.childNodes[0].textContent.length, tempElem.childNodes[0].textContent.length);\n }\n }\n this.notify(events.keyUp, { member: 'keyup', args: e });\n if (e.keyCode === 39 || e.keyCode === 37) {\n this.notify(events.tableModulekeyUp, { member: 'tableModulekeyUp', args: e });\n }\n if (e.code === 'KeyX' && e.which === 88 && e.keyCode === 88 && e.ctrlKey && (this.inputElement.innerHTML === '' ||\n this.inputElement.innerHTML === '
')) {\n this.inputElement.innerHTML = getEditValue(getDefaultValue(this), this);\n }\n var allowedKeys = e.which === 32 || e.which === 13 || e.which === 8 || e.which === 46;\n var formatPainterCopy = e.key === 'C' && e.altKey && e.shiftKey;\n var formatPainterPaste = e.key === 'V' && e.altKey && e.shiftKey;\n if ((!formatPainterCopy && !formatPainterPaste) && ((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys) || (this.editorMode === 'Markdown'\n && ((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys)) && !this.inlineMode.enable) {\n this.formatter.onKeyHandler(this, e);\n }\n if (this.inputElement && this.inputElement.textContent.length !== 0\n || this.element.querySelectorAll('.e-toolbar-item.e-active').length > 0) {\n this.notify(events.toolbarRefresh, { args: e });\n }\n if (!isNOU(this.placeholder)) {\n if (!(e.key === 'Enter' && e.keyCode === 13) && (this.inputElement.innerHTML === '


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

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

' || this.value === '


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

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


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


' || htmlValue === '

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


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

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


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

' ||\n this.inputElement.innerHTML === '
') ? null : this.enableHtmlEncode ?\n this.encode(decode(this.inputElement.innerHTML)) : this.inputElement.innerHTML;\n if (getTextArea && getTextArea.style.display === 'block') {\n value = getTextArea.value;\n }\n }\n else {\n value = this.inputElement.value === '' ? null :\n this.inputElement.value;\n }\n return value;\n };\n RichTextEditor.prototype.updateValueOnIdle = function () {\n if (!isNOU(this.tableModule) && !isNOU(this.inputElement.querySelector('.e-table-box.e-rbox-select'))) {\n return;\n }\n this.setProperties({ value: this.getUpdatedValue() }, true);\n this.valueContainer.value = this.value;\n this.isValueChangeBlurhandler = false;\n this.invokeChangeEvent();\n };\n RichTextEditor.prototype.updateIntervalValue = function () {\n clearTimeout(this.idleInterval);\n this.idleInterval = setTimeout(this.updateValueOnIdle.bind(this), 0);\n };\n RichTextEditor.prototype.updateStatus = function (e) {\n if (!isNOU(e.html) || !isNOU(e.markdown)) {\n var status_1 = this.formatter.editorManager.undoRedoManager.getUndoStatus();\n var eventArgs = {\n undo: status_1.undo,\n redo: status_1.redo,\n html: e.html,\n markdown: e.markdown\n };\n this.trigger(events.updatedToolbarStatus, eventArgs);\n }\n };\n RichTextEditor.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var rteElement = closest(target, '.' + classes.CLS_RTE);\n if (!this.element.contains(e.target) && document !== e.target && rteElement !== this.element &&\n !closest(target, '[aria-owns=\"' + this.getID() + '\"]')) {\n this.isBlur = true;\n this.isRTE = false;\n }\n this.notify(events.docClick, { args: e });\n if (Browser.info.name !== 'msie' && e.detail > 3) {\n e.preventDefault();\n }\n };\n RichTextEditor.prototype.blurHandler = function (e) {\n var trg = e.relatedTarget;\n if (trg) {\n var rteElement = closest(trg, '.' + classes.CLS_RTE);\n if (rteElement && rteElement === this.element) {\n this.isBlur = false;\n if (trg === this.getToolbarElement()) {\n trg.setAttribute('tabindex', '-1');\n }\n }\n else if (closest(trg, '[aria-owns=\"' + this.getID() + '\"]')) {\n this.isBlur = false;\n }\n else {\n this.isBlur = true;\n trg = null;\n }\n }\n if (this.isBlur && isNOU(trg)) {\n removeClass([this.element], [classes.CLS_FOCUS]);\n this.notify(events.focusChange, {});\n var value = this.getUpdatedValue();\n this.setProperties({ value: value });\n this.notify(events.toolbarRefresh, { args: e, documentNode: document });\n this.isValueChangeBlurhandler = true;\n this.invokeChangeEvent();\n this.isFocusOut = true;\n this.isBlur = false;\n dispatchEvent(this.valueContainer, 'focusout');\n this.defaultResize(e);\n this.trigger('blur', { event: e, isInteracted: Object.keys(e).length === 0 ? false : true });\n if (!isNOU(this.timeInterval)) {\n clearInterval(this.timeInterval);\n this.timeInterval = null;\n }\n if (!isNOU(this.placeHolderWrapper) && this.element.querySelector('[title = Preview]')) {\n this.placeHolderWrapper.style.display = 'none';\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n }\n else {\n this.isRTE = true;\n }\n };\n /**\n * invokeChangeEvent method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.contentChanged = function () {\n if (this.autoSaveOnIdle) {\n if (!isNOU(this.saveInterval)) {\n clearTimeout(this.timeInterval);\n this.timeInterval = setTimeout(this.updateIntervalValue.bind(this), this.saveInterval);\n }\n }\n };\n /**\n * invokeChangeEvent method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.invokeChangeEvent = function () {\n var currentValue;\n if (this.enableXhtml) {\n currentValue = this.getXhtml();\n }\n else {\n currentValue = this.value;\n }\n var eventArgs = {\n value: currentValue,\n isInteracted: this.isValueChangeBlurhandler\n };\n if (this.value !== this.cloneValue) {\n this.trigger('change', eventArgs);\n this.cloneValue = this.value;\n }\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.wireScrollElementsEvents = function () {\n this.scrollParentElements = getScrollableParent(this.element);\n for (var _i = 0, _a = this.scrollParentElements; _i < _a.length; _i++) {\n var element = _a[_i];\n EventHandler.add(element, 'scroll', this.scrollHandler, this);\n }\n if (!this.iframeSettings.enable) {\n // Add the scroll event handler from the inputElement\n EventHandler.add(this.inputElement, 'scroll', this.contentScrollHandler, this);\n }\n };\n RichTextEditor.prototype.wireContextEvent = function () {\n if (this.quickToolbarSettings.showOnRightClick) {\n EventHandler.add(this.inputElement, 'contextmenu', this.contextHandler, this);\n if (Browser.isDevice) {\n this.touchModule = new EJ2Touch(this.inputElement, { tapHold: this.touchHandler.bind(this), tapHoldThreshold: 500 });\n }\n }\n };\n RichTextEditor.prototype.unWireContextEvent = function () {\n EventHandler.remove(this.inputElement, 'contextmenu', this.contextHandler);\n if (Browser.isDevice && this.touchModule) {\n this.touchModule.destroy();\n }\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.unWireScrollElementsEvents = function () {\n this.scrollParentElements = getScrollableParent(this.element);\n for (var _i = 0, _a = this.scrollParentElements; _i < _a.length; _i++) {\n var element = _a[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (!this.iframeSettings.enable) {\n // Remove the scroll event handler from the inputElement\n EventHandler.remove(this.inputElement, 'scroll', this.contentScrollHandler);\n }\n };\n RichTextEditor.prototype.touchHandler = function (e) {\n this.notifyMouseUp(e.originalEvent);\n this.triggerEditArea(e.originalEvent);\n };\n RichTextEditor.prototype.contextHandler = function (e) {\n var closestElem = closest(e.target, 'a, table, img');\n if (this.inlineMode.onSelection === false || (!isNOU(closestElem) && this.inputElement.contains(closestElem)\n && (closestElem.tagName === 'IMG' || closestElem.tagName === 'TABLE' || closestElem.tagName === 'A'))) {\n e.preventDefault();\n }\n };\n RichTextEditor.prototype.resetHandler = function () {\n var defaultValue = this.valueContainer.defaultValue.trim();\n this.setProperties({ value: defaultValue === '' ? null : defaultValue });\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.autoResize = function () {\n var _this = this;\n if (this.height === 'auto') {\n if (this.editorMode === 'Markdown') {\n setTimeout(function () {\n _this.setAutoHeight(_this.inputElement);\n }, 0);\n }\n else if (this.iframeSettings.enable) {\n var iframeElement_1 = this.element.querySelector('#' + this.getID() + '_rte-view');\n setTimeout(function () {\n _this.setAutoHeight(iframeElement_1);\n }, 100);\n this.inputElement.style.overflow = 'hidden';\n }\n }\n else {\n this.inputElement.style.overflow = null;\n }\n };\n RichTextEditor.prototype.setAutoHeight = function (element) {\n if (!isNOU(element)) {\n element.style.height = this.inputElement.scrollHeight + 'px';\n element.style.overflow = 'hidden';\n }\n };\n RichTextEditor.prototype.wireEvents = function () {\n this.element.addEventListener('focusin', this.onFocusHandler, true);\n this.element.addEventListener('focusout', this.onBlurHandler, true);\n this.on(events.contentChanged, this.contentChanged, this);\n this.on(events.resizeInitialized, this.updateResizeFlag, this);\n this.on(events.updateTbItemsStatus, this.updateStatus, this);\n if (this.readonly && this.enabled) {\n return;\n }\n this.bindEvents();\n };\n RichTextEditor.prototype.restrict = function (e) {\n if (this.maxLength >= 0) {\n var element = this.editorMode === 'Markdown' ? this.contentModule.getText() :\n (e && e.currentTarget.textContent);\n if (!element) {\n return;\n }\n var array = [8, 16, 17, 37, 38, 39, 40, 46, 65];\n var arrayKey = void 0;\n for (var i = 0; i <= array.length - 1; i++) {\n if (e.which === array[i]) {\n if (e.ctrlKey && e.which === 65) {\n return;\n }\n else if (e.which !== 65) {\n arrayKey = array[i];\n return;\n }\n }\n }\n if ((element.length >= this.maxLength && this.maxLength !== -1) && e.which !== arrayKey) {\n e.preventDefault();\n }\n }\n };\n RichTextEditor.prototype.bindEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.inputElement, {\n keyAction: this.keyDown.bind(this), keyConfigs: __assign({}, this.formatter.keyConfig, this.keyConfig), eventName: 'keydown'\n });\n var formElement = closest(this.valueContainer, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetHandler, this);\n }\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n EventHandler.add(this.inputElement, 'paste', this.onPaste, this);\n EventHandler.add(this.inputElement, Browser.touchEndEvent, debounce(this.mouseUp, 30), this);\n EventHandler.add(this.inputElement, Browser.touchStartEvent, this.mouseDownHandler, this);\n this.wireContextEvent();\n this.formatter.editorManager.observer.on(CONSTANT.KEY_DOWN_HANDLER, this.editorKeyDown, this);\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onResizeHandler, true);\n if (this.iframeSettings.enable) {\n EventHandler.add(this.inputElement, 'focusin', this.focusHandler, this);\n EventHandler.add(this.inputElement, 'focusout', this.blurHandler, this);\n EventHandler.add(this.inputElement.ownerDocument, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.inputElement.ownerDocument, Browser.touchStartEvent, this.onIframeMouseDown, this);\n }\n this.wireScrollElementsEvents();\n };\n RichTextEditor.prototype.onIframeMouseDown = function (e) {\n this.isBlur = false;\n this.currentTarget = e.target;\n this.notify(events.iframeMouseDown, e);\n };\n RichTextEditor.prototype.editorKeyDown = function (e) {\n switch (e.event.action) {\n case 'copy':\n this.onCopy();\n break;\n case 'cut':\n this.onCut();\n break;\n case 'tab':\n if (this.iframeSettings.enable) {\n this.isBlur = true;\n }\n break;\n }\n if (e.callBack && (e.event.action === 'copy' || e.event.action === 'cut' || e.event.action === 'delete')) {\n e.callBack({\n requestType: e.event.action,\n editorMode: 'HTML',\n event: e.event\n });\n }\n };\n RichTextEditor.prototype.unWireEvents = function () {\n this.element.removeEventListener('focusin', this.onFocusHandler, true);\n this.element.removeEventListener('focusout', this.onBlurHandler, true);\n this.off(events.contentChanged, this.contentChanged);\n this.off(events.resizeInitialized, this.updateResizeFlag);\n this.off(events.updateTbItemsStatus, this.updateStatus);\n if (this.readonly && this.enabled) {\n return;\n }\n this.unbindEvents();\n };\n RichTextEditor.prototype.unbindEvents = function () {\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n var formElement = closest(this.valueContainer, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetHandler);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n EventHandler.remove(this.inputElement, 'paste', this.onPaste);\n EventHandler.remove(this.inputElement, Browser.touchEndEvent, debounce(this.mouseUp, 30));\n EventHandler.remove(this.inputElement, Browser.touchStartEvent, this.mouseDownHandler);\n this.unWireContextEvent();\n if (this.formatter) {\n this.formatter.editorManager.observer.off(CONSTANT.KEY_DOWN_HANDLER, this.editorKeyDown);\n }\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onResizeHandler, true);\n if (this.iframeSettings.enable) {\n EventHandler.remove(this.inputElement, 'focusin', this.focusHandler);\n EventHandler.remove(this.inputElement, 'focusout', this.blurHandler);\n EventHandler.remove(this.inputElement.ownerDocument, 'scroll', this.contentScrollHandler);\n EventHandler.remove(this.inputElement.ownerDocument, Browser.touchStartEvent, this.onIframeMouseDown);\n }\n this.unWireScrollElementsEvents();\n };\n __decorate([\n Complex({}, ToolbarSettings)\n ], RichTextEditor.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, QuickToolbarSettings)\n ], RichTextEditor.prototype, \"quickToolbarSettings\", void 0);\n __decorate([\n Complex({}, PasteCleanupSettings)\n ], RichTextEditor.prototype, \"pasteCleanupSettings\", void 0);\n __decorate([\n Complex({}, FormatPainterSettings)\n ], RichTextEditor.prototype, \"formatPainterSettings\", void 0);\n __decorate([\n Complex({}, EmojiSettings)\n ], RichTextEditor.prototype, \"emojiPickerSettings\", void 0);\n __decorate([\n Complex({}, IFrameSettings)\n ], RichTextEditor.prototype, \"iframeSettings\", void 0);\n __decorate([\n Complex({}, ImageSettings)\n ], RichTextEditor.prototype, \"insertImageSettings\", void 0);\n __decorate([\n Complex({}, AudioSettings)\n ], RichTextEditor.prototype, \"insertAudioSettings\", void 0);\n __decorate([\n Complex({}, VideoSettings)\n ], RichTextEditor.prototype, \"insertVideoSettings\", void 0);\n __decorate([\n Complex({}, TableSettings)\n ], RichTextEditor.prototype, \"tableSettings\", void 0);\n __decorate([\n Property(0)\n ], RichTextEditor.prototype, \"floatingToolbarOffset\", void 0);\n __decorate([\n Complex({}, InlineMode)\n ], RichTextEditor.prototype, \"inlineMode\", void 0);\n __decorate([\n Complex({}, FileManagerSettings)\n ], RichTextEditor.prototype, \"fileManagerSettings\", void 0);\n __decorate([\n Property('100%')\n ], RichTextEditor.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], RichTextEditor.prototype, \"showTooltip\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableResize\", void 0);\n __decorate([\n Property({})\n ], RichTextEditor.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"autoSaveOnIdle\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], RichTextEditor.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], RichTextEditor.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableHtmlEncode\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableXhtml\", void 0);\n __decorate([\n Property('auto')\n ], RichTextEditor.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"value\", void 0);\n __decorate([\n Property('P')\n ], RichTextEditor.prototype, \"enterKey\", void 0);\n __decorate([\n Property('BR')\n ], RichTextEditor.prototype, \"shiftEnterKey\", void 0);\n __decorate([\n Property(30)\n ], RichTextEditor.prototype, \"undoRedoSteps\", void 0);\n __decorate([\n Property(300)\n ], RichTextEditor.prototype, \"undoRedoTimer\", void 0);\n __decorate([\n Property('HTML')\n ], RichTextEditor.prototype, \"editorMode\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"keyConfig\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"showCharCount\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableTabKey\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableAutoUrl\", void 0);\n __decorate([\n Property(-1)\n ], RichTextEditor.prototype, \"maxLength\", void 0);\n __decorate([\n Complex({}, Format)\n ], RichTextEditor.prototype, \"format\", void 0);\n __decorate([\n Complex({}, NumberFormatList)\n ], RichTextEditor.prototype, \"numberFormatList\", void 0);\n __decorate([\n Complex({}, BulletFormatList)\n ], RichTextEditor.prototype, \"bulletFormatList\", void 0);\n __decorate([\n Complex({}, FontFamily)\n ], RichTextEditor.prototype, \"fontFamily\", void 0);\n __decorate([\n Complex({}, FontSize)\n ], RichTextEditor.prototype, \"fontSize\", void 0);\n __decorate([\n Complex({}, FontColor)\n ], RichTextEditor.prototype, \"fontColor\", void 0);\n __decorate([\n Complex({}, BackgroundColor)\n ], RichTextEditor.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(10000)\n ], RichTextEditor.prototype, \"saveInterval\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeDialogOpen\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"dialogOpen\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeDialogClose\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"dialogClose\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeQuickToolbarOpen\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"quickToolbarOpen\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"quickToolbarClose\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"toolbarStatusUpdate\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"updatedToolbarStatus\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageSelected\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeImageUpload\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageUploading\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageUploadSuccess\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageUploadFailed\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageRemoving\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"afterImageDelete\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"fileSelected\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeFileUpload\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"fileUploading\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"fileUploadSuccess\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"fileUploadFailed\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"fileRemoving\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"afterMediaDelete\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforePasteCleanup\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"afterPasteCleanup\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeImageDrop\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"formatter\", void 0);\n RichTextEditor = __decorate([\n NotifyPropertyChanges\n ], RichTextEditor);\n return RichTextEditor;\n}(Component));\nexport { RichTextEditor };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { RichTextEditor } from '@syncfusion/ej2-richtexteditor';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `RichTextEditor` represents the react RichTextEditor.\n * ```tsx\n * \n * ```\n */\nvar RichTextEditorComponent = /** @class */ (function (_super) {\n __extends(RichTextEditorComponent, _super);\n function RichTextEditorComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = [\"valueTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n RichTextEditorComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return RichTextEditorComponent;\n}(RichTextEditor));\nexport { RichTextEditorComponent };\napplyMixins(RichTextEditorComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, extend, deleteObject, Property, addClass, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {Object} props - Specifies the properties\n * @param {string[]} model - Specifies the model\n * @returns {Object} Component Model\n */\nexport function getModel(props, model) {\n var obj = extend({}, props);\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((model).indexOf(prop) < 0) {\n deleteObject(obj, prop);\n }\n }\n return obj;\n}\n/** @hidden\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {number} keyCode - Specifies the keycode\n * @returns {void}\n */\nexport function upDownKeyHandler(ul, keyCode) {\n var defaultIdx = keyCode === 40 ? 0 : ul.childElementCount - 1;\n var liIdx = defaultIdx;\n var li;\n var selectedLi = ul.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains('e-focused')) {\n li = ul.children[i];\n liIdx = i;\n li.classList.remove('e-focused');\n if (keyCode === 40) {\n liIdx++;\n }\n else {\n liIdx--;\n }\n if (liIdx === (keyCode === 40 ? ul.childElementCount : -1)) {\n liIdx = defaultIdx;\n }\n }\n }\n li = ul.children[liIdx];\n liIdx = isValidLI(ul, li, liIdx, keyCode);\n if (liIdx !== -1) {\n addClass([ul.children[liIdx]], 'e-focused');\n ul.children[liIdx].focus();\n }\n}\n/**\n * Get Valid LI element\n *\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {Element} li - Specifies the LI element\n * @param {number} index - Specifies the index\n * @param {number} keyCode - Specifies the keycode\n * @param {number} count - Specifies the count\n * @returns {number} - Index\n */\nfunction isValidLI(ul, li, index, keyCode, count) {\n if (count === void 0) { count = 0; }\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n if (index === (keyCode === 40 ? ul.childElementCount - 1 : 0)) {\n index = keyCode === 40 ? 0 : ul.childElementCount - 1;\n }\n else {\n if (keyCode === 40) {\n index++;\n }\n else {\n index--;\n }\n }\n }\n li = ul.children[index];\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n count++;\n if (count === ul.childElementCount) {\n return index = -1;\n }\n index = isValidLI(ul, li, index, keyCode, count);\n }\n return index;\n}\n/** @hidden\n * @param {HTMLElement} popup - Specifies the popup element.\n * @returns {void}\n */\nexport function setBlankIconStyle(popup, blankIcon) {\n var blankIconList = [].slice.call(popup.getElementsByClassName('e-blank-icon'));\n if (blankIcon) {\n var menuItem = [].slice.call(popup.getElementsByClassName('e-item'));\n menuItem.forEach(function (li) {\n if (li.style.paddingLeft || li.style.paddingRight) {\n li.removeAttribute('style');\n }\n });\n }\n if (!blankIconList.length) {\n return;\n }\n var iconLi = popup.querySelector('.e-item:not(.e-blank-icon):not(.e-separator)');\n if (isNullOrUndefined(iconLi)) {\n return;\n }\n if (iconLi.classList.contains('e-url')) {\n iconLi = iconLi.querySelector('.e-menu-url');\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n var cssProp;\n var enableRtl = popup.classList.contains('e-rtl');\n if (enableRtl) {\n cssProp = { padding: 'paddingRight', margin: 'marginLeft' };\n }\n else {\n cssProp = { padding: 'paddingLeft', margin: 'marginRight' };\n }\n /* eslint-disable */\n var size = parseInt(getComputedStyle(icon).fontSize, 10) + parseInt((enableRtl ? getComputedStyle(icon)[cssProp.margin] : getComputedStyle(icon)[cssProp.margin]), 10)\n + parseInt(getComputedStyle(iconLi).paddingLeft, 10) + \"px\";\n blankIconList.forEach(function (li) {\n if (li.classList.contains('e-url')) {\n li.querySelector('.e-menu-url').style[cssProp.padding] = size;\n }\n else {\n li.style[cssProp.padding] = size;\n }\n });\n /* eslint-enable */\n}\n/**\n * Defines the items of Split Button/DropDownButton.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"separator\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"url\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Collection, Event, NotifyPropertyChanges, detach, Property, EventHandler, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, getUniqueID, rippleEffect, getComponent } from '@syncfusion/ej2-base';\nimport { attributes, Component, closest, select, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { classList, removeClass } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { upDownKeyHandler } from './../common/common';\nimport { getModel, Item, setBlankIconStyle } from './../common/common';\nvar classNames = {\n DISABLED: 'e-disabled',\n FOCUS: 'e-focused',\n ICON: 'e-menu-icon',\n ITEM: 'e-item',\n POPUP: 'e-dropdown-popup',\n RTL: 'e-rtl',\n SEPARATOR: 'e-separator',\n VERTICAL: 'e-vertical'\n};\n/**\n * DropDownButton component is used to toggle contextual overlays for displaying list of action items.\n * It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DropDownButton = /** @class */ (function (_super) {\n __extends(DropDownButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DropDownButtonModel} options - Specifies dropdown button model\n * @param {string|HTMLButtonElement} element - Specifies element\n * @hidden\n */\n function DropDownButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = true;\n return _this;\n }\n DropDownButton.prototype.preRender = function () {\n /** */\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n DropDownButton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @returns {void}\n */\n DropDownButton.prototype.toggle = function () {\n if (this.canOpen()) {\n this.openPopUp();\n }\n else 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 if (this.dropDown.element.style.position === 'fixed') {\n this.dropDown.refreshPosition(this.element);\n }\n this.dropDown.hide();\n attributes(this.element, (_a = {},\n _a['aria-haspopup'] = this.items.length || this.target ? 'true' : 'false',\n _a['aria-expanded'] = 'false',\n _a['type'] = 'button',\n _a['aria-label'] = this.element.textContent ? this.element.textContent : 'dropdownbutton',\n _a));\n if (this.cssClass) {\n addClass([div], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.isPopupCreated = true;\n };\n DropDownButton.prototype.getTargetElement = function () {\n return typeof (this.target) === 'string' ? select(this.target) : this.target;\n };\n DropDownButton.prototype.createItems = function (appendItems) {\n var items = this.items;\n var showIcon = this.hasIcon(this.items, 'iconCss');\n var span;\n var item;\n var li;\n var eventArgs;\n var ul = this.getULElement();\n if (ul) {\n ul.innerHTML = '';\n }\n else {\n ul = this.createElement('ul', {\n attrs: { 'role': 'menu', 'tabindex': '0' }\n });\n }\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n var tempItem = item.text;\n li = this.createElement('li', {\n innerHTML: item.url ? '' : tempItem,\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: item.separator ? { 'role': 'separator', 'tabindex': '-1' } : { 'role': 'menuitem', 'tabindex': '-1', 'aria-label': tempItem },\n id: item.id ? item.id : getUniqueID('e-' + this.getModuleName() + '-item')\n });\n if (this.enableHtmlSanitizer) {\n li.textContent = item.url ? '' : tempItem;\n }\n else {\n li.innerHTML = item.url ? '' : tempItem;\n }\n if (item.url) {\n li.appendChild(this.createAnchor(item));\n li.classList.add('e-url');\n }\n if (item.iconCss) {\n span = this.createElement('span', { className: classNames.ICON + ' ' + item.iconCss });\n if (item.url) {\n li.childNodes[0].appendChild(span);\n }\n else {\n li.insertBefore(span, li.childNodes[0]);\n }\n }\n else {\n if (showIcon && !item.separator) {\n li.classList.add('e-blank-icon');\n }\n }\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n eventArgs = { item: item, element: li };\n this.trigger('beforeItemRender', eventArgs);\n ul.appendChild(li);\n }\n if (appendItems) {\n this.getPopUpElement().appendChild(ul);\n }\n if (showIcon) {\n setBlankIconStyle(this.getPopUpElement());\n }\n };\n DropDownButton.prototype.hasIcon = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n DropDownButton.prototype.createAnchor = function (item) {\n var tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n return this.createElement('a', { className: 'e-menu-text e-menu-url', innerHTML: tempItem, attrs: { 'href': item.url } });\n };\n DropDownButton.prototype.initialize = function () {\n this.button = new Button({\n iconCss: this.iconCss, iconPosition: this.iconPosition, cssClass: this.cssClass, content: this.content,\n disabled: this.disabled, enableRtl: this.enableRtl, enablePersistence: this.enablePersistence\n });\n this.button.createElement = this.createElement;\n this.button.appendTo(this.element);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.appendArrowSpan();\n this.setActiveElem([this.element]);\n if ((this.target && !this.isColorPicker()) || !this.createPopupOnClick) {\n this.createPopup();\n }\n else {\n this.isPopupCreated = false;\n }\n };\n DropDownButton.prototype.isColorPicker = function () {\n if (!this.element) {\n return false;\n }\n var prevElem = this.element.previousSibling;\n if (prevElem && prevElem.classList && prevElem.classList.contains('e-split-colorpicker')) {\n return true;\n }\n return false;\n };\n DropDownButton.prototype.appendArrowSpan = function () {\n this.element.appendChild(this.createElement('span', {\n className: 'e-btn-icon e-icons ' + 'e-icon-' + (this.cssClass.indexOf(classNames.VERTICAL) > -1\n ? 'bottom' : 'right') + ' e-caret'\n }));\n };\n DropDownButton.prototype.setActiveElem = function (elem) {\n this.activeElem = elem;\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n DropDownButton.prototype.getModuleName = function () {\n return 'dropdown-btn';\n };\n DropDownButton.prototype.canOpen = function () {\n var val = false;\n if (this.isPopupCreated) {\n val = this.getPopUpElement().classList.contains('e-popup-close');\n }\n return val;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n DropDownButton.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'dropdown-btn') {\n var classList_1;\n if (this.element.querySelector('span.e-caret')) {\n detach(this.element.querySelector('span.e-caret'));\n }\n if (this.cssClass) {\n classList_1 = this.cssClass.split(' ');\n }\n this.button.destroy();\n if (classList_1) {\n removeClass([this.element], classList_1);\n }\n removeClass(this.activeElem, ['e-active']);\n var attrList = this.element.getAttribute('class') ? ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type']\n : ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type', 'class'];\n attrList.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.popupUnWireEvents();\n this.destroyPopup();\n this.isPopupCreated = false;\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n };\n DropDownButton.prototype.destroyPopup = function () {\n if (this.isPopupCreated) {\n this.dropDown.destroy();\n if (this.getPopUpElement()) {\n var popupEle = document.getElementById(this.getPopUpElement().id);\n if (popupEle) {\n removeClass([popupEle], ['e-popup-open', 'e-popup-close']);\n detach(popupEle);\n }\n }\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated && this.dropDown) {\n this.dropDown.element = null;\n this.dropDown = undefined;\n }\n }\n this.isPopupCreated = false;\n };\n DropDownButton.prototype.getPopUpElement = function () {\n var val = null;\n if (!this.dropDown && 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 };\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.activeElem[0].focus();\n return;\n }\n if (e.target && e.target.className.indexOf('e-edit-template') > -1 && e.keyCode === 32) {\n return;\n }\n if (e.keyCode !== 9) {\n e.preventDefault();\n }\n if (e.keyCode === 27 || e.keyCode === 38 || e.keyCode === 9) {\n if (!this.canOpen()) {\n this.closePopup(e, this.element);\n }\n }\n else {\n this.clickHandler(e);\n }\n };\n DropDownButton.prototype.getLI = function (elem) {\n return elem.tagName === 'LI' ? elem : closest(elem, 'li');\n };\n DropDownButton.prototype.mousedownHandler = function (e) {\n var trgt = e.target;\n if (this.dropDown && !this.canOpen() && !(closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')\n || closest(trgt, '[id=\"' + this.element.id + '\"]'))) {\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.focusoutHandler = function (e) {\n if (this.isPopupCreated && !this.canOpen()) {\n var liTarget = e.relatedTarget;\n if (liTarget && liTarget.className.indexOf('e-item') > -1) {\n var li = this.getLI(liTarget);\n if (li) {\n var liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n var item = this.items[liIdx];\n if (item) {\n var selectEventArgs = { element: li, item: item };\n this.trigger('select', selectEventArgs);\n }\n }\n }\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.clickHandler = function (e) {\n var trgt = e.target;\n if (closest(trgt, '[id=\"' + this.element.id + '\"]')) {\n if (!this.createPopupOnClick || (this.target && this.target !== '' && !this.isColorPicker())) {\n if (this.getPopUpElement().classList.contains('e-popup-close')) {\n this.openPopUp(e);\n }\n else {\n this.closePopup(e);\n }\n }\n else if (this.isPopupCreated) {\n this.closePopup(e, this.activeElem[0]);\n }\n else {\n this.createPopup();\n this.openPopUp(e);\n }\n }\n else {\n if (closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')) {\n var eventArgs = void 0;\n var liIdx = void 0;\n var item = void 0;\n var li = this.getLI(trgt);\n if (li) {\n liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n item = this.items[liIdx];\n if (item) {\n eventArgs = { element: li, item: item };\n this.trigger('select', eventArgs);\n }\n this.closePopup(e, this.activeElem[0]);\n }\n }\n }\n };\n DropDownButton.prototype.openPopUp = function (e) {\n var _this = this;\n if (e === void 0) { e = null; }\n var isReact = false;\n var popupElem = this.getPopUpElement();\n if (!this.target) {\n this.createItems(true);\n }\n else {\n if (this.activeElem.length > 1) {\n var splitButton = getComponent(this.activeElem[0], 'split-btn');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (splitButton.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n splitButton.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n }\n var ul = this.getULElement();\n this.popupWireEvents();\n var beforeOpenArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeOpen', beforeOpenArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_1 = _this.getULElement();\n _this.dropDown.show(null, _this.element);\n addClass([_this.element], 'e-active');\n _this.element.setAttribute('aria-expanded', 'true');\n _this.element.setAttribute('aria-owns', _this.getPopUpElement().id);\n if (ul_1) {\n ul_1.focus();\n }\n 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()) {\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 };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DropDownButtonModel} newProp - Specifies new properties\n * @param {DropDownButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var btnModel = ['content', 'cssClass', 'iconCss', 'iconPosition', 'disabled', 'enableRtl'];\n this.button.setProperties(getModel(newProp, btnModel));\n var popupElement;\n if (this.isPopupCreated) {\n popupElement = this.getPopUpElement();\n this.dropDown.setProperties(getModel(newProp, ['enableRtl']));\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.unWireEvents();\n if (this.isPopupCreated && !this.canOpen()) {\n this.closePopup();\n }\n }\n else {\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (newProp.cssClass.indexOf(classNames.VERTICAL) > -1 || oldProp.cssClass.indexOf(classNames.VERTICAL) > -1) {\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n var arrowSpan = this.element.querySelector('span.e-caret');\n newProp.cssClass.indexOf(classNames.VERTICAL) > -1 ? classList(arrowSpan, ['e-icon-bottom'], ['e-icon-right'])\n : classList(arrowSpan, ['e-icon-right'], ['e-icon-bottom']);\n }\n if (this.isPopupCreated) {\n if (oldProp.cssClass) {\n removeClass([popupElement], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([popupElement], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n }\n break;\n case 'target':\n this.dropDown.content = this.getTargetElement();\n this.dropDown.dataBind();\n break;\n case 'items':\n if (this.isPopupCreated && this.getULElement()) {\n this.createItems();\n }\n break;\n case 'createPopupOnClick':\n if (newProp.createPopupOnClick) {\n this.destroyPopup();\n }\n else {\n this.createPopup();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to DropDownButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n DropDownButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], DropDownButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Collection([], Item)\n ], DropDownButton.prototype, \"items\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"created\", void 0);\n DropDownButton = __decorate([\n NotifyPropertyChanges\n ], DropDownButton);\n return DropDownButton;\n}(Component));\nexport { DropDownButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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 + ' splitbutton', 'aria-owns': this.element.id + '_dropdownbtn-popup'\n });\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n SplitButton.prototype.getModuleName = function () {\n return 'split-btn';\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @returns {void}\n */\n SplitButton.prototype.toggle = function () {\n this.secondaryBtnObj.toggle();\n };\n SplitButton.prototype.destroy = function () {\n var _this = this;\n var classList = [RTL];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n if (this.element) {\n var element = document.getElementById(this.element.id);\n if (element && element.parentElement === this.wrapper) {\n if (this.wrapper.tagName === TAGNAME) {\n this.wrapper.innerHTML = '';\n removeClass([this.wrapper], ['e-rtl', 'e-' + this.getModuleName() + '-wrapper']);\n removeClass([this.wrapper], this.cssClass.split(' '));\n }\n else {\n removeClass([this.element], classList);\n ['aria-label', 'aria-haspopup', 'aria-expanded', 'aria-owns', 'type'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.wrapper.parentNode.insertBefore(this.element, this.wrapper);\n remove(this.wrapper);\n }\n this.unWireEvents();\n }\n }\n this.primaryBtnObj.destroy();\n this.secondaryBtnObj.destroy();\n _super.prototype.destroy.call(this);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n };\n SplitButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.primaryBtnClickHandler, this);\n new KeyboardEvents(this.element, {\n keyAction: this.btnKeyBoardHandler.bind(this),\n keyConfigs: {\n altdownarrow: 'alt+downarrow',\n enter: 'enter'\n }\n });\n };\n SplitButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.primaryBtnClickHandler);\n getInstance(this.element, KeyboardEvents).destroy();\n };\n SplitButton.prototype.primaryBtnClickHandler = function () {\n this.trigger('click', { element: this.element });\n };\n SplitButton.prototype.btnKeyBoardHandler = function (e) {\n switch (e.action) {\n case 'altdownarrow':\n this.clickHandler(e);\n break;\n case 'enter':\n this.clickHandler(e);\n if (this.getPopUpElement() && !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 };\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.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(false)\n ], Slider.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"changed\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"renderingTicks\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"renderedTicks\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"tooltipChange\", void 0);\n Slider = __decorate([\n NotifyPropertyChanges\n ], Slider);\n return Slider;\n}(Component));\nexport { Slider };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable prefer-spread */\nimport { Component, Event, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Browser, closest, detach, EventHandler, getInstance, select, selectAll, formatUnit } from '@syncfusion/ej2-base';\nimport { addClass, attributes, classList, isNullOrUndefined, L10n } from '@syncfusion/ej2-base';\nimport { remove, removeClass, rippleEffect } from '@syncfusion/ej2-base';\nimport { SplitButton, getModel } from '@syncfusion/ej2-splitbuttons';\nimport { Deferred } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip, getZindexPartial, Popup } from '@syncfusion/ej2-popups';\nimport { Input } from './../input/index';\nimport { NumericTextBox } from './../numerictextbox/index';\nimport { Slider } from './../slider/slider';\nvar APPLY = 'e-apply';\nvar CANCEL = 'e-cancel';\nvar CURRENT = 'e-current';\nvar CONTAINER = 'e-container';\nvar CTRLBTN = 'e-ctrl-btn';\nvar CTRLSWITCH = 'e-switch-ctrl-btn';\nvar DISABLED = 'e-disabled';\nvar FORMATSWITCH = 'e-value-switch-btn';\nvar HANDLER = 'e-handler';\nvar HEX = 'e-hex';\nvar HIDEHEX = 'e-hide-hex-value';\nvar HIDEOPACITY = 'e-hide-opacity';\nvar HIDERGBA = 'e-hide-switchable-value';\nvar HIDEVALUE = 'e-hide-value';\nvar HIDEVALUESWITCH = 'e-hide-valueswitcher';\nvar HSVAREA = 'e-hsv-color';\nvar HSVCONTAINER = 'e-hsv-container';\nvar INPUTWRAPPER = 'e-selected-value';\nvar MODESWITCH = 'e-mode-switch-btn';\nvar NOCOLOR = 'e-nocolor-item';\nvar OPACITY = 'e-opacity-value';\nvar PALETTES = 'e-palette';\nvar PALETTECONTENT = 'e-color-palette';\nvar PICKERCONTENT = 'e-color-picker';\nvar PREVIEW = 'e-preview-container';\nvar PREVIOUS = 'e-previous';\nvar RTL = 'e-rtl';\nvar SHOWVALUE = 'e-show-value';\nvar SELECT = 'e-selected';\nvar SPLITPREVIEW = 'e-split-preview';\nvar TILE = 'e-tile';\nvar presets = {\n default: ['#000000', '#f44336', '#e91e63', '#9c27b0', '#673ab7', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#ffeb3b',\n '#ffffff', '#ffebee', '#fce4ec', '#f3e5f5', '#ede7f6', '#e3f2fd', '#e1f5fe', '#e0f7fa', '#e0f2f1', '#fffde7',\n '#f2f2f2', '#ffcdd2', '#f8bbd0', '#e1bee7', '#d1c4e9', '#bbdefb', '#b3e5fc', '#b2ebf2', '#b2dfdb', '#fff9c4',\n '#e6e6e6', '#ef9a9a', '#f48fb1', '#ce93d8', '#b39ddb', '#90caf9', '#81d4fa', '#80deea', '#80cbc4', '#fff59d',\n '#cccccc', '#e57373', '#f06292', '#ba68c8', '#9575cd', '#64b5f6', '#4fc3f7', '#4dd0e1', '#4db6ac', '#fff176',\n '#b3b3b3', '#ef5350', '#ec407a', '#ab47bc', '#7e57c2', '#42a5f5', '#29b6f6', '#26c6da', '#26a69a', '#ffee58',\n '#999999', '#e53935', '#d81b60', '#8e24aa', '#5e35b1', '#1e88e5', '#039be5', '#00acc1', '#00897b', '#fdd835',\n '#808080', '#d32f2f', '#c2185b', '#7b1fa2', '#512da8', '#1976d2', '#0288d1', '#0097a7', '#00796b', '#fbc02d',\n '#666666', '#c62828', '#ad1457', '#6a1b9a', '#4527a0', '#1565c0', '#0277bd', '#00838f', '#00695c', '#f9a825',\n '#4d4d4d', '#b71c1c', '#880e4f', '#4a148c', '#311b92', '#0d47a1', '#01579b', '#006064', '#004d40', '#f57f17']\n};\n/**\n * ColorPicker component is a user interface to select and adjust color values. It provides supports for various\n * color specification like Red Green Blue, Hue Saturation Value and Hex codes.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ColorPicker = /** @class */ (function (_super) {\n __extends(ColorPicker, _super);\n function ColorPicker(options, element) {\n return _super.call(this, options, element) || this;\n }\n ColorPicker.prototype.preRender = function () {\n var ele = this.element;\n this.formElement = closest(this.element, 'form');\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n var localeText = { Apply: 'Apply', Cancel: 'Cancel', ModeSwitcher: 'Switch Mode' };\n this.l10n = new L10n('colorpicker', localeText, this.locale);\n if (ele.getAttribute('ejs-for') && !ele.getAttribute('name')) {\n ele.setAttribute('name', ele.id);\n }\n };\n /**\n * To Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n ColorPicker.prototype.render = function () {\n this.initWrapper();\n if (this.inline) {\n this.createWidget();\n }\n else {\n this.createSplitBtn();\n }\n if (!this.enableOpacity) {\n addClass([this.container.parentElement], HIDEOPACITY);\n }\n this.renderComplete();\n };\n ColorPicker.prototype.initWrapper = function () {\n var wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(wrapper, this.element);\n wrapper.appendChild(this.element);\n attributes(this.element, { 'tabindex': '-1', 'spellcheck': 'false', 'aria-label': 'colorpicker' });\n this.container = this.createElement('div', { className: CONTAINER });\n this.getWrapper().appendChild(this.container);\n var value = this.value ? this.roundValue(this.value).toLowerCase() : '#008000ff';\n if (this.noColor && this.mode === 'Palette' && this.value === '') {\n value = '';\n }\n var slicedValue = value.slice(0, 7);\n if (isNullOrUndefined(this.initialInputValue)) {\n this.initialInputValue = slicedValue;\n }\n this.element.value = slicedValue;\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': slicedValue }, true);\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.tileRipple = rippleEffect(this.container, { selector: '.' + TILE });\n this.ctrlBtnRipple = rippleEffect(this.container, { selector: '.e-btn' });\n };\n ColorPicker.prototype.getWrapper = function () {\n return this.element.parentElement;\n };\n ColorPicker.prototype.createWidget = function () {\n if (this.mode === 'Palette') {\n this.createPalette();\n if (!this.inline) {\n this.firstPaletteFocus();\n }\n }\n else {\n this.createPicker();\n if (!this.inline) {\n this.getDragHandler().focus();\n }\n }\n this.isRgb = true;\n this.createInput();\n this.createCtrlBtn();\n if (!this.disabled) {\n this.wireEvents();\n }\n if (this.inline && this.disabled) {\n this.toggleDisabled(true);\n }\n if (Browser.isDevice) {\n this.refreshPopupPos();\n }\n };\n ColorPicker.prototype.createSplitBtn = function () {\n var _this = this;\n var splitButton = this.createElement('button', { className: 'e-split-colorpicker' });\n this.getWrapper().appendChild(splitButton);\n this.splitBtn = new SplitButton({\n iconCss: 'e-selected-color',\n target: this.container,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n createPopupOnClick: this.createPopupOnClick,\n open: this.onOpen.bind(this),\n click: function () {\n _this.trigger('change', {\n currentValue: { hex: _this.value.slice(0, 7), rgba: _this.convertToRgbString(_this.hexToRgb(_this.value)) },\n previousValue: { hex: null, rgba: null }, value: _this.value\n });\n }\n });\n this.splitBtn.createElement = this.createElement;\n this.splitBtn.appendTo(splitButton);\n var preview = this.createElement('span', { className: SPLITPREVIEW });\n select('.e-selected-color', splitButton).appendChild(preview);\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(this.value));\n var popupEle = this.getPopupEle();\n addClass([popupEle], 'e-colorpicker-popup');\n if (this.cssClass) {\n addClass([popupEle], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (Browser.isDevice) {\n var popupInst = this.getPopupInst();\n popupInst.relateTo = document.body;\n popupInst.position = { X: 'center', Y: 'center' };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupEle.style.zIndex = getZindexPartial(this.splitBtn.element).toString();\n }\n this.bindCallBackEvent();\n };\n ColorPicker.prototype.onOpen = function () {\n this.trigger('open', { element: this.container });\n };\n ColorPicker.prototype.getPopupInst = function () {\n return getInstance(this.getPopupEle(), Popup);\n };\n ColorPicker.prototype.bindCallBackEvent = function () {\n var _this = this;\n this.splitBtn.beforeOpen = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observeOpenArgs) {\n if (!observeOpenArgs.cancel) {\n var popupEle = _this.getPopupEle();\n popupEle.style.top = formatUnit(0 + pageYOffset);\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.display = 'block';\n _this.createWidget();\n popupEle.style.display = '';\n if (Browser.isDevice) {\n _this.modal = _this.createElement('div');\n _this.modal.className = 'e-' + _this.getModuleName() + ' e-modal';\n _this.modal.style.display = 'none';\n document.body.insertBefore(_this.modal, popupEle);\n document.body.className += ' e-colorpicker-overflow';\n _this.modal.style.display = 'block';\n _this.modal.style.zIndex = (Number(popupEle.style.zIndex) - 1).toString();\n }\n }\n args.cancel = observeOpenArgs.cancel;\n callBackPromise.resolve(observeOpenArgs);\n });\n return callBackPromise;\n };\n this.splitBtn.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n if (!isNullOrUndefined(args.event)) {\n var beforeCloseArgs = { element: _this.container, event: args.event, cancel: false };\n _this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n if (Browser.isDevice && args.event.target === _this.modal) {\n observedCloseArgs.cancel = true;\n }\n if (!observedCloseArgs.cancel) {\n _this.onPopupClose();\n }\n args.cancel = observedCloseArgs.cancel;\n callBackPromise.resolve(observedCloseArgs);\n });\n }\n else {\n callBackPromise.resolve(args);\n }\n return callBackPromise;\n };\n };\n ColorPicker.prototype.onPopupClose = function () {\n this.unWireEvents();\n this.destroyOtherComp();\n this.container.style.width = '';\n select('.' + SPLITPREVIEW, this.splitBtn.element).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n this.container.innerHTML = '';\n removeClass([this.container], [PICKERCONTENT, PALETTECONTENT]);\n if (Browser.isDevice && this.modal) {\n removeClass([document.body], 'e-colorpicker-overflow');\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n ColorPicker.prototype.createPalette = function () {\n classList(this.container, [PALETTECONTENT], [PICKERCONTENT]);\n if (this.presetColors) {\n var paletteGroup = this.createElement('div', { className: 'e-custom-palette' });\n this.appendElement(paletteGroup);\n var keys = Object.keys(this.presetColors);\n if (keys.length === 1) {\n this.appendPalette(this.presetColors[keys[0]], keys[0], paletteGroup);\n }\n else {\n for (var i = 0, len = keys.length; i < len; i++) {\n this.appendPalette(this.presetColors[keys[i]], keys[i], paletteGroup);\n }\n }\n if (selectAll('.e-row', paletteGroup).length > 10) {\n addClass([paletteGroup], 'e-palette-group');\n }\n }\n else {\n this.appendPalette(presets.default, 'default');\n }\n if (this.mode === 'Palette' && !this.modeSwitcher && this.noColor) {\n this.setNoColor();\n }\n var width = parseInt(getComputedStyle(this.container).borderBottomWidth, 10);\n this.container.style.width = formatUnit(this.container.children[0].offsetWidth + width + width);\n this.rgb = this.hexToRgb(this.roundValue(this.value));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n };\n ColorPicker.prototype.firstPaletteFocus = function () {\n if (!select('.' + SELECT, this.container.children[0])) {\n selectAll('.' + PALETTES, this.container)[0].focus();\n }\n };\n ColorPicker.prototype.appendPalette = function (colors, key, refEle) {\n var palette = this.createElement('div', { className: PALETTES, attrs: { 'tabindex': '0', 'role': 'grid' } });\n if (refEle) {\n refEle.appendChild(palette);\n }\n else {\n this.appendElement(palette);\n }\n var row;\n var tile;\n var roundedColor;\n for (var i = 0, len = colors.length; i < len; i++) {\n if (i === 0 || i % this.columns === 0) {\n row = this.createElement('div', {\n className: 'e-row', attrs: { 'role': 'row' }\n });\n palette.appendChild(row);\n }\n roundedColor = this.roundValue(colors[i]).toLowerCase();\n tile = this.createElement('span', {\n className: TILE, attrs: { 'role': 'gridcell', 'aria-label': roundedColor, 'aria-selected': 'false', 'tabindex': '0' }\n });\n this.trigger('beforeTileRender', { element: tile, presetName: key, value: colors[i] });\n row.appendChild(tile);\n if (this.value === roundedColor) {\n this.addTileSelection(tile);\n palette.focus();\n }\n tile.style.backgroundColor = this.convertToRgbString(this.hexToRgb(roundedColor));\n }\n };\n ColorPicker.prototype.setNoColor = function () {\n var noColorEle = this.container.querySelector('.e-row').children[0];\n noColorEle.classList.add(NOCOLOR);\n if (!this.value) {\n noColorEle.classList.add(SELECT);\n closest(noColorEle, '.' + PALETTES).focus();\n }\n ['aria-selected', 'aria-label'].forEach(function (attr) { noColorEle.removeAttribute(attr); });\n noColorEle.style.backgroundColor = '';\n };\n ColorPicker.prototype.appendElement = function (ele, insertPos) {\n if (insertPos === void 0) { insertPos = 0; }\n var refEle = this.container.children[insertPos];\n if (refEle) {\n this.container.insertBefore(ele, refEle);\n }\n else {\n this.container.appendChild(ele);\n }\n };\n ColorPicker.prototype.addTileSelection = function (ele) {\n ele.classList.add(SELECT);\n ele.setAttribute('aria-selected', 'true');\n };\n ColorPicker.prototype.createPicker = function () {\n classList(this.container, [PICKERCONTENT], [PALETTECONTENT]);\n var hsvContainer = this.createElement('div', { className: HSVCONTAINER });\n this.appendElement(hsvContainer);\n hsvContainer.appendChild(this.createElement('div', { className: HSVAREA }));\n var dragHandler = this.createElement('span', { className: HANDLER, attrs: { 'tabindex': '0' } });\n hsvContainer.appendChild(dragHandler);\n if (this.value === null || this.value === '') {\n this.value = '#008000ff';\n }\n this.rgb = this.hexToRgb(this.value);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHsvContainerBg();\n this.setHandlerPosition();\n this.createSlider();\n this.createDragTooltip();\n };\n ColorPicker.prototype.setHsvContainerBg = function (h) {\n if (h === void 0) { h = this.hsv[0]; }\n this.getHsvContainer().style.backgroundColor = this.convertToRgbString(this.hsvToRgb(h, 100, 100, 1));\n };\n ColorPicker.prototype.getHsvContainer = function () {\n return select('.' + HSVCONTAINER, this.container);\n };\n ColorPicker.prototype.setHandlerPosition = function () {\n var dragHandler = this.getDragHandler();\n var hsvArea = select('.' + HSVAREA, this.container);\n if (this.enableRtl) {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * Math.abs(100 - this.hsv[1]) / 100);\n }\n else {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * this.hsv[1] / 100);\n }\n dragHandler.style.top = formatUnit(hsvArea.offsetHeight * (100 - this.hsv[2]) / 100);\n };\n ColorPicker.prototype.createSlider = function () {\n var sliderPreviewWrapper = this.createElement('div', { className: 'e-slider-preview' });\n this.appendElement(sliderPreviewWrapper, 1);\n this.createPreview(sliderPreviewWrapper);\n var sliderWrapper = this.createElement('div', { className: 'e-colorpicker-slider' });\n sliderPreviewWrapper.insertBefore(sliderWrapper, sliderPreviewWrapper.children[0]);\n var slider = this.createElement('div', { className: 'e-hue-slider' });\n sliderWrapper.appendChild(slider);\n this.hueSlider = new Slider({\n value: this.hsv[0],\n min: 0,\n max: 359,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.hueChange.bind(this)\n });\n this.hueSlider.createElement = this.createElement;\n this.hueSlider.appendTo(slider);\n if (this.enableOpacity) {\n slider = this.createElement('div', { className: 'e-opacity-slider' });\n sliderWrapper.appendChild(slider);\n this.createOpacitySlider(slider);\n }\n };\n ColorPicker.prototype.createOpacitySlider = function (slider) {\n this.opacitySlider = new Slider({\n value: this.rgb[3] * 100,\n min: 0,\n max: 100,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.opacityChange.bind(this)\n });\n this.opacitySlider.createElement = this.createElement;\n this.opacitySlider.appendTo(slider);\n var opacityBgTrack = this.createElement('div', { className: 'e-opacity-empty-track' });\n slider.appendChild(opacityBgTrack);\n this.updateOpacitySliderBg();\n };\n ColorPicker.prototype.updateOpacitySliderBg = function () {\n var direction = this.enableRtl ? 'to left' : 'to right';\n var opacityEle = select('.e-opacity-empty-track', this.opacitySlider.element);\n if (opacityEle) {\n opacityEle.style.background =\n 'linear-gradient(' + direction + ', rgba(' + this.rgb.slice(0, 3) + ', 0) 0%, ' +\n this.convertToRgbString(this.rgb.slice(0, 3)) + ' 100%)';\n }\n };\n ColorPicker.prototype.hueChange = function (args) {\n this.hsv[0] = args.value;\n this.setHsvContainerBg();\n this.convertToOtherFormat();\n };\n ColorPicker.prototype.opacityChange = function (args) {\n var value = args.value;\n var pValue = this.rgbToHex(this.rgb);\n this.hsv[3] = value / 100;\n this.rgb[3] = value / 100;\n var cValue = this.rgbToHex(this.rgb);\n this.updateOpacityInput(value);\n var rgb = this.convertToRgbString(this.rgb);\n this.updatePreview(rgb);\n this.triggerEvent(cValue, pValue, rgb);\n };\n ColorPicker.prototype.updateOpacityInput = function (value) {\n if (this.enableOpacity && !this.getWrapper().classList.contains(HIDEVALUE)) {\n var opacityTextBoxInst = getInstance(select('.' + OPACITY, this.container), NumericTextBox);\n opacityTextBoxInst.value = value;\n opacityTextBoxInst.dataBind();\n }\n };\n ColorPicker.prototype.createPreview = function (parentEle) {\n var previewContainer = this.createElement('div', { className: PREVIEW });\n parentEle.appendChild(previewContainer);\n var preview = this.createElement('span', { className: 'e-preview ' + CURRENT });\n previewContainer.appendChild(preview);\n var colorValue = this.convertToRgbString(this.rgb);\n preview.style.backgroundColor = colorValue;\n preview = this.createElement('span', { className: 'e-preview ' + PREVIOUS });\n previewContainer.appendChild(preview);\n preview.style.backgroundColor = colorValue;\n };\n ColorPicker.prototype.isPicker = function () {\n return !this.container.classList.contains(PALETTECONTENT);\n };\n ColorPicker.prototype.getPopupEle = function () {\n return this.container.parentElement;\n };\n ColorPicker.prototype.createNumericInput = function (element, value, label, max) {\n var _this = this;\n var numericInput = new NumericTextBox({\n value: value,\n placeholder: label,\n min: 0,\n max: max,\n format: '###.##',\n showSpinButton: false,\n floatLabelType: 'Always',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true,\n change: function (args) {\n if (args.event) {\n _this.inputHandler(args.event);\n }\n }\n });\n numericInput.createElement = this.createElement;\n numericInput.appendTo(element);\n };\n ColorPicker.prototype.createInput = function () {\n var isPicker = this.isPicker();\n var wrapper = this.getWrapper();\n if ((isPicker && !wrapper.classList.contains(HIDEVALUE)) || (!isPicker && wrapper.classList.contains(SHOWVALUE))) {\n var inputWrap = this.createElement('div', { className: INPUTWRAPPER });\n if (isPicker) {\n this.appendElement(inputWrap, 2);\n }\n else {\n this.appendElement(inputWrap, 1);\n }\n var container = this.createElement('div', { className: 'e-input-container' });\n inputWrap.appendChild(container);\n if (!wrapper.classList.contains(HIDEVALUESWITCH)) {\n this.appendValueSwitchBtn(inputWrap);\n }\n if (!wrapper.classList.contains(HIDEHEX)) {\n var hexInput = this.createElement('input', {\n className: HEX,\n attrs: { 'maxlength': '7', 'spellcheck': 'false', 'aria-label': 'HEX' }\n });\n container.appendChild(hexInput);\n Input.createInput({\n element: hexInput,\n floatLabelType: 'Always',\n properties: {\n placeholder: 'HEX',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true\n }\n }, this.createElement);\n Input.setValue(this.value.slice(0, 7), hexInput);\n hexInput.addEventListener('input', this.inputHandler.bind(this));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n var label = void 0;\n var value = void 0;\n if (this.isRgb) {\n label = 'RGB';\n value = this.rgb;\n }\n else {\n label = 'HSV';\n value = this.hsv;\n }\n var clsName = ['rh', 'gs', 'bv'];\n for (var i = 0; i < 3; i++) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: 'e-' + clsName[i] + '-value' })), value[i], label[i], 255);\n }\n if (this.enableOpacity) {\n this.appendOpacityValue(container);\n }\n }\n }\n };\n ColorPicker.prototype.appendOpacityValue = function (container) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: OPACITY })), this.rgb[3] * 100, 'A', 100);\n };\n ColorPicker.prototype.appendValueSwitchBtn = function (targetEle) {\n var valueSwitchBtn = this.createElement('button', {\n className: 'e-icons e-css e-btn e-flat e-icon-btn ' + FORMATSWITCH,\n attrs: { 'title': 'Toggle format' }\n });\n targetEle.appendChild(valueSwitchBtn);\n if (this.isPicker() && !this.getWrapper().classList.contains(HIDERGBA)) {\n valueSwitchBtn.addEventListener('click', this.formatSwitchHandler.bind(this));\n }\n };\n ColorPicker.prototype.createCtrlBtn = function () {\n if (this.modeSwitcher || this.showButtons) {\n this.l10n.setLocale(this.locale);\n var btnWrapper = this.createElement('div', { className: CTRLSWITCH });\n this.container.appendChild(btnWrapper);\n if (this.showButtons) {\n var controlBtnWrapper = this.createElement('div', { className: CTRLBTN });\n btnWrapper.appendChild(controlBtnWrapper);\n var apply = this.l10n.getConstant('Apply');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: apply,\n className: 'e-btn e-css e-flat e-primary e-small ' + APPLY,\n attrs: { 'title': apply }\n }));\n var cancel = this.l10n.getConstant('Cancel');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: cancel,\n className: 'e-btn e-css e-flat e-small ' + CANCEL,\n attrs: { 'title': cancel }\n }));\n }\n if (this.modeSwitcher) {\n this.appendModeSwitchBtn();\n }\n }\n };\n ColorPicker.prototype.appendModeSwitchBtn = function () {\n var modeSwitcher = this.createElement('button', {\n className: 'e-icons e-btn e-flat e-icon-btn ' + MODESWITCH, attrs: { title: this.l10n.getConstant('ModeSwitcher') }\n });\n select('.' + CTRLSWITCH, this.container).insertBefore(modeSwitcher, select('.' + CTRLBTN, this.container));\n };\n ColorPicker.prototype.createDragTooltip = function () {\n var _this = this;\n var tooltip = new Tooltip({\n opensOn: 'Custom',\n showTipPointer: false,\n cssClass: 'e-color-picker-tooltip',\n beforeOpen: function (args) {\n _this.tooltipEle = args.element;\n },\n animation: { open: { effect: 'None' }, close: { effect: 'None' } }\n });\n tooltip.createElement = this.createElement;\n tooltip.appendTo(this.container);\n // eslint-disable-next-line\n tooltip.open(this.container);\n this.tooltipEle.style.zIndex = getZindexPartial(this.tooltipEle).toString();\n select('.e-tip-content', this.tooltipEle).appendChild(this.createElement('div', { className: 'e-tip-transparent' }));\n };\n ColorPicker.prototype.getTooltipInst = function () {\n return getInstance(this.container, Tooltip);\n };\n ColorPicker.prototype.setTooltipOffset = function (value) {\n this.getTooltipInst().offsetY = value;\n };\n ColorPicker.prototype.toggleDisabled = function (enable) {\n if (enable) {\n this.getWrapper().classList.add(DISABLED);\n }\n else {\n this.getWrapper().classList.remove(DISABLED);\n }\n if (this.showButtons) {\n ([].slice.call(selectAll('.e-btn', this.container))).forEach(function (ele) {\n if (enable) {\n attributes(ele, { 'disabled': '' });\n }\n else {\n ele.removeAttribute('disabled');\n }\n });\n }\n };\n ColorPicker.prototype.convertToRgbString = function (rgb) {\n return rgb.length ? rgb.length === 4 ? 'rgba(' + rgb.join() + ')' : 'rgb(' + rgb.join() + ')' : '';\n };\n ColorPicker.prototype.convertToHsvString = function (hsv) {\n return hsv.length === 4 ? 'hsva(' + hsv.join() + ')' : 'hsv(' + hsv.join() + ')';\n };\n ColorPicker.prototype.updateHsv = function () {\n this.hsv[1] = this.hsv[1] > 100 ? 100 : this.hsv[1];\n this.hsv[2] = this.hsv[2] > 100 ? 100 : this.hsv[2];\n this.setHandlerPosition();\n };\n ColorPicker.prototype.convertToOtherFormat = function (isKey) {\n if (isKey === void 0) { isKey = false; }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hsvToRgb.apply(this, this.hsv);\n var cValue = this.rgbToHex(this.rgb);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.updateInput(cValue);\n this.triggerEvent(cValue, pValue, rgba, isKey);\n };\n ColorPicker.prototype.updateInput = function (value) {\n var wrapper = this.getWrapper();\n if (!wrapper.classList.contains(HIDEVALUE)) {\n if (!wrapper.classList.contains(HIDEHEX)) {\n Input.setValue(value.substr(0, 7), select('.' + HEX, this.container));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n if (this.isRgb) {\n this.updateValue(this.rgb, false);\n }\n else {\n this.updateValue(this.hsv, false);\n }\n }\n }\n };\n ColorPicker.prototype.updatePreview = function (value) {\n if (this.enableOpacity) {\n this.updateOpacitySliderBg();\n }\n select('.e-tip-transparent', this.tooltipEle).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + PREVIOUS, this.container).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n };\n ColorPicker.prototype.getDragHandler = function () {\n return select('.' + HANDLER, this.container);\n };\n ColorPicker.prototype.removeTileSelection = function () {\n var selectedEle = [].slice.call(selectAll('.' + SELECT, this.container.children[0]));\n selectedEle.forEach(function (ele) {\n ele.classList.remove(SELECT);\n ele.setAttribute('aria-selected', 'false');\n });\n };\n ColorPicker.prototype.convertRgbToNumberArray = function (value) {\n return (value.slice(value.indexOf('(') + 1, value.indexOf(')'))).split(',').map(function (n, i) {\n return (i !== 3) ? parseInt(n, 10) : parseFloat(n);\n });\n };\n /**\n * To get color value in specified type.\n *\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @method getValue\n * @returns {string} - Color value\n */\n ColorPicker.prototype.getValue = function (value, type) {\n if (!value) {\n value = this.value;\n }\n type = !type ? 'hex' : type.toLowerCase();\n if (value[0] === 'r') {\n var cValue = this.convertRgbToNumberArray(value);\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue.slice(0, 3)));\n }\n else {\n if (type === 'hsva') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n if (value[0] === 'h') {\n var cValue = this.hsvToRgb.apply(this, this.convertRgbToNumberArray(value));\n if (type === 'rgba') {\n return this.convertToRgbString(cValue);\n }\n else {\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'rgb') {\n return this.convertToRgbString(cValue.slice(0, 3));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n value = this.roundValue(value);\n var rgb = this.hexToRgb(value);\n if (type === 'rgb' || type === 'hsv') {\n rgb = rgb.slice(0, 3);\n }\n if (type === 'rgba' || type === 'rgb') {\n return this.convertToRgbString(rgb);\n }\n else {\n if (type === 'hsva' || type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, rgb));\n }\n else {\n if (type === 'hex') {\n return value.slice(0, 7);\n }\n else {\n if (type === 'a') {\n return rgb[3].toString();\n }\n else {\n return 'null';\n }\n }\n }\n }\n }\n }\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @method toggle\n * @returns {void}\n */\n ColorPicker.prototype.toggle = function () {\n if (this.container.parentElement.classList.contains('e-popup-close')) {\n this.splitBtn.toggle();\n }\n else {\n this.closePopup(null);\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ColorPicker.prototype.getModuleName = function () {\n return 'colorpicker';\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ColorPicker.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ColorPicker.prototype.wireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.add(dragHandler, 'keydown', this.pickerKeyDown, this);\n var ctrlBtn = select('.' + CTRLBTN, this.container);\n if (ctrlBtn) {\n EventHandler.add(ctrlBtn, 'keydown', this.ctrlBtnKeyDown, this);\n }\n EventHandler.add(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown, this);\n if (this.modeSwitcher || this.showButtons) {\n this.addCtrlSwitchEvent();\n }\n EventHandler.add(select('.' + PREVIOUS, this.container), 'click', this.previewHandler, this);\n }\n else {\n EventHandler.add(this.container, 'click', this.paletteClickHandler, this);\n EventHandler.add(this.container, 'keydown', this.paletteKeyDown, this);\n }\n };\n ColorPicker.prototype.formResetHandler = function () {\n this.value = this.initialInputValue;\n attributes(this.element, { 'value': this.initialInputValue });\n };\n ColorPicker.prototype.addCtrlSwitchEvent = function () {\n var ctrlSwitchBtn = select('.' + CTRLSWITCH, this.container);\n if (ctrlSwitchBtn) {\n EventHandler.add(ctrlSwitchBtn, 'click', this.btnClickHandler, this);\n }\n };\n ColorPicker.prototype.ctrlBtnKeyDown = function (e) {\n if (e.keyCode === 13) {\n var applyBtn = select('.' + APPLY, this.container);\n if (applyBtn) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue);\n }\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.pickerKeyDown = function (e) {\n switch (e.keyCode) {\n case 39:\n this.handlerDragPosition(1, this.enableRtl ? -1 : 1, e);\n break;\n case 37:\n this.handlerDragPosition(1, this.enableRtl ? 1 : -1, e);\n break;\n case 38:\n this.handlerDragPosition(2, 1, e);\n break;\n case 40:\n this.handlerDragPosition(2, -1, e);\n break;\n case 13: {\n e.preventDefault();\n var cValue = this.rgbToHex(this.rgb);\n this.enterKeyHandler(cValue, e);\n }\n }\n };\n ColorPicker.prototype.enterKeyHandler = function (value, e) {\n this.triggerChangeEvent(value);\n if (!this.inline) {\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.closePopup = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.container, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n _this.splitBtn.toggle();\n _this.onPopupClose();\n }\n });\n };\n ColorPicker.prototype.triggerChangeEvent = function (value) {\n var hex = value.slice(0, 7);\n this.trigger('change', {\n currentValue: { hex: hex, rgba: this.convertToRgbString(this.rgb) },\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) },\n value: this.enableOpacity ? value : hex\n });\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\n this.element.value = hex ? hex : '#000000';\n };\n ColorPicker.prototype.handlerDragPosition = function (prob, value, e) {\n e.preventDefault();\n this.hsv[prob] += value * (e.ctrlKey ? 1 : 3);\n if (this.hsv[prob] < 0) {\n this.hsv[prob] = 0;\n }\n this.updateHsv();\n this.convertToOtherFormat(true);\n };\n ColorPicker.prototype.handlerDown = function (e) {\n e.preventDefault();\n if (e.type === 'mousedown') {\n this.clientX = Math.abs(e.pageX - pageXOffset);\n this.clientY = Math.abs(e.pageY - pageYOffset);\n this.setTooltipOffset(8);\n }\n else {\n this.clientX = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n this.clientY = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n this.setTooltipOffset(-8);\n }\n this.setHsv(this.clientX, this.clientY);\n this.getDragHandler().style.transition = 'left .4s cubic-bezier(.25, .8, .25, 1), top .4s cubic-bezier(.25, .8, .25, 1)';\n this.updateHsv();\n this.convertToOtherFormat();\n this.getDragHandler().focus();\n EventHandler.add(document, 'mousemove touchmove', this.handlerMove, this);\n EventHandler.add(document, 'mouseup touchend', this.handlerEnd, this);\n };\n ColorPicker.prototype.handlerMove = function (e) {\n if (e.type !== 'touchmove') {\n e.preventDefault();\n }\n var x;\n var y;\n if (e.type === 'mousemove') {\n x = Math.abs(e.pageX - pageXOffset);\n y = Math.abs(e.pageY - pageYOffset);\n }\n else {\n x = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n y = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n }\n this.setHsv(x, y);\n var dragHandler = this.getDragHandler();\n this.updateHsv();\n this.convertToOtherFormat();\n this.getTooltipInst().refresh(dragHandler);\n if (!this.tooltipEle.style.transform) {\n if (Math.abs(this.clientX - x) > 8 || Math.abs(this.clientY - y) > 8) {\n select('.' + HSVAREA, this.container).style.cursor = 'pointer';\n dragHandler.style.transition = 'none';\n if (!this.inline) {\n this.tooltipEle.style.zIndex = (parseInt(this.getPopupEle().style.zIndex, 10) + 1).toString();\n }\n this.tooltipEle.style.transform = 'rotate(45deg)';\n dragHandler.classList.add('e-hide-handler');\n }\n }\n };\n ColorPicker.prototype.setHsv = function (clientX, clientY) {\n var ele = select('.' + HSVAREA, this.container);\n var position = ele.getBoundingClientRect();\n if (this.enableRtl) {\n clientX = clientX > position.right ? 0 : Math.abs(clientX - position.right);\n }\n else {\n clientX = clientX > position.left ? Math.abs(clientX - position.left) : 0;\n }\n clientY = clientY > position.top ? Math.abs(clientY - position.top) : 0;\n this.hsv[2] = Math.round(Number(100 * (ele.offsetHeight -\n Math.max(0, Math.min(ele.offsetHeight, (clientY - ele.offsetTop)))) / ele.offsetHeight) * 10) / 10;\n this.hsv[1] =\n Math.round(Number(100 * (Math.max(0, Math.min(ele.offsetWidth, (clientX - ele.offsetLeft)))) / ele.offsetWidth) * 10) / 10;\n };\n ColorPicker.prototype.handlerEnd = function (e) {\n if (e.type !== 'touchend') {\n e.preventDefault();\n }\n EventHandler.remove(document, 'mousemove touchmove', this.handlerMove);\n EventHandler.remove(document, 'mouseup touchend', this.handlerEnd);\n var dragHandler = this.getDragHandler();\n select('.' + HSVAREA, this.container).style.cursor = '';\n if (this.tooltipEle.style.transform) {\n this.tooltipEle.style.transform = '';\n dragHandler.classList.remove('e-hide-handler');\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n };\n ColorPicker.prototype.btnClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.' + MODESWITCH)) {\n e.stopPropagation();\n this.switchToPalette();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n }\n };\n ColorPicker.prototype.switchToPalette = function () {\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Palette' });\n this.unWireEvents();\n this.destroyOtherComp();\n detach(select('.e-slider-preview', this.container));\n if (!this.getWrapper().classList.contains(HIDEVALUE)) {\n remove(select('.' + INPUTWRAPPER, this.container));\n }\n detach(this.getHsvContainer());\n this.createPalette();\n this.firstPaletteFocus();\n this.createInput();\n this.refreshPopupPos();\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Palette' });\n };\n ColorPicker.prototype.refreshPopupPos = function () {\n if (!this.inline) {\n var popupEle = this.getPopupEle();\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.top = formatUnit(0 + pageYOffset);\n this.getPopupInst().refreshPosition(this.splitBtn.element.parentElement);\n }\n };\n ColorPicker.prototype.formatSwitchHandler = function () {\n if (this.isRgb) {\n this.updateValue(this.hsv, true, 3, [360, 100, 100]);\n this.isRgb = false;\n }\n else {\n this.updateValue(this.rgb, true, 2);\n this.isRgb = true;\n }\n };\n ColorPicker.prototype.updateValue = function (value, format, idx, max) {\n var clsName = ['e-rh-value', 'e-gs-value', 'e-bv-value'];\n var inst;\n for (var i = 0, len = clsName.length; i < len; i++) {\n inst = getInstance(select('.' + clsName[i], this.container), NumericTextBox);\n inst.value = Math.round(value[i]);\n if (format) {\n inst.placeholder = clsName[i].substr(idx, 1).toUpperCase();\n inst.max = max ? max[i] : 255;\n }\n inst.dataBind();\n }\n };\n ColorPicker.prototype.previewHandler = function (e) {\n var target = e.target;\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.convertRgbToNumberArray(target.style.backgroundColor);\n if (!this.rgb[3]) {\n this.rgb[3] = 1;\n }\n var cValue = this.rgbToHex(this.rgb);\n var hsv = this.rgbToHsv.apply(this, this.rgb);\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n }\n this.setHsvContainerBg(hsv[0]);\n if (this.enableOpacity && hsv[3] !== this.hsv[3]) {\n this.opacitySlider.setProperties({ 'value': hsv[3] * 100 }, true);\n this.opacitySlider.refresh();\n this.updateOpacitySliderBg();\n }\n this.hsv = hsv;\n this.setHandlerPosition();\n this.updateInput(cValue);\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = this.convertToRgbString(this.rgb);\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb));\n };\n ColorPicker.prototype.paletteClickHandler = function (e) {\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(TILE)) {\n this.removeTileSelection();\n this.addTileSelection(target);\n if (target.classList.contains(NOCOLOR)) {\n this.noColorTile();\n }\n else {\n var cValue = target.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(this.roundValue(cValue));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb));\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n }\n else {\n if (closest(target, '.' + MODESWITCH)) {\n this.switchToPicker();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n else {\n if (this.getWrapper().classList.contains(SHOWVALUE) && closest(target, '.' + FORMATSWITCH)) {\n this.formatSwitchHandler();\n }\n }\n }\n }\n };\n ColorPicker.prototype.noColorTile = function (isKey) {\n if (isKey === void 0) { isKey = false; }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = [];\n this.hsv = [];\n this.triggerEvent('', pValue, '', isKey);\n };\n ColorPicker.prototype.switchToPicker = function () {\n var wrapper = this.getWrapper();\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Picker' });\n this.unWireEvents();\n ([].slice.call(selectAll('.' + PALETTES, this.container))).forEach(function (ele) {\n detach(ele);\n });\n if (wrapper.classList.contains(SHOWVALUE)) {\n detach(select('.' + INPUTWRAPPER, this.container));\n }\n this.container.style.width = '';\n var grpEle = select('.e-custom-palette', this.container);\n if (this.presetColors) {\n remove(grpEle);\n }\n this.createPicker();\n this.getDragHandler().focus();\n this.createInput();\n this.refreshPopupPos();\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Picker' });\n };\n ColorPicker.prototype.ctrlBtnClick = function (ele, e) {\n if (ele.classList.contains(APPLY)) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue);\n }\n if (!this.inline) {\n this.closePopup(e);\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.paletteKeyDown = function (e) {\n var target = e.target;\n 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);\n }\n else {\n return;\n }\n break;\n }\n case 'R':\n if (this.rgb[0] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[0] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'G':\n if (this.rgb[1] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[1] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'B':\n if (this.rgb[2] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[2] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'H':\n this.hueSlider.value = Number(target.value);\n break;\n case 'S':\n if (this.hsv[1] !== Number(target.value)) {\n this.hsv[1] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat();\n }\n break;\n case 'V':\n if (this.hsv[2] !== Number(target.value)) {\n this.hsv[2] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat();\n }\n break;\n case 'A':\n this.opacitySlider.value = Number(target.value);\n break;\n }\n };\n ColorPicker.prototype.inputValueChange = function (hsv, pValue, value) {\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n this.setHsvContainerBg(hsv[0]);\n }\n this.hsv = hsv;\n var cValue = this.rgbToHex(this.rgb);\n this.setHandlerPosition();\n this.updateInput(value ? value : cValue);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.triggerEvent(cValue, pValue, rgba);\n };\n ColorPicker.prototype.triggerEvent = function (cValue, pValue, rgba, isKey) {\n if (isKey === void 0) { isKey = false; }\n var hex = cValue.slice(0, 7);\n if (!this.showButtons && !isKey) {\n this.trigger('change', { currentValue: { hex: hex, rgba: rgba },\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) }, value: cValue });\n if (this.enableOpacity) {\n this.setProperties({ 'value': cValue }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\n this.element.value = hex ? hex : '#000000';\n }\n else {\n this.trigger('select', {\n currentValue: { hex: hex, rgba: rgba },\n previousValue: { hex: pValue.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(pValue)) }\n });\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n ColorPicker.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n ['tabindex', 'spellcheck'].forEach(function (attr) { _this.element.removeAttribute(attr); });\n if (this.inline) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n else {\n if (this.isPopupOpen()) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n this.splitBtn.destroy();\n this.splitBtn = null;\n }\n this.tileRipple();\n this.tileRipple = null;\n this.ctrlBtnRipple();\n this.ctrlBtnRipple = null;\n if (this.element.nextElementSibling) {\n detach(this.element.nextElementSibling);\n }\n if (wrapper) {\n wrapper.parentElement.insertBefore(this.element, wrapper);\n detach(wrapper);\n }\n this.container = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n ColorPicker.prototype.destroyOtherComp = function () {\n if (this.isPicker()) {\n var popup = closest(this.hueSlider.element, '.e-color-picker');\n var numericElemColl = popup.querySelectorAll('.e-numerictextbox');\n for (var i = 0; i < numericElemColl.length; i++) {\n getInstance(numericElemColl[i], NumericTextBox).destroy();\n }\n this.hueSlider.destroy();\n if (this.enableOpacity) {\n this.opacitySlider.destroy();\n this.opacitySlider = null;\n }\n this.hueSlider = null;\n var tooltipInst = this.getTooltipInst();\n tooltipInst.close();\n tooltipInst.destroy();\n this.tooltipEle = null;\n }\n };\n ColorPicker.prototype.isPopupOpen = function () {\n return this.getPopupEle().classList.contains('e-popup-open');\n };\n ColorPicker.prototype.unWireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.remove(dragHandler, 'keydown', this.pickerKeyDown);\n var ctrlBtn = select('.' + CTRLBTN, this.container);\n if (ctrlBtn) {\n EventHandler.remove(ctrlBtn, 'keydown', this.ctrlBtnKeyDown);\n }\n EventHandler.remove(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown);\n if (this.modeSwitcher || this.showButtons) {\n EventHandler.remove(select('.' + CTRLSWITCH, this.container), 'click', this.btnClickHandler);\n }\n EventHandler.remove(select('.' + PREVIOUS, this.container), 'click', this.previewHandler);\n }\n else {\n EventHandler.remove(this.container, 'click', this.paletteClickHandler);\n EventHandler.remove(this.container, 'keydown', this.paletteKeyDown);\n }\n };\n ColorPicker.prototype.roundValue = function (value) {\n if (!value) {\n return '';\n }\n if (value[0] !== '#') {\n value = '#' + value;\n }\n var len = value.length;\n if (len === 4) {\n value += 'f';\n len = 5;\n }\n if (len === 5) {\n var tempValue = '';\n for (var i = 1, len_1 = value.length; i < len_1; i++) {\n tempValue += (value.charAt(i) + value.charAt(i));\n }\n value = '#' + tempValue;\n len = 9;\n }\n if (len === 7) {\n value += 'ff';\n }\n return value;\n };\n ColorPicker.prototype.hexToRgb = function (hex) {\n if (!hex) {\n return [];\n }\n hex = hex.trim();\n if (hex.length !== 9) {\n hex = this.roundValue(hex);\n }\n var opacity = Number((parseInt(hex.slice(-2), 16) / 255).toFixed(2));\n hex = hex.slice(1, 7);\n var bigInt = parseInt(hex, 16);\n var h = [];\n h.push((bigInt >> 16) & 255);\n h.push((bigInt >> 8) & 255);\n h.push(bigInt & 255);\n h.push(opacity);\n return h;\n };\n ColorPicker.prototype.rgbToHsv = function (r, g, b, opacity) {\n if (this.rgb && !this.rgb.length) {\n return [];\n }\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0;\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n var hsv = [Math.round(h * 360), Math.round(s * 1000) / 10, Math.round(v * 1000) / 10];\n if (!isNullOrUndefined(opacity)) {\n hsv.push(opacity);\n }\n return hsv;\n };\n ColorPicker.prototype.hsvToRgb = function (h, s, v, opacity) {\n var r;\n var g;\n var b;\n s /= 100;\n v /= 100;\n if (s === 0) {\n r = g = b = v;\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), opacity];\n }\n h /= 60;\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n }\n var rgb = [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n if (!isNullOrUndefined(opacity)) {\n rgb.push(opacity);\n }\n return rgb;\n };\n ColorPicker.prototype.rgbToHex = function (rgb) {\n return rgb.length ? ('#' + this.hex(rgb[0]) + this.hex(rgb[1]) + this.hex(rgb[2]) +\n (!isNullOrUndefined(rgb[3]) ? (rgb[3] !== 0 ? (Math.round(rgb[3] * 255) + 0x10000).toString(16).substr(-2) : '00') : '')) : '';\n };\n ColorPicker.prototype.hex = function (x) {\n return ('0' + x.toString(16)).slice(-2);\n };\n ColorPicker.prototype.changeModeSwitcherProp = function (prop) {\n var ctrlSwitchWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlSwitchWrapper) {\n this.appendModeSwitchBtn();\n }\n else {\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n }\n else {\n if (ctrlSwitchWrapper) {\n if (this.showButtons) {\n detach(select('.' + MODESWITCH, ctrlSwitchWrapper));\n }\n else {\n remove(ctrlSwitchWrapper);\n }\n }\n }\n };\n ColorPicker.prototype.changeShowBtnProps = function (prop) {\n var ctrlBtnWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlBtnWrapper) {\n remove(ctrlBtnWrapper);\n }\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n else {\n if (this.modeSwitcher) {\n detach(select('.' + CTRLBTN, ctrlBtnWrapper));\n }\n else {\n remove(ctrlBtnWrapper);\n }\n }\n };\n ColorPicker.prototype.changeValueProp = function (newProp) {\n if (this.isPicker()) {\n this.rgb = this.hexToRgb(newProp);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHandlerPosition();\n detach(closest(this.hueSlider.element, '.e-slider-preview'));\n this.createSlider();\n this.setHsvContainerBg();\n this.updateInput(newProp);\n if (this.rgb.length === 4) {\n this.updateOpacityInput(this.rgb[3] * 100);\n }\n }\n else {\n this.removeTileSelection();\n var ele = this.container.querySelector('span[aria-label=\"' + this.roundValue(newProp) + '\"]');\n if (ele) {\n this.addTileSelection(ele);\n }\n }\n };\n ColorPicker.prototype.setInputEleProps = function () {\n remove(select('.' + INPUTWRAPPER, this.container));\n this.createInput();\n };\n ColorPicker.prototype.changeDisabledProp = function (newProp) {\n if (this.isPicker()) {\n this.hueSlider.enabled = !newProp;\n this.opacitySlider.enabled = !newProp;\n this.setInputEleProps();\n }\n if (newProp) {\n this.toggleDisabled(true);\n this.unWireEvents();\n }\n else {\n this.toggleDisabled(false);\n this.wireEvents();\n }\n };\n ColorPicker.prototype.changeCssClassProps = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n var popupWrapper = this.getPopupEle();\n if (oldProp) {\n removeClass([wrapper, popupWrapper], oldProp.split(' '));\n }\n if (newProp) {\n addClass([wrapper, popupWrapper], newProp.replace(/\\s+/g, ' ').trim().split(' '));\n }\n };\n ColorPicker.prototype.changeRtlProps = function (newProp) {\n if (newProp) {\n addClass([this.getWrapper()], 'e-rtl');\n }\n else {\n removeClass([this.getWrapper()], 'e-rtl');\n }\n };\n ColorPicker.prototype.changePaletteProps = function () {\n detach(this.container.children[0]);\n this.container.style.width = '';\n this.createPalette();\n };\n ColorPicker.prototype.changeOpacityProps = function (newProp) {\n var wrapper = this.getWrapper();\n if (newProp) {\n removeClass([this.container.parentElement], HIDEOPACITY);\n this.createOpacitySlider(select('.e-colorpicker-slider', this.container).appendChild(this.createElement('div', { className: 'e-opacity-slider' })));\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n this.appendOpacityValue(select('.e-input-container', this.container));\n }\n }\n else {\n addClass([this.container.parentElement], HIDEOPACITY);\n this.opacitySlider.destroy();\n remove(this.opacitySlider.element);\n this.opacitySlider = null;\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n remove(select('.' + OPACITY, this.container).parentElement);\n }\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ColorPickerModel} newProp - Specifies new properties\n * @param {ColorPickerModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n ColorPicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (!isNullOrUndefined(newProp.value)) {\n var value = this.roundValue(newProp.value);\n if (value.length === 9) {\n this.element.value = this.roundValue(value).slice(0, 7);\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n if (preview) {\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(newProp.value));\n }\n }\n else if (this.noColor && this.mode === 'Palette' && this.value === '') {\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n preview.style.backgroundColor = '';\n }\n else {\n this.value = oldProp.value;\n }\n }\n if (!this.inline && isNullOrUndefined(newProp.inline)) {\n var otherCompModel = ['disabled', 'enableRtl'];\n this.splitBtn.setProperties(getModel(newProp, otherCompModel));\n if (!this.isPopupOpen()) {\n this.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n this.changeRtlProps(newProp.enableRtl);\n return;\n }\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'inline':\n if (newProp.inline) {\n this_1.getWrapper().appendChild(this_1.container);\n this_1.splitBtn.destroy();\n detach(this_1.element.nextElementSibling);\n if (!this_1.container.children.length) {\n this_1.createWidget();\n }\n }\n else {\n this_1.destroyOtherComp();\n this_1.unWireEvents();\n this_1.container.innerHTML = '';\n this_1.createSplitBtn();\n }\n break;\n case 'cssClass': {\n this_1.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n var props = newProp.cssClass.split(' ').concat(oldProp.cssClass.split(' '));\n props = props.reduce(function (a, b) { if (a.indexOf(b) < 0) {\n a.push(b);\n } return a; }, []);\n var count_1 = 0;\n props.forEach(function (cls) {\n if (count_1 === 0 &&\n (cls === HIDEVALUE || cls === HIDEVALUESWITCH || cls === SHOWVALUE || cls === HIDEHEX || cls === HIDERGBA)) {\n var inputWrap = select('.' + INPUTWRAPPER, _this.container);\n if (inputWrap) {\n remove(select('.' + INPUTWRAPPER, _this.container));\n }\n _this.createInput();\n count_1++;\n }\n });\n break;\n }\n case 'enableRtl':\n if (this_1.isPicker()) {\n this_1.hueSlider.enableRtl = newProp.enableRtl;\n if (this_1.enableOpacity) {\n this_1.opacitySlider.enableRtl = newProp.enableRtl;\n }\n this_1.setInputEleProps();\n }\n this_1.changeRtlProps(newProp.enableRtl);\n break;\n case 'disabled':\n this_1.changeDisabledProp(newProp.disabled);\n break;\n case 'value':\n if (this_1.value !== oldProp.value) {\n this_1.changeValueProp(newProp.value);\n }\n break;\n case 'showButtons':\n this_1.changeShowBtnProps(newProp.showButtons);\n break;\n case 'mode':\n if (newProp.mode === 'Picker') {\n this_1.switchToPicker();\n }\n else {\n this_1.switchToPalette();\n }\n break;\n case 'modeSwitcher':\n this_1.changeModeSwitcherProp(newProp.modeSwitcher);\n break;\n case 'columns':\n case 'presetColors':\n if (!this_1.isPicker()) {\n this_1.changePaletteProps();\n }\n break;\n case 'noColor':\n if (newProp.noColor) {\n if (this_1.mode === 'Palette' && !this_1.modeSwitcher) {\n this_1.setNoColor();\n }\n }\n else {\n this_1.changePaletteProps();\n }\n break;\n case 'enableOpacity':\n this_1.changeOpacityProps(newProp.enableOpacity);\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n /**\n * Sets the focus to Colorpicker\n * its native method\n *\n * @public\n * @returns {void}\n */\n ColorPicker.prototype.focusIn = function () {\n this.element.parentElement.focus();\n };\n __decorate([\n Property('#008000ff')\n ], ColorPicker.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ColorPicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"disabled\", void 0);\n __decorate([\n Property('Picker')\n ], ColorPicker.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(null)\n ], ColorPicker.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"showButtons\", void 0);\n __decorate([\n Property(10)\n ], ColorPicker.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"inline\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"noColor\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeModeSwitch\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"onModeSwitch\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"created\", void 0);\n ColorPicker = __decorate([\n NotifyPropertyChanges\n ], ColorPicker);\n return ColorPicker;\n}(Component));\nexport { ColorPicker };\n","import { addClass, Browser, removeClass, EventHandler, formatUnit, isNullOrUndefined, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { getInstance, closest, selectAll, detach } from '@syncfusion/ej2-base';\nimport { Toolbar } from '@syncfusion/ej2-navigations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Popup, Tooltip } from '@syncfusion/ej2-popups';\nimport * as classes from '../base/classes';\nimport * as events from '../base/constant';\nimport { CLS_TOOLBAR, CLS_DROPDOWN_BTN, CLS_RTE_ELEMENTS, CLS_TB_BTN, CLS_INLINE_DROPDOWN, CLS_COLOR_CONTENT, CLS_FONT_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_COLOR_PALETTE, CLS_FONT_COLOR_PICKER, CLS_BACKGROUND_COLOR_PICKER, CLS_CUSTOM_TILE, CLS_NOCOLOR_ITEM, CLS_BULLETFORMATLIST_TB_BTN, CLS_NUMBERFORMATLIST_TB_BTN, CLS_LIST_PRIMARY_CONTENT } from '../base/classes';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { hasClass } from '../base/util';\n/**\n * `Toolbar renderer` module is used to render toolbar in RichTextEditor.\n *\n * @hidden\n\n */\nvar ToolbarRenderer = /** @class */ (function () {\n /**\n * Constructor for toolbar renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n */\n function ToolbarRenderer(parent) {\n this.parent = parent;\n this.wireEvent();\n }\n ToolbarRenderer.prototype.wireEvent = function () {\n this.parent.on(events.destroy, this.unWireEvent, this);\n this.parent.on(events.maximizeMinimizeClick, this.destroyTooltip, this);\n };\n ToolbarRenderer.prototype.destroyTooltip = function () {\n this.tooltip.close();\n };\n ToolbarRenderer.prototype.unWireEvent = function () {\n this.parent.off(events.destroy, this.unWireEvent);\n if (this.popupOverlay) {\n EventHandler.remove(this.popupOverlay, 'click touchmove', this.onPopupOverlay);\n }\n this.removePopupContainer();\n };\n ToolbarRenderer.prototype.toolbarBeforeCreate = function (e) {\n if (this.mode === 'Extended') {\n e.enableCollision = false;\n }\n };\n ToolbarRenderer.prototype.toolbarCreated = function () {\n this.parent.notify(events.toolbarCreated, this);\n };\n ToolbarRenderer.prototype.toolbarClicked = function (args) {\n if (!this.parent.enabled) {\n return;\n }\n if (!this.parent.readonly || isNullOrUndefined(args.item)) {\n this.parent.notify(events.toolbarClick, args);\n }\n this.parent.trigger('toolbarClick', args);\n };\n ToolbarRenderer.prototype.dropDownSelected = function (args) {\n this.parent.notify(events.dropDownSelect, args);\n this.onPopupOverlay();\n };\n ToolbarRenderer.prototype.beforeDropDownItemRender = function (args) {\n if (this.parent.readonly || !this.parent.enabled) {\n return;\n }\n this.parent.notify(events.beforeDropDownItemRender, args);\n };\n ToolbarRenderer.prototype.dropDownOpen = function (args) {\n if (args.element.parentElement.getAttribute('id').indexOf('TableCell') > -1 && !isNOU(args.element.parentElement.querySelector('.e-cell-merge')) &&\n (!isNOU(args.element.parentElement.querySelector('.e-cell-horizontal-split')) || !isNOU(args.element.parentElement.querySelector('.e-cell-vertical-split')))) {\n var listEle = args.element.querySelectorAll('li');\n if (this.parent.inputElement.querySelectorAll('.e-cell-select').length === 1) {\n addClass([listEle[0]], 'e-disabled');\n removeClass([listEle[1], listEle[2]], 'e-disabled');\n }\n else if (this.parent.inputElement.querySelectorAll('.e-cell-select').length > 1) {\n removeClass([listEle[0]], 'e-disabled');\n addClass([listEle[1], listEle[2]], 'e-disabled');\n }\n }\n if (Browser.isDevice && !args.element.parentElement.classList.contains(classes.CLS_QUICK_DROPDOWN)) {\n this.popupModal(args.element.parentElement);\n }\n this.parent.notify(events.selectionSave, args);\n };\n ToolbarRenderer.prototype.dropDownClose = function (args) {\n this.removePopupContainer();\n this.parent.notify(events.selectionRestore, args);\n };\n ToolbarRenderer.prototype.removePopupContainer = function () {\n if (Browser.isDevice && !isNullOrUndefined(this.popupContainer)) {\n var popupEle = this.popupContainer.querySelector('.e-dropdown-popup.e-tbar-btn.e-control');\n if (popupEle) {\n this.popupContainer.parentNode.insertBefore(popupEle, this.popupContainer.nextSibling);\n popupEle.style.removeProperty('position');\n removeClass([popupEle], 'e-popup-modal');\n }\n detach(this.popupContainer);\n this.popupContainer = undefined;\n }\n };\n /**\n * renderToolbar method\n *\n * @param {IToolbarOptions} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderToolbar = function (args) {\n this.setPanel(args.target);\n this.renderPanel();\n this.mode = args.overflowMode;\n args.rteToolbarObj.toolbarObj = new Toolbar({\n items: args.items,\n width: '100%',\n overflowMode: args.overflowMode,\n beforeCreate: this.toolbarBeforeCreate.bind(this),\n created: this.toolbarCreated.bind(this),\n clicked: this.toolbarClicked.bind(this),\n enablePersistence: args.enablePersistence,\n enableRtl: args.enableRtl,\n cssClass: args.cssClass\n });\n args.rteToolbarObj.toolbarObj.isStringTemplate = true;\n args.rteToolbarObj.toolbarObj.createElement = this.parent.createElement;\n args.rteToolbarObj.toolbarObj.appendTo(args.target);\n if (this.parent.showTooltip) {\n this.tooltip = new Tooltip({\n target: '#' + this.parent.getID() + '_toolbar_wrapper [title]',\n showTipPointer: true,\n openDelay: 400,\n cssClass: this.parent.cssClass,\n windowCollision: true,\n position: 'BottomCenter'\n });\n this.tooltip.appendTo(args.target);\n }\n };\n /**\n * renderDropDownButton method\n *\n * @param {IDropDownModel} args - specifies the the arguments.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderDropDownButton = function (args) {\n var _this = this;\n var css;\n args.element.classList.add(CLS_DROPDOWN_BTN);\n css = args.cssClass + ' ' + CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN;\n if (this.parent.inlineMode.enable && Browser.isDevice) {\n css = css + ' ' + CLS_INLINE_DROPDOWN;\n }\n // eslint-disable-next-line\n var proxy = this;\n var dropDown = new DropDownButton({\n items: args.items,\n iconCss: args.iconCss,\n cssClass: css,\n content: args.content,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n select: this.dropDownSelected.bind(this),\n beforeOpen: function (args) {\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n args.cancel = true;\n return;\n }\n // eslint-disable-next-line\n for (var index = 0; index < args.element.childNodes.length; index++) {\n var divNode = _this.parent.createElement('div');\n divNode.innerHTML = dropDown.content.trim();\n if (divNode.textContent.trim() !== ''\n && args.element.childNodes[index].textContent.trim() === divNode.textContent.trim()) {\n if (!args.element.childNodes[index].classList.contains('e-active')) {\n addClass([args.element.childNodes[index]], 'e-active');\n }\n }\n else {\n removeClass([args.element.childNodes[index]], 'e-active');\n }\n }\n proxy.parent.notify(events.beforeDropDownOpen, args);\n },\n close: this.dropDownClose.bind(this),\n open: this.dropDownOpen.bind(this),\n beforeItemRender: this.beforeDropDownItemRender.bind(this)\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n dropDown.appendTo(args.element);\n args.element.tabIndex = -1;\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n return dropDown;\n };\n /**\n * renderListDropDown method\n *\n * @param {IDropDownModel} args - specifies the the arguments.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderListDropDown = function (args) {\n // eslint-disable-next-line\n var proxy = this;\n var css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');\n css += (' ' + ((args.itemName === 'NumberFormatList') ? CLS_NUMBERFORMATLIST_TB_BTN : CLS_BULLETFORMATLIST_TB_BTN));\n var content = proxy.parent.createElement('span', { className: CLS_LIST_PRIMARY_CONTENT });\n var inlineEle = proxy.parent.createElement('span', { className: args.cssClass });\n content.appendChild(inlineEle);\n var dropDown = new DropDownButton({\n items: args.items,\n cssClass: css,\n content: args.content,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n select: this.dropDownSelected.bind(this),\n beforeOpen: function (args) {\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n args.cancel = true;\n return;\n }\n var element = (args.event) ? args.event.target : null;\n proxy.currentElement = dropDown.element;\n proxy.currentDropdown = dropDown;\n if (args.event && args.event.type === 'click' && (element.classList.contains(CLS_LIST_PRIMARY_CONTENT)\n || element.parentElement.classList.contains(CLS_LIST_PRIMARY_CONTENT))) {\n args.cancel = true;\n return;\n }\n proxy.parent.notify(events.beforeDropDownOpen, args);\n },\n close: this.dropDownClose.bind(this),\n open: this.dropDownOpen.bind(this),\n beforeItemRender: this.beforeDropDownItemRender.bind(this)\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n dropDown.appendTo(args.element);\n args.element.tabIndex = -1;\n args.element.setAttribute('role', 'button');\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n if (args.element.childElementCount === 1) {\n dropDown.element.insertBefore(content, dropDown.element.querySelector('.e-caret'));\n }\n args.element.tabIndex = -1;\n dropDown.element.removeAttribute('type');\n return dropDown;\n };\n // eslint-disable-next-line\n ToolbarRenderer.prototype.onPopupOverlay = function (args) {\n if (!isNullOrUndefined(this.popupOverlay)) {\n closest(this.popupOverlay, '.e-popup-container').style.display = 'none';\n this.popupOverlay.style.display = 'none';\n removeClass([this.popupOverlay], 'e-popup-overlay');\n }\n };\n ToolbarRenderer.prototype.setIsModel = function (element) {\n if (!closest(element, '.e-popup-container')) {\n this.popupContainer = this.parent.createElement('div', {\n className: 'e-rte-modal-popup e-popup-container e-center'\n });\n element.parentNode.insertBefore(this.popupContainer, element);\n this.popupContainer.appendChild(element);\n this.popupContainer.style.zIndex = element.style.zIndex;\n this.popupContainer.style.display = 'flex';\n element.style.position = 'relative';\n addClass([element], 'e-popup-modal');\n this.popupOverlay = this.parent.createElement('div', { className: 'e-popup-overlay' });\n // eslint-disable-next-line\n this.popupOverlay.style.zIndex = (parseInt(element.style.zIndex, null) - 1).toString();\n this.popupOverlay.style.display = 'block';\n this.popupContainer.appendChild(this.popupOverlay);\n EventHandler.add(this.popupOverlay, 'click touchmove', this.onPopupOverlay, this);\n }\n else {\n element.parentElement.style.display = 'flex';\n this.popupOverlay = element.nextElementSibling;\n this.popupOverlay.style.display = 'block';\n addClass([this.popupOverlay], 'e-popup-overlay');\n }\n };\n ToolbarRenderer.prototype.paletteSelection = function (dropDownArgs, currentElement) {\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n var colorbox = [].slice.call(selectAll('.e-tile', ele.parentElement));\n removeClass(colorbox, 'e-selected');\n var style = currentElement.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n (colorbox.filter(function (colorbox) {\n if (colorbox.style.backgroundColor === style) {\n addClass([colorbox], 'e-selected');\n }\n }));\n };\n /**\n * renderColorPickerDropDown method\n *\n * @param {IColorPickerModel} args - specifies the arguments.\n * @param {string} item - specifies the item.\n * @param {ColorPicker} colorPicker - specifies the colorpicker.\n * @param {string} defaultColor -specifies the defaultColor.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderColorPickerDropDown = function (args, item, colorPicker, defaultColor) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');\n css += (' ' + ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_DROPDOWN : CLS_FONT_COLOR_DROPDOWN));\n css += ' ' + this.parent.cssClass;\n var content = proxy.parent.createElement('span', { className: CLS_COLOR_CONTENT });\n var inlineEle = proxy.parent.createElement('span', { className: args.cssClass });\n var range;\n var initialBackgroundColor = (isNullOrUndefined(defaultColor)) ? proxy.parent.backgroundColor.default : defaultColor;\n inlineEle.style.borderBottomColor = (item === 'backgroundcolor') ?\n initialBackgroundColor : proxy.parent.fontColor.default;\n content.appendChild(inlineEle);\n var dropDown = new DropDownButton({\n target: colorPicker.element.parentElement, cssClass: css,\n enablePersistence: this.parent.enablePersistence, enableRtl: this.parent.enableRtl,\n beforeOpen: function (dropDownArgs) {\n colorPicker.inline = true;\n colorPicker.dataBind();\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n dropDownArgs.cancel = true;\n return;\n }\n var element = (dropDownArgs.event) ? dropDownArgs.event.target : null;\n proxy.currentElement = dropDown.element;\n proxy.currentDropdown = dropDown;\n proxy.paletteSelection(dropDownArgs, proxy.currentElement);\n if (dropDownArgs.event && dropDownArgs.event.type === 'click' && (element.classList.contains(CLS_COLOR_CONTENT)\n || element.parentElement.classList.contains(CLS_COLOR_CONTENT))) {\n dropDownArgs.cancel = true;\n var colorpickerValue = element.classList.contains(CLS_RTE_ELEMENTS) ? element.style.borderBottomColor :\n element.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n proxy.parent.notify(events.selectionRestore, {});\n range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n var parentNode = range.startContainer.parentNode;\n var closestElement = closest(range.startContainer.parentNode, 'table');\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' ||\n (closest(range.startContainer.parentNode, 'td,th')) ||\n (proxy.parent.iframeSettings.enable && !hasClass(parentNode.ownerDocument.querySelector('body'), 'e-lib')))\n && range.collapsed && args.subCommand === 'BackgroundColor' && closest(closestElement, '.' + classes.CLS_RTE)) {\n proxy.parent.notify(events.tableColorPickerChanged, {\n item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, { item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n return;\n }\n else {\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n var inst = getInstance(ele, ColorPicker);\n inst.showButtons = (dropDownArgs.element.querySelector('.e-color-palette')) ? false : true;\n inst.dataBind();\n }\n dropDownArgs.element.onclick = function (args) {\n if (args.target.classList.contains('e-cancel')) {\n dropDown.toggle();\n }\n };\n },\n open: function (dropDownArgs) {\n _this.setColorPickerContentWidth(colorPicker);\n var focusEle;\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n if (dropDownArgs.element.querySelector('.e-color-palette')) {\n focusEle = ele.parentElement.querySelector('.e-palette');\n }\n else {\n focusEle = ele.parentElement.querySelector('e-handler');\n }\n if (focusEle) {\n focusEle.focus();\n }\n if (Browser.isDevice) {\n _this.popupModal(dropDownArgs.element.parentElement);\n }\n _this.pickerRefresh(dropDownArgs);\n },\n beforeClose: function (dropDownArgs) {\n var element = (dropDownArgs.event) ? dropDownArgs.event.target : null;\n if (dropDownArgs.event && dropDownArgs.event.type === 'click' && (element.classList.contains(CLS_COLOR_CONTENT)\n || element.parentElement.classList.contains(CLS_COLOR_CONTENT))) {\n var colorpickerValue = element.classList.contains(CLS_RTE_ELEMENTS) ? element.style.borderBottomColor :\n element.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' ||\n closest(range.startContainer.parentNode, 'td,th')) && range.collapsed) {\n proxy.parent.notify(events.tableColorPickerChanged, { item: {\n command: args.command, subCommand: args.subCommand,\n value: colorpickerValue\n }\n });\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, { item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n return;\n }\n },\n close: function (dropDownArgs) {\n proxy.parent.notify(events.selectionRestore, {});\n var dropElement = closest(dropDownArgs.element.parentElement, '.e-popup-container');\n if (dropElement) {\n dropElement.style.display = 'none';\n dropElement.lastElementChild.style.display = 'none';\n removeClass([dropElement.lastElementChild], 'e-popup-overlay');\n }\n if (Browser.isDevice && !isNullOrUndefined(dropElement)) {\n var popupEle = dropElement.querySelector('.e-dropdown-popup.e-tbar-btn.e-control');\n if (popupEle) {\n dropElement.parentNode.insertBefore(popupEle, dropElement.nextSibling);\n popupEle.style.removeProperty('position');\n removeClass([popupEle], 'e-popup-modal');\n }\n detach(dropElement);\n proxy.popupContainer = undefined;\n }\n }\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n args.element.setAttribute('role', 'button');\n dropDown.appendTo(args.element);\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n dropDown.element.insertBefore(content, dropDown.element.querySelector('.e-caret'));\n args.element.tabIndex = -1;\n dropDown.element.removeAttribute('type');\n dropDown.element.onmousedown = function () {\n proxy.parent.notify(events.selectionSave, {});\n };\n dropDown.element.onkeydown = function () {\n proxy.parent.notify(events.selectionSave, {});\n };\n return dropDown;\n };\n ToolbarRenderer.prototype.pickerRefresh = function (dropDownArgs) {\n if (this.parent.backgroundColor.mode === 'Picker') {\n var popupElem = dropDownArgs.element.parentElement;\n popupElem.style.width = (popupElem.offsetWidth + 5).toString() + 'px';\n getInstance(popupElem, Popup).refreshPosition(popupElem);\n popupElem.style.width = (popupElem.offsetWidth - 5).toString() + 'px';\n }\n };\n ToolbarRenderer.prototype.popupModal = function (element) {\n var popupInst = getInstance(element, Popup);\n popupInst.relateTo = document.body;\n popupInst.position = { X: 0, Y: 0 };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupInst.dataBind();\n this.setIsModel(element);\n };\n ToolbarRenderer.prototype.setColorPickerContentWidth = function (colorPicker) {\n var colorPickerContent = colorPicker.element.nextSibling;\n if (colorPickerContent.style.width === '0px') {\n colorPickerContent.style.width = '';\n var borderWidth = parseInt(getComputedStyle(colorPickerContent).borderBottomWidth, 10);\n colorPickerContent.style.width = formatUnit(colorPickerContent.children[0].offsetWidth\n + borderWidth + borderWidth);\n }\n };\n /**\n * renderColorPicker method\n *\n * @param {IColorPickerModel} args - specifies the arguments\n * @param {string} item - specifies the string values\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderColorPicker = function (args, item) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var value;\n var colorPicker = new ColorPicker({\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n inline: false,\n value: '#fff',\n created: function () {\n var value = (item === 'backgroundcolor') ? proxy.parent.backgroundColor.default : proxy.parent.fontColor.default;\n colorPicker.setProperties({ value: value });\n },\n mode: ((item === 'backgroundcolor') ? proxy.parent.backgroundColor.mode : proxy.parent.fontColor.mode),\n modeSwitcher: ((item === 'backgroundcolor') ? proxy.parent.backgroundColor.modeSwitcher : proxy.parent.fontColor.modeSwitcher),\n beforeTileRender: function (args) {\n args.element.classList.add(CLS_COLOR_PALETTE);\n args.element.classList.add(CLS_CUSTOM_TILE);\n if (!isNullOrUndefined(_this.parent.cssClass)) {\n var allClassName = _this.parent.cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n args.element.classList.add(allClassName[i]);\n }\n }\n }\n if (args.value === '') {\n args.element.classList.add(CLS_NOCOLOR_ITEM);\n }\n },\n change: function (colorPickerArgs) {\n var colorpickerValue = colorPickerArgs.currentValue.rgba;\n colorPickerArgs.item = {\n command: args.command,\n subCommand: args.subCommand,\n value: colorpickerValue\n };\n proxy.parent.notify(events.selectionRestore, {});\n proxy.currentElement.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor = colorpickerValue;\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n var closestElement = closest(range.startContainer.parentNode, 'table');\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' || range.startContainer.nodeName === 'BODY' ||\n closest(range.startContainer.parentNode, 'td,th')) && range.collapsed && args.subCommand === 'BackgroundColor' && closest(closestElement, '.' + classes.CLS_RTE)) {\n proxy.parent.notify(events.tableColorPickerChanged, colorPickerArgs);\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, colorPickerArgs);\n }\n proxy.currentDropdown.toggle();\n },\n beforeModeSwitch: function (args) {\n value = colorPicker.value;\n if (value === '') {\n colorPicker.setProperties({ value: ((args.mode === 'Picker') ? '#008000ff' : '') }, true);\n }\n colorPicker.showButtons = args.mode === 'Palette' ? false : true;\n }\n });\n colorPicker.isStringTemplate = true;\n colorPicker.columns = (item === 'backgroundcolor') ? this.parent.backgroundColor.columns : this.parent.fontColor.columns;\n colorPicker.presetColors = (item === 'backgroundcolor') ? this.parent.backgroundColor.colorCode :\n this.parent.fontColor.colorCode;\n colorPicker.cssClass = ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER) + ' ' + args.cssClass;\n colorPicker.createElement = this.parent.createElement;\n colorPicker.appendTo(document.getElementById(args.target));\n return colorPicker;\n };\n /**\n * The function is used to render Rich Text Editor toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderPanel = function () {\n this.getPanel().classList.add(CLS_TOOLBAR);\n };\n /**\n * Get the toolbar element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n\n */\n ToolbarRenderer.prototype.getPanel = function () {\n return this.toolbarPanel;\n };\n /**\n * Set the toolbar element of RichTextEditor\n *\n * @returns {void}\n * @param {Element} panel - specifies the element.\n * @hidden\n\n */\n ToolbarRenderer.prototype.setPanel = function (panel) {\n this.toolbarPanel = panel;\n };\n return ToolbarRenderer;\n}());\nexport { ToolbarRenderer };\n","import { RenderType } from '../base/enum';\nimport { CLS_HR_SEPARATOR } from '../base/classes';\nimport * as events from '../base/constant';\nimport { getTooltipText, isIDevice, toObjectLowerCase } from '../base/util';\nimport { tools, templateItems, windowKeys } from '../models/items';\nimport { isNullOrUndefined, extend, Browser } from '@syncfusion/ej2-base';\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar BaseToolbar = /** @class */ (function () {\n function BaseToolbar(parent, serviceLocator) {\n this.tools = {};\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = tools;\n }\n }\n BaseToolbar.prototype.addEventListener = function () {\n this.parent.on(events.rtlMode, this.setRtl, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n BaseToolbar.prototype.removeEventListener = function () {\n this.parent.off(events.rtlMode, this.setRtl);\n this.parent.off(events.bindCssClass, this.setCssClass);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n BaseToolbar.prototype.setCssClass = function (e) {\n if (!isNullOrUndefined(this.toolbarObj)) {\n if (isNullOrUndefined(e.oldCssClass)) {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n BaseToolbar.prototype.setRtl = function (args) {\n if (!isNullOrUndefined(this.toolbarObj)) {\n this.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n };\n BaseToolbar.prototype.getClass = function (item) {\n var classes;\n switch (item) {\n case 'fontsize':\n classes = 'e-rte-inline-size-template';\n break;\n case 'fontcolor':\n case 'backgroundcolor':\n classes = 'e-rte-inline-color-template';\n break;\n default:\n classes = 'e-rte-inline-template';\n break;\n }\n return classes;\n };\n BaseToolbar.prototype.getTemplateObject = function (itemStr, container) {\n var tagName;\n switch (itemStr) {\n case 'fontcolor':\n case 'backgroundcolor':\n case 'numberformatlist':\n case 'bulletformatlist':\n tagName = 'span';\n break;\n default:\n tagName = 'button';\n break;\n }\n return {\n command: this.tools[itemStr.toLocaleLowerCase()].command,\n subCommand: this.tools[itemStr.toLocaleLowerCase()].subCommand,\n template: this.parent.createElement(tagName, {\n id: this.parent.getID() + '_' + container\n + '_' + this.tools[itemStr.toLocaleLowerCase()].id\n }).outerHTML,\n cssClass: this.parent.inlineMode.enable ? this.getClass(itemStr) : '',\n tooltipText: getTooltipText(itemStr, this.locator)\n };\n };\n /**\n * getObject method\n *\n * @param {string} item - specifies the string value\n * @param {string} container - specifies the value of string\n * @returns {IToolbarItemModel} - returns the model element\n * @hidden\n\n */\n BaseToolbar.prototype.getObject = function (item, container) {\n var itemStr = item.toLowerCase();\n if (templateItems.indexOf(itemStr) !== -1) {\n return this.getTemplateObject(itemStr, container);\n }\n else {\n switch (itemStr) {\n case '|':\n return { type: 'Separator' };\n case '-':\n return { type: 'Separator', cssClass: CLS_HR_SEPARATOR };\n default:\n if (this.parent.showTooltip) {\n return {\n id: this.parent.getID() + '_' + container + '_' + this.tools[itemStr.toLocaleLowerCase()].id,\n prefixIcon: this.tools[itemStr.toLocaleLowerCase()].icon,\n tooltipText: getTooltipText(itemStr, this.locator),\n command: this.tools[itemStr.toLocaleLowerCase()].command,\n subCommand: this.tools[itemStr.toLocaleLowerCase()].subCommand\n };\n }\n else {\n return {\n id: this.parent.getID() + '_' + container + '_' + this.tools[itemStr.toLocaleLowerCase()].id,\n prefixIcon: this.tools[itemStr.toLocaleLowerCase()].icon,\n command: this.tools[itemStr.toLocaleLowerCase()].command,\n subCommand: this.tools[itemStr.toLocaleLowerCase()].subCommand\n };\n }\n }\n }\n };\n /**\n * @param {string} tbItems - specifies the string value\n * @param {string} container - specifies the container value\n * @returns {ItemModel} - retunrs the model element\n * @hidden\n\n */\n BaseToolbar.prototype.getItems = function (tbItems, container) {\n var _this = this;\n if (this.parent.toolbarSettings.items.length < 1) {\n return [];\n }\n var items = [];\n var _loop_1 = function (item) {\n switch (typeof item) {\n case 'string':\n items.push(this_1.getObject(item, container));\n break;\n default:\n if (!isNullOrUndefined(item.click)) {\n var proxy_1 = item;\n var callback_1 = proxy_1.click;\n proxy_1.click = function () {\n if (proxy_1.undo && _this.parent.formatter.getUndoRedoStack().length === 0) {\n _this.parent.formatter.saveData();\n }\n callback_1.call(_this);\n var currentContentElem = _this.parent.createElement('div');\n currentContentElem.appendChild(_this.parent.formatter.getUndoRedoStack()[_this.parent.formatter.getUndoRedoStack().length - 1].text);\n if (currentContentElem.innerHTML.trim() === _this.parent.inputElement.innerHTML.trim()) {\n return;\n }\n if (proxy_1.undo) {\n _this.parent.formatter.saveData();\n }\n };\n }\n items.push(item);\n }\n };\n var this_1 = this;\n for (var _i = 0, tbItems_1 = tbItems; _i < tbItems_1.length; _i++) {\n var item = tbItems_1[_i];\n _loop_1(item);\n }\n for (var num = 0; num < items.length; num++) {\n var tooltipText = items[num].tooltipText;\n var shortCutKey = void 0;\n if (windowKeys[\"\" + tooltipText]) {\n shortCutKey = Browser.isDevice && isIDevice() ? windowKeys[\"\" + tooltipText].replace('Ctrl', 'Cmd') : windowKeys[\"\" + tooltipText];\n }\n else {\n shortCutKey = tooltipText;\n }\n if (shortCutKey) {\n items[num].tooltipText = (tooltipText !== shortCutKey) ? tooltipText + ' (' + shortCutKey + ')' : tooltipText;\n }\n }\n return items;\n };\n BaseToolbar.prototype.getToolbarOptions = function (args) {\n return {\n target: args.target,\n rteToolbarObj: this,\n items: this.getItems(args.items, args.container),\n overflowMode: args.mode,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n cssClass: args.cssClass\n };\n };\n /**\n * render method\n *\n * @param {IToolbarRenderOptions} args - specifies the toolbar options\n * @returns {void}\n * @hidden\n\n */\n BaseToolbar.prototype.render = function (args) {\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n this.toolbarRenderer.renderToolbar(this.getToolbarOptions(args));\n };\n return BaseToolbar;\n}());\nexport { BaseToolbar };\n","import { addClass, isNullOrUndefined, removeClass, select, closest } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\nimport { getIndex } from '../base/util';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { getDropDownValue, getFormattedFontSize, getTooltipText } from '../base/util';\nimport * as model from '../models/items';\nimport { dispatchEvent } from '../base/util';\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar DropDownButtons = /** @class */ (function () {\n function DropDownButtons(parent, serviceLocator) {\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n DropDownButtons.prototype.initializeInstance = function () {\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n };\n DropDownButtons.prototype.beforeRender = function (args) {\n var item = args.item;\n if (item.cssClass) {\n addClass([args.element], item.cssClass);\n }\n if (item.command === 'Alignments' || item.subCommand === 'JustifyLeft'\n || item.subCommand === 'JustifyRight' || item.subCommand === 'JustifyCenter') {\n args.element.setAttribute('title', getTooltipText(item.subCommand.toLocaleLowerCase(), this.locator));\n }\n };\n DropDownButtons.prototype.dropdownContent = function (width, type, content) {\n return ('' +\n '' + content + '');\n };\n /**\n * renderDropDowns method\n *\n * @param {IDropDownRenderArgs} args - specifies the arguments\n * @returns {void}\n * @hidden\n\n */\n DropDownButtons.prototype.renderDropDowns = function (args) {\n var _this = this;\n this.initializeInstance();\n var type = args.containerType;\n var tbElement = args.container;\n model.templateItems.forEach(function (item) {\n var targetElement = undefined;\n if (getIndex(item, args.items) !== -1) {\n switch (item) {\n case 'numberformatlist': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_NumberFormatList', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatOLItem = _this.parent.numberFormatList.types.slice();\n formatOLItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Lists', enumerable: true }, subCommand: { value: 'NumberFormatList', enumerable: true }\n });\n });\n _this.numberFormatListDropDown = _this.toolbarRenderer.renderListDropDown({\n cssClass: 'e-order-list' + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS,\n itemName: 'NumberFormatList', items: formatOLItem, element: targetElement\n });\n break;\n }\n case 'bulletformatlist': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_BulletFormatList', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatULItem = _this.parent.bulletFormatList.types.slice();\n formatULItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Lists', enumerable: true }, subCommand: { value: 'BulletFormatList', enumerable: true }\n });\n });\n _this.bulletFormatListDropDown = _this.toolbarRenderer.renderListDropDown({\n cssClass: 'e-unorder-list' + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS,\n itemName: 'BulletFormatList', items: formatULItem, element: targetElement\n });\n break;\n }\n case 'formats': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_Formats', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatItem = _this.parent.format.types.slice();\n formatItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Formats', enumerable: true }, subCommand: { value: item.value, enumerable: true }\n });\n });\n var formatContent = isNullOrUndefined(_this.parent.format.default) ? formatItem[0].text :\n _this.parent.format.default;\n _this.formatDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: ((type === 'quick') ? 'e-formats e-icons' : ''),\n content: _this.dropdownContent(_this.parent.format.width, type, ((type === 'quick') ? '' : getDropDownValue(formatItem, formatContent, 'text', 'text'))),\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_FORMATS_TB_BTN,\n itemName: 'Formats', items: formatItem, element: targetElement\n });\n break;\n }\n case 'fontname': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_FontName', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var fontItem = _this.parent.fontFamily.items.slice();\n fontItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontName', enumerable: true }\n });\n });\n var fontNameContent = isNullOrUndefined(_this.parent.fontFamily.default) ? fontItem[0].text :\n _this.parent.fontFamily.default;\n _this.fontNameDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: ((type === 'quick') ? 'e-font-name e-icons' : ''),\n content: _this.dropdownContent(_this.parent.fontFamily.width, type, ((type === 'quick') ? '' : getDropDownValue(fontItem, fontNameContent, 'text', 'text'))),\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_FONT_NAME_TB_BTN,\n itemName: 'FontName', items: fontItem, element: targetElement\n });\n if (!isNullOrUndefined(_this.parent.fontFamily.default)) {\n _this.getEditNode().style.fontFamily = _this.parent.fontFamily.default;\n }\n break;\n }\n case 'fontsize': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_FontSize', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var fontsize = _this.parent.fontSize.items.slice();\n fontsize.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontSize', enumerable: true }\n });\n });\n var fontSizeContent = isNullOrUndefined(_this.parent.fontSize.default) ? fontsize[1].text :\n _this.parent.fontSize.default;\n _this.fontSizeDropDown = _this.toolbarRenderer.renderDropDownButton({\n content: _this.dropdownContent(_this.parent.fontSize.width, type, getFormattedFontSize(getDropDownValue(fontsize, fontSizeContent.replace(/\\s/g, ''), 'value', 'text'))),\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_FONT_SIZE_TB_BTN,\n itemName: 'FontSize', items: fontsize, element: targetElement\n });\n if (!isNullOrUndefined(_this.parent.fontSize.default)) {\n _this.getEditNode().style.fontSize = _this.parent.fontSize.default;\n }\n break;\n }\n case 'alignments':\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_Alignments', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n _this.alignDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-justify-left e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_ALIGN_TB_BTN,\n itemName: 'Alignments', items: model.alignmentItems, element: targetElement\n });\n break;\n case 'align':\n case 'videoalign':\n _this.renderAlignmentDropDown(type, tbElement, targetElement, item);\n break;\n case 'display':\n case 'audiolayoutoption':\n case 'videolayoutoption':\n _this.renderDisplayDropDown(type, tbElement, targetElement, item);\n break;\n case 'tablerows':\n _this.rowDropDown(type, tbElement, targetElement);\n break;\n case 'tablecolumns':\n _this.columnDropDown(type, tbElement, targetElement);\n break;\n case 'tablecell':\n _this.cellDropDown(type, tbElement, targetElement);\n break;\n case 'tablecellverticalalign':\n _this.verticalAlignDropDown(type, tbElement, targetElement);\n break;\n case 'styles':\n _this.tableStylesDropDown(type, tbElement, targetElement);\n break;\n }\n }\n });\n if (this.parent.inlineMode.enable) {\n this.setCssClass({ cssClass: this.parent.cssClass });\n }\n };\n DropDownButtons.prototype.getUpdateItems = function (items, value) {\n var dropDownItems = items.slice();\n dropDownItems.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: (value === 'Format' ? 'Formats' : 'Font'), enumerable: true },\n subCommand: { value: (value === 'Format' ? item.value : value), enumerable: true }\n });\n });\n return dropDownItems;\n };\n DropDownButtons.prototype.onPropertyChanged = function (model) {\n var newProp = model.newProp;\n var type;\n var content;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'fontFamily':\n if (this.fontNameDropDown) {\n for (var _b = 0, _c = Object.keys(newProp.fontFamily); _b < _c.length; _b++) {\n var fontFamily = _c[_b];\n switch (fontFamily) {\n case 'default':\n case 'width': {\n var fontItems = this.fontNameDropDown.items;\n type = !isNullOrUndefined(closest(this.fontNameDropDown.element, '.' + classes.CLS_QUICK_TB)) ?\n 'quick' : 'toolbar';\n var fontNameContent = isNullOrUndefined(this.parent.fontFamily.default) ? fontItems[0].text :\n this.parent.fontFamily.default;\n content = this.dropdownContent(this.parent.fontFamily.width, type, ((type === 'quick') ? '' : getDropDownValue(fontItems, fontNameContent, 'text', 'text')));\n this.fontNameDropDown.setProperties({ content: content });\n if (!isNullOrUndefined(this.parent.fontFamily.default)) {\n this.getEditNode().style.fontFamily = this.parent.fontFamily.default;\n }\n else {\n this.getEditNode().style.removeProperty('font-family');\n }\n break;\n }\n case 'items':\n this.fontNameDropDown.setProperties({\n items: this.getUpdateItems(newProp.fontFamily.items, 'FontName')\n });\n break;\n }\n }\n }\n break;\n case 'fontSize':\n if (this.fontSizeDropDown) {\n for (var _d = 0, _e = Object.keys(newProp.fontSize); _d < _e.length; _d++) {\n var fontSize = _e[_d];\n switch (fontSize) {\n case 'default':\n case 'width': {\n var fontsize = this.fontSizeDropDown.items;\n type = !isNullOrUndefined(closest(this.fontSizeDropDown.element, '.' + classes.CLS_QUICK_TB)) ? 'quick' : 'toolbar';\n var fontSizeContent = isNullOrUndefined(this.parent.fontSize.default) ? fontsize[1].text :\n this.parent.fontSize.default;\n content = this.dropdownContent(this.parent.fontSize.width, type, getFormattedFontSize(getDropDownValue(fontsize, fontSizeContent.replace(/\\s/g, ''), 'value', 'text')));\n this.fontSizeDropDown.setProperties({ content: content });\n if (!isNullOrUndefined(this.parent.fontSize.default)) {\n this.getEditNode().style.fontSize = this.parent.fontSize.default;\n }\n else {\n this.getEditNode().style.removeProperty('font-size');\n }\n break;\n }\n case 'items':\n this.fontSizeDropDown.setProperties({\n items: this.getUpdateItems(newProp.fontSize.items, 'FontSize')\n });\n break;\n }\n }\n }\n break;\n case 'format':\n if (this.formatDropDown) {\n for (var _f = 0, _g = Object.keys(newProp.format); _f < _g.length; _f++) {\n var format = _g[_f];\n switch (format) {\n case 'default':\n case 'width': {\n var formatItems = this.formatDropDown.items;\n type = !isNullOrUndefined(closest(this.formatDropDown.element, '.' + classes.CLS_QUICK_TB)) ? 'quick' : 'toolbar';\n var formatContent = isNullOrUndefined(this.parent.format.default) ? formatItems[0].text :\n this.parent.format.default;\n content = this.dropdownContent(this.parent.format.width, type, ((type === 'quick') ? '' : getDropDownValue(formatItems, formatContent, 'text', 'text')));\n this.formatDropDown.setProperties({ content: content });\n break;\n }\n case 'types':\n this.formatDropDown.setProperties({\n items: this.getUpdateItems(newProp.format.types, 'Format')\n });\n break;\n }\n }\n }\n break;\n }\n }\n };\n DropDownButtons.prototype.getEditNode = function () {\n return this.parent.contentModule.getEditPanel();\n };\n DropDownButtons.prototype.rowDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableRows', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableRowsDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-rows e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableRows',\n items: model.tableRowsItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.columnDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableColumns', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableColumnsDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-columns e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableColumns',\n items: model.tableColumnsItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.cellDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableCell', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableRowsDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-cell e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableCell',\n items: model.tableCellItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.verticalAlignDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableCellVerticalAlign', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableCellVerticalAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-cell-ver-align e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableCellVerticalAlign',\n items: model.TableCellVerticalAlignItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.renderDisplayDropDown = function (type, tbElement, targetElement, item) {\n targetElement = select('#' + this.parent.getID() + '_' + type + (item === 'display' ? '_Display' : item === 'videolayoutoption' ? '_VideoLayoutOption' : '_AudioLayoutOption'), tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.displayDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: item === 'display' ? 'e-display e-icons' : item === 'videolayoutoption' ? 'e-video-display e-icons' : 'e-audio-display e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: item === 'display' ? 'Display' : item === 'videolayoutoption' ? 'VideoLayoutOption' : 'AudioLayoutOption',\n items: item === 'display' ? model.imageDisplayItems : item === 'videolayoutoption' ? model.videoLayoutOptionItems : model.audioLayoutOptionItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.renderAlignmentDropDown = function (type, tbElement, targetElement, item) {\n targetElement = select('#' + this.parent.getID() + '_' + type + (item === 'align' ? '_Align' : '_VideoAlign'), tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.imageAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-justify-left e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ICONS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: item === 'align' ? 'Align' : 'VideoAlign',\n items: item === 'align' ? model.imageAlignItems : model.videoAlignItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.tableStylesDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_Styles', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.imageAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-style e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ICONS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'Styles',\n items: this.parent.tableSettings.styles,\n element: targetElement\n });\n };\n DropDownButtons.prototype.removeDropDownClasses = function (target) {\n removeClass([target], [\n classes.CLS_DROPDOWN_BTN,\n classes.CLS_DROPDOWN_POPUP,\n classes.CLS_DROPDOWN_ICONS,\n classes.CLS_DROPDOWN_ITEMS\n ]);\n };\n /**\n * destroyDropDowns method\n *\n * @returns {void}\n * @hidden\n\n */\n DropDownButtons.prototype.destroyDropDowns = function () {\n if (this.formatDropDown) {\n this.removeDropDownClasses(this.formatDropDown.element);\n this.formatDropDown.destroy();\n }\n if (this.fontNameDropDown) {\n this.removeDropDownClasses(this.fontNameDropDown.element);\n this.fontNameDropDown.destroy();\n }\n if (this.fontSizeDropDown) {\n this.removeDropDownClasses(this.fontSizeDropDown.element);\n this.fontSizeDropDown.destroy();\n }\n if (this.alignDropDown) {\n this.removeDropDownClasses(this.alignDropDown.element);\n this.alignDropDown.destroy();\n }\n if (this.imageAlignDropDown) {\n this.removeDropDownClasses(this.imageAlignDropDown.element);\n this.imageAlignDropDown.destroy();\n }\n if (this.displayDropDown) {\n this.removeDropDownClasses(this.displayDropDown.element);\n this.displayDropDown.destroy();\n }\n if (this.tableRowsDropDown) {\n this.removeDropDownClasses(this.tableRowsDropDown.element);\n this.tableRowsDropDown.destroy();\n }\n if (this.tableColumnsDropDown) {\n this.removeDropDownClasses(this.tableColumnsDropDown.element);\n this.tableColumnsDropDown.destroy();\n }\n if (this.tableCellVerticalAlignDropDown) {\n this.removeDropDownClasses(this.tableCellVerticalAlignDropDown.element);\n this.tableCellVerticalAlignDropDown.destroy();\n }\n if (this.numberFormatListDropDown) {\n this.removeDropDownClasses(this.numberFormatListDropDown.element);\n this.numberFormatListDropDown.destroy();\n }\n if (this.bulletFormatListDropDown) {\n this.removeDropDownClasses(this.bulletFormatListDropDown.element);\n this.bulletFormatListDropDown.destroy();\n }\n };\n DropDownButtons.prototype.setRtl = function (args) {\n if (this.formatDropDown) {\n this.formatDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.fontNameDropDown) {\n this.fontNameDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.fontSizeDropDown) {\n this.fontSizeDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.alignDropDown) {\n this.alignDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.imageAlignDropDown) {\n this.imageAlignDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.displayDropDown) {\n this.displayDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.numberFormatListDropDown) {\n this.numberFormatListDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.bulletFormatListDropDown) {\n this.bulletFormatListDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n };\n DropDownButtons.prototype.updateCss = function (dropDownObj, e) {\n if (dropDownObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n DropDownButtons.prototype.setCssClass = function (e) {\n var dropDownObj = [\n this.formatDropDown, this.fontNameDropDown, this.fontSizeDropDown, this.alignDropDown, this.imageAlignDropDown,\n this.displayDropDown, this.numberFormatListDropDown, this.bulletFormatListDropDown, this.tableRowsDropDown,\n this.tableColumnsDropDown, this.tableCellVerticalAlignDropDown\n ];\n for (var i = 0; i < dropDownObj.length; i++) {\n this.updateCss(dropDownObj[i], e);\n }\n };\n DropDownButtons.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.beforeDropDownItemRender, this.beforeRender, this);\n this.parent.on(events.iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(events.rtlMode, this.setRtl, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n };\n DropDownButtons.prototype.onIframeMouseDown = function () {\n dispatchEvent(document, 'mousedown');\n };\n DropDownButtons.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(events.rtlMode, this.setRtl);\n this.parent.off(events.beforeDropDownItemRender, this.beforeRender);\n this.parent.off(events.destroy, this.removeEventListener);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.bindCssClass, this.setCssClass);\n };\n return DropDownButtons;\n}());\nexport { DropDownButtons };\n","import { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { ServiceLocator } from '../services/service-locator';\nimport { RendererFactory } from '../services/renderer-factory';\n/**\n * `ToolbarAction` module is used to toolbar click action\n */\nvar ToolbarAction = /** @class */ (function () {\n function ToolbarAction(parent) {\n this.parent = parent;\n this.addEventListener();\n this.serviceLocator = new ServiceLocator;\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n }\n ToolbarAction.prototype.addEventListener = function () {\n this.parent.on(events.toolbarClick, this.toolbarClick, this);\n this.parent.on(events.dropDownSelect, this.dropDownSelect, this);\n this.parent.on(events.colorPickerChanged, this.renderSelection, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n ToolbarAction.prototype.toolbarClick = function (args) {\n if (isNOU(args.item)) {\n return;\n }\n if (!isNOU(args.item.controlParent)) {\n // eslint-disable-next-line\n var activeEle = args.item.controlParent\n .activeEle;\n if (activeEle) {\n activeEle.tabIndex = -1;\n }\n }\n if (args.item.command === 'NumberFormatList' || args.item.command === 'BulletFormatList') {\n if (args.originalEvent.target.classList.contains('e-order-list') || args.originalEvent.target.classList.contains('e-unorder-list')) {\n args.item.command = 'Lists';\n args.item.subCommand = args.item.subCommand === 'NumberFormatList' ? 'OL' : 'UL';\n }\n }\n if (args.item.command === 'Lists') {\n if (args.originalEvent.target.classList.contains('e-caret') &&\n (args.originalEvent.target.parentElement.classList.contains('e-rte-bulletformatlist-dropdown') || args.originalEvent.target.parentElement.classList.contains('e-rte-numberformatlist-dropdown'))) {\n args.item.command = args.item.subCommand = null;\n }\n }\n this.parent.notify(events.htmlToolbarClick, args);\n this.parent.notify(events.markdownToolbarClick, args);\n };\n ToolbarAction.prototype.dropDownSelect = function (e) {\n this.parent.notify(events.selectionRestore, {});\n if (!(document.body.contains(document.body.querySelector('.e-rte-quick-toolbar'))\n && e.item && (e.item.command === 'Images' || e.item.command === 'Audios' || e.item.command === 'Videos' ||\n e.item.command === 'VideoLayoutOption' || e.item.command === 'Display' || e.item.command === 'Table'))) {\n var value = e.item.controlParent && this.parent.quickToolbarModule && this.parent.quickToolbarModule.tableQTBar\n && this.parent.quickToolbarModule.tableQTBar.element.contains(e.item.controlParent.element) ? 'Table' : null;\n if (e.item.command === 'Lists') {\n var listItem = { listStyle: e.item.value, listImage: e.item.listImage, type: e.item.subCommand };\n this.parent.formatter.process(this.parent, e, e.originalEvent, listItem);\n }\n else {\n this.parent.formatter.process(this.parent, e, e.originalEvent, value);\n }\n }\n this.parent.notify(events.selectionSave, {});\n };\n ToolbarAction.prototype.renderSelection = function (args) {\n this.parent.notify(events.selectionRestore, {});\n this.parent.formatter.process(this.parent, args, args.originalEvent, null);\n this.parent.notify(events.selectionSave, {});\n };\n ToolbarAction.prototype.removeEventListener = function () {\n this.parent.off(events.toolbarClick, this.toolbarClick);\n this.parent.off(events.dropDownSelect, this.dropDownSelect);\n this.parent.off(events.colorPickerChanged, this.renderSelection);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n return ToolbarAction;\n}());\nexport { ToolbarAction };\n","import { addClass, Browser, EventHandler, detach, removeClass, select, selectAll, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { RenderType, ToolbarType } from '../base/enum';\nimport { setToolbarStatus, updateUndoRedoStatus, getTBarItemsIndex, getCollection, toObjectLowerCase, isIDevice, getTooltipText } from '../base/util';\nimport { updateDropDownFontFormatLocale } from '../base/util';\nimport * as model from '../models/items';\nimport { ToolbarRenderer } from '../renderer/toolbar-renderer';\nimport { BaseToolbar } from './base-toolbar';\nimport { DropDownButtons } from './dropdown-buttons';\nimport { ToolbarAction } from './toolbar-action';\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.parent = parent;\n this.isToolbar = false;\n this.locator = serviceLocator;\n this.isTransformChild = false;\n this.renderFactory = this.locator.getService('rendererFactory');\n model.updateDropDownLocale(this.parent);\n updateDropDownFontFormatLocale(this.parent);\n this.renderFactory.addRenderer(RenderType.Toolbar, new ToolbarRenderer(this.parent));\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n this.baseToolbar = new BaseToolbar(this.parent, this.locator);\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, model.tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = model.tools;\n }\n }\n Toolbar.prototype.initializeInstance = function () {\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n this.editableElement = this.contentRenderer.getEditPanel();\n this.editPanel = this.contentRenderer.getPanel();\n };\n Toolbar.prototype.toolbarBindEvent = function () {\n if (!this.parent.inlineMode.enable) {\n this.keyBoardModule = new KeyboardEvents(this.getToolbarElement(), {\n keyAction: this.toolBarKeyDown.bind(this), keyConfigs: this.parent.formatter.keyConfig, eventName: 'keydown'\n });\n }\n };\n Toolbar.prototype.toolBarKeyDown = function (e) {\n switch (e.action) {\n case 'escape':\n this.parent.contentModule.getEditPanel().focus();\n break;\n }\n };\n Toolbar.prototype.createToolbarElement = function () {\n this.tbElement = this.parent.createElement('div', { id: this.parent.getID() + '_toolbar' });\n if (!Browser.isDevice && this.parent.inlineMode.enable && isIDevice()) {\n return;\n }\n else {\n if (this.parent.toolbarSettings.enableFloating && !this.parent.inlineMode.enable) {\n this.tbWrapper = this.parent.createElement('div', {\n id: this.parent.getID() + '_toolbar_wrapper',\n innerHTML: this.tbElement.outerHTML,\n className: classes.CLS_TB_WRAP\n });\n this.tbElement = this.tbWrapper.firstElementChild;\n this.parent.element.insertBefore(this.tbWrapper, this.editPanel);\n }\n else {\n this.parent.element.insertBefore(this.tbElement, this.editPanel);\n }\n }\n };\n Toolbar.prototype.getToolbarMode = function () {\n var tbMode;\n switch (this.parent.toolbarSettings.type) {\n case ToolbarType.Expand:\n tbMode = 'Extended';\n break;\n case ToolbarType.Scrollable:\n tbMode = 'Scrollable';\n break;\n default:\n tbMode = 'MultiRow';\n }\n if (isIDevice() && this.parent.toolbarSettings.type === ToolbarType.Expand) {\n tbMode = ToolbarType.Scrollable;\n }\n return tbMode;\n };\n Toolbar.prototype.checkToolbarResponsive = function (ele) {\n if (!Browser.isDevice || isIDevice()) {\n return false;\n }\n var tBarMode;\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n tBarMode = ToolbarType.MultiRow;\n }\n else {\n tBarMode = this.parent.toolbarSettings.type;\n }\n this.baseToolbar.render({\n container: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items,\n mode: tBarMode,\n target: ele,\n cssClass: this.parent.cssClass\n });\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n addClass([ele], ['e-rte-tb-mobile']);\n if (this.parent.inlineMode.enable) {\n this.addFixedTBarClass();\n }\n else {\n addClass([ele], [classes.CLS_TB_STATIC]);\n }\n }\n this.wireEvents();\n this.dropDownModule.renderDropDowns({\n container: ele,\n containerType: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items\n });\n this.parent.notify(events.renderColorPicker, {\n container: this.tbElement,\n containerType: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items\n });\n return true;\n };\n Toolbar.prototype.checkIsTransformChild = function () {\n this.isTransformChild = false;\n var transformElements = selectAll('[style*=\"transform\"]', document);\n for (var i = 0; i < transformElements.length; i++) {\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(transformElements[i].contains) && transformElements[i].contains(this.parent.element)) {\n this.isTransformChild = true;\n break;\n }\n }\n };\n Toolbar.prototype.toggleFloatClass = function (e) {\n var topValue;\n var isBody = false;\n var isFloat = false;\n var scrollParent;\n var floatOffset = this.parent.floatingToolbarOffset;\n if (e && this.parent.iframeSettings.enable && this.parent.inputElement.ownerDocument === e.target) {\n scrollParent = e.target.body;\n }\n else if (e && e.target !== document) {\n scrollParent = e.target;\n }\n else {\n isBody = true;\n scrollParent = document.body;\n }\n var tbHeight = this.getToolbarHeight() + this.getExpandTBarPopHeight();\n if (this.isTransformChild) {\n topValue = 0;\n var scrollParentRelativeTop = 0;\n var trgHeight = this.parent.element.offsetHeight;\n if (isBody) {\n var bodyStyle = window.getComputedStyle(scrollParent);\n scrollParentRelativeTop = parseFloat(bodyStyle.marginTop.split('px')[0]) + parseFloat(bodyStyle.paddingTop.split('px')[0]);\n }\n var targetTop = this.parent.element.getBoundingClientRect().top;\n var scrollParentYOffset = (Browser.isMSPointer && isBody) ? window.pageYOffset : scrollParent.parentElement.scrollTop;\n var scrollParentRect = scrollParent.getBoundingClientRect();\n var scrollParentTop = (!isBody) ? scrollParentRect.top : (scrollParentRect.top + scrollParentYOffset);\n var outOfRange = ((targetTop - ((!isBody) ? scrollParentTop : 0))\n + trgHeight > tbHeight + floatOffset) ? false : true;\n if (targetTop > (scrollParentTop + floatOffset) || targetTop < -trgHeight || ((targetTop < 0) ? outOfRange : false)) {\n isFloat = false;\n removeClass([this.tbElement], [classes.CLS_TB_ABS_FLOAT]);\n }\n else if (targetTop < (scrollParentTop + floatOffset)) {\n if (targetTop < 0) {\n topValue = (-targetTop) + scrollParentTop;\n }\n else {\n topValue = scrollParentTop - targetTop;\n }\n topValue = (isBody) ? topValue - scrollParentRelativeTop : topValue;\n addClass([this.tbElement], [classes.CLS_TB_ABS_FLOAT]);\n isFloat = true;\n }\n }\n else {\n var parent_1 = this.parent.element.getBoundingClientRect();\n if (window.innerHeight < parent_1.top) {\n return;\n }\n topValue = (e && e.target !== document) ? scrollParent.getBoundingClientRect().top : 0;\n if ((parent_1.bottom < (floatOffset + tbHeight + topValue)) || parent_1.bottom < 0 || parent_1.top > floatOffset + topValue) {\n isFloat = false;\n }\n else if (parent_1.top < floatOffset || parent_1.top < floatOffset + topValue) {\n isFloat = true;\n }\n }\n if (!isFloat) {\n removeClass([this.tbElement], [classes.CLS_TB_FLOAT]);\n setStyleAttribute(this.tbElement, { top: 0 + 'px', width: '100%' });\n }\n else {\n addClass([this.tbElement], [classes.CLS_TB_FLOAT]);\n setStyleAttribute(this.tbElement, { width: this.parent.element.offsetWidth + 'px', top: (floatOffset + topValue) + 'px' });\n }\n };\n Toolbar.prototype.renderToolbar = function () {\n this.initializeInstance();\n this.createToolbarElement();\n if (this.checkToolbarResponsive(this.tbElement)) {\n return;\n }\n if (this.parent.inlineMode.enable) {\n this.parent.notify(events.renderInlineToolbar, {});\n }\n else {\n this.baseToolbar.render({\n container: 'toolbar',\n items: this.parent.toolbarSettings.items,\n mode: this.getToolbarMode(),\n target: this.tbElement,\n cssClass: this.parent.cssClass\n });\n if (!this.parent.inlineMode.enable) {\n if (this.parent.toolbarSettings.enableFloating) {\n this.checkIsTransformChild();\n this.toggleFloatClass();\n }\n addClass([this.parent.element], [classes.CLS_RTE_TB_ENABLED]);\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n addClass([this.parent.element], [classes.CLS_RTE_EXPAND_TB]);\n }\n }\n }\n this.wireEvents();\n if (this.parent.inlineMode.enable && !isIDevice()) {\n this.addFixedTBarClass();\n }\n if (!this.parent.inlineMode.enable) {\n this.dropDownModule.renderDropDowns({\n container: this.tbElement,\n containerType: 'toolbar',\n items: this.parent.toolbarSettings.items\n });\n this.parent.notify(events.renderColorPicker, {\n container: this.tbElement,\n containerType: 'toolbar',\n items: this.parent.toolbarSettings.items\n });\n this.refreshToolbarOverflow();\n }\n var divEle = this.parent.element.querySelector('.e-rte-srctextarea');\n var iframeEle = this.parent.element.querySelector('.e-source-content');\n if ((!this.parent.iframeSettings.enable && (!isNOU(divEle) && divEle.style.display === 'block')) ||\n (this.parent.iframeSettings.enable && (!isNOU(iframeEle) && iframeEle.style.display === 'block'))) {\n this.parent.notify(events.updateToolbarItem, {\n targetItem: 'SourceCode', updateItem: 'Preview',\n baseToolbar: this.parent.getBaseToolbarObject()\n });\n this.parent.disableToolbarItem(this.parent.toolbarSettings.items);\n }\n };\n /**\n * addFixedTBarClass method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.addFixedTBarClass = function () {\n addClass([this.tbElement], [classes.CLS_TB_FIXED]);\n };\n /**\n * removeFixedTBarClass method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.removeFixedTBarClass = function () {\n removeClass([this.tbElement], [classes.CLS_TB_FIXED]);\n };\n Toolbar.prototype.showFixedTBar = function () {\n addClass([this.tbElement], [classes.CLS_SHOW]);\n if (Browser.isIos) {\n addClass([this.tbElement], [classes.CLS_TB_IOS_FIX]);\n }\n };\n Toolbar.prototype.hideFixedTBar = function () {\n // eslint-disable-next-line\n (!this.isToolbar) ? removeClass([this.tbElement], [classes.CLS_SHOW, classes.CLS_TB_IOS_FIX]) : this.isToolbar = false;\n };\n /**\n * updateItem method\n *\n * @param {IUpdateItemsModel} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.updateItem = function (args) {\n var item = this.tools[args.updateItem.toLocaleLowerCase()];\n if (this.parent.locale !== 'en-US') {\n item.tooltip = getTooltipText(args.updateItem.toLocaleLowerCase(), this.locator);\n }\n var trgItem = this.tools[args.targetItem.toLocaleLowerCase()];\n var index = getTBarItemsIndex(getCollection(trgItem.subCommand), args.baseToolbar.toolbarObj.items)[0];\n if (!isNOU(index)) {\n var prefixId = this.parent.inlineMode.enable ? '_quick_' : '_toolbar_';\n args.baseToolbar.toolbarObj.items[index].id = this.parent.getID() + prefixId + item.id;\n args.baseToolbar.toolbarObj.items[index].prefixIcon = item.icon;\n args.baseToolbar.toolbarObj.items[index].tooltipText = item.tooltip;\n args.baseToolbar.toolbarObj.items[index].subCommand = item.subCommand;\n args.baseToolbar.toolbarObj.dataBind();\n args.baseToolbar.toolbarObj.refreshOverflow();\n }\n else {\n this.addTBarItem(args, 0);\n }\n };\n Toolbar.prototype.updateToolbarStatus = function (args) {\n if (!this.tbElement || (this.parent.inlineMode.enable && (isIDevice() || !Browser.isDevice))) {\n return;\n }\n var options = {\n args: args,\n dropDownModule: this.dropDownModule,\n parent: this.parent,\n tbElements: selectAll('.' + classes.CLS_TB_ITEM, this.tbElement),\n tbItems: this.baseToolbar.toolbarObj.items\n };\n setToolbarStatus(options, (this.parent.inlineMode.enable ? true : false), this.parent);\n };\n Toolbar.prototype.fullScreen = function (e) {\n this.parent.fullScreenModule.showFullScreen(e);\n };\n Toolbar.prototype.hideScreen = function (e) {\n this.parent.fullScreenModule.hideFullScreen(e);\n };\n /**\n * getBaseToolbar method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getBaseToolbar = function () {\n return this.baseToolbar;\n };\n /**\n * addTBarItem method\n *\n * @param {IUpdateItemsModel} args - specifies the arguments.\n * @param {number} index - specifies the index value.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.addTBarItem = function (args, index) {\n args.baseToolbar.toolbarObj.addItems([args.baseToolbar.getObject(args.updateItem, 'toolbar')], index);\n };\n /**\n * enableTBarItems method\n *\n * @param {BaseToolbar} baseToolbar - specifies the toolbar.\n * @param {string} items - specifies the string value.\n * @param {boolean} isEnable - specifies the boolean value.\n * @param {boolean} muteToolbarUpdate - specifies the toolbar.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.enableTBarItems = function (baseToolbar, items, isEnable, muteToolbarUpdate) {\n var trgItems = getTBarItemsIndex(getCollection(items), baseToolbar.toolbarObj.items);\n this.tbItems = selectAll('.' + classes.CLS_TB_ITEM, baseToolbar.toolbarObj.element);\n for (var i = 0; i < trgItems.length; i++) {\n var item = this.tbItems[trgItems[i]];\n if (item) {\n baseToolbar.toolbarObj.enableItems(item, isEnable);\n }\n }\n if (!select('.e-rte-srctextarea', this.parent.element) && !muteToolbarUpdate) {\n updateUndoRedoStatus(baseToolbar, this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n };\n /**\n * removeTBarItems method\n *\n * @param {string} items - specifies the string value.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.removeTBarItems = function (items) {\n if (isNullOrUndefined(this.baseToolbar.toolbarObj)) {\n this.baseToolbar = this.parent.getBaseToolbarObject();\n }\n var trgItems = getTBarItemsIndex(getCollection(items), this.baseToolbar.toolbarObj.items);\n this.tbItems = (this.parent.inlineMode.enable) ? selectAll('.' + classes.CLS_TB_ITEM, this.baseToolbar.toolbarObj.element)\n : selectAll('.' + classes.CLS_TB_ITEM, this.parent.element);\n for (var i = 0; i < trgItems.length; i++) {\n this.baseToolbar.toolbarObj.removeItems(this.tbItems[trgItems[i]]);\n }\n };\n /**\n * getExpandTBarPopHeight method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getExpandTBarPopHeight = function () {\n var popHeight = 0;\n if (this.parent.toolbarSettings.type === ToolbarType.Expand && this.tbElement.classList.contains('e-extended-toolbar')) {\n var expandPopup = select('.e-toolbar-extended', this.tbElement);\n if (expandPopup && this.tbElement.classList.contains('e-expand-open')\n || expandPopup && expandPopup.classList.contains('e-popup-open')) {\n addClass([expandPopup], [classes.CLS_VISIBLE]);\n popHeight = popHeight + expandPopup.offsetHeight;\n removeClass([expandPopup], [classes.CLS_VISIBLE]);\n }\n else {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n }\n }\n return popHeight;\n };\n /**\n * getToolbarHeight method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getToolbarHeight = function () {\n return this.tbElement.offsetHeight;\n };\n /**\n * getToolbarElement method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getToolbarElement = function () {\n return select('.' + classes.CLS_TOOLBAR, this.parent.element);\n };\n /**\n * refreshToolbarOverflow method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.refreshToolbarOverflow = function () {\n this.parent.element.classList.remove(classes.CLS_RTL);\n this.baseToolbar.toolbarObj.refreshOverflow();\n if (this.parent.enableRtl) {\n this.parent.element.classList.add(classes.CLS_RTL);\n }\n };\n Toolbar.prototype.isToolbarDestroyed = function () {\n return this.baseToolbar.toolbarObj && !this.baseToolbar.toolbarObj.isDestroyed;\n };\n Toolbar.prototype.destroyToolbar = function () {\n if (this.isToolbarDestroyed()) {\n this.parent.unWireScrollElementsEvents();\n this.unWireEvents();\n this.parent.notify(events.destroyColorPicker, {});\n this.dropDownModule.destroyDropDowns();\n this.baseToolbar.toolbarObj.destroy();\n this.removeEventListener();\n removeClass([this.parent.element], [classes.CLS_RTE_TB_ENABLED]);\n removeClass([this.parent.element], [classes.CLS_RTE_EXPAND_TB]);\n var tbWrapper = select('.' + classes.CLS_TB_WRAP, this.parent.element);\n var tbElement = select('.' + classes.CLS_TOOLBAR, this.parent.element);\n if (!isNullOrUndefined(tbWrapper)) {\n detach(tbWrapper);\n }\n else if (!isNullOrUndefined(tbElement)) {\n detach(tbElement);\n }\n }\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.destroy = function () {\n if (this.isToolbarDestroyed()) {\n this.destroyToolbar();\n if (this.keyBoardModule) {\n this.keyBoardModule.destroy();\n }\n }\n };\n Toolbar.prototype.moduleDestroy = function () {\n this.parent = null;\n this.baseToolbar.parent = null;\n this.toolbarActionModule.parent = null;\n this.dropDownModule.parent = null;\n };\n Toolbar.prototype.scrollHandler = function (e) {\n if (!this.parent.inlineMode.enable) {\n if (this.parent.toolbarSettings.enableFloating && this.getDOMVisibility(this.tbElement)) {\n this.toggleFloatClass(e.args);\n }\n }\n };\n Toolbar.prototype.getDOMVisibility = function (el) {\n if (!el.offsetParent && el.offsetWidth === 0 && el.offsetHeight === 0) {\n return false;\n }\n return true;\n };\n Toolbar.prototype.mouseDownHandler = function () {\n if (Browser.isDevice && this.parent.inlineMode.enable && !isIDevice()) {\n this.showFixedTBar();\n }\n };\n Toolbar.prototype.focusChangeHandler = function () {\n if (Browser.isDevice && this.parent.inlineMode.enable && !isIDevice()) {\n this.isToolbar = false;\n this.hideFixedTBar();\n }\n };\n Toolbar.prototype.dropDownBeforeOpenHandler = function () {\n this.isToolbar = true;\n };\n // eslint-disable-next-line\n Toolbar.prototype.tbFocusHandler = function (e) {\n var activeElm = document.activeElement;\n var isToolbaractive = closest(activeElm, '.e-rte-toolbar');\n if (activeElm === this.parent.getToolbarElement() || isToolbaractive === this.parent.getToolbarElement()) {\n var toolbarItem = this.parent.getToolbarElement().querySelectorAll('.e-expended-nav');\n for (var i = 0; i < toolbarItem.length; i++) {\n if (isNOU(this.parent.getToolbarElement().querySelector('.e-insert-table-btn'))) {\n toolbarItem[i].setAttribute('tabindex', '0');\n }\n else {\n toolbarItem[i].setAttribute('tabindex', '1');\n }\n }\n }\n };\n Toolbar.prototype.tbKeydownHandler = function (e) {\n if (e.target.classList.contains('e-dropdown-btn') ||\n e.target.getAttribute('id') === this.parent.getID() + '_toolbar_CreateTable') {\n e.target.setAttribute('tabindex', '0');\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (e) {\n var trg = closest(e.originalEvent.target, '.e-hor-nav');\n if (trg && this.parent.toolbarSettings.type === ToolbarType.Expand && !isNOU(trg)) {\n var extendedTbar = this.tbElement.querySelector('.e-toolbar-extended');\n if (!isNOU(extendedTbar)) {\n setStyleAttribute(extendedTbar, { maxHeight: '', display: 'block' });\n setStyleAttribute(extendedTbar, { maxHeight: extendedTbar.offsetHeight + 'px', display: '' });\n }\n if (!trg.classList.contains('e-nav-active')) {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n this.parent.setContentHeight('toolbar', false);\n }\n else {\n addClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n this.parent.setContentHeight('toolbar', true);\n }\n }\n else if (Browser.isDevice || this.parent.inlineMode.enable) {\n this.isToolbar = true;\n }\n if (isNOU(trg) && this.parent.toolbarSettings.type === ToolbarType.Expand) {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n if (this.parent.inlineMode.enable && isIDevice()) {\n return;\n }\n EventHandler.add(this.tbElement, 'focusin', this.tbFocusHandler, this);\n EventHandler.add(this.tbElement, 'keydown', this.tbKeydownHandler, this);\n };\n Toolbar.prototype.unWireEvents = function () {\n EventHandler.remove(this.tbElement, 'focusin', this.tbFocusHandler);\n EventHandler.remove(this.tbElement, 'keydown', this.tbKeydownHandler);\n };\n Toolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.dropDownModule = new DropDownButtons(this.parent, this.locator);\n this.toolbarActionModule = new ToolbarAction(this.parent);\n this.parent.on(events.initialEnd, this.renderToolbar, this);\n this.parent.on(events.scroll, this.scrollHandler, this);\n this.parent.on(events.bindOnEnd, this.toolbarBindEvent, this);\n this.parent.on(events.toolbarUpdated, this.updateToolbarStatus, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.refreshBegin, this.onRefresh, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.enableFullScreen, this.fullScreen, this);\n this.parent.on(events.disableFullScreen, this.hideScreen, this);\n this.parent.on(events.updateToolbarItem, this.updateItem, this);\n this.parent.on(events.beforeDropDownOpen, this.dropDownBeforeOpenHandler, this);\n this.parent.on(events.expandPopupClick, this.parent.setContentHeight, this.parent);\n this.parent.on(events.focusChange, this.focusChangeHandler, this);\n this.parent.on(events.mouseDown, this.mouseDownHandler, this);\n this.parent.on(events.sourceCodeMouseDown, this.mouseDownHandler, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n if (!this.parent.inlineMode.enable && !isIDevice()) {\n this.parent.on(events.toolbarClick, this.toolbarClickHandler, this);\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.renderToolbar);\n this.parent.off(events.scroll, this.scrollHandler);\n this.parent.off(events.bindOnEnd, this.toolbarBindEvent);\n this.parent.off(events.toolbarUpdated, this.updateToolbarStatus);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.refreshBegin, this.onRefresh);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.enableFullScreen, this.parent.fullScreenModule.showFullScreen);\n this.parent.off(events.disableFullScreen, this.parent.fullScreenModule.hideFullScreen);\n this.parent.off(events.updateToolbarItem, this.updateItem);\n this.parent.off(events.beforeDropDownOpen, this.dropDownBeforeOpenHandler);\n this.parent.off(events.expandPopupClick, this.parent.setContentHeight);\n this.parent.off(events.focusChange, this.focusChangeHandler);\n this.parent.off(events.mouseDown, this.mouseDownHandler);\n this.parent.off(events.sourceCodeMouseDown, this.mouseDownHandler);\n this.parent.off(events.bindCssClass, this.setCssClass);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n if (!this.parent.inlineMode.enable && !isIDevice()) {\n this.parent.off(events.toolbarClick, this.toolbarClickHandler);\n }\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n Toolbar.prototype.setCssClass = function (e) {\n if (this.toolbarObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n Toolbar.prototype.onRefresh = function () {\n if (!this.parent.inlineMode.enable) {\n this.refreshToolbarOverflow();\n }\n this.parent.setContentHeight('', true);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.inlineMode)) {\n for (var _i = 0, _a = Object.keys(e.newProp.inlineMode); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enable':\n this.refreshToolbar();\n break;\n }\n }\n }\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.refreshToolbar();\n };\n Toolbar.prototype.refreshToolbar = function () {\n if (isNullOrUndefined(this.baseToolbar.toolbarObj)) {\n this.baseToolbar = this.parent.getBaseToolbarObject();\n }\n var tbWrapper = select('.' + classes.CLS_TB_WRAP, this.parent.element);\n var tbElement = select('.' + classes.CLS_TOOLBAR, this.parent.element);\n if (tbElement || tbWrapper) {\n this.destroyToolbar();\n }\n if (this.parent.toolbarSettings.enable) {\n this.addEventListener();\n this.renderToolbar();\n this.parent.wireScrollElementsEvents();\n if (!select('.e-rte-srctextarea', this.parent.element)) {\n updateUndoRedoStatus(this.baseToolbar, this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n this.parent.notify(events.dynamicModule, {});\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { extend, isNullOrUndefined as isNOU, Browser } from '@syncfusion/ej2-base';\nimport * as CONSTANT from '../base/constant';\nimport { updateUndoRedoStatus, isIDevice } from '../base/util';\nimport { KEY_DOWN, KEY_UP } from './../../common/constant';\n/**\n * Formatter\n *\n * @hidden\n\n */\nvar Formatter = /** @class */ (function () {\n function Formatter() {\n }\n /**\n * To execute the command\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {ActionBeginEventArgs} args - specifies the event arguments.\n * @param {MouseEvent|KeyboardEvent} event - specifies the keyboard event.\n * @param {IItemCollectionArgs} value - specifies the collection arguments\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.process = function (self, args, event, value) {\n var _this = this;\n var selection = self.contentModule.getDocument().getSelection();\n var range = (selection.rangeCount > 0) ? selection.getRangeAt(selection.rangeCount - 1) : null;\n var saveSelection;\n var isKeyboardVideoInsert = (!isNOU(value) && !isNOU(value.cssClass) &&\n value.cssClass !== 'e-video-inline');\n if (self.editorMode === 'HTML') {\n if (!isNOU(args) && !isKeyboardVideoInsert) {\n if (isNOU(args.name) || (!isNOU(args.name) && args.name !== 'showDialog')) {\n saveSelection = this.editorManager.nodeSelection.save(range, self.contentModule.getDocument());\n }\n }\n }\n if (!isNOU(args)\n && args.item.command\n && args.item.command !== 'Table'\n && args.item.command !== 'Actions'\n && args.item.command !== 'Links'\n && args.item.command !== 'Images'\n && args.item.command !== 'Files'\n && args.item.command !== 'Audios'\n && args.item.command !== 'Videos'\n && 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().length;\n var selectionLength = self.getSelection().length;\n var totalLength = (currentLength - selectionLength) + currentInsertContentLength;\n if (!(self.maxLength === -1 || totalLength <= self.maxLength)) {\n return;\n }\n }\n if (isNOU(args)) {\n var action_1 = event.action;\n if (action_1 !== 'tab' && action_1 !== 'enter' && action_1 !== 'space' && action_1 !== 'escape') {\n args = {};\n if (self.editorMode === 'Markdown' && action_1 === 'insert-table') {\n value = {\n 'headingText': self.localeObj.getConstant('TableHeadingText'),\n 'colText': self.localeObj.getConstant('TableColText')\n };\n }\n var items = {\n originalEvent: event, cancel: false,\n requestType: action_1 || (event.key + 'Key'),\n itemCollection: value\n };\n extend(args, args, items, true);\n self.trigger(CONSTANT.actionBegin, args, function (actionBeginArgs) {\n if (actionBeginArgs.cancel) {\n if (action_1 === 'paste' || action_1 === 'cut' || action_1 === 'copy') {\n event.preventDefault();\n }\n }\n });\n }\n var isTableModule = isNOU(self.tableModule) ? true : self.tableModule ?\n self.tableModule.ensureInsideTableList : false;\n if ((event.which === 9 && isTableModule) || event.which !== 9) {\n if (event.which === 13 && self.editorMode === 'HTML') {\n value = {\n 'enterAction': self.enterKey\n };\n }\n this.editorManager.observer.notify((event.type === 'keydown' ? KEY_DOWN : KEY_UP), {\n event: event,\n callBack: this.onSuccess.bind(this, self),\n value: value,\n enterAction: self.enterKey\n });\n }\n }\n else if (!isNOU(args) && args.item.command && args.item.subCommand && ((args.item.command !== args.item.subCommand\n && args.item.command !== 'Font')\n || ((args.item.subCommand === 'FontName' || args.item.subCommand === 'FontSize') && args.name === 'dropDownSelect')\n || ((args.item.subCommand === 'BackgroundColor' || args.item.subCommand === 'FontColor')\n && args.name === 'colorPickerChanged') || args.item.subCommand === 'FormatPainter' || 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 self.contentModule.getEditPanel().focus();\n if (self.editorMode === 'HTML' && !isKeyboardVideoInsert) {\n if (isNOU(args.selectType) || (!isNOU(args.selectType) && args.selectType !== 'showDialog')) {\n saveSelection.restore();\n }\n }\n var command = actionBeginArgs.item.subCommand.toLocaleLowerCase();\n if (command === 'paste' || command === 'cut' || command === 'copy') {\n self.clipboardAction(command, event);\n }\n else {\n _this.editorManager.observer.notify(CONSTANT.checkUndo, { subCommand: actionBeginArgs.item.subCommand });\n _this.editorManager.execCommand(actionBeginArgs.item.command, actionBeginArgs.item.subCommand, event, _this.onSuccess.bind(_this, self), actionBeginArgs.item.value, actionBeginArgs.item.subCommand === 'Pre' && actionBeginArgs.selectType === 'dropDownSelect' ?\n { name: actionBeginArgs.selectType } : value, ('#' + self.getID() + ' iframe'), self.enterKey);\n }\n }\n });\n }\n if ((isNOU(event) || event && event.action !== 'copy')) {\n this.enableUndo(self);\n }\n };\n Formatter.prototype.getAncestorNode = function (node) {\n node = node.nodeType === 3 ? node.parentNode : node;\n return node;\n };\n /**\n * onKeyHandler method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.onKeyHandler = function (self, e) {\n var _this = this;\n this.editorManager.observer.notify(KEY_UP, {\n event: e, callBack: function () {\n self.notify(CONSTANT.contentChanged, {});\n _this.enableUndo(self);\n }\n });\n };\n /**\n * onSuccess method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {IMarkdownFormatterCallBack} events - specifies the event call back\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.onSuccess = function (self, events) {\n self.notify(CONSTANT.contentChanged, {});\n if (events && (isNOU(events.event) || events.event.action !== 'copy')) {\n this.enableUndo(self);\n self.notify(CONSTANT.execCommandCallBack, events);\n }\n self.trigger(CONSTANT.actionComplete, events, function (callbackArgs) {\n self.setPlaceHolder();\n if ((callbackArgs.requestType === 'Images' || callbackArgs.requestType === 'Links' || callbackArgs.requestType === 'Audios' || callbackArgs.requestType === 'Videos') && self.editorMode === 'HTML') {\n var args = callbackArgs;\n if (callbackArgs.requestType === 'Links' && callbackArgs.event &&\n callbackArgs.event.type === 'keydown' &&\n callbackArgs.event.keyCode === 32) {\n return;\n }\n self.notify(CONSTANT.insertCompleted, {\n args: args.event, type: callbackArgs.requestType, isNotify: true,\n elements: args.elements\n });\n }\n if (callbackArgs.requestType === 'VideosPlayPause') {\n self.notify('editAreaClick', { args: event });\n }\n self.autoResize();\n });\n };\n /**\n * Save the data for undo and redo action.\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.saveData = function (e) {\n this.editorManager.undoRedoManager.saveData(e);\n };\n /**\n * getUndoStatus method\n *\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.getUndoStatus = function () {\n return this.editorManager.undoRedoManager.getUndoStatus();\n };\n /* eslint-disable */\n /**\n * getUndoRedoStack method\n *\n * @param {IHtmlUndoRedoData} - specifies the redo data.\n * @returns {void}\n * @hidden\n\n */\n /* eslint-enable */\n Formatter.prototype.getUndoRedoStack = function () {\n return this.editorManager.undoRedoManager.undoRedoStack;\n };\n /**\n * enableUndo method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.enableUndo = function (self) {\n var status = this.getUndoStatus();\n if (self.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n updateUndoRedoStatus(self.quickToolbarModule.inlineQTBar.quickTBarObj, status);\n }\n else {\n if (self.toolbarModule) {\n updateUndoRedoStatus(self.toolbarModule.baseToolbar, status);\n }\n }\n };\n return Formatter;\n}());\nexport { Formatter };\n","/**\n * Constant values for EditorManager\n */\n/**\n * Image plugin events\n *\n * @hidden\n */\nexport var IMAGE = 'INSERT-IMAGE';\nexport var AUDIO = 'INSERT-AUDIO';\nexport var VIDEO = 'INSERT-VIDEO';\nexport var TABLE = 'INSERT-TABLE';\nexport var LINK = 'INSERT-LINK';\nexport var INSERT_ROW = 'INSERT-ROW';\nexport var INSERT_COLUMN = 'INSERT-COLUMN';\nexport var DELETEROW = 'DELETE-ROW';\nexport var DELETECOLUMN = 'DELETE-COLUMN';\nexport var REMOVETABLE = 'REMOVE-TABLE';\nexport var TABLEHEADER = 'TABLE-HEADER';\nexport var TABLE_VERTICAL_ALIGN = 'TABLE_VERTICAL_ALIGN';\nexport var TABLE_MERGE = 'TABLE_MERGE';\nexport var TABLE_VERTICAL_SPLIT = 'TABLE_VERTICAL_SPLIT';\nexport var TABLE_HORIZONTAL_SPLIT = 'TABLE_HORIZONTAL_SPLIT';\nexport var TABLE_MOVE = 'TABLE_MOVE';\n/**\n * Alignments plugin events\n *\n * @hidden\n */\nexport var ALIGNMENT_TYPE = 'alignment-type';\n/**\n * Indents plugin events\n *\n * @hidden\n */\nexport var INDENT_TYPE = 'indent-type';\n/**\n * Constant tag names\n *\n * @hidden\n */\nexport var DEFAULT_TAG = 'p';\n/**\n * @hidden\n */\nexport var BLOCK_TAGS = ['address', 'article', 'aside', 'audio', 'blockquote',\n 'canvas', 'details', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer',\n 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'li', 'main', 'nav',\n 'noscript', 'ol', 'output', 'p', 'pre', 'section', 'table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr', 'ul', 'video', 'body'];\n/**\n * @hidden\n */\nexport var IGNORE_BLOCK_TAGS = ['td', 'th'];\n/**\n * @hidden\n */\nexport var TABLE_BLOCK_TAGS = ['table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr'];\n/**\n * Selection plugin events\n *\n * @hidden\n */\nexport var SELECTION_TYPE = 'selection-type';\n/**\n * Insert HTML plugin events\n *\n * @hidden\n */\nexport var INSERTHTML_TYPE = 'inserthtml-type';\n/**\n * Insert Text plugin events\n *\n * @hidden\n */\nexport var INSERT_TEXT_TYPE = 'insert-text-type';\n/**\n * Clear Format HTML plugin events\n *\n * @hidden\n */\nexport var CLEAR_TYPE = 'clear-type';\n/**\n * Self closing tags\n *\n * @hidden\n */\nexport var SELF_CLOSING_TAGS = ['area', 'base', 'br', 'embed', 'hr', 'img', 'input', 'param', 'source', 'track', 'wbr', 'iframe', 'td', 'table'];\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `Selection` module is used to handle RTE Selections.\n */\nvar NodeSelection = /** @class */ (function () {\n function NodeSelection() {\n this.startNodeName = [];\n this.endNodeName = [];\n }\n NodeSelection.prototype.saveInstance = function (range, body) {\n this.range = range.cloneRange();\n this.rootNode = this.documentFromRange(range);\n this.body = body;\n this.startContainer = this.getNodeArray(range.startContainer, true);\n this.endContainer = this.getNodeArray(range.endContainer, false);\n this.startOffset = range.startOffset;\n this.endOffset = range.endOffset;\n this.html = this.body.innerHTML;\n return this;\n };\n NodeSelection.prototype.documentFromRange = function (range) {\n return (9 === range.startContainer.nodeType) ? range.startContainer : range.startContainer.ownerDocument;\n };\n NodeSelection.prototype.getRange = function (docElement) {\n var select = this.get(docElement);\n var range = select && select.rangeCount > 0 ? select.getRangeAt(select.rangeCount - 1) : docElement.createRange();\n return (range.startContainer !== docElement || range.endContainer !== docElement\n || range.startOffset || range.endOffset || (range.setStart(docElement.body, 0),\n range.collapse(!0)),\n range);\n };\n /**\n * get method\n *\n * @param {Document} docElement - specifies the get function\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.get = function (docElement) {\n return docElement.defaultView.getSelection();\n };\n /**\n * save method\n *\n * @param {Range} range - range value.\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.save = function (range, docElement) {\n range = (range) ? range.cloneRange() : this.getRange(docElement);\n return this.saveInstance(range, docElement.body);\n };\n /**\n * getIndex method\n *\n * @param {Node} node - specifies the node value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getIndex = function (node) {\n var index;\n var num = 0;\n node = !node.previousSibling && node.tagName === 'BR' ? node : node.previousSibling;\n if (node) {\n for (var type = node.nodeType; node; null) {\n index = node.nodeType;\n num++;\n //eslint-disable-next-line\n type = index;\n node = node.previousSibling;\n }\n }\n return num;\n };\n NodeSelection.prototype.isChildNode = function (nodeCollection, parentNode) {\n for (var index = 0; index < parentNode.childNodes.length; index++) {\n if (nodeCollection.indexOf(parentNode.childNodes[index]) > -1) {\n return true;\n }\n }\n return false;\n };\n NodeSelection.prototype.getNode = function (startNode, endNode, nodeCollection) {\n if (endNode === startNode &&\n (startNode.nodeType === 3 || !startNode.firstChild || nodeCollection.indexOf(startNode.firstChild) !== -1\n || this.isChildNode(nodeCollection, startNode))) {\n return null;\n }\n if (nodeCollection.indexOf(startNode.firstChild) === -1 && startNode.firstChild && !this.isChildNode(nodeCollection, startNode)) {\n return startNode.firstChild;\n }\n if (startNode.nextSibling) {\n return startNode.nextSibling;\n }\n if (!startNode.parentNode) {\n return null;\n }\n else {\n return startNode.parentNode;\n }\n };\n /**\n * getNodeCollection method\n *\n * @param {Range} range -specifies the range.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getNodeCollection = function (range) {\n var startNode = range.startContainer.childNodes[range.startOffset]\n || range.startContainer;\n var endNode = range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) : range.endOffset]\n || range.endContainer;\n if ((startNode === endNode || (startNode.nodeName === 'BR' && startNode === range.endContainer.childNodes[range.endOffset])) &&\n startNode.childNodes.length === 0) {\n return [startNode];\n }\n if (range.startOffset === range.endOffset && range.startOffset !== 0 && range.startContainer.nodeName === 'PRE') {\n return [startNode.nodeName === 'BR' || startNode.nodeName === '#text' ? startNode : startNode.childNodes[0]];\n }\n var nodeCollection = [];\n do {\n if (nodeCollection.indexOf(startNode) === -1) {\n nodeCollection.push(startNode);\n }\n startNode = this.getNode(startNode, endNode, nodeCollection);\n } while (startNode);\n return nodeCollection;\n };\n /**\n * getParentNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getParentNodeCollection = function (range) {\n return this.getParentNodes(this.getNodeCollection(range), range);\n };\n /**\n * getParentNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @param {Range} range - specifies the range values.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getParentNodes = function (nodeCollection, range) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if ((nodeCollection.indexOf(nodeCollection[index].parentNode) !== -1)\n || (nodeCollection[index].nodeType === 3 &&\n range.startContainer !== range.endContainer &&\n range.startContainer.parentNode !== range.endContainer.parentNode)) {\n nodeCollection.splice(index, 1);\n index--;\n }\n else if (nodeCollection[index].nodeType === 3) {\n nodeCollection[index] = nodeCollection[index].parentNode;\n }\n }\n return nodeCollection;\n };\n /**\n * getSelectionNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodeCollection = function (range) {\n return this.getSelectionNodes(this.getNodeCollection(range));\n };\n /**\n * getSelectionNodeCollection along with BR node method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodeCollectionBr = function (range) {\n return this.getSelectionNodesBr(this.getNodeCollection(range));\n };\n /**\n * getParentNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeType !== 3 || (nodeCollection[index].textContent.trim() === '' ||\n (nodeCollection[index].textContent.length === 1 && nodeCollection[index].textContent.match(regEx)))) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * Get selection text nodes with br method.\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodesBr = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeName !== 'BR' &&\n (nodeCollection[index].nodeType !== 3 || (nodeCollection[index].textContent.trim() === '' ||\n (nodeCollection[index].textContent.length === 1 && nodeCollection[index].textContent.match(regEx))))) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * getInsertNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getInsertNodeCollection = function (range) {\n return this.getInsertNodes(this.getNodeCollection(range));\n };\n /**\n * getInsertNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getInsertNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if ((nodeCollection[index].childNodes.length !== 0 &&\n nodeCollection[index].nodeType !== 3) ||\n (nodeCollection[index].nodeType === 3 &&\n nodeCollection[index].textContent === '')) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * getNodeArray method\n *\n * @param {Node} node - specifies the node content.\n * @param {boolean} isStart - specifies the boolean value.\n * @param {Document} root - specifies the root document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getNodeArray = function (node, isStart, root) {\n var array = [];\n // eslint-disable-next-line\n ((isStart) ? (this.startNodeName = []) : (this.endNodeName = []));\n for (; node !== (root ? root : this.rootNode); null) {\n if (isNullOrUndefined(node)) {\n break;\n }\n // eslint-disable-next-line\n (isStart) ? this.startNodeName.push(node.nodeName.toLowerCase()) : this.endNodeName.push(node.nodeName.toLowerCase());\n array.push(this.getIndex(node));\n node = node.parentNode;\n }\n return array;\n };\n NodeSelection.prototype.setRangePoint = function (range, isvalid, num, size) {\n var node = this.rootNode;\n var index = num.length;\n var constant = size;\n for (; index--; null) {\n node = node && node.childNodes[num[index]];\n }\n if (node && constant >= 0 && node.nodeName !== 'html') {\n if (node.nodeType === 3 && node.nodeValue.replace(/\\u00a0/g, ' ') === ' ') {\n constant = node.textContent.length;\n }\n range[isvalid ? 'setStart' : 'setEnd'](node, constant);\n }\n return range;\n };\n /**\n * restore method\n *\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.restore = function () {\n var range = this.range.cloneRange();\n range = this.setRangePoint(range, true, this.startContainer, this.startOffset);\n range = this.setRangePoint(range, false, this.endContainer, this.endOffset);\n this.selectRange(this.rootNode, range);\n return range;\n };\n NodeSelection.prototype.selectRange = function (docElement, range) {\n this.setRange(docElement, range);\n this.save(range, docElement);\n };\n /**\n * setRange method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Range} range - specifies the range.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setRange = function (docElement, range) {\n var selection = this.get(docElement);\n selection.removeAllRanges();\n selection.addRange(range);\n };\n /**\n * setSelectionText method\n *\n * @param {Document} docElement - specifies the documrent\n * @param {Node} startNode - specifies the starting node.\n * @param {Node} endNode - specifies the the end node.\n * @param {number} startIndex - specifies the starting index.\n * @param {number} endIndex - specifies the end index.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setSelectionText = function (docElement, startNode, endNode, startIndex, endIndex) {\n var range = docElement.createRange();\n range.setStart(startNode, startIndex);\n range.setEnd(endNode, endIndex);\n this.setRange(docElement, range);\n };\n /**\n * setSelectionContents method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} element - specifies the node.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setSelectionContents = function (docElement, element) {\n var range = docElement.createRange();\n range.selectNode(element);\n this.setRange(docElement, range);\n };\n /**\n * setSelectionNode method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} element - specifies the node.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setSelectionNode = function (docElement, element) {\n var range = docElement.createRange();\n range.selectNodeContents(element);\n this.setRange(docElement, range);\n };\n /**\n * getSelectedNodes method\n *\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectedNodes = function (docElement) {\n return this.getNodeCollection(this.getRange(docElement));\n };\n /**\n * Clear method\n *\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.Clear = function (docElement) {\n this.get(docElement).removeAllRanges();\n };\n /**\n * insertParentNode method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} newNode - specicfies the new node.\n * @param {Range} range - specifies the range.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.insertParentNode = function (docElement, newNode, range) {\n range.surroundContents(newNode);\n this.selectRange(docElement, range);\n };\n /**\n * setCursorPoint method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Element} element - specifies the element.\n * @param {number} point - specifies the point.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setCursorPoint = function (docElement, element, point) {\n var range = docElement.createRange();\n var selection = docElement.defaultView.getSelection();\n range.setStart(element, point);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n };\n return NodeSelection;\n}());\nexport { NodeSelection };\n","/**\n * Default Markdown formats config for adapter\n */\nexport var markdownFormatTags = {\n 'h6': '###### ',\n 'h5': '##### ',\n 'h4': '#### ',\n 'h3': '### ',\n 'h2': '## ',\n 'h1': '# ',\n 'blockquote': '> ',\n 'pre': '```\\n',\n 'p': ''\n};\n/**\n * Default selection formats config for adapter\n */\nexport var markdownSelectionTags = {\n 'Bold': '**',\n 'Italic': '*',\n 'StrikeThrough': '~~',\n 'InlineCode': '`',\n 'SubScript': '',\n 'SuperScript': '',\n 'UpperCase': 'A-Z',\n 'LowerCase': 'a-z'\n};\n/**\n * Default Markdown lists config for adapter\n */\nexport var markdownListsTags = {\n 'OL': '1. ',\n 'UL': '- '\n};\n/**\n * Default html key config for adapter\n */\nexport var htmlKeyConfig = {\n 'toolbar-focus': 'alt+f10',\n 'escape': '27',\n 'insert-link': 'ctrl+k',\n 'insert-image': 'ctrl+shift+i',\n 'insert-audio': 'ctrl+shift+a',\n 'insert-video': 'ctrl+shift+v',\n 'insert-table': 'ctrl+shift+e',\n 'undo': 'ctrl+z',\n 'redo': 'ctrl+y',\n 'copy': 'ctrl+c',\n 'cut': 'ctrl+x',\n 'paste': 'ctrl+v',\n 'bold': 'ctrl+b',\n 'italic': 'ctrl+i',\n 'underline': 'ctrl+u',\n 'strikethrough': 'ctrl+shift+s',\n 'uppercase': 'ctrl+shift+u',\n 'lowercase': 'ctrl+shift+l',\n 'superscript': 'ctrl+shift+=',\n 'subscript': 'ctrl+=',\n 'indents': 'ctrl+]',\n 'outdents': 'ctrl+[',\n 'html-source': 'ctrl+shift+h',\n 'full-screen': 'ctrl+shift+f',\n 'decrease-fontsize': 'ctrl+shift+<',\n 'increase-fontsize': 'ctrl+shift+>',\n 'justify-center': 'ctrl+e',\n 'justify-full': 'ctrl+j',\n 'justify-left': 'ctrl+l',\n 'justify-right': 'ctrl+r',\n 'clear-format': 'ctrl+shift+r',\n 'ordered-list': 'ctrl+shift+o',\n 'unordered-list': 'ctrl+alt+o',\n 'space': '32',\n 'enter': '13',\n 'tab': 'tab',\n 'delete': '46',\n 'format-copy': 'alt+shift+c',\n 'format-paste': 'alt+shift+v'\n};\n/**\n * Default markdown key config for adapter\n */\nexport var markdownKeyConfig = {\n 'toolbar-focus': 'alt+f10',\n 'escape': '27',\n 'insert-link': 'ctrl+k',\n 'insert-image': 'ctrl+shift+i',\n 'insert-table': 'ctrl+shift+e',\n 'undo': 'ctrl+z',\n 'redo': 'ctrl+y',\n 'copy': 'ctrl+c',\n 'cut': 'ctrl+x',\n 'paste': 'ctrl+v',\n 'bold': 'ctrl+b',\n 'italic': 'ctrl+i',\n 'strikethrough': 'ctrl+shift+s',\n 'uppercase': 'ctrl+shift+u',\n 'lowercase': 'ctrl+shift+l',\n 'superscript': 'ctrl+shift+=',\n 'subscript': 'ctrl+=',\n 'full-screen': 'ctrl+shift+f',\n 'ordered-list': 'ctrl+shift+o',\n 'unordered-list': 'ctrl+alt+o'\n};\n/**\n * PasteCleanup Grouping of similar functionality tags\n */\nexport var pasteCleanupGroupingTags = {\n 'b': ['strong'],\n 'strong': ['b'],\n 'i': ['emp', 'cite'],\n 'emp': ['i', 'cite'],\n 'cite': ['i', 'emp']\n};\n/**\n * PasteCleanup Grouping of similar functionality tags\n */\nexport var listConversionFilters = {\n 'first': 'MsoListParagraphCxSpFirst',\n 'middle': 'MsoListParagraphCxSpMiddle',\n 'last': 'MsoListParagraphCxSpLast'\n};\n/**\n * Dom-Node Grouping of self closing tags\n *\n * @hidden\n */\nexport var selfClosingTags = [\n 'BR',\n 'IMG'\n];\n","/**\n * Defines common util methods used by Rich Text Editor.\n */\nimport { isNullOrUndefined, Browser, createElement, detach } from '@syncfusion/ej2-base';\nvar inlineNode = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button',\n 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'font', 'i', 'iframe', 'img', 'input',\n 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',\n 'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'strike', 'sub', 'sup', 'svg',\n 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];\n/**\n * @returns {void}\n * @hidden\n */\nexport function isIDevice() {\n var result = false;\n if (Browser.isDevice && Browser.isIos) {\n result = true;\n }\n return result;\n}\n/**\n * @param {Element} editableElement - specifies the editable element.\n * @param {string} selector - specifies the string values.\n * @returns {void}\n * @hidden\n */\nexport function setEditFrameFocus(editableElement, selector) {\n if (editableElement.nodeName === 'BODY' && !isNullOrUndefined(selector)) {\n var iframe = top.window.document.querySelector(selector);\n if (!isNullOrUndefined(iframe)) {\n iframe.contentWindow.focus();\n }\n }\n}\n/**\n * @param {string} value - specifies the string value\n * @param {string} enterAction - specifies the enter key action API\n * @returns {void}\n * @hidden\n */\nexport function updateTextNode(value, enterAction) {\n var tempNode = document.createElement('div');\n tempNode.innerHTML = value;\n tempNode.setAttribute('class', 'tempDiv');\n var resultElm = document.createElement('div');\n var childNodes = tempNode.childNodes;\n if (childNodes.length > 0) {\n var isPreviousInlineElem = void 0;\n var previousParent = void 0;\n var paraElm = void 0;\n while (tempNode.firstChild) {\n if ((tempNode.firstChild.nodeName === '#text' &&\n (tempNode.firstChild.textContent.indexOf('\\n') < 0 || tempNode.firstChild.textContent.trim() !== '')) ||\n inlineNode.indexOf(tempNode.firstChild.nodeName.toLocaleLowerCase()) >= 0) {\n if (!isPreviousInlineElem) {\n if (enterAction === 'BR') {\n resultElm.appendChild(tempNode.firstChild);\n previousParent = resultElm;\n }\n else {\n paraElm = createElement('p');\n resultElm.appendChild(paraElm);\n paraElm.appendChild(tempNode.firstChild);\n previousParent = paraElm;\n isPreviousInlineElem = true;\n }\n }\n else {\n previousParent.appendChild(tempNode.firstChild);\n previousParent = paraElm;\n isPreviousInlineElem = true;\n }\n }\n else if (tempNode.firstChild.nodeName === '#text' && (tempNode.firstChild.textContent === '\\n' ||\n (tempNode.firstChild.textContent.indexOf('\\n') >= 0 && tempNode.firstChild.textContent.trim() === ''))) {\n detach(tempNode.firstChild);\n }\n else {\n resultElm.appendChild(tempNode.firstChild);\n isPreviousInlineElem = false;\n }\n }\n var tableElm = resultElm.querySelectorAll('table');\n for (var i = 0; i < tableElm.length; i++) {\n if (tableElm[i].getAttribute('border') === '0') {\n tableElm[i].removeAttribute('border');\n }\n var tdElm = tableElm[i].querySelectorAll('td');\n for (var j = 0; j < tdElm.length; j++) {\n if (tdElm[j].style.borderLeft === 'none') {\n tdElm[j].style.removeProperty('border-left');\n }\n if (tdElm[j].style.borderRight === 'none') {\n tdElm[j].style.removeProperty('border-right');\n }\n if (tdElm[j].style.borderBottom === 'none') {\n tdElm[j].style.removeProperty('border-bottom');\n }\n if (tdElm[j].style.borderTop === 'none') {\n tdElm[j].style.removeProperty('border-top');\n }\n if (tdElm[j].style.border === 'none') {\n tdElm[j].style.removeProperty('border');\n }\n }\n if (!tableElm[i].classList.contains('e-rte-table')) {\n tableElm[i].classList.add('e-rte-table');\n }\n }\n var imageElm = resultElm.querySelectorAll('img');\n for (var i = 0; i < imageElm.length; i++) {\n if (!imageElm[i].classList.contains('e-rte-image')) {\n imageElm[i].classList.add('e-rte-image');\n }\n if (!(imageElm[i].classList.contains('e-imginline') ||\n imageElm[i].classList.contains('e-imgbreak'))) {\n imageElm[i].classList.add('e-imginline');\n }\n }\n }\n return resultElm.innerHTML;\n}\n/**\n * @param {Node} startChildNodes - specifies the node\n * @returns {void}\n * @hidden\n */\nexport function getLastTextNode(startChildNodes) {\n var finalNode = startChildNodes;\n do {\n if (finalNode.childNodes.length > 0) {\n finalNode = finalNode.childNodes[0];\n }\n } while (finalNode.childNodes.length > 0);\n return finalNode;\n}\n/**\n * @returns {void}\n * @hidden\n */\nexport function getDefaultHtmlTbStatus() {\n return {\n bold: false,\n italic: false,\n subscript: false,\n superscript: false,\n strikethrough: false,\n orderedlist: false,\n unorderedlist: false,\n numberFormatList: false,\n bulletFormatList: false,\n underline: false,\n alignments: null,\n backgroundcolor: null,\n fontcolor: null,\n fontname: null,\n fontsize: null,\n formats: null,\n createlink: false,\n insertcode: false\n };\n}\n/**\n * @returns {void}\n * @hidden\n */\nexport function getDefaultMDTbStatus() {\n return {\n bold: false,\n italic: false,\n subscript: false,\n superscript: false,\n strikethrough: false,\n orderedlist: false,\n uppercase: false,\n lowercase: false,\n inlinecode: false,\n unorderedlist: false,\n formats: null\n };\n}\n","import * 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 (start.textContent === '' && isNOU(end) && action !== 'tab') {\n if (isNOU(action) && save.range.startContainer.nodeType === 1 &&\n save.range.startContainer.querySelectorAll('audio,video,image').length === 0) {\n start.innerHTML = '
';\n }\n else if (start.childNodes.length === 1 && start.childNodes[0].nodeName === 'BR') {\n start.innerHTML = '
';\n }\n else {\n start.innerHTML = '';\n }\n }\n if (this.hasClass(start, markerClassName.startSelection) && start.classList.length > 1) {\n var replace = this.createTagString(CONSTANT.DEFAULT_TAG, start, this.encode(start.textContent));\n this.replaceWith(start, replace);\n start = this.parent.querySelector('.' + markerClassName.startSelection);\n start.classList.remove(markerClassName.startSelection);\n startTextNode = start.childNodes[0];\n }\n else {\n startTextNode = this.unWrap(start)[0];\n }\n if (this.hasClass(end, markerClassName.endSelection) && end.classList.length > 1) {\n var replace = this.createTagString(CONSTANT.DEFAULT_TAG, end, this.encode(end.textContent));\n this.replaceWith(end, replace);\n end = this.parent.querySelector('.' + markerClassName.endSelection);\n end.classList.remove(markerClassName.endSelection);\n endTextNode = end.childNodes[0];\n }\n else {\n endTextNode = end ? this.unWrap(end)[0] : startTextNode;\n }\n save.startContainer = save.getNodeArray(startTextNode, true);\n save.endContainer = save.getNodeArray(endTextNode, false);\n return save;\n };\n DOMNode.prototype.marker = function (className, textContent) {\n return '' + textContent + '';\n };\n /**\n * setMarker method\n *\n * @param {NodeSelection} save - specifies the node selection.\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.setMarker = function (save) {\n var range = save.range;\n var startChildNodes = range.startContainer.childNodes;\n var isTableStart = startChildNodes.length > 1 && startChildNodes[0].nodeName === 'TABLE';\n var start = ((isTableStart ? getLastTextNode(startChildNodes[range.startOffset + 1]) :\n startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) : range.startOffset]) || range.startContainer);\n var end = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) : range.endOffset]\n || range.endContainer);\n if ((start.nodeType === Node.ELEMENT_NODE && end.nodeType === Node.ELEMENT_NODE) && (start.contains(end) || end.contains(start))) {\n var existNode = start.contains(end) ? start : end;\n var isElement = existNode.nodeType !== Node.TEXT_NODE;\n if (isElement) {\n var nodes = [];\n var textNodes = [];\n for (var node = existNode; existNode.contains(node); null) {\n if (nodes.indexOf(node) < 0 && node.childNodes && node.childNodes.length) {\n nodes.push(node);\n node = node.childNodes[0];\n }\n else if (node.nextSibling) {\n node = node.nextSibling;\n }\n else if (node.parentNode) {\n node = node.parentNode;\n nodes.push(node);\n }\n if (textNodes.indexOf(node) < 0 && (node.nodeType === Node.TEXT_NODE ||\n (CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0\n && (node.tagName === 'BR' || node.tagName === 'IMG')))) {\n textNodes.push(node);\n }\n }\n if (textNodes.length) {\n start = start.contains(end) ? textNodes[0] : start;\n end = textNodes[textNodes.length - 1];\n }\n }\n }\n if (start !== end) {\n if (start.nodeType !== Node.TEXT_NODE && ((start.tagName === 'BR' &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(start.parentNode.tagName.toLocaleLowerCase()) >= 0) ||\n start.tagName === 'IMG')) {\n this.replaceWith(start, this.marker(markerClassName.startSelection, this.encode(start.textContent)));\n var markerStart = range.startContainer.querySelector('.' + markerClassName.startSelection);\n markerStart.appendChild(start);\n }\n else {\n if (start.nodeType !== 3 && start.nodeName !== '#text' && 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 markerStart.appendChild(start);\n }\n else {\n if (start.tagName === 'IMG') {\n var parNode = document.createElement('p');\n start.parentElement.insertBefore(parNode, start);\n parNode.appendChild(start);\n start = parNode.children[0];\n }\n if (start.tagName === 'TABLE') {\n isTable = true;\n if (start.textContent === '') {\n var tdNode = start.querySelectorAll('td');\n start = tdNode[tdNode.length - 1];\n start = !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 * @returns {Node[]} - returns the node array values\n * @hidden\n\n */\n DOMNode.prototype.blockNodes = function () {\n var collectionNodes = [];\n var selection = this.getSelection();\n if (this.isEditorArea() && selection.rangeCount) {\n var ranges = this.getRangePoint();\n for (var j = 0; j < ranges.length; j++) {\n var parentNode = void 0;\n var range = ranges[j];\n var startNode = this.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.getSelectedNode(range.endContainer, range.endOffset);\n if (this.isBlockNode(startNode) && collectionNodes.indexOf(startNode) < 0) {\n collectionNodes.push(startNode);\n }\n parentNode = this.blockParentNode(startNode);\n if (parentNode && collectionNodes.indexOf(parentNode) < 0) {\n if (CONSTANT.IGNORE_BLOCK_TAGS.indexOf(parentNode.tagName.toLocaleLowerCase()) >= 0 && (startNode.tagName === 'BR' ||\n startNode.nodeType === Node.TEXT_NODE ||\n startNode.classList.contains(markerClassName.startSelection) ||\n startNode.classList.contains(markerClassName.endSelection))) {\n var tempNode = startNode.previousSibling &&\n startNode.previousSibling.nodeType === Node.TEXT_NODE ?\n startNode.previousSibling : startNode;\n if (!startNode.nextSibling && !startNode.previousSibling && startNode.tagName === 'BR') {\n collectionNodes.push(tempNode);\n }\n else {\n collectionNodes.push(this.createTempNode(tempNode));\n }\n }\n else {\n collectionNodes.push(parentNode);\n }\n }\n var nodes = [];\n for (var node = startNode; node !== endNode && node !== this.parent; null) {\n if (nodes.indexOf(node) < 0 && node.childNodes && node.childNodes.length) {\n nodes.push(node);\n node = node.childNodes[0];\n }\n else if (node && node.nodeType !== 8 && (node.tagName === 'BR' || (node.nodeType === Node.TEXT_NODE &&\n node.textContent.trim() !== '') || (node.nodeType !== Node.TEXT_NODE &&\n (node.classList.contains(markerClassName.startSelection) ||\n node.classList.contains(markerClassName.endSelection)))) &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0) {\n node = this.createTempNode(node);\n }\n else if (node.nextSibling && node.nextSibling.nodeType !== 8 &&\n (node.nextSibling.tagName === 'BR' ||\n node.nextSibling.nodeType === Node.TEXT_NODE ||\n node.nextSibling.classList.contains(markerClassName.startSelection) ||\n node.nextSibling.classList.contains(markerClassName.endSelection)) &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.nextSibling.parentNode.tagName.toLocaleLowerCase()) >= 0) {\n node = this.createTempNode(node.nextSibling);\n }\n else if (node.nextSibling) {\n node = node.nextSibling;\n }\n else if (node.parentNode) {\n node = node.parentNode;\n nodes.push(node);\n }\n if (collectionNodes.indexOf(node) < 0 && node.nodeType === Node.ELEMENT_NODE &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0 &&\n (node.classList.contains(markerClassName.startSelection) ||\n node.classList.contains(markerClassName.endSelection))) {\n collectionNodes.push(this.createTempNode(node));\n }\n if (this.isBlockNode(node) && this.ignoreTableTag(node) && nodes.indexOf(node) < 0 &&\n collectionNodes.indexOf(node) < 0 && (node !== endNode || range.endOffset > 0)) {\n collectionNodes.push(node);\n }\n if (node.nodeName === 'IMG' && node.parentElement.contentEditable === 'true') {\n collectionNodes.push(node);\n }\n }\n parentNode = this.blockParentNode(endNode);\n if (parentNode && this.ignoreTableTag(parentNode) && collectionNodes.indexOf(parentNode) < 0 &&\n (!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 return DOMNode;\n}());\nexport { DOMNode };\n","import * as CONSTANT from './../base/constant';\nimport { createElement, detach, prepend, append, attributes, Browser } from '@syncfusion/ej2-base';\nimport { markerClassName } from './dom-node';\nimport * as EVENTS from './../../common/constant';\nimport { setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nimport { isNullOrUndefined, isNullOrUndefined as isNOU, closest } from '@syncfusion/ej2-base';\n/**\n * Lists internal component\n *\n * @hidden\n\n */\nvar Lists = /** @class */ (function () {\n /**\n * Constructor for creating the Lists plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function Lists(parent) {\n this.parent = parent;\n this.domNode = this.parent.domNode;\n this.addEventListener();\n }\n Lists.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.LIST_TYPE, this.applyListsHandler, this);\n this.parent.observer.on(EVENTS.KEY_UP_HANDLER, this.onKeyUp, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDownHandler, this);\n this.parent.observer.on(EVENTS.SPACE_ACTION, this.spaceKeyAction, this);\n };\n Lists.prototype.testList = function (elem) {\n var olListRegex = [/^[\\d]+[.]+$/,\n /^(?=[MDCLXVI])M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})[.]$/gi,\n /^[a-zA-Z][.]+$/];\n var elementStart = !isNullOrUndefined(elem) ? elem.innerText.trim().split('.')[0] + '.' : null;\n if (!isNullOrUndefined(elementStart)) {\n for (var i = 0; i < olListRegex.length; i++) {\n if (olListRegex[i].test(elementStart)) {\n return true;\n }\n }\n }\n return false;\n };\n Lists.prototype.testCurrentList = function (range) {\n var olListStartRegex = [/^[1]+[.]+$/, /^[i]+[.]+$/, /^[a]+[.]+$/];\n if (!isNullOrUndefined(range.startContainer.textContent.slice(0, range.startOffset))) {\n var currentContent = range.startContainer.textContent.replace(/\\u200B/g, '').slice(0, range.startOffset).trim();\n for (var i = 0; i < olListStartRegex.length; i++) {\n if (olListStartRegex[i].test(currentContent) && currentContent.length === 2) {\n return true;\n }\n }\n }\n return false;\n };\n Lists.prototype.spaceList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n // eslint-disable-next-line\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n var preElement = startNode.previousElementSibling;\n var nextElement = startNode.nextElementSibling;\n var preElemULStart = !isNullOrUndefined(preElement) ?\n preElement.innerText.trim().substring(0, 1) : null;\n var nextElemULStart = !isNullOrUndefined(nextElement) ?\n nextElement.innerText.trim().substring(0, 1) : null;\n var startElementOLTest = this.testCurrentList(range);\n var preElementOLTest = this.testList(preElement);\n var nextElementOLTest = this.testList(nextElement);\n if (!preElementOLTest && !nextElementOLTest && preElemULStart !== '*' && nextElemULStart !== '*') {\n if (startElementOLTest) {\n range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);\n this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });\n e.event.preventDefault();\n }\n else if (range.startContainer.textContent.replace(/\\u200B/g, '').slice(0, range.startOffset).trim() === '*' ||\n range.startContainer.textContent.replace(/\\u200B/g, '').slice(0, range.startOffset).trim() === '-') {\n range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);\n this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });\n e.event.preventDefault();\n }\n }\n };\n Lists.prototype.enterList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startNode = range.startContainer.nodeName === 'LI' ? range.startContainer :\n range.startContainer.parentElement.closest('LI');\n var endNode = range.endContainer.nodeName === 'LI' ? range.endContainer :\n range.endContainer.parentElement.closest('LI');\n // Checks for Image, Audio , Video Element inside List Element\n var hasMediaElem = false;\n if (!isNOU(startNode)) {\n var videoElemList = startNode.querySelectorAll('.e-video-clickelem');\n var embedVideoElem = videoElemList.length > 0 && videoElemList[0].childNodes[0].nodeName === 'IFRAME';\n hasMediaElem = startNode.querySelectorAll('IMG').length > 0 || startNode.querySelectorAll('AUDIO').length > 0 || startNode.querySelectorAll('VIDEO').length > 0 || embedVideoElem;\n }\n if (!isNOU(startNode) && !isNOU(endNode) && startNode === endNode && startNode.tagName === 'LI' &&\n startNode.textContent.trim() === '' && !hasMediaElem) {\n if (startNode.innerHTML.indexOf(' ') >= 0) {\n return;\n }\n if (startNode.textContent.charCodeAt(0) === 65279) {\n startNode.textContent = '';\n }\n var startNodeParent = startNode.parentElement;\n if (isNOU(startNodeParent.parentElement.closest('UL')) && isNOU(startNodeParent.parentElement.closest('OL'))) {\n if (!isNOU(startNode.nextElementSibling)) {\n var nearBlockNode = this.parent.domNode.blockParentNode(startNode);\n this.parent.nodeCutter.GetSpliceNode(range, nearBlockNode);\n }\n var insertTag = void 0;\n if (e.enterAction === 'DIV') {\n insertTag = createElement('div');\n insertTag.innerHTML = '
';\n }\n else if (e.enterAction === 'P') {\n insertTag = createElement('p');\n insertTag.innerHTML = '
';\n }\n else {\n insertTag = createElement('br');\n }\n this.parent.domNode.insertAfter(insertTag, startNodeParent);\n e.event.preventDefault();\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, insertTag, 0);\n if (startNodeParent.textContent === '' && (startNodeParent.querySelectorAll('audio,video').length === 0)) {\n detach(startNodeParent);\n }\n else {\n detach(startNode);\n }\n }\n }\n };\n Lists.prototype.backspaceList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n startNode = startNode.nodeName === 'BR' ? startNode.parentElement : startNode;\n endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;\n if (startNode === endNode && !isNullOrUndefined(closest(startNode, 'li')) &&\n ((startNode.textContent.trim() === '' && startNode.textContent.charCodeAt(0) === 65279) ||\n (startNode.textContent.length === 1 && startNode.textContent.charCodeAt(0) === 8203))) {\n startNode.textContent = '';\n }\n if (startNode === endNode && startNode.tagName === 'LI' && startNode.textContent.length === 0 &&\n isNOU(startNode.previousElementSibling)) {\n startNode.removeAttribute('style');\n }\n if (startNode === endNode && startNode.textContent === '') {\n if (startNode.parentElement.tagName === 'LI' && endNode.parentElement.tagName === 'LI') {\n detach(startNode);\n }\n else if (startNode.closest('ul') || startNode.closest('ol')) {\n var parentList = !isNOU(startNode.closest('ul')) ? startNode.closest('ul') : startNode.closest('ol');\n if (parentList.firstElementChild === startNode && !isNOU(parentList.children[1]) &&\n (parentList.children[1].tagName === 'OL' || parentList.children[1].tagName === 'UL')) {\n if (parentList.tagName === parentList.children[1].tagName) {\n while (parentList.children[1].lastChild) {\n this.parent.domNode.insertAfter(parentList.children[1].lastChild, parentList.children[1]);\n }\n detach(parentList.children[1]);\n }\n else {\n parentList.parentElement.insertBefore(parentList.children[1], parentList);\n }\n }\n }\n }\n else if (!isNOU(startNode.firstChild) && startNode.firstChild.nodeName === 'BR' &&\n (!isNullOrUndefined(startNode.childNodes[1]) && (startNode.childNodes[1].nodeName === 'UL' ||\n startNode.childNodes[1].nodeName === 'OL'))) {\n var parentList = !isNOU(startNode.closest('ul')) ? startNode.closest('ul') : startNode.closest('ol');\n if (parentList.tagName === startNode.childNodes[1].nodeName) {\n while (startNode.childNodes[1].lastChild) {\n this.parent.domNode.insertAfter(startNode.children[1].lastChild, startNode);\n }\n detach(startNode.childNodes[1]);\n }\n else {\n parentList.parentElement.insertBefore(startNode.children[1], parentList);\n }\n }\n this.removeList(range, e);\n this.firstListBackSpace(range, e);\n };\n Lists.prototype.removeList = function (range, e) {\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n startNode = startNode.nodeName === 'BR' ? startNode.parentElement : startNode;\n endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;\n startNode = startNode.nodeName !== 'LI' && !isNOU(startNode.closest('LI')) ? startNode.closest('LI') : startNode;\n endNode = endNode.nodeName !== 'LI' && !isNOU(endNode.closest('LI')) ? endNode.closest('LI') : endNode;\n if (((range.commonAncestorContainer.nodeName === 'OL' || range.commonAncestorContainer.nodeName === 'UL' || range.commonAncestorContainer.nodeName === 'LI') &&\n isNOU(endNode.nextElementSibling) && endNode.textContent.length === range.endOffset &&\n isNOU(startNode.previousElementSibling) && range.startOffset === 0) ||\n (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement &&\n range.startOffset === 0 && range.endOffset === 1)) {\n if (Browser.userAgent.indexOf('Firefox') !== -1) {\n detach(range.commonAncestorContainer.childNodes[0]);\n }\n else if (range.commonAncestorContainer.nodeName === 'LI') {\n detach(range.commonAncestorContainer.parentElement);\n }\n else {\n detach(range.commonAncestorContainer);\n }\n e.event.preventDefault();\n }\n };\n Lists.prototype.onKeyUp = function () {\n if (!isNOU(this.commonLIParent) && !isNOU(this.commonLIParent.querySelector('.removeList'))) {\n var currentLIElem = this.commonLIParent.querySelector('.removeList');\n while (!isNOU(currentLIElem.firstChild)) {\n this.parent.domNode.insertAfter(currentLIElem.firstChild, currentLIElem);\n }\n detach(currentLIElem);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Lists.prototype.firstListBackSpace = function (range, _e) {\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n if (!isNOU(startNode.closest('OL'))) {\n this.commonLIParent = startNode.closest('OL');\n }\n else if (!isNOU(startNode.closest('UL'))) {\n this.commonLIParent = startNode.closest('UL');\n }\n if (startNode.nodeName === 'LI' && range.startOffset === 0 && range.endOffset === 0 &&\n isNOU(startNode.previousSibling) && !isNOU(this.commonLIParent) && isNOU(this.commonLIParent.previousSibling) &&\n (isNOU(this.commonLIParent.parentElement.closest('OL')) && isNOU(this.commonLIParent.parentElement.closest('UL')) &&\n isNOU(this.commonLIParent.parentElement.closest('LI')))) {\n var currentElem = createElement('P');\n currentElem.innerHTML = '​';\n startNode.classList.add('removeList');\n this.commonLIParent.parentElement.insertBefore(currentElem, this.commonLIParent);\n }\n };\n Lists.prototype.keyDownHandler = function (e) {\n if (e.event.which === 13) {\n this.enterList(e);\n }\n if (e.event.which === 32) {\n this.spaceList(e);\n }\n if (e.event.which === 8) {\n this.backspaceList(e);\n }\n if (e.event.which === 46 && e.event.action === 'delete') {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var commonAncestor = range.commonAncestorContainer;\n var startEle = range.startContainer;\n var endEle = range.endContainer;\n var startNode = startEle.nodeType === 3 ? startEle.parentElement : startEle;\n var endNode = endEle.nodeType === 3 ? endEle.parentElement : endEle;\n if ((commonAncestor.nodeName === 'UL' || commonAncestor.nodeName === 'OL') && startNode !== endNode\n && (!isNullOrUndefined(closest(startNode, 'ul')) || !isNullOrUndefined(closest(startNode, 'ol')))\n && (!isNullOrUndefined(closest(endNode, 'ul')) || !isNullOrUndefined(closest(endNode, 'ol')))\n && (commonAncestor.lastElementChild === closest(endNode, 'li')) && !range.collapsed) {\n detach(commonAncestor);\n }\n this.removeList(range, e);\n }\n if (e.event.which === 9) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n if (!(e.event.action && e.event.action === 'indent')) {\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n }\n var blockNodes = void 0;\n var startOffset = range.startOffset;\n var endOffset = range.endOffset;\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n if ((startNode === endNode && (startNode.nodeName === 'BR' || startNode.nodeName === '#text') &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(startNode.parentNode.tagName.toLocaleLowerCase()) >= 0)) {\n return;\n }\n else {\n if (!(e.event.action && e.event.action === 'indent')) {\n this.domNode.setMarker(this.saveSelection);\n }\n blockNodes = this.domNode.blockNodes();\n }\n var nodes = [];\n var isNested = true;\n for (var i = 0; i < blockNodes.length; i++) {\n if (blockNodes[i].parentNode.tagName === 'LI') {\n nodes.push(blockNodes[i].parentNode);\n }\n else if (blockNodes[i].tagName === 'LI' && blockNodes[i].childNodes[0].tagName !== 'P' &&\n (blockNodes[i].childNodes[0].tagName !== 'OL' &&\n blockNodes[i].childNodes[0].tagName !== 'UL')) {\n nodes.push(blockNodes[i]);\n }\n }\n if (nodes.length > 1 || nodes.length && ((startOffset === 0 && endOffset === 0) || e.ignoreDefault)) {\n e.event.preventDefault();\n e.event.stopPropagation();\n this.currentAction = this.getAction(nodes[0]);\n if (e.event.shiftKey) {\n this.revertList(nodes, e);\n this.revertClean();\n }\n else {\n isNested = this.nestedList(nodes);\n }\n if (isNested) {\n this.cleanNode();\n this.parent.editableElement.focus();\n }\n if (!(e.event.action && e.event.action === 'indent')) {\n this.saveSelection = this.domNode.saveMarker(this.saveSelection);\n this.saveSelection.restore();\n if (e.callBack) {\n e.callBack({\n requestType: this.currentAction,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes(),\n event: e.event\n });\n }\n }\n }\n else {\n if (!(e.event.action && e.event.action === 'indent')) {\n if (e.event && e.event.shiftKey && e.event.key === 'Tab') {\n e.event.action = 'tab';\n }\n this.saveSelection = this.domNode.saveMarker(this.saveSelection, e.event.action);\n this.saveSelection.restore();\n }\n }\n }\n else {\n switch (e.event.action) {\n case 'ordered-list':\n this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'unordered-list':\n this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n }\n };\n Lists.prototype.spaceKeyAction = function (e) {\n if (e.event.which === 32) {\n this.spaceList(e);\n }\n };\n Lists.prototype.getAction = function (element) {\n var parentNode = element.parentNode;\n return (parentNode.nodeName === 'OL' ? 'OL' : 'UL');\n };\n Lists.prototype.revertClean = function () {\n var collectionNodes = this.parent.editableElement.querySelectorAll('ul, ol');\n for (var i = 0; i < collectionNodes.length; i++) {\n var listNodes = collectionNodes[i].querySelectorAll('ul, ol');\n if (listNodes.length > 0) {\n for (var j = 0; j < listNodes.length; j++) {\n var prevSibling = listNodes[j].previousSibling;\n if (prevSibling && prevSibling.tagName === 'LI') {\n prevSibling.appendChild(listNodes[j]);\n }\n }\n }\n }\n };\n Lists.prototype.noPreviousElement = function (elements) {\n var firstNode;\n var firstNodeOL;\n var siblingListOL = elements.querySelectorAll('ol, ul');\n var siblingListLI = elements\n .querySelectorAll('li');\n var siblingListLIFirst = this.domNode.contents(siblingListLI[0])[0];\n if (siblingListLI.length > 0 && (siblingListLIFirst.nodeName === 'OL' || siblingListLIFirst.nodeName === 'UL')) {\n firstNode = siblingListLI[0];\n }\n else {\n firstNodeOL = siblingListOL[0];\n }\n if (firstNode) {\n for (var h = this.domNode.contents(elements)[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n prepend([h], firstNode);\n setStyleAttribute(elements, { 'list-style-type': 'none' });\n setStyleAttribute(firstNode, { 'list-style-type': '' });\n h = nextSibling;\n }\n }\n else if (firstNodeOL) {\n var nestedElement = createElement('li');\n prepend([nestedElement], firstNodeOL);\n for (var h = this.domNode.contents(elements)[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n nestedElement.appendChild(h);\n h = nextSibling;\n }\n prepend([firstNodeOL], elements.parentNode);\n detach(elements);\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n prepend([nestedElementLI], firstNodeOL.parentNode);\n append([firstNodeOL], nestedElementLI);\n }\n else {\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n prepend([nestedElementLI], elements.parentNode);\n var nestedElement = createElement(elements.parentNode.tagName);\n prepend([nestedElement], nestedElementLI);\n append([elements], nestedElement);\n }\n };\n Lists.prototype.nestedList = function (elements) {\n var isNested = false;\n for (var i = 0; i < elements.length; i++) {\n var prevSibling = this.domNode.getPreviousNode(elements[i]);\n if (prevSibling) {\n isNested = true;\n var firstNode = void 0;\n var firstNodeLI = void 0;\n var siblingListOL = elements[i].querySelectorAll('ol, ul');\n var siblingListLI = elements[i]\n .querySelectorAll('li');\n var siblingListLIFirst = this.domNode.contents(siblingListLI[0])[0];\n if (siblingListLI.length > 0 && (siblingListLIFirst.nodeName === 'OL' || siblingListLIFirst.nodeName === 'UL')) {\n firstNodeLI = siblingListLI[0];\n }\n else {\n firstNode = siblingListOL[0];\n }\n if (firstNode) {\n var nestedElement = createElement('li');\n prepend([nestedElement], firstNode);\n for (var h = this.domNode.contents(elements[i])[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n nestedElement.appendChild(h);\n h = nextSibling;\n }\n append([firstNode], prevSibling);\n detach(elements[i]);\n }\n else if (firstNodeLI) {\n if (prevSibling.tagName === 'LI') {\n for (var h = this.domNode.contents(elements[i])[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n prepend([h], firstNodeLI);\n setStyleAttribute(elements[i], { 'list-style-type': 'none' });\n setStyleAttribute(firstNodeLI, { 'list-style-type': '' });\n h = nextSibling;\n }\n append([firstNodeLI.parentNode], prevSibling);\n detach(elements[i]);\n }\n }\n else {\n if (prevSibling.tagName === 'LI') {\n var nestedElement = createElement(elements[i].parentNode.tagName);\n append([nestedElement], prevSibling);\n append([elements[i]], nestedElement);\n }\n else if (prevSibling.tagName === 'OL' || prevSibling.tagName === 'UL') {\n append([elements[i]], prevSibling);\n }\n }\n }\n else {\n var element = elements[i];\n isNested = true;\n this.noPreviousElement(element);\n }\n }\n return isNested;\n };\n Lists.prototype.applyListsHandler = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n if (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement) {\n var startChildNodes = range.startContainer.childNodes;\n var startNode = ((startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) :\n range.startOffset]) || range.startContainer);\n var endNode = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) :\n range.endOffset] || range.endContainer);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var lastSelectionNode = endNode.lastChild.nodeName === 'BR' ? (isNOU(endNode.lastChild.previousSibling) ? endNode\n : endNode.lastChild.previousSibling) : endNode.lastChild;\n while (!isNOU(lastSelectionNode) && lastSelectionNode.nodeName !== '#text' && lastSelectionNode.nodeName !== 'IMG' &&\n lastSelectionNode.nodeName !== 'BR' && lastSelectionNode.nodeName !== 'HR') {\n lastSelectionNode = lastSelectionNode.lastChild;\n }\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startNode, lastSelectionNode, 0, lastSelectionNode.textContent.length);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n }\n if (range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement &&\n range.startOffset === range.endOffset && range.startOffset === 0 &&\n this.parent.editableElement.textContent.length === 0 && (this.parent.editableElement.childNodes[0].nodeName !== 'TABLE' &&\n this.parent.editableElement.childNodes[0].nodeName !== 'IMG')) {\n var focusNode = range.startContainer.childNodes[0];\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, focusNode, focusNode, 0, 0);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n }\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.currentAction = e.subCommand;\n this.currentAction = e.subCommand = this.currentAction === 'NumberFormatList' ? 'OL' : this.currentAction === 'BulletFormatList' ? 'UL' : this.currentAction;\n this.domNode.setMarker(this.saveSelection);\n var listsNodes = this.domNode.blockNodes();\n if (e.enterAction === 'BR') {\n this.setSelectionBRConfig();\n var allSelectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument);\n var selectedNodes = this.parent.nodeSelection.getSelectionNodes(allSelectedNode);\n var currentFormatNodes = [];\n if (selectedNodes.length === 0) {\n selectedNodes.push(listsNodes[0]);\n }\n for (var i = 0; i < selectedNodes.length; i++) {\n var currentNode = selectedNodes[i];\n var previousCurrentNode = void 0;\n while (!this.parent.domNode.isBlockNode(currentNode) && currentNode !== this.parent.editableElement) {\n previousCurrentNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n if (this.parent.domNode.isBlockNode(currentNode) && currentNode === this.parent.editableElement) {\n currentFormatNodes.push(previousCurrentNode);\n }\n }\n for (var i = 0; i < currentFormatNodes.length; i++) {\n if (!this.parent.domNode.isBlockNode(currentFormatNodes[i])) {\n var currentNode = currentFormatNodes[i];\n var previousNode = currentNode;\n while (currentNode === this.parent.editableElement) {\n previousNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n var tempElem = void 0;\n if (this.parent.domNode.isBlockNode(previousNode.parentElement) &&\n previousNode.parentElement === this.parent.editableElement) {\n tempElem = createElement('p');\n previousNode.parentElement.insertBefore(tempElem, previousNode);\n tempElem.appendChild(previousNode);\n }\n else {\n tempElem = previousNode;\n }\n var preNode = tempElem.previousSibling;\n while (!isNOU(preNode) && preNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(preNode)) {\n tempElem.firstChild.parentElement.insertBefore(preNode, tempElem.firstChild);\n preNode = tempElem.previousSibling;\n }\n if (!isNOU(preNode) && preNode.nodeName === 'BR') {\n detach(preNode);\n }\n var postNode = tempElem.nextSibling;\n while (!isNOU(postNode) && postNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(postNode)) {\n tempElem.appendChild(postNode);\n postNode = tempElem.nextSibling;\n }\n if (!isNOU(postNode) && postNode.nodeName === 'BR') {\n detach(postNode);\n }\n }\n }\n this.setSelectionBRConfig();\n listsNodes = this.parent.domNode.blockNodes();\n }\n for (var i = 0; i < listsNodes.length; i++) {\n if (listsNodes[i].tagName === 'TABLE' && !range.collapsed) {\n listsNodes.splice(i, 1);\n }\n if (listsNodes.length > 0 && listsNodes[i].tagName !== 'LI'\n && 'LI' === listsNodes[i].parentNode.tagName) {\n listsNodes[i] = listsNodes[i].parentNode;\n }\n }\n this.applyLists(listsNodes, this.currentAction, e.selector, e.item, e);\n if (e.callBack) {\n e.callBack({\n requestType: this.currentAction,\n event: e.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n Lists.prototype.setSelectionBRConfig = function () {\n var startElem = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endElem = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (isNOU(endElem)) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, startElem, 0);\n }\n else {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startElem, endElem, 0, 0);\n }\n };\n Lists.prototype.applyLists = function (elements, type, selector, item, e) {\n var isReverse = true;\n if (this.isRevert(elements, type, item) && isNOU(item)) {\n this.revertList(elements, e);\n this.removeEmptyListElements();\n }\n else {\n this.checkLists(elements, type, item);\n for (var i = 0; i < elements.length; i++) {\n if (!isNOU(item) && !isNOU(item.listStyle)) {\n if (item.listStyle === 'listImage') {\n setStyleAttribute(elements[i], { 'list-style-image': item.listImage });\n }\n else {\n setStyleAttribute(elements[i], { 'list-style-image': 'none' });\n setStyleAttribute(elements[i], { 'list-style-type': item.listStyle.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() });\n }\n }\n if (elements[i].getAttribute('contenteditable') === 'true'\n && elements[i].childNodes.length === 1 && elements[i].childNodes[0].nodeName === 'TABLE') {\n var listEle = document.createElement(type);\n listEle.innerHTML = '

  • ';\n elements[i].appendChild(listEle);\n }\n else if ('LI' !== elements[i].tagName && isNOU(item)) {\n isReverse = false;\n var elemAtt = elements[i].tagName === 'IMG' ? '' : this.domNode.attributes(elements[i]);\n var openTag = '<' + type + '>';\n var closeTag = '';\n var newTag = 'li' + elemAtt;\n var replaceHTML = (elements[i].tagName.toLowerCase() === CONSTANT.DEFAULT_TAG ?\n elements[i].innerHTML : elements[i].outerHTML);\n var innerHTML = this.domNode.createTagString(newTag, null, replaceHTML);\n var collectionString = openTag + innerHTML + closeTag;\n this.domNode.replaceWith(elements[i], collectionString);\n }\n else if (!isNOU(item) && 'LI' !== elements[i].tagName) {\n // eslint-disable-next-line\n isReverse = false;\n var elemAtt = elements[i].tagName === 'IMG' ? '' : this.domNode.attributes(elements[i]);\n var openTag = '<' + type + elemAtt + '>';\n var closeTag = '';\n var newTag = 'li';\n var replaceHTML = (elements[i].tagName.toLowerCase() === CONSTANT.DEFAULT_TAG ?\n elements[i].innerHTML : elements[i].outerHTML);\n var innerHTML = this.domNode.createTagString(newTag, null, replaceHTML);\n var collectionString = openTag + innerHTML + closeTag;\n this.domNode.replaceWith(elements[i], collectionString);\n }\n }\n }\n this.cleanNode();\n this.parent.editableElement.focus();\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, selector);\n }\n this.saveSelection = this.domNode.saveMarker(this.saveSelection);\n this.saveSelection.restore();\n };\n Lists.prototype.removeEmptyListElements = function () {\n var listElem = this.parent.editableElement.querySelectorAll('ol, ul');\n for (var i = 0; i < listElem.length; i++) {\n if (listElem[i].textContent.trim() === '') {\n detach(listElem[i]);\n }\n }\n };\n Lists.prototype.isRevert = function (nodes, tagName, item) {\n var isRevert = true;\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].tagName !== 'LI') {\n return false;\n }\n if (nodes[i].parentNode.tagName !== tagName ||\n isNOU(item) && nodes[i].parentNode.style.listStyleType !== '') {\n isRevert = false;\n }\n }\n return isRevert;\n };\n Lists.prototype.checkLists = function (nodes, tagName, item) {\n var nodesTemp = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i].parentNode;\n if (!isNOU(item) && 'LI' === nodes[i].tagName && !isNOU(item.listStyle)) {\n if (item.listStyle === 'listImage') {\n setStyleAttribute(node, { 'list-style-image': item.listImage });\n }\n else {\n setStyleAttribute(node, { 'list-style-image': 'none' });\n setStyleAttribute(node, { 'list-style-type': item.listStyle.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() });\n }\n }\n if ((nodes[i].tagName === 'LI' && node.tagName !== tagName && nodesTemp.indexOf(node) < 0) ||\n (nodes[i].tagName === 'LI' && node.tagName === tagName && nodesTemp.indexOf(node) < 0 && item !== null)) {\n nodesTemp.push(node);\n }\n if (isNOU(item) && (node.tagName === tagName ||\n ((node.tagName === 'UL' || node.tagName === 'OL') && node.hasAttribute('style')))) {\n if (node.hasAttribute('style')) {\n node.removeAttribute('style');\n }\n }\n }\n for (var j = nodesTemp.length - 1; j >= 0; j--) {\n var h = nodesTemp[j];\n var replace = '<' + tagName.toLowerCase() + ' '\n + this.domNode.attributes(h) + '>' + h.innerHTML + '';\n this.domNode.replaceWith(nodesTemp[j], replace);\n }\n };\n Lists.prototype.cleanNode = function () {\n var liParents = this.parent.editableElement.querySelectorAll('ol + ol, ul + ul');\n for (var c = 0; c < liParents.length; c++) {\n var node = liParents[c];\n if (this.domNode.isList(node.previousElementSibling) &&\n this.domNode.openTagString(node) === this.domNode.openTagString(node.previousElementSibling)) {\n var contentNodes = this.domNode.contents(node);\n for (var f = 0; f < contentNodes.length; f++) {\n node.previousElementSibling.appendChild(contentNodes[f]);\n }\n node.parentNode.removeChild(node);\n }\n else if (!isNOU(node.getAttribute('level'))) {\n if (node.tagName === node.previousElementSibling.tagName) {\n node.previousElementSibling.lastChild.append(node);\n }\n }\n }\n };\n Lists.prototype.findUnSelected = function (temp, elements) {\n temp = temp.slice().reverse();\n if (temp.length > 0) {\n var rightIndent = [];\n var indentElements = [];\n var lastElement = elements[elements.length - 1];\n var lastElementChild = [];\n var childElements = [];\n lastElementChild = (lastElement.childNodes);\n for (var z = 0; z < lastElementChild.length; z++) {\n if (lastElementChild[z].tagName === 'OL' || lastElementChild[z].tagName === 'UL') {\n var childLI = lastElementChild[z]\n .querySelectorAll('li');\n if (childLI.length > 0) {\n for (var y = 0; y < childLI.length; y++) {\n childElements.push(childLI[y]);\n }\n }\n }\n }\n for (var i = 0; i < childElements.length; i++) {\n var count = 0;\n for (var j = 0; j < temp.length; j++) {\n if (!childElements[i].contains((temp[j]))) {\n count = count + 1;\n }\n }\n if (count === temp.length) {\n indentElements.push(childElements[i]);\n }\n }\n if (indentElements.length > 0) {\n for (var x = 0; x < indentElements.length; x++) {\n if (this.domNode.contents(indentElements[x])[0].nodeName !== 'OL' &&\n this.domNode.contents(indentElements[x])[0].nodeName !== 'UL') {\n rightIndent.push(indentElements[x]);\n }\n }\n }\n if (rightIndent.length > 0) {\n this.nestedList(rightIndent);\n }\n }\n };\n Lists.prototype.revertList = function (elements, e) {\n var temp = [];\n for (var i = elements.length - 1; i >= 0; i--) {\n for (var j = i - 1; j >= 0; j--) {\n if (elements[j].contains((elements[i])) || elements[j] === elements[i]) {\n temp.push(elements[i]);\n elements.splice(i, 1);\n break;\n }\n }\n }\n this.findUnSelected(temp, elements);\n var viewNode = [];\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (this.domNode.contents(element)[0].nodeType === 3 && this.domNode.contents(element)[0].textContent.trim().length === 0) {\n detach(this.domNode.contents(element)[0]);\n }\n var parentNode = elements[i].parentNode;\n var className = element.getAttribute('class');\n if (temp.length === 0) {\n var siblingList = elements[i].querySelectorAll('ul, ol');\n var firstNode = siblingList[0];\n if (firstNode) {\n var child = firstNode\n .querySelectorAll('li');\n if (child) {\n var nestedElement = createElement(firstNode.tagName);\n append([nestedElement], firstNode.parentNode);\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n append([nestedElementLI], nestedElement);\n append([firstNode], nestedElementLI);\n }\n }\n }\n if (element.parentNode.insertBefore(this.closeTag(parentNode.tagName), element),\n 'LI' === parentNode.parentNode.tagName || 'OL' === parentNode.parentNode.tagName ||\n 'UL' === parentNode.parentNode.tagName) {\n element.parentNode.insertBefore(this.closeTag('LI'), element);\n }\n else {\n var classAttr = '';\n if (className) {\n // eslint-disable-next-line\n classAttr += ' class=\"' + className + '\"';\n }\n if (CONSTANT.DEFAULT_TAG && 0 === element.querySelectorAll(CONSTANT.BLOCK_TAGS.join(', ')).length) {\n var wrapperclass = isNullOrUndefined(className) ? ' class=\"e-rte-wrap-inner\"' :\n ' class=\"' + className + ' e-rte-wrap-inner\"';\n var wrapper = '<' + CONSTANT.DEFAULT_TAG + wrapperclass +\n this.domNode.attributes(parentNode) + '>';\n if (e.enterAction !== 'BR') {\n this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));\n }\n }\n else if (this.domNode.contents(element)[0].nodeType === 3) {\n var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));\n this.domNode.replaceWith(this.domNode.contents(element)[0], replace);\n }\n else if (this.domNode.contents(element)[0].classList.contains(markerClassName.startSelection) ||\n this.domNode.contents(element)[0].classList.contains(markerClassName.endSelection)) {\n var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.domNode.contents(element)[0].outerHTML);\n this.domNode.replaceWith(this.domNode.contents(element)[0], replace);\n }\n else {\n var childNode = element.firstChild;\n className = childNode.getAttribute('class');\n attributes(childNode, this.domNode.rawAttributes(parentNode));\n if (className && childNode.getAttribute('class')) {\n attributes(childNode, { 'class': className + ' ' + childNode.getAttribute('class') });\n }\n }\n append([this.openTag('LI')], element);\n prepend([this.closeTag('LI')], element);\n }\n this.domNode.insertAfter(this.openTag(parentNode.tagName), element);\n if (parentNode.parentNode.tagName === 'LI') {\n parentNode = parentNode.parentNode.parentNode;\n }\n if (viewNode.indexOf(parentNode) < 0) {\n viewNode.push(parentNode);\n }\n }\n for (var i = 0; i < viewNode.length; i++) {\n var node = viewNode[i];\n var nodeInnerHtml = node.innerHTML;\n var closeTag = /<\\/span>/g;\n var openTag = /<\\/span>/g;\n nodeInnerHtml = nodeInnerHtml.replace(closeTag, '');\n nodeInnerHtml = nodeInnerHtml.replace(openTag, '<$1 ' + this.domNode.attributes(node) + '>');\n this.domNode.replaceWith(node, this.domNode.openTagString(node) + nodeInnerHtml.trim() + this.domNode.closeTagString(node));\n }\n var emptyUl = this.parent.editableElement.querySelectorAll('ul:empty, ol:empty');\n for (var i = 0; i < emptyUl.length; i++) {\n detach(emptyUl[i]);\n }\n var emptyLi = this.parent.editableElement.querySelectorAll('li:empty');\n for (var i = 0; i < emptyLi.length; i++) {\n detach(emptyLi[i]);\n }\n };\n Lists.prototype.openTag = function (type) {\n return this.domNode.parseHTMLFragment('');\n };\n Lists.prototype.closeTag = function (type) {\n return this.domNode.parseHTMLFragment('');\n };\n return Lists;\n}());\nexport { Lists };\n","/**\n * Node appending methods.\n *\n * @hidden\n */\nvar InsertMethods = /** @class */ (function () {\n function InsertMethods() {\n }\n /**\n * WrapBefore method\n *\n * @param {Text} textNode - specifies the text node\n * @param {HTMLElement} parentNode - specifies the parent node\n * @param {boolean} isAfter - specifies the boolean value\n * @returns {Text} - returns the text value\n * @hidden\n\n */\n InsertMethods.WrapBefore = function (textNode, parentNode, isAfter) {\n parentNode.innerText = textNode.textContent;\n //eslint-disable-next-line\n (!isAfter) ? this.AppendBefore(parentNode, textNode) : this.AppendBefore(parentNode, textNode, true);\n if (textNode.parentNode) {\n textNode.parentNode.removeChild(textNode);\n }\n return parentNode.childNodes[0];\n };\n /**\n * Wrap method\n *\n * @param {HTMLElement} childNode - specifies the child node\n * @param {HTMLElement} parentNode - specifies the parent node.\n * @returns {HTMLElement} - returns the element\n * @hidden\n\n */\n InsertMethods.Wrap = function (childNode, parentNode) {\n this.AppendBefore(parentNode, childNode);\n parentNode.appendChild(childNode);\n return childNode;\n };\n /**\n * unwrap method\n *\n * @param {Node} node - specifies the node element.\n * @returns {Node[]} - returns the array of value\n * @hidden\n\n */\n InsertMethods.unwrap = function (node) {\n var parent = node.parentNode;\n var child = [];\n for (; node.firstChild; null) {\n child.push(parent.insertBefore(node.firstChild, node));\n }\n parent.removeChild(node);\n return child;\n };\n /**\n * AppendBefore method\n *\n * @param {HTMLElement} textNode - specifies the element\n * @param {HTMLElement} parentNode - specifies the parent node\n * @param {boolean} isAfter - specifies the boolean value\n * @returns {void}\n * @hidden\n\n */\n InsertMethods.AppendBefore = function (textNode, parentNode, isAfter) {\n return (parentNode.parentNode) ? ((!isAfter) ? parentNode.parentNode.insertBefore(textNode, parentNode)\n : parentNode.parentNode.insertBefore(textNode, parentNode.nextSibling)) :\n parentNode;\n };\n return InsertMethods;\n}());\nexport { InsertMethods };\n","import { NodeSelection } from './../../selection/index';\nimport { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { InsertMethods } from './insert-methods';\n/**\n * Split the Node based on selection\n *\n * @hidden\n\n */\nvar NodeCutter = /** @class */ (function () {\n function NodeCutter() {\n this.enterAction = 'P';\n this.position = -1;\n this.nodeSelection = new NodeSelection();\n }\n // Split Selection Node\n /**\n * GetSpliceNode method\n *\n * @param {Range} range - specifies the range\n * @param {HTMLElement} node - specifies the node element.\n * @returns {Node} - returns the node value\n * @hidden\n\n */\n NodeCutter.prototype.GetSpliceNode = function (range, node) {\n node = this.SplitNode(range, node, true);\n node = this.SplitNode(range, node, false);\n return node;\n };\n /**\n * @param {Range} range - specifies the range\n * @param {HTMLElement} node - specifies the node element.\n * @param {boolean} isCollapsed - specifies the boolean value\n * @returns {HTMLElement} - returns the element\n * @hidden\n\n */\n NodeCutter.prototype.SplitNode = function (range, node, isCollapsed) {\n if (node) {\n var clone = range.cloneRange();\n var parent_1 = node.parentNode;\n var index = this.nodeSelection.getIndex(node);\n clone.collapse(isCollapsed);\n // eslint-disable-next-line\n (isCollapsed) ? clone.setStartBefore(node) : clone.setEndAfter(node);\n var fragment = clone.extractContents();\n if (isCollapsed) {\n node = parent_1.childNodes[index];\n fragment = this.spliceEmptyNode(fragment, false);\n if (fragment && fragment.childNodes.length > 0) {\n var isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG'\n && this.isRteElm(fragment) && fragment.textContent === '') ? true : false;\n if (!isEmpty) {\n if (node) {\n InsertMethods.AppendBefore(fragment, node);\n }\n else {\n parent_1.appendChild(fragment);\n var divNode = document.createElement('div');\n divNode.innerHTML = '';\n node = divNode.firstChild;\n parent_1.appendChild(node);\n }\n }\n }\n }\n else {\n node = parent_1.childNodes.length > 1 ? parent_1.childNodes[index] :\n parent_1.childNodes[0];\n fragment = this.spliceEmptyNode(fragment, true);\n if (fragment && fragment.childNodes.length > 0) {\n var isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG'\n && this.isRteElm(fragment) && fragment.textContent === '') ? true : false;\n if (!isEmpty) {\n if (node) {\n InsertMethods.AppendBefore(fragment, node, true);\n }\n else {\n parent_1.appendChild(fragment);\n var divNode = document.createElement('div');\n divNode.innerHTML = '';\n parent_1.insertBefore(divNode.firstChild, parent_1.firstChild);\n node = parent_1.firstChild;\n }\n }\n }\n }\n return node;\n }\n else {\n return null;\n }\n };\n NodeCutter.prototype.isRteElm = function (fragment) {\n var result = true;\n if (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG') {\n var firstChild = fragment.childNodes[0];\n for (var i = 0; !isNOU(firstChild.childNodes) && i < firstChild.childNodes.length; i++) {\n if (firstChild.childNodes[i].nodeName === 'IMG' || (firstChild.childNodes[i].nodeName === 'SPAN' &&\n (firstChild.childNodes[i].classList.contains('e-video-wrap') ||\n firstChild.childNodes[i].classList.contains('e-embed-video-wrap') ||\n firstChild.childNodes[i].classList.contains('e-audio-wrap')))) {\n result = false;\n }\n }\n }\n else {\n result = true;\n }\n return result;\n };\n NodeCutter.prototype.spliceEmptyNode = function (fragment, isStart) {\n var len;\n if (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName === '#text' &&\n fragment.childNodes[0].textContent === '' || fragment.textContent === '') {\n len = -1;\n }\n else {\n len = fragment.childNodes.length - 1;\n }\n if (len > -1 && !isStart) {\n this.spliceEmptyNode(fragment.childNodes[len], isStart);\n }\n else if (len > -1) {\n this.spliceEmptyNode(fragment.childNodes[0], isStart);\n }\n else if (fragment.nodeType !== 3 && fragment.nodeType !== 11 && fragment.nodeName !== 'IMG' && !(fragment.classList.contains('e-video-wrap')) && !(fragment.classList.contains('e-audio-wrap'))) {\n fragment.parentNode.removeChild(fragment);\n }\n return fragment;\n };\n // Cursor Position split\n NodeCutter.prototype.GetCursorStart = function (indexes, index, isStart) {\n indexes = (isStart) ? indexes : indexes.reverse();\n var position = indexes[0];\n for (var num = 0; num < indexes.length && ((isStart) ? (indexes[num] < index) : (indexes[num] >= index)); num++) {\n position = indexes[num];\n }\n return position;\n };\n /**\n * GetCursorRange method\n *\n * @param {Document} docElement - specifies the document\n * @param {Range} range - specifies the range\n * @param {Node} node - specifies the node.\n * @returns {Range} - returns the range value\n * @hidden\n\n */\n NodeCutter.prototype.GetCursorRange = function (docElement, range, node) {\n var cursorRange = docElement.createRange();\n var indexes = [];\n indexes.push(0);\n var str = this.TrimLineBreak(node.data);\n var index = str.indexOf(' ', 0);\n while (index !== -1) {\n if (indexes.indexOf(index) < 0) {\n indexes.push(index);\n }\n if (new RegExp('\\\\s').test(str[index - 1]) && (indexes.indexOf(index - 1) < 0)) {\n indexes.push(index - 1);\n }\n if (new RegExp('\\\\s').test(str[index + 1])) {\n indexes.push(index + 1);\n }\n index = str.indexOf(' ', (index + 1));\n }\n indexes.push(str.length);\n if ((indexes.indexOf(range.startOffset) >= 0)\n || ((indexes.indexOf(range.startOffset - 1) >= 0) && (range.startOffset !== 1\n || (range.startOffset === 1 && new RegExp('\\\\s').test(str[0])))\n || ((indexes[indexes.length - 1] - 1) === range.startOffset))) {\n cursorRange = range;\n this.position = 1;\n }\n else {\n var startOffset = this.GetCursorStart(indexes, range.startOffset, true);\n this.position = range.startOffset - startOffset;\n cursorRange.setStart(range.startContainer, startOffset);\n cursorRange.setEnd(range.startContainer, this.GetCursorStart(indexes, range.startOffset, false));\n }\n return cursorRange;\n };\n /**\n * GetCursorNode method\n *\n * @param {Document} docElement - specifies the document\n * @param {Range} range - specifies the range\n * @param {Node} node - specifies the node.\n * @returns {Node} - returns the node value\n * @hidden\n\n */\n NodeCutter.prototype.GetCursorNode = function (docElement, range, node) {\n return this.GetSpliceNode(this.GetCursorRange(docElement, range, node), node);\n };\n /**\n * TrimLineBreak method\n *\n * @param {string} line - specifies the string value.\n * @returns {string} - returns the string\n * @hidden\n\n */\n NodeCutter.prototype.TrimLineBreak = function (line) {\n return line.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n };\n return NodeCutter;\n}());\nexport { NodeCutter };\n","import * as EVENTS from './../../common/constant';\nimport { isNullOrUndefined as isNOU, detach, createElement, closest } from '@syncfusion/ej2-base';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nimport { markerClassName } from './dom-node';\nimport { NodeCutter } from './nodecutter';\n/**\n * Formats internal component\n *\n * @hidden\n\n */\nvar Formats = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element.\n * @hidden\n\n */\n function Formats(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n Formats.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.FORMAT_TYPE, this.applyFormats, this);\n this.parent.observer.on(EVENTS.KEY_UP_HANDLER, this.onKeyUp, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Formats.prototype.getParentNode = function (node) {\n for (; node.parentNode && node.parentNode !== this.parent.editableElement; null) {\n node = node.parentNode;\n }\n return node;\n };\n Formats.prototype.onKeyUp = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var endCon = range.endContainer;\n var lastChild = endCon.lastChild;\n if (e.event.which === 13 && range.startContainer === endCon && endCon.nodeType !== 3) {\n var pTag = createElement('p');\n pTag.innerHTML = '
    ';\n if (!isNOU(lastChild) && lastChild && lastChild.nodeName === 'BR' && (lastChild.previousSibling && lastChild.previousSibling.nodeName === 'TABLE')) {\n endCon.replaceChild(pTag, lastChild);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, pTag, 0);\n }\n else {\n var brNode = this.parent.nodeSelection.getSelectionNodeCollectionBr(range)[0];\n if (!isNOU(brNode) && brNode.nodeName === 'BR' && (brNode.previousSibling && brNode.previousSibling.nodeName === 'TABLE')) {\n endCon.replaceChild(pTag, brNode);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, pTag, 0);\n }\n }\n }\n };\n Formats.prototype.onKeyDown = function (e) {\n if (e.event.which === 13) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startCon = (range.startContainer.textContent.length === 0 || range.startContainer.nodeName === 'PRE')\n ? range.startContainer : range.startContainer.parentElement;\n var endCon = (range.endContainer.textContent.length === 0 || range.endContainer.nodeName === 'PRE')\n ? range.endContainer : range.endContainer.parentElement;\n var preElem = closest(startCon, 'pre');\n var endPreElem = closest(endCon, 'pre');\n var liParent = !isNOU(preElem) && !isNOU(preElem.parentElement) && preElem.parentElement.tagName === 'LI';\n if (liParent) {\n return;\n }\n if (((isNOU(preElem) && !isNOU(endPreElem)) || (!isNOU(preElem) && isNOU(endPreElem)))) {\n e.event.preventDefault();\n this.deleteContent(range);\n this.removeCodeContent(range);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, endCon, 0);\n }\n if (e.event.which === 13 && !isNOU(preElem) && !isNOU(endPreElem)) {\n e.event.preventDefault();\n this.deleteContent(range);\n this.removeCodeContent(range);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var lastEmpty = range.startContainer.childNodes[range.endOffset];\n var lastBeforeBr = range.startContainer.childNodes[range.endOffset - 1];\n var startParent = range.startContainer;\n if (!isNOU(lastEmpty) && !isNOU(lastBeforeBr) && isNOU(lastEmpty.nextSibling) &&\n lastEmpty.nodeName === 'BR' && lastBeforeBr.nodeName === 'BR') {\n this.paraFocus(range.startContainer, e.enterAction);\n }\n else if ((startParent.textContent.charCodeAt(0) === 8203 &&\n startParent.textContent.length === 1) || startParent.textContent.length === 0) {\n //Double enter with any parent tag for the node\n while (startParent.parentElement.nodeName !== 'PRE' &&\n (startParent.textContent.length === 1 || startParent.textContent.length === 0)) {\n startParent = startParent.parentElement;\n }\n if (!isNOU(startParent.previousSibling) && startParent.previousSibling.nodeName === 'BR' &&\n isNOU(startParent.nextSibling)) {\n this.paraFocus(startParent.parentElement);\n }\n else {\n this.isNotEndCursor(preElem, range);\n }\n }\n else {\n //Cursor at start and middle\n this.isNotEndCursor(preElem, range);\n }\n }\n }\n };\n Formats.prototype.removeCodeContent = function (range) {\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(65279), 'g');\n if (!isNOU(range.endContainer.textContent.match(regEx))) {\n var pointer = range.endContainer.textContent.charCodeAt(range.endOffset - 1) === 65279 ?\n range.endOffset - 2 : range.endOffset;\n range.endContainer.textContent = range.endContainer.textContent.replace(regEx, '');\n if (range.endContainer.textContent === '') {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, range.endContainer.parentElement, 0);\n }\n else {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, range.endContainer, pointer);\n }\n }\n };\n Formats.prototype.deleteContent = function (range) {\n if (range.startContainer !== range.endContainer || range.startOffset !== range.endOffset) {\n range.deleteContents();\n }\n };\n Formats.prototype.paraFocus = function (referNode, enterAction) {\n var insertTag;\n if (enterAction === 'DIV') {\n insertTag = createElement('div');\n insertTag.innerHTML = '
    ';\n }\n else if (enterAction === 'BR') {\n insertTag = createElement('br');\n }\n else {\n insertTag = createElement('p');\n insertTag.innerHTML = '
    ';\n }\n this.parent.domNode.insertAfter(insertTag, referNode);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, insertTag, 0);\n detach(referNode.lastChild);\n };\n Formats.prototype.isNotEndCursor = function (preElem, range) {\n var nodeCutter = new NodeCutter();\n var isEnd = range.startOffset === preElem.lastChild.textContent.length &&\n preElem.lastChild.textContent === range.startContainer.textContent;\n //Cursor at start point\n if (preElem.textContent.indexOf(range.startContainer.textContent) === 0 &&\n ((range.startOffset === 0 && range.endOffset === 0) || range.startContainer.nodeName === 'PRE')) {\n this.insertMarker(preElem, range);\n var brTag = createElement('br');\n preElem.childNodes[range.endOffset].parentElement.insertBefore(brTag, preElem.childNodes[range.endOffset]);\n }\n else {\n //Cursor at middle\n var cloneNode = nodeCutter.SplitNode(range, preElem, true);\n this.insertMarker(preElem, range);\n var previousSib = preElem.previousElementSibling;\n if (previousSib.tagName === 'PRE') {\n previousSib.insertAdjacentHTML('beforeend', '
    ' + cloneNode.innerHTML);\n detach(preElem);\n }\n }\n //To place the cursor position\n this.setCursorPosition(isEnd, preElem);\n };\n Formats.prototype.setCursorPosition = function (isEnd, preElem) {\n var isEmpty = false;\n var markerElem = this.parent.editableElement.querySelector('.tempSpan');\n var mrkParentElem = markerElem.parentElement;\n // eslint-disable-next-line\n markerElem.parentNode.textContent === '' ? isEmpty = true :\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n if (isEnd) {\n if (isEmpty) {\n //Enter press when pre element is empty\n if (mrkParentElem === preElem) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n detach(markerElem);\n }\n else {\n this.focusSelectionParent(markerElem, mrkParentElem);\n }\n }\n else {\n var brElm = createElement('br');\n this.parent.domNode.insertAfter(brElm, markerElem);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n detach(markerElem);\n }\n }\n else {\n // eslint-disable-next-line\n isEmpty ? this.focusSelectionParent(markerElem, mrkParentElem) : detach(markerElem);\n }\n };\n Formats.prototype.focusSelectionParent = function (markerElem, tempSpanPElem) {\n detach(markerElem);\n tempSpanPElem.innerHTML = '\\u200B';\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, tempSpanPElem, 0);\n };\n Formats.prototype.insertMarker = function (preElem, range) {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n if (range.startContainer.nodeName === 'PRE') {\n preElem.childNodes[range.endOffset].parentElement.insertBefore(tempSpan, preElem.childNodes[range.endOffset]);\n }\n else {\n range.startContainer.parentElement.insertBefore(tempSpan, range.startContainer);\n }\n };\n Formats.prototype.applyFormats = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var isSelectAll = false;\n if (this.parent.editableElement === range.endContainer &&\n !isNOU(this.parent.editableElement.children[range.endOffset - 1]) &&\n this.parent.editableElement.children[range.endOffset - 1].tagName === 'TABLE' && !range.collapsed) {\n isSelectAll = true;\n }\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.parent.domNode.setMarker(save);\n var formatsNodes = this.parent.domNode.blockNodes();\n if (e.enterAction === 'BR') {\n this.setSelectionBRConfig();\n var allSelectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument);\n var selectedNodes = this.parent.nodeSelection.getSelectionNodes(allSelectedNode);\n var currentFormatNodes = [];\n if (selectedNodes.length === 0) {\n selectedNodes.push(formatsNodes[0]);\n }\n for (var i = 0; i < selectedNodes.length; i++) {\n var currentNode = selectedNodes[i];\n var previousCurrentNode = void 0;\n while (!this.parent.domNode.isBlockNode(currentNode) && currentNode !== this.parent.editableElement) {\n previousCurrentNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n if (this.parent.domNode.isBlockNode(currentNode) && currentNode === this.parent.editableElement) {\n currentFormatNodes.push(previousCurrentNode);\n }\n }\n for (var i = 0; i < currentFormatNodes.length; i++) {\n if (!this.parent.domNode.isBlockNode(currentFormatNodes[i])) {\n var currentNode = currentFormatNodes[i];\n var previousNode = currentNode;\n while (currentNode === this.parent.editableElement) {\n previousNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n var tempElem = void 0;\n if (this.parent.domNode.isBlockNode(previousNode.parentElement) &&\n previousNode.parentElement === this.parent.editableElement) {\n tempElem = createElement('div');\n previousNode.parentElement.insertBefore(tempElem, previousNode);\n tempElem.appendChild(previousNode);\n }\n else {\n tempElem = previousNode;\n }\n var preNode = tempElem.previousSibling;\n while (!isNOU(preNode) && preNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(preNode)) {\n tempElem.firstChild.parentElement.insertBefore(preNode, tempElem.firstChild);\n preNode = tempElem.previousSibling;\n }\n if (!isNOU(preNode) && preNode.nodeName === 'BR') {\n detach(preNode);\n }\n var postNode = tempElem.nextSibling;\n while (!isNOU(postNode) && postNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(postNode)) {\n tempElem.appendChild(postNode);\n postNode = tempElem.nextSibling;\n }\n if (!isNOU(postNode) && postNode.nodeName === 'BR') {\n detach(postNode);\n }\n }\n }\n this.setSelectionBRConfig();\n formatsNodes = this.parent.domNode.blockNodes();\n }\n for (var i = 0; i < formatsNodes.length; i++) {\n var parentNode = void 0;\n var replaceHTML = void 0;\n if (e.subCommand.toLowerCase() === 'blockquote') {\n parentNode = this.getParentNode(formatsNodes[i]);\n replaceHTML = this.parent.domNode.isList(parentNode) ||\n parentNode.tagName === 'TABLE' ? parentNode.outerHTML : parentNode.innerHTML;\n }\n else {\n parentNode = formatsNodes[i];\n replaceHTML = parentNode.innerHTML;\n }\n if ((e.subCommand.toLowerCase() === parentNode.tagName.toLowerCase() &&\n (e.subCommand.toLowerCase() !== 'pre' ||\n (!isNOU(e.exeValue) && e.exeValue.name === 'dropDownSelect'))) ||\n isNOU(parentNode.parentNode) ||\n (parentNode.tagName === 'TABLE' && e.subCommand.toLowerCase() === 'pre')) {\n continue;\n }\n this.cleanFormats(parentNode, e.subCommand);\n var replaceNode = (e.subCommand.toLowerCase() === 'pre' && parentNode.tagName.toLowerCase() === 'pre') ?\n 'p' : e.subCommand;\n var replaceTag = this.parent.domNode.createTagString(replaceNode, parentNode, replaceHTML.replace(/>\\s+<'));\n if (parentNode.tagName === 'LI') {\n parentNode.innerHTML = '';\n parentNode.insertAdjacentHTML('beforeend', replaceTag);\n }\n else {\n this.parent.domNode.replaceWith(parentNode, replaceTag);\n }\n }\n this.preFormatMerge();\n var startNode = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endNode = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (!isNOU(startNode) && !isNOU(endNode)) {\n startNode = startNode.lastChild;\n endNode = endNode.lastChild;\n }\n save = this.parent.domNode.saveMarker(save, null);\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n if (isSelectAll) {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startNode, endNode, 0, endNode.textContent.length);\n }\n else {\n save.restore();\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n Formats.prototype.setSelectionBRConfig = function () {\n var startElem = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endElem = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (isNOU(endElem)) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, startElem, 0);\n }\n else {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startElem, endElem, 0, 0);\n }\n };\n Formats.prototype.preFormatMerge = function () {\n var preNodes = this.parent.editableElement.querySelectorAll('PRE');\n if (!isNOU(preNodes)) {\n for (var i = 0; i < preNodes.length; i++) {\n var previousSib = preNodes[i].previousElementSibling;\n if (!isNOU(previousSib) && previousSib.tagName === 'PRE') {\n previousSib.insertAdjacentHTML('beforeend', '
    ' + preNodes[i].innerHTML);\n detach(preNodes[i]);\n }\n }\n }\n };\n Formats.prototype.cleanFormats = function (element, tagName) {\n var ignoreAttr = ['display', 'font-size', 'margin-top', 'margin-bottom', 'margin-left', 'margin-right', 'font-weight'];\n tagName = tagName.toLowerCase();\n for (var i = 0; i < ignoreAttr.length && (tagName !== 'p' && tagName !== 'blockquote' && tagName !== 'pre'); i++) {\n element.style.removeProperty(ignoreAttr[i]);\n }\n };\n return Formats;\n}());\nexport { Formats };\n","import { NodeSelection } from './../../selection/index';\nimport { NodeCutter } from './nodecutter';\nimport * as CONSTANT from './../base/constant';\nimport { detach, Browser, isNullOrUndefined as isNOU, createElement, closest } from '@syncfusion/ej2-base';\nimport { InsertMethods } from './insert-methods';\nimport { updateTextNode } from './../../common/util';\n/**\n * Insert a HTML Node or Text\n *\n * @hidden\n\n */\nvar InsertHtml = /** @class */ (function () {\n function InsertHtml() {\n }\n InsertHtml.Insert = function (docElement, insertNode, editNode, isExternal, enterAction) {\n var node;\n if (typeof insertNode === 'string') {\n var divNode = document.createElement('div');\n divNode.innerHTML = insertNode;\n node = isExternal ? divNode : divNode.firstChild;\n }\n else {\n if (isExternal && !(!isNOU(insertNode) && !isNOU(insertNode.classList) &&\n insertNode.classList.contains('pasteContent'))) {\n var divNode = document.createElement('div');\n divNode.appendChild(insertNode);\n node = divNode;\n }\n else {\n node = insertNode;\n }\n }\n var nodeSelection = new NodeSelection();\n var nodeCutter = new NodeCutter();\n var range = nodeSelection.getRange(docElement);\n if (range.startContainer === editNode && range.startContainer === range.endContainer && range.startOffset === 0 &&\n range.startOffset === range.endOffset && editNode.textContent.length === 0 &&\n (editNode.children[0].tagName === 'P' || (editNode.children[0].tagName === 'BR'))) {\n nodeSelection.setSelectionText(docElement, range.startContainer.children[0], range.startContainer.children[0], 0, 0);\n range = nodeSelection.getRange(docElement);\n }\n if (range.startContainer === 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 (isExternal || (!isNOU(node) && !isNOU(node.classList) &&\n node.classList.contains('pasteContent'))) {\n this.pasteInsertHTML(nodes, node, range, nodeSelection, nodeCutter, docElement, isCollapsed, closestParentNode, editNode, enterAction);\n return;\n }\n if (editNode !== range.startContainer && ((!isCollapsed && !(closestParentNode.nodeType === Node.ELEMENT_NODE &&\n CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) !== -1))\n || (node.nodeName.toLowerCase() === 'table' && closestParentNode &&\n CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) === -1))) {\n var preNode = nodeCutter.GetSpliceNode(range, closestParentNode);\n var sibNode = preNode.previousSibling;\n var parentNode = preNode.parentNode;\n if (nodes.length === 1 || (node.nodeName.toLowerCase() === 'table' && preNode.childElementCount === 0)) {\n nodeSelection.setSelectionContents(docElement, preNode);\n range = nodeSelection.getRange(docElement);\n }\n else {\n var lasNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length - 1].parentElement);\n lasNode = isNOU(lasNode) ? preNode : lasNode;\n nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?\n lasNode.textContent.length : lasNode.childNodes.length);\n range = nodeSelection.getRange(docElement);\n }\n range.extractContents();\n if (insertNode.tagName === 'TABLE') {\n this.removeEmptyElements(editNode);\n }\n for (var index = 0; index < nodes.length; index++) {\n if (nodes[index].nodeType !== 3 && nodes[index].parentNode != null) {\n if (nodes[index].nodeName === 'IMG') {\n continue;\n }\n nodes[index].parentNode.removeChild(nodes[index]);\n }\n }\n if (sibNode) {\n InsertMethods.AppendBefore(node, sibNode, true);\n }\n else {\n var previousNode = null;\n while (parentNode !== editNode && parentNode.firstChild &&\n (parentNode.textContent.trim() === '')) {\n var parentNode1 = parentNode.parentNode;\n previousNode = parentNode;\n parentNode = parentNode1;\n }\n if (previousNode !== null) {\n parentNode = previousNode;\n }\n if (parentNode.firstChild && (parentNode !== editNode ||\n (node.nodeName === 'TABLE' && isCursor && parentNode === range.startContainer &&\n parentNode === range.endContainer))) {\n if (parentNode.textContent.trim() === '' && parentNode !== editNode) {\n InsertMethods.AppendBefore(node, parentNode, false);\n detach(parentNode);\n }\n else {\n InsertMethods.AppendBefore(node, parentNode.firstChild, false);\n }\n }\n else {\n parentNode.appendChild(node);\n }\n }\n if (node.nodeName === 'IMG') {\n this.imageFocus(node, nodeSelection, docElement);\n }\n else if (node.nodeType !== 3) {\n nodeSelection.setSelectionText(docElement, node, node, 0, node.childNodes.length);\n }\n else {\n nodeSelection.setSelectionText(docElement, node, node, 0, node.textContent.length);\n }\n }\n else {\n range.deleteContents();\n if (isCursor && range.startContainer.textContent === '' && range.startContainer.nodeName !== 'BR') {\n range.startContainer.innerHTML = '';\n }\n if (Browser.isIE) {\n var frag = docElement.createDocumentFragment();\n frag.appendChild(node);\n range.insertNode(frag);\n }\n else if (range.startContainer.nodeType === 1 && range.startContainer.nodeName.toLowerCase() === 'hr'\n && range.endContainer.nodeName.toLowerCase() === 'hr') {\n var paraElem = range.startContainer.nextElementSibling;\n if (paraElem) {\n if (paraElem.querySelector('br')) {\n detach(paraElem.querySelector('br'));\n }\n paraElem.appendChild(node);\n }\n }\n else {\n if (range.startContainer.nodeName === 'BR') {\n range.startContainer.parentElement.insertBefore(node, range.startContainer);\n }\n else {\n range.insertNode(node);\n }\n }\n if (node.nodeType !== 3 && node.childNodes.length > 0) {\n nodeSelection.setSelectionText(docElement, node, node, 1, 1);\n }\n else if (node.nodeName === 'IMG') {\n this.imageFocus(node, nodeSelection, docElement);\n }\n else if (node.nodeType !== 3) {\n nodeSelection.setSelectionContents(docElement, node);\n }\n else {\n nodeSelection.setSelectionText(docElement, node, node, node.textContent.length, node.textContent.length);\n }\n }\n };\n InsertHtml.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 sibNode = isNOU(preNode.previousSibling) ? preNode.parentNode.previousSibling : preNode.previousSibling;\n if (nodes.length === 1) {\n nodeSelection.setSelectionContents(docElement, preNode);\n range = nodeSelection.getRange(docElement);\n isSingleNode = true;\n }\n else {\n lasNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length - 1].parentElement);\n lasNode = isNOU(lasNode) ? preNode : lasNode;\n nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?\n lasNode.textContent.length : lasNode.childNodes.length);\n range = nodeSelection.getRange(docElement);\n isSingleNode = false;\n }\n }\n var containsBlockNode = false;\n this.removingComments(node);\n var allChildNodes = node.childNodes;\n for (var i = 0; i < allChildNodes.length; i++) {\n if (CONSTANT.BLOCK_TAGS.indexOf(allChildNodes[i].nodeName.toLocaleLowerCase()) >= 0) {\n containsBlockNode = true;\n break;\n }\n }\n var lastSelectionNode;\n var fragment = document.createDocumentFragment();\n if (!containsBlockNode) {\n if (!isCursor) {\n while (node.firstChild) {\n lastSelectionNode = node.firstChild;\n fragment.appendChild(node.firstChild);\n }\n if (isSingleNode) {\n preNode.parentNode.replaceChild(fragment, preNode);\n }\n else {\n range.deleteContents();\n if (!isNOU(lasNode)) {\n detach(lasNode);\n }\n // eslint-disable-next-line\n !isNOU(sibNode) ? sibNode.parentNode.appendChild(fragment) : editNode.appendChild(fragment);\n }\n }\n else {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n var nearestAnchor = closest(range.startContainer.parentElement, 'a');\n if (range.startContainer.nodeType === 3 && nearestAnchor && closest(nearestAnchor, 'span')) {\n var immediateBlockNode = this.getImmediateBlockNode(range.startContainer, editNode);\n if (immediateBlockNode.querySelectorAll('br').length > 0) {\n detach(immediateBlockNode.querySelector('br'));\n }\n var rangeElement = closest(nearestAnchor, 'span');\n rangeElement.appendChild(tempSpan);\n }\n else {\n range.insertNode(tempSpan);\n }\n while (node.firstChild) {\n lastSelectionNode = node.firstChild;\n fragment.appendChild(node.firstChild);\n }\n tempSpan.parentNode.replaceChild(fragment, tempSpan);\n }\n }\n else {\n var parentElem = range.startContainer;\n while (!isNOU(parentElem) && parentElem.nodeName !== 'PRE' && parentElem !== editNode) {\n parentElem = parentElem.parentElement;\n }\n if (!isNOU(node) && !isNOU(parentElem) && parentElem.nodeName === 'PRE') {\n range.insertNode(node);\n lastSelectionNode = node.lastChild;\n }\n else {\n this.insertTempNode(range, node, nodes, nodeCutter, editNode);\n var isFirstTextNode = true;\n var isPreviousInlineElem = void 0;\n var paraElm = void 0;\n var previousParent = void 0;\n if (!this.contentsDeleted) {\n range.deleteContents();\n }\n while (node.firstChild) {\n if (node.firstChild.nodeName === '#text' && node.firstChild.textContent.trim() === '') {\n detach(node.firstChild);\n continue;\n }\n if (node.firstChild.nodeName === '#text' && isFirstTextNode ||\n (this.inlineNode.indexOf(node.firstChild.nodeName.toLocaleLowerCase()) >= 0 && isFirstTextNode)) {\n lastSelectionNode = node.firstChild;\n if (isNOU(node.previousElementSibling)) {\n var firstParaElm = createElement('p');\n node.parentElement.insertBefore(firstParaElm, node);\n }\n if (node.previousElementSibling.nodeName === 'BR') {\n node.parentElement.insertBefore(node.firstChild, node);\n }\n else {\n node.previousElementSibling.appendChild(node.firstChild);\n }\n }\n else {\n lastSelectionNode = node.firstChild;\n if (node.firstChild.nodeName === '#text' ||\n (this.inlineNode.indexOf(node.firstChild.nodeName.toLocaleLowerCase()) >= 0)) {\n if (!isPreviousInlineElem) {\n paraElm = createElement('p');\n paraElm.appendChild(node.firstChild);\n fragment.appendChild(paraElm);\n }\n else {\n previousParent.appendChild(node.firstChild);\n fragment.appendChild(previousParent);\n }\n previousParent = paraElm;\n isPreviousInlineElem = true;\n }\n else {\n fragment.appendChild(node.firstChild);\n isPreviousInlineElem = false;\n }\n isFirstTextNode = false;\n }\n }\n node.parentNode.replaceChild(fragment, node);\n }\n }\n if (lastSelectionNode.nodeName === '#text') {\n this.placeCursorEnd(lastSelectionNode, node, nodeSelection, docElement, editNode);\n }\n else {\n this.cursorPos(lastSelectionNode, node, nodeSelection, docElement, editNode, enterAction);\n }\n };\n InsertHtml.placeCursorEnd = function (lastSelectionNode, node, nodeSelection, docElement, editNode) {\n lastSelectionNode = lastSelectionNode.nodeName === 'BR' ? (isNOU(lastSelectionNode.previousSibling) ? lastSelectionNode.parentNode\n : lastSelectionNode.previousSibling) : lastSelectionNode;\n while (!isNOU(lastSelectionNode) && lastSelectionNode.nodeName !== '#text' && lastSelectionNode.nodeName !== 'IMG' &&\n lastSelectionNode.nodeName !== 'BR' && lastSelectionNode.nodeName !== 'HR') {\n lastSelectionNode = lastSelectionNode.lastChild;\n }\n lastSelectionNode = isNOU(lastSelectionNode) ? node : lastSelectionNode;\n if (lastSelectionNode.nodeName === 'IMG') {\n this.imageFocus(lastSelectionNode, nodeSelection, docElement);\n }\n else {\n nodeSelection.setSelectionText(docElement, lastSelectionNode, lastSelectionNode, lastSelectionNode.textContent.length, lastSelectionNode.textContent.length);\n }\n this.removeEmptyElements(editNode);\n };\n InsertHtml.getNodeCollection = function (range, nodeSelection, node) {\n var nodes = [];\n if (range.startOffset === range.endOffset && range.startContainer === range.endContainer &&\n range.startContainer.nodeName !== 'BR' && range.startContainer.childNodes.length > 0 &&\n (range.startContainer.nodeName === 'TD' || (range.startContainer.nodeType !== 3 &&\n node.classList && node.classList.contains('pasteContent')))) {\n nodes.push(range.startContainer.childNodes[range.endOffset]);\n }\n else {\n nodes = nodeSelection.getInsertNodeCollection(range);\n }\n return nodes;\n };\n InsertHtml.insertTempNode = function (range, node, nodes, nodeCutter, editNode) {\n if (range.startContainer === editNode && !isNOU(range.startContainer.childNodes[range.endOffset - 1]) &&\n range.startContainer.childNodes[range.endOffset - 1].nodeName === 'TABLE') {\n if (isNOU(range.startContainer.childNodes[range.endOffset - 1].nextSibling)) {\n range.startContainer.appendChild(node);\n }\n else {\n range.startContainer.insertBefore(node, range.startContainer.childNodes[range.endOffset - 1].nextSibling);\n }\n }\n else if (range.startContainer === editNode && !isNOU(range.startContainer.childNodes[range.endOffset]) &&\n range.startContainer.childNodes[range.endOffset].nodeName === 'TABLE') {\n range.startContainer.insertBefore(node, range.startContainer.childNodes[range.endOffset]);\n }\n else if (range.startContainer === range.endContainer && range.startContainer.nodeType !== 3\n && node.firstChild.nodeName === 'HR') {\n if (range.startContainer.classList.contains('e-content') || range.startContainer.nodeName === 'BODY') {\n range.startContainer.appendChild(node);\n }\n else {\n range.startContainer.parentNode.insertBefore(node, range.startContainer);\n }\n }\n else {\n var blockNode = this.getImmediateBlockNode(nodes[nodes.length - 1], editNode);\n if ((isNOU(blockNode) || isNOU(blockNode.parentElement)) && range.endContainer.nodeType !== 3) {\n blockNode = range.endContainer;\n range.setEnd(blockNode, range.endContainer.textContent.length);\n }\n if (blockNode.nodeName === 'BODY' && range.startContainer === range.endContainer && range.startContainer.nodeType === 1) {\n blockNode = range.startContainer;\n }\n if (blockNode.closest('LI') && node && node.firstElementChild &&\n ((node).firstElementChild.tagName === 'OL' || node.firstElementChild.tagName === 'UL')) {\n var liNode = void 0;\n while (node.firstElementChild.lastElementChild && node.firstElementChild.lastElementChild.tagName === 'LI') {\n liNode = node.firstElementChild.lastElementChild;\n liNode.style.removeProperty('margin-left');\n liNode.style.removeProperty('margin-top');\n liNode.style.removeProperty('margin-bottom');\n node.firstElementChild.insertAdjacentElement('afterend', liNode);\n }\n }\n if (blockNode.nodeName === 'TD' || blockNode.nodeName === 'TH' || blockNode.nodeName === 'TR') {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n range.insertNode(tempSpan);\n tempSpan.parentNode.replaceChild(node, tempSpan);\n }\n else {\n var nodeSelection = new NodeSelection();\n var currentNode = this.getNodeCollection(range, nodeSelection, node)[this.getNodeCollection(range, nodeSelection, node).length - 1];\n var splitedElm = void 0;\n if ((currentNode.nodeName === 'BR' || currentNode.nodeName === 'HR' ||\n (currentNode.nodeName === '#text' && !isNOU(currentNode.parentElement) && currentNode.parentElement.nodeName === 'LI')) &&\n (!isNOU(currentNode.parentElement) && currentNode.parentElement.textContent.trim().length === 0)) {\n splitedElm = currentNode;\n if (currentNode.parentElement.nodeName === 'LI' && !isNOU(currentNode.nextSibling) &&\n currentNode.nextSibling.nodeName === 'BR') {\n detach(currentNode.nextSibling);\n }\n }\n else if ((currentNode.nodeName === '#text' || currentNode.nodeName === 'BR') && !isNOU(currentNode.parentElement) &&\n (currentNode.parentElement.nodeName === 'LI' || (blockNode === editNode && currentNode.parentElement === blockNode)) &&\n currentNode.parentElement.textContent.trim().length > 0) {\n splitedElm = currentNode;\n if (currentNode.parentElement.nodeName === 'LI' && !isNOU(currentNode.nextSibling) &&\n currentNode.nextSibling.nodeName === 'BR') {\n detach(currentNode.nextSibling);\n }\n if (!range.collapsed) {\n range.deleteContents();\n }\n range.insertNode(node);\n this.contentsDeleted = true;\n return;\n }\n else {\n splitedElm = nodeCutter.GetSpliceNode(range, blockNode);\n }\n splitedElm.parentNode.replaceChild(node, splitedElm);\n }\n }\n };\n InsertHtml.cursorPos = function (lastSelectionNode, node, nodeSelection, docElement, editNode, enterAction) {\n lastSelectionNode.classList.add('lastNode');\n editNode.innerHTML = updateTextNode(editNode.innerHTML, enterAction);\n lastSelectionNode = editNode.querySelector('.lastNode');\n if (!isNOU(lastSelectionNode)) {\n this.placeCursorEnd(lastSelectionNode, node, nodeSelection, docElement, editNode);\n lastSelectionNode.classList.remove('lastNode');\n if (lastSelectionNode.classList.length === 0) {\n lastSelectionNode.removeAttribute('class');\n }\n }\n };\n InsertHtml.imageFocus = function (node, nodeSelection, docElement) {\n var focusNode = document.createTextNode(' ');\n node.parentNode.insertBefore(focusNode, node.nextSibling);\n nodeSelection.setSelectionText(docElement, node.nextSibling, node.nextSibling, 0, 0);\n };\n // eslint-disable-next-line\n InsertHtml.getImmediateBlockNode = function (node, editNode) {\n do {\n node = node.parentNode;\n } while (node && CONSTANT.BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) < 0);\n return node;\n };\n InsertHtml.removingComments = function (elm) {\n var innerElement = elm.innerHTML;\n innerElement = innerElement.replace(//g, '');\n elm.innerHTML = innerElement;\n };\n InsertHtml.findDetachEmptyElem = function (element) {\n var removableElement;\n if (!isNOU(element.parentElement)) {\n if (element.parentElement.textContent.trim() === '' && element.parentElement.contentEditable !== 'true' &&\n 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 for (var i = 0; i < emptyElements.length; i++) {\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 (CONSTANT.SELF_CLOSING_TAGS.indexOf(emptyElements[i].tagName.toLowerCase()) < 0 && lineWithDiv) {\n var detachableElement = this.findDetachEmptyElem(emptyElements[i]);\n if (!isNOU(detachableElement)) {\n detach(detachableElement);\n }\n }\n }\n };\n InsertHtml.closestEle = function (element, editNode) {\n var el = element;\n while (el && el.nodeType === 1) {\n if (el.parentNode === editNode ||\n (!isNOU(el.parentNode.tagName) &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(el.parentNode.tagName.toLocaleLowerCase()) !== -1)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n };\n /**\n * Insert method\n *\n * @hidden\n\n */\n InsertHtml.inlineNode = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button',\n 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'font', 'i', 'iframe', 'img', 'input',\n 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',\n 'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'sub', 'sup', 'svg',\n 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];\n InsertHtml.contentsDeleted = false;\n return InsertHtml;\n}());\nexport { InsertHtml };\n","import * as CONSTANT from './../base/constant';\nimport { NodeSelection } from '../../selection/selection';\nimport { NodeCutter } from './nodecutter';\nimport { InsertHtml } from './inserthtml';\nimport { createElement, isNullOrUndefined as isNOU, closest } from '@syncfusion/ej2-base';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar LinkCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the editor manager\n * @hidden\n\n */\n function LinkCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n LinkCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.LINK, this.linkCommand, this);\n };\n LinkCommand.prototype.linkCommand = function (e) {\n switch (e.value.toString().toLocaleLowerCase()) {\n case 'createlink':\n case 'editlink':\n this.createLink(e);\n break;\n case 'openlink':\n this.openLink(e);\n break;\n case 'removelink':\n this.removeLink(e);\n break;\n }\n };\n LinkCommand.prototype.createLink = function (e) {\n var closestAnchor = (!isNOU(e.item.selectParent) && e.item.selectParent.length > 0) &&\n closest(e.item.selectParent[0], 'a');\n closestAnchor = !isNOU(closestAnchor) ? closestAnchor :\n (!isNOU(e.item.selectParent) && e.item.selectParent.length > 0) ? (e.item.selectParent[0]) : null;\n if (!isNOU(closestAnchor) && closestAnchor.tagName === 'A') {\n var anchorEle = closestAnchor;\n var linkText = '';\n if (!isNOU(e.item.url)) {\n anchorEle.setAttribute('href', e.item.url);\n }\n if (!isNOU(e.item.title)) {\n anchorEle.setAttribute('title', e.item.title);\n }\n if (!isNOU(e.item.text) && e.item.text !== '') {\n linkText = anchorEle.innerText;\n anchorEle.innerText = e.item.text;\n }\n if (!isNOU(e.item.target)) {\n anchorEle.setAttribute('target', e.item.target);\n }\n else {\n anchorEle.removeAttribute('target');\n }\n if (linkText === e.item.text) {\n e.item.selection.setSelectionText(this.parent.currentDocument, anchorEle, anchorEle, 1, 1);\n e.item.selection.restore();\n }\n else {\n var startIndex = e.item.action === 'Paste' ? anchorEle.childNodes[0].textContent.length : 0;\n e.item.selection.setSelectionText(this.parent.currentDocument, anchorEle.childNodes[0], anchorEle.childNodes[0], startIndex, anchorEle.childNodes[0].textContent.length);\n }\n }\n else {\n var domSelection = new NodeSelection();\n var range = domSelection.getRange(this.parent.currentDocument);\n if (range.endContainer.nodeName === '#text' && range.startContainer.textContent.length === (range.endOffset + 1) &&\n range.endContainer.textContent.charAt(range.endOffset) === ' ' && (!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 e.item.selection.restore();\n InsertHtml.Insert(this.parent.currentDocument, anchor, this.parent.editableElement);\n if (e.event && e.event.type === 'keydown' && (e.event.keyCode === 32\n || e.event.keyCode === 13)) {\n var startContainer = e.item.selection.range.startContainer;\n startContainer.textContent = this.removeText(startContainer.textContent, e.item.text);\n }\n else {\n var startIndex = e.item.action === 'Paste' ? anchor.childNodes[0].textContent.length : 0;\n e.item.selection.setSelectionText(this.parent.currentDocument, anchor.childNodes[0], anchor.childNodes[0], startIndex, anchor.childNodes[0].textContent.length);\n }\n }\n else {\n this.createLinkNode(e);\n }\n }\n if (e.callBack) {\n e.callBack({\n requestType: 'Links',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n LinkCommand.prototype.createLinkNode = function (e) {\n var domSelection = new NodeSelection();\n var nodeCutter = new NodeCutter();\n var range = domSelection.getRange(this.parent.currentDocument);\n var nodes = this.getSelectionNodes(domSelection.getNodeCollection(range));\n var save = domSelection.save(range, this.parent.currentDocument);\n var txtArray = [];\n var inlineNodes = [];\n var currentNode;\n var removeNodes = [];\n var anchorNodes = [];\n var finalinlineNodes = [];\n var cloneNode;\n for (var index = 0; index < nodes.length; index++) {\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n txtArray[index] = nodes[index];\n }\n for (var i = 0; i < txtArray.length; i++) {\n var check = true;\n currentNode = txtArray[i];\n while (check === true) {\n if (currentNode.parentNode.nodeName === 'A') {\n var anchorEle = currentNode.parentNode;\n currentNode.parentNode.parentNode.insertBefore(anchorEle.firstChild, anchorEle);\n currentNode.parentNode.removeChild(anchorEle);\n }\n if (this.isBlockNode(currentNode.parentNode) || txtArray.length === 0 || i === 0 || i === txtArray.length - 1\n || range.startContainer.nodeType === 3) {\n inlineNodes[i] = currentNode;\n check = false;\n }\n else {\n currentNode = currentNode.parentNode;\n }\n }\n }\n for (var i = 0, j_1 = 0; i < inlineNodes.length; i++) {\n if (i === 0) {\n finalinlineNodes[j_1] = inlineNodes[i];\n }\n if (inlineNodes.length > 1 && i < inlineNodes.length - 1) {\n if ((inlineNodes[i].parentElement === inlineNodes[i + 1].parentElement) &&\n (inlineNodes[i] === inlineNodes[i + 1])) {\n continue;\n }\n else {\n finalinlineNodes[j_1 + 1] = inlineNodes[i + 1];\n j_1++;\n }\n }\n }\n var j = 0;\n anchorNodes[j] = this.createAchorNode(e);\n for (var i = 0; i < finalinlineNodes.length; i++) {\n if (i === 0) {\n cloneNode = finalinlineNodes[i].cloneNode(true);\n anchorNodes[i].appendChild(cloneNode);\n }\n if (i < finalinlineNodes.length - 1) {\n if (finalinlineNodes[i].parentNode === finalinlineNodes[i + 1].parentNode) {\n var cln = finalinlineNodes[i + 1].cloneNode(true);\n anchorNodes[j].appendChild(cln);\n }\n else {\n j = j + 1;\n anchorNodes[j] = this.createAchorNode(e);\n cloneNode = finalinlineNodes[i + 1].cloneNode(true);\n anchorNodes[j].appendChild(cloneNode);\n }\n }\n }\n this.parent.nodeSelection.setRange(document, save.range);\n for (var i = 0, j_2 = 0, k = 0; i <= finalinlineNodes.length; i++) {\n if (i === 0) {\n finalinlineNodes[i].parentNode.insertBefore(anchorNodes[j_2], finalinlineNodes[i].nextSibling);\n if (this.parent.domNode.blockNodes().length === 1) {\n this.parent.nodeSelection.setSelectionNode(this.parent.currentDocument, anchorNodes[j_2]);\n }\n removeNodes[k] = finalinlineNodes[i];\n k++;\n }\n if (i < finalinlineNodes.length - 1) {\n if (finalinlineNodes[i].parentNode === finalinlineNodes[i + 1].parentNode) {\n removeNodes[k] = finalinlineNodes[i + 1];\n k++;\n }\n else {\n j_2 = j_2 + 1;\n finalinlineNodes[i + 1].parentNode.insertBefore(anchorNodes[j_2], finalinlineNodes[i + 1]);\n removeNodes[k] = finalinlineNodes[i + 1];\n k++;\n }\n }\n }\n for (var i = 0; i < removeNodes.length; i++) {\n if (removeNodes[i].parentNode) {\n removeNodes[i].parentNode.removeChild(removeNodes[i]);\n }\n }\n };\n LinkCommand.prototype.createAchorNode = function (e) {\n var anchorEle = createElement('a', {\n className: 'e-rte-anchor',\n attrs: {\n href: e.item.url,\n title: isNOU(e.item.title) || e.item.title === '' ? e.item.url : e.item.title\n }\n });\n if (!isNOU(e.item.target)) {\n anchorEle.setAttribute('target', e.item.target);\n }\n return anchorEle;\n };\n LinkCommand.prototype.getSelectionNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeType !== 3 || nodeCollection[index].textContent.trim() === '') {\n if (nodeCollection[index].nodeName !== 'IMG') {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n }\n return nodeCollection.reverse();\n };\n LinkCommand.prototype.isBlockNode = function (element) {\n return (!!element && (element.nodeType === Node.ELEMENT_NODE && CONSTANT.BLOCK_TAGS.indexOf(element.tagName.toLowerCase()) >= 0));\n };\n LinkCommand.prototype.removeText = function (text, val) {\n var arr = text.split(' ');\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === val) {\n arr.splice(i, 1);\n i--;\n }\n }\n return arr.join(' ') + ' ';\n };\n LinkCommand.prototype.openLink = function (e) {\n document.defaultView.open(e.item.url, e.item.target);\n this.callBack(e);\n };\n LinkCommand.prototype.removeLink = function (e) {\n var blockNodes = this.parent.domNode.blockNodes();\n if (blockNodes.length < 2) {\n this.parent.domNode.setMarker(e.item.selection);\n var closestAnchor = closest(e.item.selectParent[0], 'a');\n var selectParent = closestAnchor ? closestAnchor : e.item.selectParent[0];\n var parent_1 = selectParent.parentNode;\n var child = [];\n for (; selectParent.firstChild; null) {\n child.push(parent_1.insertBefore(selectParent.firstChild, selectParent));\n }\n parent_1.removeChild(selectParent);\n if (child && child.length === 1) {\n e.item.selection.startContainer = e.item.selection.getNodeArray(child[child.length - 1], true);\n e.item.selection.endContainer = e.item.selection.startContainer;\n }\n e.item.selection = this.parent.domNode.saveMarker(e.item.selection);\n }\n else {\n for (var i = 0; i < blockNodes.length; i++) {\n var linkNode = blockNodes[i].querySelectorAll('a');\n for (var j = 0; j < linkNode.length; j++) {\n if (document.getSelection().containsNode(linkNode[j], true)) {\n linkNode[j].outerHTML = linkNode[j].innerHTML;\n }\n }\n }\n }\n e.item.selection.restore();\n this.callBack(e);\n };\n LinkCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return LinkCommand;\n}());\nexport { LinkCommand };\n","import * as CONSTANT from './../base/constant';\nimport { setStyleAttribute, closest } from '@syncfusion/ej2-base';\nimport * as EVENTS from './../../common/constant';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\n/**\n * Formats internal component\n *\n * @hidden\n\n */\nvar Alignments = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element.\n * @returns {void}\n * @hidden\n\n */\n function Alignments(parent) {\n this.alignments = {\n 'JustifyLeft': 'left',\n 'JustifyCenter': 'center',\n 'JustifyRight': 'right',\n 'JustifyFull': 'justify'\n };\n this.parent = parent;\n this.addEventListener();\n }\n Alignments.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.ALIGNMENT_TYPE, this.applyAlignment, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Alignments.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'justify-center':\n this.applyAlignment({ subCommand: 'JustifyCenter', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-full':\n this.applyAlignment({ subCommand: 'JustifyFull', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-left':\n this.applyAlignment({ subCommand: 'JustifyLeft', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-right':\n this.applyAlignment({ subCommand: 'JustifyRight', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n };\n Alignments.prototype.getTableNode = function (range) {\n var startNode = range.startContainer.nodeType === Node.ELEMENT_NODE\n ? range.startContainer : range.startContainer.parentNode;\n var cellNode = closest(startNode, 'td,th');\n return [cellNode];\n };\n Alignments.prototype.applyAlignment = function (e) {\n var isTableAlign = e.value === 'Table' ? true : false;\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n if (!isTableAlign) {\n this.parent.domNode.setMarker(save);\n var alignmentNodes = this.parent.domNode.blockNodes();\n for (var i = 0; i < alignmentNodes.length; i++) {\n var parentNode = alignmentNodes[i];\n setStyleAttribute(parentNode, { 'text-align': this.alignments[e.subCommand] });\n }\n var imageTags = this.parent.domNode.getImageTagInSelection();\n for (var i = 0; i < imageTags.length; i++) {\n var elementNode = [];\n elementNode.push(imageTags[i]);\n this.parent.imgObj.imageCommand({\n item: {\n selectNode: elementNode\n },\n subCommand: e.subCommand,\n value: e.subCommand,\n callBack: e.callBack,\n selector: e.selector\n });\n }\n this.parent.editableElement.focus();\n save = this.parent.domNode.saveMarker(save);\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n save.restore();\n }\n else {\n setStyleAttribute(this.getTableNode(range)[0], { 'text-align': this.alignments[e.subCommand] });\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: (isTableAlign ? this.getTableNode(range) : this.parent.domNode.blockNodes())\n });\n }\n };\n return Alignments;\n}());\nexport { Alignments };\n","import * as CONSTANT from './../base/constant';\nimport * as EVENTS from './../../common/constant';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\n/**\n * Indents internal component\n *\n * @hidden\n\n */\nvar Indents = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function Indents(parent) {\n this.indentValue = 20;\n this.parent = parent;\n this.addEventListener();\n }\n Indents.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.INDENT_TYPE, this.applyIndents, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Indents.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'indents':\n this.applyIndents({ subCommand: 'Indent', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'outdents':\n this.applyIndents({ subCommand: 'Outdent', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n };\n Indents.prototype.applyIndents = function (e) {\n var editEle = this.parent.editableElement;\n var isRtl = editEle.classList.contains('e-rtl');\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.parent.domNode.setMarker(save);\n var indentsNodes = this.parent.domNode.blockNodes();\n var parentNodes = indentsNodes.slice();\n var listsNodes = [];\n for (var i = 0; i < parentNodes.length; i++) {\n if (parentNodes[i].tagName !== 'LI' && 'LI' === parentNodes[i].parentNode.tagName) {\n indentsNodes.splice(indentsNodes.indexOf(parentNodes[i]), 1);\n listsNodes.push(parentNodes[i].parentNode);\n }\n else if (parentNodes[i].tagName === 'LI') {\n indentsNodes.splice(indentsNodes.indexOf(parentNodes[i]), 1);\n listsNodes.push(parentNodes[i]);\n }\n }\n if (listsNodes.length > 0) {\n this.parent.observer.notify(EVENTS.KEY_DOWN_HANDLER, {\n event: {\n preventDefault: function () {\n return;\n },\n stopPropagation: function () {\n return;\n },\n shiftKey: (e.subCommand === 'Indent' ? false : true),\n which: 9,\n action: 'indent'\n },\n ignoreDefault: true\n });\n }\n for (var i = 0; i < indentsNodes.length; i++) {\n var parentNode = indentsNodes[i];\n var marginLeftOrRight = isRtl ? parentNode.style.marginRight : parentNode.style.marginLeft;\n var indentsValue = void 0;\n if (e.subCommand === 'Indent') {\n /* eslint-disable */\n indentsValue = marginLeftOrRight === '' ? this.indentValue + 'px' : parseInt(marginLeftOrRight, null) + this.indentValue + 'px';\n isRtl ? (parentNode.style.marginRight = indentsValue) : (parentNode.style.marginLeft = indentsValue);\n }\n else {\n indentsValue = (marginLeftOrRight === '' || marginLeftOrRight === '0px') ? '' : parseInt(marginLeftOrRight, null) - this.indentValue + 'px';\n isRtl ? (parentNode.style.marginRight = indentsValue) : (parentNode.style.marginLeft = indentsValue);\n /* eslint-enable */\n }\n }\n editEle.focus();\n if (isIDevice()) {\n setEditFrameFocus(editEle, e.selector);\n }\n save = this.parent.domNode.saveMarker(save);\n save.restore();\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n return Indents;\n}());\nexport { Indents };\n","/**\n * Rich Text Editor classes defined here.\n */\n/**\n * @hidden\n\n */\nexport var CLASS_IMAGE_RIGHT = 'e-imgright';\nexport var CLASS_IMAGE_LEFT = 'e-imgleft';\nexport var CLASS_IMAGE_CENTER = 'e-imgcenter';\nexport var CLASS_VIDEO_RIGHT = 'e-video-right';\nexport var CLASS_VIDEO_LEFT = 'e-video-left';\nexport var CLASS_VIDEO_CENTER = 'e-video-center';\nexport var CLASS_IMAGE_BREAK = 'e-imgbreak';\nexport var CLASS_AUDIO_BREAK = 'e-audio-break';\nexport var CLASS_VIDEO_BREAK = 'e-video-break';\nexport var CLASS_CAPTION = 'e-img-caption';\nexport var CLASS_RTE_CAPTION = 'e-rte-img-caption';\nexport var CLASS_CAPTION_INLINE = 'e-caption-inline';\nexport var CLASS_IMAGE_INLINE = 'e-imginline';\nexport var CLASS_AUDIO_INLINE = 'e-audio-inline';\nexport var CLASS_CLICK_ELEM = 'e-clickelem';\nexport var CLASS_VIDEO_CLICK_ELEM = 'e-video-clickelem';\nexport var CLASS_AUDIO = 'e-rte-audio';\nexport var CLASS_VIDEO = 'e-rte-video';\nexport var CLASS_AUDIO_WRAP = 'e-audio-wrap';\nexport var CLASS_VIDEO_WRAP = 'e-video-wrap';\nexport var CLASS_EMBED_VIDEO_WRAP = 'e-embed-video-wrap';\nexport var CLASS_AUDIO_FOCUS = 'e-audio-focus';\nexport var CLASS_VIDEO_FOCUS = 'e-video-focus';\nexport var CLASS_VIDEO_INLINE = 'e-video-inline';\n","import { createElement, isNullOrUndefined as isNOU, detach, closest, addClass, removeClass, select, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport * as classes from './../base/classes';\nimport { InsertHtml } from './inserthtml';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar ImageCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function ImageCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n ImageCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.IMAGE, this.imageCommand, this);\n };\n /**\n * imageCommand method\n *\n * @param {IHtmlItem} e - specifies the element\n * @returns {void}\n * @hidden\n\n */\n ImageCommand.prototype.imageCommand = function (e) {\n switch (e.value.toString().toLowerCase()) {\n case 'image':\n case 'replace':\n this.createImage(e);\n break;\n case 'insertlink':\n this.insertImageLink(e);\n break;\n case 'openimagelink':\n this.openImageLink(e);\n break;\n case 'editimagelink':\n this.editImageLink(e);\n break;\n case 'removeimagelink':\n this.removeImageLink(e);\n break;\n case 'remove':\n this.removeImage(e);\n break;\n case 'alttext':\n this.insertAltTextImage(e);\n break;\n case 'dimension':\n this.imageDimension(e);\n break;\n case 'caption':\n this.imageCaption(e);\n break;\n case 'justifyleft':\n this.imageJustifyLeft(e);\n break;\n case 'justifycenter':\n this.imageJustifyCenter(e);\n break;\n case 'justifyright':\n this.imageJustifyRight(e);\n break;\n case 'inline':\n this.imageInline(e);\n break;\n case 'break':\n this.imageBreak(e);\n break;\n }\n };\n ImageCommand.prototype.createImage = function (e) {\n var _this = this;\n var isReplaced = false;\n e.item.url = isNOU(e.item.url) || e.item.url === 'undefined' ? e.item.src : e.item.url;\n if (!isNOU(e.item.selectParent) && e.item.selectParent[0].tagName === 'IMG') {\n var imgEle = e.item.selectParent[0];\n this.setStyle(imgEle, e);\n isReplaced = true;\n }\n else {\n var imgElement = createElement('img');\n this.setStyle(imgElement, e);\n if (!isNOU(e.item.selection)) {\n e.item.selection.restore();\n }\n if (!isNOU(e.selector) && e.selector === 'pasteCleanupModule') {\n e.callBack({ requestType: 'Images',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: [imgElement]\n });\n }\n else {\n InsertHtml.Insert(this.parent.currentDocument, imgElement, this.parent.editableElement);\n }\n }\n if (e.callBack && (isNOU(e.selector) || !isNOU(e.selector) && e.selector !== 'pasteCleanupModule')) {\n var selectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)[0];\n var imgElm_1 = (e.value === 'Replace' || isReplaced) ? e.item.selectParent[0] :\n (Browser.isIE ? selectedNode.previousSibling : selectedNode.previousElementSibling);\n imgElm_1.addEventListener('load', function () {\n if (e.value !== 'Replace' || !isReplaced) {\n e.callBack({\n requestType: 'Images',\n editorMode: 'HTML',\n event: e.event,\n range: _this.parent.nodeSelection.getRange(_this.parent.currentDocument),\n elements: [imgElm_1]\n });\n }\n });\n }\n };\n ImageCommand.prototype.setStyle = function (imgElement, e) {\n if (!isNOU(e.item.url)) {\n imgElement.setAttribute('src', e.item.url);\n }\n imgElement.setAttribute('class', 'e-rte-image' + (isNOU(e.item.cssClass) ? '' : ' ' + e.item.cssClass));\n if (!isNOU(e.item.altText)) {\n imgElement.setAttribute('alt', e.item.altText);\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.width)) {\n imgElement.setAttribute('width', this.calculateStyleValue(e.item.width.width));\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.height)) {\n imgElement.setAttribute('height', this.calculateStyleValue(e.item.height.height));\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.minWidth)) {\n imgElement.style.minWidth = this.calculateStyleValue(e.item.width.minWidth);\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.maxWidth)) {\n imgElement.style.maxWidth = this.calculateStyleValue(e.item.width.maxWidth);\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.minHeight)) {\n imgElement.style.minHeight = this.calculateStyleValue(e.item.height.minHeight);\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.maxHeight)) {\n imgElement.style.maxHeight = this.calculateStyleValue(e.item.height.maxHeight);\n }\n };\n ImageCommand.prototype.calculateStyleValue = function (value) {\n var styleValue;\n if (typeof (value) === 'string') {\n if (value.indexOf('px') || value.indexOf('%') || value.indexOf('auto')) {\n styleValue = value;\n }\n else {\n styleValue = value + 'px';\n }\n }\n else {\n styleValue = value + 'px';\n }\n return styleValue;\n };\n ImageCommand.prototype.insertImageLink = function (e) {\n var anchor = createElement('a', {\n attrs: {\n href: e.item.url\n }\n });\n if (e.item.selectNode[0].parentElement.classList.contains('e-img-wrap')) {\n e.item.selection.restore();\n anchor.setAttribute('contenteditable', 'true');\n }\n anchor.appendChild(e.item.selectNode[0]);\n if (!isNOU(e.item.target)) {\n anchor.setAttribute('target', e.item.target);\n }\n InsertHtml.Insert(this.parent.currentDocument, anchor, this.parent.editableElement);\n this.callBack(e);\n };\n ImageCommand.prototype.openImageLink = function (e) {\n document.defaultView.open(e.item.url, e.item.target);\n this.callBack(e);\n };\n ImageCommand.prototype.removeImageLink = function (e) {\n var selectParent = e.item.selectParent[0];\n if (selectParent.classList.contains('e-img-caption')) {\n var capImgWrap = select('.e-img-wrap', selectParent);\n var textEle = select('.e-img-inner', selectParent);\n var newTextEle = textEle.cloneNode(true);\n detach(select('a', selectParent));\n detach(textEle);\n capImgWrap.appendChild(e.item.insertElement);\n capImgWrap.appendChild(newTextEle);\n }\n else {\n detach(selectParent);\n if (Browser.isIE && e.item.selection) {\n e.item.selection.restore();\n }\n InsertHtml.Insert(this.parent.currentDocument, e.item.insertElement, this.parent.editableElement);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.editImageLink = function (e) {\n e.item.selectNode[0].parentElement.href = e.item.url;\n if (isNOU(e.item.target)) {\n e.item.selectNode[0].parentElement.removeAttribute('target');\n }\n else {\n e.item.selectNode[0].parentElement.target = e.item.target;\n }\n this.callBack(e);\n };\n ImageCommand.prototype.removeImage = function (e) {\n if (closest(e.item.selectNode[0], 'a')) {\n if (e.item.selectNode[0].parentElement.nodeName === 'A' && !isNOU(e.item.selectNode[0].parentElement.innerText)) {\n if (!isNOU(closest(e.item.selectNode[0], '.' + classes.CLASS_CAPTION))) {\n detach(closest(e.item.selectNode[0], '.' + classes.CLASS_CAPTION));\n }\n else {\n detach(e.item.selectNode[0]);\n }\n }\n else {\n detach(closest(e.item.selectNode[0], 'a'));\n }\n }\n else if (!isNOU(closest(e.item.selectNode[0], '.' + classes.CLASS_CAPTION))) {\n detach(closest(e.item.selectNode[0], '.' + classes.CLASS_CAPTION));\n }\n else {\n detach(e.item.selectNode[0]);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.insertAltTextImage = function (e) {\n e.item.selectNode[0].setAttribute('alt', e.item.altText);\n this.callBack(e);\n };\n ImageCommand.prototype.imageDimension = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.style.height = '';\n selectNode.style.width = '';\n if (e.item.width !== 'auto') {\n selectNode.style.width = formatUnit(e.item.width);\n }\n else {\n selectNode.removeAttribute('width');\n }\n if (e.item.height !== 'auto') {\n selectNode.style.height = formatUnit(e.item.height);\n }\n else {\n selectNode.removeAttribute('height');\n }\n this.callBack(e);\n };\n ImageCommand.prototype.imageCaption = function (e) {\n InsertHtml.Insert(this.parent.currentDocument, e.item.insertElement, this.parent.editableElement);\n this.callBack(e);\n };\n ImageCommand.prototype.imageJustifyLeft = function (e) {\n var selectNode = e.item.selectNode[0];\n if (!isNOU(selectNode)) {\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_RIGHT);\n addClass([selectNode.parentElement], classes.CLASS_IMAGE_LEFT);\n addClass([selectNode], classes.CLASS_IMAGE_LEFT);\n }\n else {\n addClass([selectNode], classes.CLASS_IMAGE_LEFT);\n }\n this.callBack(e);\n }\n };\n ImageCommand.prototype.imageJustifyCenter = function (e) {\n var selectNode = e.item.selectNode[0];\n if (!isNOU(selectNode)) {\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_CENTER);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_LEFT);\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_RIGHT);\n addClass([selectNode.parentElement], classes.CLASS_IMAGE_CENTER);\n addClass([selectNode], classes.CLASS_IMAGE_CENTER);\n }\n else {\n addClass([selectNode], classes.CLASS_IMAGE_CENTER);\n }\n this.callBack(e);\n }\n };\n ImageCommand.prototype.imageJustifyRight = function (e) {\n var selectNode = e.item.selectNode[0];\n if (!isNOU(selectNode)) {\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_LEFT);\n addClass([selectNode.parentElement], classes.CLASS_IMAGE_RIGHT);\n addClass([selectNode], classes.CLASS_IMAGE_RIGHT);\n }\n else {\n addClass([selectNode], classes.CLASS_IMAGE_RIGHT);\n }\n this.callBack(e);\n }\n };\n ImageCommand.prototype.imageInline = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n addClass([selectNode], classes.CLASS_IMAGE_INLINE);\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_BREAK);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_CENTER);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_CAPTION_INLINE);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.imageBreak = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.removeAttribute('class');\n addClass([selectNode], classes.CLASS_IMAGE_BREAK);\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_CAPTION_INLINE);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_CENTER);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_BREAK);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return ImageCommand;\n}());\nexport { ImageCommand };\n","import { createElement, isNullOrUndefined as isNOU, detach, addClass, Browser } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport * as classes from './../base/classes';\nimport { InsertHtml } from './inserthtml';\n/**\n * Audio internal component\n *\n * @hidden\n\n */\nvar AudioCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Audio plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function AudioCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n AudioCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.AUDIO, this.audioCommand, this);\n };\n /**\n * audioCommand method\n *\n * @param {IHtmlItem} e - specifies the element\n * @returns {void}\n * @hidden\n\n */\n AudioCommand.prototype.audioCommand = function (e) {\n var selectNode;\n var value = e.value.toString().toLowerCase();\n if (value === 'inline' || value === 'break' || value === 'audioremove') {\n selectNode = e.item.selectNode[0];\n }\n switch (value) {\n case 'audio':\n case 'audioreplace':\n this.createAudio(e);\n break;\n case 'inline':\n selectNode.removeAttribute('class');\n selectNode.closest('.' + classes.CLASS_AUDIO_WRAP).style.display = 'inline-block';\n addClass([selectNode], [classes.CLASS_AUDIO, classes.CLASS_AUDIO_INLINE, classes.CLASS_AUDIO_FOCUS]);\n this.callBack(e);\n break;\n case 'break':\n selectNode.removeAttribute('class');\n selectNode.closest('.' + classes.CLASS_AUDIO_WRAP).style.display = 'block';\n addClass([selectNode], [classes.CLASS_AUDIO_BREAK, classes.CLASS_AUDIO, classes.CLASS_AUDIO_FOCUS]);\n this.callBack(e);\n break;\n case 'audioremove':\n detach(selectNode);\n this.callBack(e);\n break;\n }\n };\n AudioCommand.prototype.createAudio = function (e) {\n var _this = this;\n var isReplaced = false;\n var wrapElement;\n if (!isNOU(e.item.selectParent) && e.item.selectParent[0].classList &&\n (e.item.selectParent[0].classList.contains(classes.CLASS_CLICK_ELEM) ||\n e.item.selectParent[0].classList.contains(classes.CLASS_AUDIO_WRAP))) {\n var audioEle = e.item.selectParent[0].querySelector('source');\n this.setStyle(audioEle, e);\n isReplaced = true;\n }\n else {\n wrapElement = createElement('span', { className: classes.CLASS_AUDIO_WRAP, attrs: { contentEditable: 'false', title: e.item.fileName } });\n var audElement = createElement('audio', { className: classes.CLASS_AUDIO + ' ' + classes.CLASS_AUDIO_INLINE, attrs: { controls: '' } });\n var sourceElement = createElement('source');\n var clickElement = createElement('span', { className: classes.CLASS_CLICK_ELEM });\n this.setStyle(sourceElement, e);\n audElement.appendChild(sourceElement);\n clickElement.appendChild(audElement);\n wrapElement.appendChild(clickElement);\n if (!isNOU(e.item.selection)) {\n e.item.selection.restore();\n }\n InsertHtml.Insert(this.parent.currentDocument, wrapElement, this.parent.editableElement);\n if (wrapElement.nextElementSibling === null) {\n var insertElem = createElement('br');\n wrapElement.parentNode.insertBefore(insertElem, wrapElement.nextSibling);\n }\n }\n if (e.callBack && (isNOU(e.selector) || !isNOU(e.selector) && e.selector !== 'pasteCleanupModule')) {\n var selectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)[0];\n var audioElm_1 = (e.value === 'AudioReplace' || isReplaced) ? e.item.selectParent[0].querySelector('audio')\n : (Browser.isIE ? selectedNode : selectedNode.querySelector('audio'));\n audioElm_1.addEventListener('loadeddata', function () {\n if (e.value !== 'AudioReplace' || !isReplaced) {\n e.callBack({\n requestType: 'Audios',\n editorMode: 'HTML',\n event: e.event,\n range: _this.parent.nodeSelection.getRange(_this.parent.currentDocument),\n elements: [audioElm_1]\n });\n }\n });\n if (isReplaced) {\n audioElm_1.load();\n }\n }\n };\n AudioCommand.prototype.setStyle = function (sourceElement, e) {\n if (!isNOU(e.item.url)) {\n sourceElement.setAttribute('src', e.item.url);\n }\n sourceElement.type = e.item.fileName && e.item.fileName.split('.').length > 0 ?\n 'audio/' + e.item.fileName.split('.')[e.item.fileName.split('.').length - 1] :\n e.item.url && e.item.url.split('.').length > 0 ? 'audio/' + e.item.url.split('.')[e.item.url.split('.').length - 1] : '';\n };\n AudioCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return AudioCommand;\n}());\nexport { AudioCommand };\n","import { createElement, isNullOrUndefined as isNOU, detach, addClass, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport * as classes from './../base/classes';\nimport { InsertHtml } from './inserthtml';\n/**\n * Video internal component\n *\n * @hidden\n\n */\nvar VideoCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Video plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function VideoCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n VideoCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.VIDEO, this.videoCommand, this);\n };\n /**\n * videoCommand method\n *\n * @param {IHtmlItem} e - specifies the element\n * @returns {void}\n * @hidden\n\n */\n VideoCommand.prototype.videoCommand = function (e) {\n var selectNode;\n var videoWrapNode;\n var videoClickElem;\n var value = e.value.toString().toLowerCase();\n if (value !== 'video' && value !== 'videoreplace') {\n selectNode = e.item.selectNode[0];\n videoWrapNode = selectNode.closest('.' + classes.CLASS_EMBED_VIDEO_WRAP);\n videoClickElem = selectNode.closest('.' + classes.CLASS_VIDEO_CLICK_ELEM);\n }\n switch (value) {\n case 'video':\n case 'videoreplace':\n this.createVideo(e);\n break;\n case 'videodimension':\n this.videoDimension(e);\n break;\n case 'inline':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'inline-block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = '';\n }\n addClass([selectNode], [classes.CLASS_VIDEO, classes.CLASS_VIDEO_INLINE, classes.CLASS_VIDEO_FOCUS]);\n this.callBack(e);\n break;\n case 'break':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = '';\n }\n addClass([selectNode], [classes.CLASS_VIDEO_BREAK, classes.CLASS_VIDEO, classes.CLASS_VIDEO_FOCUS]);\n this.callBack(e);\n break;\n case 'justifyleft':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = 'left';\n }\n addClass([selectNode], [classes.CLASS_VIDEO, classes.CLASS_VIDEO_LEFT]);\n this.callBack(e);\n break;\n case 'justifycenter':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = '';\n }\n addClass([selectNode], [classes.CLASS_VIDEO, classes.CLASS_VIDEO_CENTER]);\n this.callBack(e);\n break;\n case 'justifyright':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = 'right';\n }\n addClass([selectNode], [classes.CLASS_VIDEO, classes.CLASS_VIDEO_RIGHT]);\n this.callBack(e);\n break;\n case 'videoremove':\n detach(selectNode.parentElement);\n this.callBack(e);\n break;\n }\n };\n VideoCommand.prototype.createVideo = function (e) {\n var _this = this;\n var isReplaced = false;\n var wrapElement;\n var vidElement;\n var sourceElement;\n if (e.value === 'VideoReplace' && !isNOU(e.item.selectParent) && (e.item.selectParent[0].tagName === 'VIDEO')) {\n var videoEle = e.item.selectParent[0].querySelector('source');\n this.setStyle(videoEle, e, videoEle);\n isReplaced = true;\n }\n else if (e.value === 'VideoReplace' && !isNOU(e.item.selectParent) &&\n e.item.selectParent[0].classList &&\n e.item.selectParent[0].classList.contains(classes.CLASS_VIDEO_CLICK_ELEM)) {\n e.item.selectParent[0].innerHTML = e.item.fileName;\n this.setStyle(e.item.selectParent[0].firstElementChild, e, e.item.selectParent[0].firstElementChild);\n }\n else {\n if (!e.item.isEmbedUrl) {\n wrapElement = createElement('span', { className: classes.CLASS_VIDEO_WRAP, attrs: { contentEditable: 'false', title: e.item.fileName } });\n vidElement = createElement('video', { className: classes.CLASS_VIDEO + ' ' + classes.CLASS_VIDEO_INLINE, attrs: { controls: '' } });\n sourceElement = createElement('source');\n this.setStyle(sourceElement, e, vidElement);\n vidElement.appendChild(sourceElement);\n wrapElement.appendChild(vidElement);\n }\n else {\n wrapElement = createElement('span', { className: classes.CLASS_EMBED_VIDEO_WRAP, attrs: { contentEditable: 'false' } });\n var clickElement = createElement('span', { className: classes.CLASS_VIDEO_CLICK_ELEM });\n var temp = createElement('template');\n temp.innerHTML = e.item.fileName;\n clickElement.appendChild(temp.content);\n vidElement = sourceElement = clickElement.firstElementChild;\n this.setStyle(sourceElement, e, vidElement);\n wrapElement.appendChild(clickElement);\n }\n if (!isNOU(e.item.selection)) {\n e.item.selection.restore();\n }\n InsertHtml.Insert(this.parent.currentDocument, wrapElement, this.parent.editableElement);\n if (wrapElement.nextElementSibling === null) {\n var insertElem = createElement('br');\n wrapElement.parentNode.insertBefore(insertElem, wrapElement.nextSibling);\n }\n }\n if (e.callBack && (isNOU(e.selector) || !isNOU(e.selector) && e.selector !== 'pasteCleanupModule')) {\n var selectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)[0];\n var videoElm_1 = (e.value === 'VideoReplace' || isReplaced) ? !e.item.isEmbedUrl ? e.item.selectParent[0] : e.item.selectParent[0].querySelector('iframe')\n : (Browser.isIE ? selectedNode : !e.item.isEmbedUrl ? selectedNode.lastElementChild : selectedNode.querySelector('iframe'));\n videoElm_1.addEventListener(videoElm_1.tagName !== 'IFRAME' ? 'loadeddata' : 'load', function () {\n if (e.value !== 'VideoReplace' || !isReplaced) {\n if (e.item.isEmbedUrl && videoElm_1) {\n videoElm_1.classList.add('e-rte-embed-url');\n }\n e.callBack({\n requestType: 'Videos',\n editorMode: 'HTML',\n event: e.event,\n range: _this.parent.nodeSelection.getRange(_this.parent.currentDocument),\n elements: [videoElm_1]\n });\n }\n });\n if (isReplaced) {\n videoElm_1.load();\n }\n if (Browser.userAgent.indexOf('Firefox') !== -1) {\n vidElement.addEventListener('play', function () { _this.editAreaVideoClick(e); });\n vidElement.addEventListener('pause', function () { _this.editAreaVideoClick(e); });\n }\n }\n };\n VideoCommand.prototype.editAreaVideoClick = function (e) {\n e.callBack({\n requestType: 'VideosPlayPause',\n editorMode: 'HTML',\n event: e.event\n });\n };\n VideoCommand.prototype.setStyle = function (sourceElement, e, videoEle) {\n if (e.item.url !== '' && !isNOU(e.item.url)) {\n sourceElement.setAttribute('src', e.item.url);\n }\n if (!e.item.isEmbedUrl) {\n sourceElement.type = e.item.fileName && e.item.fileName.split('.').length > 0 ?\n 'video/' + e.item.fileName.split('.')[e.item.fileName.split('.').length - 1] :\n e.item.url && e.item.url.split('.').length > 0 ? 'video/' + e.item.url.split('.')[e.item.url.split('.').length - 1] : '';\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.width)) {\n videoEle.setAttribute('width', formatUnit(e.item.width.width));\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.height)) {\n videoEle.setAttribute('height', formatUnit(e.item.height.height));\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.minWidth)) {\n videoEle.style.minWidth = formatUnit(e.item.width.minWidth);\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.maxWidth)) {\n videoEle.style.maxWidth = formatUnit(e.item.width.maxWidth);\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.minHeight)) {\n videoEle.style.minHeight = formatUnit(e.item.height.minHeight);\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.maxHeight)) {\n videoEle.style.maxHeight = formatUnit(e.item.height.maxHeight);\n }\n };\n VideoCommand.prototype.videoDimension = function (e) {\n var selectNode = !(e.item.selectNode[0].classList.contains(classes.CLASS_VIDEO_CLICK_ELEM)) ? e.item.selectNode[0] :\n e.item.selectNode[0].querySelector('iframe');\n selectNode.style.height = '';\n selectNode.style.width = '';\n if (e.item.width !== 'auto') {\n selectNode.style.width = formatUnit(e.item.width);\n }\n else {\n selectNode.removeAttribute('width');\n }\n if (e.item.height !== 'auto') {\n selectNode.style.height = formatUnit(e.item.height);\n }\n else {\n selectNode.removeAttribute('height');\n }\n this.callBack(e);\n };\n VideoCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return VideoCommand;\n}());\nexport { VideoCommand };\n","import { createElement, closest, detach, Browser, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport { InsertHtml } from './inserthtml';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar TableCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function TableCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n TableCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.TABLE, this.createTable, this);\n this.parent.observer.on(CONSTANT.INSERT_ROW, this.insertRow, this);\n this.parent.observer.on(CONSTANT.INSERT_COLUMN, this.insertColumn, this);\n this.parent.observer.on(CONSTANT.DELETEROW, this.deleteRow, this);\n this.parent.observer.on(CONSTANT.DELETECOLUMN, this.deleteColumn, this);\n this.parent.observer.on(CONSTANT.REMOVETABLE, this.removeTable, this);\n this.parent.observer.on(CONSTANT.TABLEHEADER, this.tableHeader, this);\n this.parent.observer.on(CONSTANT.TABLE_VERTICAL_ALIGN, this.tableVerticalAlign, this);\n this.parent.observer.on(CONSTANT.TABLE_MERGE, this.cellMerge, this);\n this.parent.observer.on(CONSTANT.TABLE_HORIZONTAL_SPLIT, this.HorizontalSplit, this);\n this.parent.observer.on(CONSTANT.TABLE_VERTICAL_SPLIT, this.VerticalSplit, this);\n this.parent.observer.on(CONSTANT.TABLE_MOVE, this.tableMove, this);\n };\n TableCommand.prototype.createTable = function (e) {\n var table = createElement('table', { className: 'e-rte-table' });\n var tblBody = createElement('tbody');\n if (!isNOU(e.item.width.width)) {\n table.style.width = this.calculateStyleValue(e.item.width.width);\n }\n if (!isNOU(e.item.width.minWidth)) {\n table.style.minWidth = this.calculateStyleValue(e.item.width.minWidth);\n }\n if (!isNOU(e.item.width.maxWidth)) {\n table.style.maxWidth = this.calculateStyleValue(e.item.width.maxWidth);\n }\n var tdWid = parseInt(e.item.width.width, 10) > 100 ?\n 100 / e.item.columns : parseInt(e.item.width.width, 10) / e.item.columns;\n for (var i = 0; i < e.item.rows; i++) {\n var row = createElement('tr');\n for (var j = 0; j < e.item.columns; j++) {\n var cell = createElement('td');\n cell.appendChild(createElement('br'));\n cell.style.width = tdWid + '%';\n row.appendChild(cell);\n }\n tblBody.appendChild(row);\n }\n table.appendChild(tblBody);\n e.item.selection.restore();\n InsertHtml.Insert(this.parent.currentDocument, table, this.parent.editableElement);\n this.removeEmptyNode();\n e.item.selection.setSelectionText(this.parent.currentDocument, table.querySelector('td'), table.querySelector('td'), 0, 0);\n if (table.nextElementSibling === null) {\n var insertElem = void 0;\n if (e.enterAction === 'DIV') {\n insertElem = createElement('div');\n insertElem.appendChild(createElement('br'));\n }\n else if (e.enterAction === 'BR') {\n insertElem = createElement('br');\n }\n else {\n insertElem = createElement('p');\n insertElem.appendChild(createElement('br'));\n }\n this.insertAfter(insertElem, table);\n }\n table.querySelector('td').classList.add('e-cell-select');\n if (e.callBack) {\n e.callBack({\n requestType: 'Table',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: [table]\n });\n }\n return table;\n };\n TableCommand.prototype.calculateStyleValue = function (value) {\n var styleValue;\n if (typeof (value) === 'string') {\n if (value.indexOf('px') || value.indexOf('%') || value.indexOf('auto')) {\n styleValue = value;\n }\n else {\n styleValue = value + 'px';\n }\n }\n else {\n styleValue = value + 'px';\n }\n return styleValue;\n };\n TableCommand.prototype.removeEmptyNode = function () {\n var emptyUl = this.parent.editableElement.querySelectorAll('ul:empty, ol:empty');\n for (var i = 0; i < emptyUl.length; i++) {\n detach(emptyUl[i]);\n }\n var emptyLiChild = this.parent.editableElement.querySelectorAll('li *:empty:not(img)');\n for (var i = 0; i < emptyLiChild.length; i++) {\n detach(emptyLiChild[i]);\n if (emptyLiChild.length === i + 1) {\n emptyLiChild = this.parent.editableElement.querySelectorAll('li *:empty:not(img)');\n i = -1;\n }\n }\n var emptyLi = this.parent.editableElement.querySelectorAll('li:empty');\n for (var i = 0; i < emptyLi.length; i++) {\n detach(emptyLi[i]);\n }\n };\n TableCommand.prototype.insertAfter = function (newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n TableCommand.prototype.getSelectedCellMinMaxIndex = function (e) {\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n var a = 0;\n var minI = e.length;\n var maxI = 0;\n var minJ = e[0].length;\n var maxJ = 0;\n //eslint-disable-next-line\n for (var i = 0; a < selectedCells.length; a++) {\n var selectedCellIndex = this.getCorrespondingIndex(selectedCells[a], e);\n var minMaxIndex = this.FindIndex(selectedCellIndex[0], selectedCellIndex[1], e);\n //eslint-disable-next-line\n minI = Math.min(selectedCellIndex[0], minI),\n maxI = Math.max(minMaxIndex[0], maxI),\n minJ = Math.min(selectedCellIndex[1], minJ),\n maxJ = Math.max(minMaxIndex[1], maxJ);\n }\n return {\n startRow: minI,\n endRow: maxI,\n startColumn: minJ,\n endColumn: maxJ\n };\n };\n TableCommand.prototype.insertRow = function (e) {\n var isBelow = e.item.subCommand === 'InsertRowBefore' ? false : true;\n var selectedCell = e.item.selection.range.startContainer;\n if (!(selectedCell.nodeName === 'TH' || selectedCell.nodeName === 'TD')) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n if (selectedCell.nodeName.toLowerCase() === 'th' && e.item.subCommand === 'InsertRowBefore') {\n return;\n }\n this.curTable = closest(this.parent.nodeSelection.range.startContainer.parentElement, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length === 0) {\n var lastRow = this.curTable.rows[this.curTable.rows.length - 1];\n var cloneRow = lastRow.cloneNode(true);\n cloneRow.removeAttribute('rowspan');\n this.insertAfter(cloneRow, lastRow);\n }\n else {\n var allCells = this.getCorrespondingColumns();\n var minMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var minVal = isBelow ? minMaxIndex.endRow : minMaxIndex.startRow;\n var newRow = createElement('tr');\n var isHeaderSelect = this.curTable.querySelectorAll('th.e-cell-select').length > 0;\n for (var i = 0; i < allCells[minVal].length; i++) {\n // eslint-disable-next-line max-len\n if (isBelow && minVal < allCells.length - 1 && allCells[minVal][i] === allCells[minVal + 1][i] ||\n !isBelow && 0 < minVal && allCells[minVal][i] === allCells[minVal - 1][i]) {\n if (0 === i || 0 < i && allCells[minVal][i] !== allCells[minVal][i - 1]) {\n allCells[minVal][i].setAttribute('rowspan', (parseInt(allCells[minVal][i].getAttribute('rowspan'), 10) + 1).toString());\n }\n }\n else {\n var tdElement = createElement('td');\n tdElement.appendChild(createElement('br'));\n newRow.appendChild(tdElement);\n tdElement.setAttribute('style', allCells[(isHeaderSelect && isBelow) ? allCells[(minVal + 1)] ? (minVal + 1) : minVal : minVal][i].getAttribute('style'));\n }\n }\n // eslint-disable-next-line\n var selectedRow = void 0;\n if (isHeaderSelect && isBelow) {\n selectedRow = this.curTable.querySelector('tbody').childNodes[0];\n }\n else {\n selectedRow = this.curTable.rows[minVal];\n }\n // eslint-disable-next-line\n (e.item.subCommand === 'InsertRowBefore') ? selectedRow.parentElement.insertBefore(newRow, selectedRow) :\n (isHeaderSelect ? selectedRow.parentElement.insertBefore(newRow, selectedRow) :\n this.insertAfter(newRow, selectedRow));\n }\n e.item.selection.setSelectionText(this.parent.currentDocument, e.item.selection.range.startContainer, e.item.selection.range.startContainer, 0, 0);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.insertColumn = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (!(selectedCell.nodeName === 'TH' || selectedCell.nodeName === 'TD')) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var curRow = closest(selectedCell, 'tr');\n var curCell;\n var allRows = closest((curRow), 'table').rows;\n var colIndex = Array.prototype.slice.call(curRow.querySelectorAll(':scope > td, :scope > th')).indexOf(selectedCell);\n var previousWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll(':scope > td, :scope > th').length);\n var currentWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll(':scope > td, :scope > th').length + 1);\n var currentTabElm = closest(curRow, 'table');\n var thTdElm = closest(curRow, 'table').querySelectorAll('th,td');\n for (var i = 0; i < thTdElm.length; i++) {\n thTdElm[i].dataset.oldWidth = (thTdElm[i].offsetWidth / currentTabElm.offsetWidth * 100) + '%';\n }\n for (var i = 0; i < allRows.length; i++) {\n curCell = allRows[i].querySelectorAll(':scope > td, :scope > th')[colIndex];\n var colTemplate = curCell.cloneNode(true);\n colTemplate.innerHTML = '';\n colTemplate.appendChild(createElement('br'));\n colTemplate.removeAttribute('class');\n colTemplate.removeAttribute('colspan');\n colTemplate.removeAttribute('rowspan');\n // eslint-disable-next-line\n (e.item.subCommand === 'InsertColumnLeft') ? curCell.parentElement.insertBefore(colTemplate, curCell) :\n this.insertAfter(colTemplate, curCell);\n colTemplate.style.width = currentWidth.toFixed(4) + '%';\n delete colTemplate.dataset.oldWidth;\n }\n for (var i = 0; i < thTdElm.length; i++) {\n thTdElm[i].style.width = (Number(thTdElm[i].dataset.oldWidth.split('%')[0]) * currentWidth / previousWidth).toFixed(4) + '%';\n delete thTdElm[i].dataset.oldWidth;\n }\n e.item.selection.setSelectionText(this.parent.currentDocument, selectedCell, selectedCell, 0, 0);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.deleteColumn = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (selectedCell.nodeType === 3) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var tBodyHeadEle = closest(selectedCell, selectedCell.tagName === 'TH' ? 'thead' : 'tbody');\n var rowIndex = tBodyHeadEle && Array.prototype.indexOf.call(tBodyHeadEle.childNodes, selectedCell.parentNode);\n this.curTable = closest(selectedCell, 'table');\n var curRow = closest(selectedCell, 'tr');\n if (curRow.querySelectorAll('th,td').length === 1) {\n e.item.selection.restore();\n detach(closest(selectedCell.parentElement, 'table'));\n }\n else {\n var deleteIndex = void 0;\n var allCells = this.getCorrespondingColumns();\n //eslint-disable-next-line\n var selectedMinMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var minCol = selectedMinMaxIndex.startColumn;\n var maxCol = selectedMinMaxIndex.endColumn;\n for (var i = 0; i < allCells.length; i++) {\n var currentRow = allCells[i];\n for (var j = 0; j < currentRow.length; j++) {\n var currentCell = currentRow[j];\n //eslint-disable-next-line\n var currentCellIndex = this.getCorrespondingIndex(currentCell, allCells);\n var colSpanVal = parseInt(currentCell.getAttribute('colspan'), 10) || 1;\n if (currentCellIndex[1] + (colSpanVal - 1) >= minCol && currentCellIndex[1] <= maxCol) {\n if (colSpanVal > 1) {\n currentCell.setAttribute('colspan', (colSpanVal - 1).toString());\n }\n else {\n detach(currentCell);\n deleteIndex = j;\n if (Browser.isIE) {\n e.item.selection.setSelectionText(this.parent.currentDocument, this.curTable.querySelector('td'), this.curTable.querySelector('td'), 0, 0);\n this.curTable.querySelector('td, th').classList.add('e-cell-select');\n }\n }\n }\n }\n }\n if (deleteIndex > -1) {\n var rowHeadEle = tBodyHeadEle.children[rowIndex];\n var nextFocusCell = rowHeadEle &&\n rowHeadEle.children[(deleteIndex <= rowHeadEle.children.length - 1 ? deleteIndex : deleteIndex - 1)];\n if (nextFocusCell) {\n e.item.selection.setSelectionText(this.parent.currentDocument, nextFocusCell, nextFocusCell, 0, 0);\n nextFocusCell.classList.add('e-cell-select');\n }\n }\n }\n if (e.callBack) {\n var sContainer = this.parent.nodeSelection.getRange(this.parent.currentDocument).startContainer;\n if (sContainer.nodeName !== 'TD') {\n var startChildLength = this.parent.nodeSelection.getRange(this.parent.currentDocument).startOffset;\n var focusNode = sContainer.children[startChildLength];\n if (focusNode) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, focusNode, 0);\n }\n }\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.deleteRow = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (selectedCell.nodeType === 3) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var colIndex = Array.prototype.indexOf.call(selectedCell.parentNode.childNodes, selectedCell);\n this.curTable = closest(selectedCell, 'table');\n var currentRow;\n var allCells = this.getCorrespondingColumns();\n var minMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var maxI;\n var j;\n if (this.curTable.rows.length === 1) {\n e.item.selection.restore();\n detach(closest(selectedCell.parentElement, 'table'));\n }\n else {\n for (maxI = minMaxIndex.endRow; maxI >= minMaxIndex.startRow; maxI--) {\n currentRow = this.curTable.rows[maxI];\n for (j = 0; j < allCells[maxI].length; j++) {\n if (j === 0 || allCells[maxI][j] !== allCells[maxI][j - 1]) {\n if (1 < parseInt(allCells[maxI][j].getAttribute('rowspan'), 10)) {\n var rowSpanVal = parseInt(allCells[maxI][j].getAttribute('rowspan'), 10) - 1;\n /* eslint-disable */\n if (1 === rowSpanVal) {\n allCells[maxI][j].removeAttribute('rowspan');\n var cell = 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 if (e.item.subCommand === 'AlignTop') {\n e.item.tableCell.style.verticalAlign = 'top';\n }\n else if (e.item.subCommand === 'AlignMiddle') {\n e.item.tableCell.style.verticalAlign = 'middle';\n }\n else {\n e.item.tableCell.style.verticalAlign = 'bottom';\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.cellMerge = function (e) {\n if (isNOU(this.curTable)) {\n this.curTable = closest(this.parent.nodeSelection.range.startContainer.parentElement, 'table');\n }\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n if (selectedCells.length < 2) {\n return;\n }\n this.mergeCellContent();\n var minMaxIndexes = this.getSelectedMinMaxIndexes(this.getCorrespondingColumns());\n var firstCell = selectedCells[0];\n var rowSelectedCells = firstCell.parentElement.querySelectorAll('.e-cell-select');\n if (minMaxIndexes.startColumn < minMaxIndexes.endColumn) {\n firstCell.setAttribute('colspan', (minMaxIndexes.endColumn - minMaxIndexes.startColumn + 1).toString());\n }\n if (minMaxIndexes.startRow < minMaxIndexes.endRow) {\n firstCell.setAttribute('rowspan', (minMaxIndexes.endRow - minMaxIndexes.startRow + 1).toString());\n }\n var totalWidth = 0;\n for (var j = rowSelectedCells.length - 1; j >= 0; j--) {\n totalWidth = totalWidth + parseFloat(rowSelectedCells[j].style.width);\n }\n firstCell.style.width = totalWidth + '%';\n for (var i = 1; i <= selectedCells.length - 1; i++) {\n detach(selectedCells[i]);\n }\n for (var i = 0; i < this.curTable.rows.length; i++) {\n if (this.curTable.rows[i].innerHTML === '') {\n detach(this.curTable.rows[i]);\n }\n }\n this.updateRowSpanStyle(minMaxIndexes.startRow, minMaxIndexes.endRow, this.getCorrespondingColumns());\n this.updateColSpanStyle(minMaxIndexes.startColumn, minMaxIndexes.endColumn, this.getCorrespondingColumns());\n e.item.selection.setSelectionText(this.parent.currentDocument, e.item.selection.range.startContainer, e.item.selection.range.startContainer, 0, 0);\n if (this.parent.nodeSelection && 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 avgWidth = parseFloat(this.activeCell.style.width) / 2;\n if (this.activeCell.tagName === 'TH' && isNaN(avgWidth)) {\n var cellCount = this.curTable.querySelector('tr').childElementCount;\n var colSpanCount = 0;\n for (var i = 0; i < cellCount; i++) {\n colSpanCount = colSpanCount + (parseInt(this.curTable.querySelector('tr').children[i].getAttribute('colspan'), 10) || 1);\n }\n avgWidth = parseFloat((((this.activeCell.offsetWidth / 2) / this.curTable.offsetWidth) * 100).toFixed(1));\n }\n var activeCellIndex = this.getCorrespondingIndex(this.activeCell, this.getCorrespondingColumns());\n var correspondingColumns = this.getCorrespondingColumns();\n var activeCellcolSpan = parseInt(this.activeCell.getAttribute('colspan'), 10);\n if (activeCellcolSpan > 1) {\n // eslint-disable-next-line\n 1 < Math.ceil(activeCellcolSpan / 2) ? this.activeCell.setAttribute('colspan', (activeCellcolSpan / 2).toString())\n : this.activeCell.removeAttribute('colspan');\n // eslint-disable-next-line\n 1 < (activeCellcolSpan - activeCellcolSpan / 2) ? newCell.setAttribute('colspan', \n // eslint-disable-next-line\n (activeCellcolSpan - activeCellcolSpan / 2).toString()) : newCell.removeAttribute('colspan');\n }\n else {\n for (var i = 0; i <= allRows.length - 1; i++) {\n if (0 === i || correspondingColumns[i][activeCellIndex[1]] !== correspondingColumns[i - 1][activeCellIndex[1]]) {\n var currentCell = correspondingColumns[i][activeCellIndex[1]];\n if (currentCell !== this.activeCell) {\n currentCell.setAttribute('colspan', ((parseInt(currentCell.getAttribute('colspan'), 10) ?\n parseInt(currentCell.getAttribute('colspan'), 10) : 1) + 1).toString());\n }\n }\n }\n }\n this.activeCell.style.width = avgWidth + '%';\n newCell.style.width = avgWidth + '%';\n this.activeCell.parentNode.insertBefore(newCell, this.activeCell.nextSibling);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.getCorrespondingColumns = function () {\n var elementArray = [];\n // eslint-disable-next-line\n var _this = this;\n var colspan = 0;\n var allRows = _this.curTable.rows;\n for (var i = 0; i <= allRows.length - 1; i++) {\n var ele = allRows[i];\n var index = 0;\n for (var j = 0; j <= ele.children.length - 1; j++) {\n /* eslint-disable */\n var colEle = ele.children[j];\n for (var ele_1 = colEle, colspan_1 = parseInt(ele_1.getAttribute('colspan'), 10) || 1, rowSpan = parseInt(ele_1.getAttribute('rowspan'), 10) || 1, rowIndex = i; rowIndex < i + rowSpan; rowIndex++) {\n for (var colIndex = index; colIndex < index + colspan_1; colIndex++) {\n elementArray[rowIndex] || (elementArray[rowIndex] = []);\n elementArray[rowIndex][colIndex] ? index++ : elementArray[rowIndex][colIndex] = colEle;\n }\n }\n index += colspan;\n }\n /* eslint-enable */\n }\n return elementArray;\n };\n // eslint-disable-next-line\n TableCommand.prototype.FindIndex = function (rowIndex, columnIndex, cells) {\n var nextIndex;\n var nextCol;\n for (nextIndex = rowIndex + 1, nextCol = columnIndex + 1; nextIndex < cells.length;) {\n if (cells[nextIndex][columnIndex] !== cells[rowIndex][columnIndex]) {\n nextIndex--;\n break;\n }\n nextIndex++;\n }\n for (nextIndex === cells.length && nextIndex--; nextCol < cells[rowIndex].length;) {\n if (cells[rowIndex][nextCol] !== cells[rowIndex][columnIndex]) {\n nextCol--;\n break;\n }\n nextCol++;\n }\n return nextCol === cells[rowIndex].length && nextCol--,\n [\n nextIndex,\n nextCol\n ];\n };\n TableCommand.prototype.getCorrespondingIndex = function (cell, allCells) {\n //let value: RowCol = new RowCol();\n for (var i = 0; i < allCells.length; i++) {\n for (var j = 0; j < allCells[i].length; j++) {\n if (allCells[i][j] === cell) {\n return [i, j];\n }\n }\n }\n return [];\n };\n TableCommand.prototype.highlightCells = function (minRow, maxRow, minCol, maxCol, eleArray) {\n var j;\n var k;\n var startCell;\n var endCell;\n var minRowIndex = minRow;\n var maxRowIndex = maxRow;\n var minColIndex = minCol;\n var maxColIndex = maxCol;\n var minMaxValues = new MinMax();\n for (j = minRowIndex; j <= maxRowIndex; j++) {\n /* eslint-disable */\n if ((1 < (parseInt(eleArray[j][minColIndex].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[j][minColIndex].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[j][minColIndex], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n else if ((1 < (parseInt(eleArray[j][maxColIndex].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[j][maxColIndex].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[j][maxColIndex], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n for (k = minColIndex; k <= maxColIndex; k++) {\n if ((1 < (parseInt(eleArray[minRowIndex][k].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[minRowIndex][k].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[minRowIndex][k], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n else if ((1 < (parseInt(eleArray[maxRowIndex][k].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[maxRowIndex][k].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[maxRowIndex][k], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n }\n minMaxValues = minRowIndex === minRow && maxRowIndex === maxRow && minColIndex === minCol && maxColIndex === maxCol ? {\n startRow: minRow,\n endRow: maxRow,\n startColumn: minCol,\n endColumn: maxCol\n } : this.highlightCells(minRowIndex, maxRowIndex, minColIndex, maxColIndex, eleArray);\n }\n return minMaxValues;\n /* eslint-enable */\n };\n TableCommand.prototype.tableMove = function (e) {\n this.activeCell = e.selectNode[0];\n var target = e.event.target;\n var activeCellTag = this.activeCell.tagName;\n var targetCellTag = target.tagName;\n this.curTable = closest(target, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length > 1) {\n this.parent.nodeSelection.Clear(this.parent.currentDocument);\n }\n if ((target.tagName !== 'TD' && target.tagName !== 'TH') && activeCellTag !== targetCellTag) {\n return;\n }\n var activeRowIndex = Array.prototype.slice.call((this.activeCell).parentElement.parentElement.children)\n .indexOf((this.activeCell).parentElement);\n var activeColumnIndex = Array.prototype.slice.call((this.activeCell).parentElement.children).indexOf(this.activeCell);\n var targetRowIndex = Array.prototype.slice.call(target.parentElement.parentElement.children)\n .indexOf(target.parentElement);\n var targetColumnIndex = Array.prototype.slice.call(target.parentElement.children).indexOf(target);\n var activeCellList = this.curTable.querySelectorAll('.e-cell-select');\n for (var i = activeCellList.length - 1; i >= 0; i--) {\n if (this.activeCell !== activeCellList[i]) {\n activeCellList[i].classList.remove('e-cell-select');\n }\n }\n if (activeRowIndex === targetRowIndex && activeColumnIndex === targetColumnIndex) {\n return;\n }\n var correspondingCells = this.getCorrespondingColumns();\n var activeIndexes = this.getCorrespondingIndex(this.activeCell, correspondingCells);\n var targetIndexes = this.getCorrespondingIndex(target, correspondingCells);\n var minMaxIndexes = this.highlightCells(Math.min(activeIndexes[0], targetIndexes[0]), Math.max(activeIndexes[0], \n /* eslint-disable */\n targetIndexes[0]), Math.min(activeIndexes[1], targetIndexes[1]), Math.max(activeIndexes[1], targetIndexes[1]), correspondingCells);\n for (var rowIndex = minMaxIndexes.startRow; rowIndex <= minMaxIndexes.endRow; rowIndex++) {\n for (var colIndex = minMaxIndexes.startColumn; colIndex <= minMaxIndexes.endColumn; colIndex++) {\n correspondingCells[rowIndex][colIndex].classList.add('e-cell-select');\n }\n }\n if (this.parent.nodeSelection.range) {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, this.parent.nodeSelection.range.endContainer, this.parent.nodeSelection.range.endContainer, 0, 0);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, this.parent.nodeSelection.range.endContainer, 0);\n }\n };\n ;\n return TableCommand;\n}());\nexport { TableCommand };\nvar MinMax = /** @class */ (function () {\n function MinMax() {\n }\n return MinMax;\n}());\n","/**\n * Is formatted or not.\n *\n * @hidden\n\n */\nvar IsFormatted = /** @class */ (function () {\n function IsFormatted() {\n }\n /**\n * getFormattedNode method\n *\n * @param {Node} node - specifies the node.\n * @param {string} format - specifies the string value.\n * @param {Node} endNode - specifies the end node\n * @returns {Node} - returns the node\n * @hidden\n\n */\n IsFormatted.prototype.getFormattedNode = function (node, format, endNode) {\n var parentNode = this.getFormatParent(node, format, endNode);\n if (parentNode !== null && parentNode !== endNode) {\n return parentNode;\n }\n return null;\n };\n IsFormatted.prototype.getFormatParent = function (node, format, endNode) {\n do {\n node = node.parentNode;\n } while (node && (node !== endNode) && !this.isFormattedNode(node, format));\n return node;\n };\n IsFormatted.prototype.isFormattedNode = function (node, format) {\n switch (format) {\n case 'bold':\n return IsFormatted.isBold(node);\n case 'italic':\n return IsFormatted.isItalic(node);\n case 'underline':\n return IsFormatted.isUnderline(node);\n case 'strikethrough':\n return IsFormatted.isStrikethrough(node);\n case 'superscript':\n return IsFormatted.isSuperscript(node);\n case 'subscript':\n return IsFormatted.isSubscript(node);\n case 'fontcolor':\n return this.isFontColor(node);\n case 'fontname':\n return this.isFontName(node);\n case 'fontsize':\n return this.isFontSize(node);\n case 'backgroundcolor':\n return this.isBackgroundColor(node);\n default:\n return false;\n }\n };\n /**\n * isBold method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isBold = function (node) {\n var validTags = ['strong', 'b'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.fontWeight === 'bold') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isItalic method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isItalic = function (node) {\n var validTags = ['em', 'i'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.fontStyle === 'italic') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isUnderline method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isUnderline = function (node) {\n var validTags = ['u'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n /* 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 * `Selection` module is used to handle RTE Selections.\n */\nimport { NodeSelection } from './../../selection/index';\nimport { NodeCutter } from './nodecutter';\nimport { InsertMethods } from './insert-methods';\nimport { IsFormatted } from './isformatted';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nimport { isNullOrUndefined as isNOU, Browser, closest, detach } from '@syncfusion/ej2-base';\nimport { DOMNode } from './dom-node';\nvar SelectionCommands = /** @class */ (function () {\n function SelectionCommands() {\n }\n /**\n * applyFormat method\n *\n * @param {Document} docElement - specifies the document\n * @param {string} format - specifies the string value\n * @param {Node} endNode - specifies the end node\n * @param {string} enterAction - specifies the enter key action\n * @param {string} value - specifies the string value\n * @param {string} selector - specifies the string\n * @param {FormatPainterValue} painterValues specifies the element created and last child\n * @returns {void}\n * @hidden\n\n */\n SelectionCommands.applyFormat = function (docElement, format, endNode, enterAction, value, selector, painterValues) {\n this.enterAction = enterAction;\n var validFormats = ['bold', 'italic', 'underline', 'strikethrough', 'superscript',\n 'subscript', 'uppercase', 'lowercase', 'fontcolor', 'fontname', 'fontsize', 'backgroundcolor'];\n if (validFormats.indexOf(format) > -1 || value === 'formatPainter') {\n if (format === 'backgroundcolor' && value === '') {\n value = 'transparent';\n }\n var domSelection = new NodeSelection();\n var domNode = new DOMNode(endNode, docElement);\n var nodeCutter = new NodeCutter();\n var isFormatted = new IsFormatted();\n var range = domSelection.getRange(docElement);\n var save = domSelection.save(range, docElement);\n var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :\n domSelection.getSelectionNodeCollectionBr(range);\n var isCollapsed = false;\n var isFormat = false;\n var isCursor = false;\n var preventRestore = false;\n var isFontStyle = (['fontcolor', 'fontname', 'fontsize', 'backgroundcolor'].indexOf(format) > -1);\n if (range.collapsed) {\n var currentFormatNode = isFormatted.getFormattedNode(range.startContainer, format, endNode);\n var currentSelector = !isNOU(currentFormatNode) ?\n (currentFormatNode.getAttribute('style') === null ? currentFormatNode.nodeName :\n currentFormatNode.nodeName + '[style=\\'' + currentFormatNode.getAttribute('style') + '\\']') : null;\n if (nodes.length > 0) {\n isCollapsed = true;\n range = nodeCutter.GetCursorRange(docElement, range, nodes[0]);\n }\n else if (range.startContainer.nodeType === 3 && ((range.startContainer.parentElement.childElementCount > 0 &&\n range.startOffset > 0 && range.startContainer.parentElement.firstElementChild.tagName.toLowerCase() !== 'br') ||\n !isNOU(currentFormatNode) && currentFormatNode ===\n (range.startContainer.parentElement.closest(currentSelector)) &&\n ((range.startContainer.parentElement.closest(currentSelector)).textContent.replace(\n // eslint-disable-next-line\n new RegExp(String.fromCharCode(8203), 'g'), '').trim().length !== 0))) {\n isCollapsed = true;\n range = nodeCutter.GetCursorRange(docElement, range, range.startContainer);\n nodes.push(range.startContainer);\n }\n else {\n var cursorNode = this.insertCursorNode(docElement, domSelection, range, isFormatted, nodeCutter, format, value, endNode);\n domSelection.endContainer = domSelection.startContainer = domSelection.getNodeArray(cursorNode, true);\n var childNodes = cursorNode.nodeName === 'BR' && cursorNode.parentNode.childNodes;\n if (!isNOU(childNodes) && childNodes.length === 1 && childNodes[0].nodeName === 'BR' && nodes.length === 0) {\n domSelection.setSelectionText(docElement, range.startContainer, range.endContainer, 0, 0);\n preventRestore = true;\n }\n else {\n domSelection.endOffset = domSelection.startOffset = 1;\n }\n if (cursorNode.nodeName === 'BR' && cursorNode.parentNode.textContent.length === 0) {\n preventRestore = true;\n }\n }\n }\n isCursor = range.collapsed;\n var isSubSup = false;\n for (var index = 0; index < nodes.length; index++) {\n var formatNode = isFormatted.getFormattedNode(nodes[index], format, endNode);\n if (formatNode === null) {\n if (format === 'subscript') {\n formatNode = isFormatted.getFormattedNode(nodes[index], 'superscript', endNode);\n isSubSup = formatNode === null ? false : true;\n }\n else if (format === 'superscript') {\n formatNode = isFormatted.getFormattedNode(nodes[index], 'subscript', endNode);\n isSubSup = formatNode === null ? false : true;\n }\n }\n if (index === 0 && formatNode === null) {\n isFormat = true;\n }\n if (formatNode !== null && (!isFormat || isFontStyle)) {\n nodes[index] = this.removeFormat(nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domSelection, endNode, domNode);\n }\n else {\n nodes[index] = this.insertFormat(docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, painterValues, domNode, endNode);\n }\n domSelection = this.applySelection(nodes, domSelection, nodeCutter, index, isCollapsed);\n }\n if (isIDevice()) {\n setEditFrameFocus(endNode, selector);\n }\n if (!preventRestore) {\n save.restore();\n }\n if (isSubSup) {\n this.applyFormat(docElement, format, endNode, enterAction);\n }\n }\n };\n SelectionCommands.insertCursorNode = function (docElement, domSelection, range, isFormatted, nodeCutter, format, value, endNode) {\n var cursorNodes = domSelection.getNodeCollection(range);\n var domNode = new DOMNode(endNode, docElement);\n var cursorFormat = (cursorNodes.length > 0) ?\n (cursorNodes.length > 1 && range.startContainer === range.endContainer) ?\n this.getCursorFormat(isFormatted, cursorNodes, format, endNode) :\n isFormatted.getFormattedNode(cursorNodes[0], format, endNode) : null;\n var cursorNode = null;\n if (cursorFormat) {\n cursorNode = cursorNodes[0];\n if (cursorFormat.firstChild.textContent.charCodeAt(0) === 8203 && cursorFormat.firstChild.nodeType === 3) {\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n var emptySpaceNode = void 0;\n if (cursorFormat.firstChild === cursorNode) {\n cursorNode.textContent = (cursorFormat.parentElement && (domNode.isBlockNode(cursorFormat.parentElement) &&\n cursorFormat.parentElement.textContent.length <= 1 ? cursorFormat.parentElement.childElementCount > 1 :\n cursorFormat.childElementCount === 0) &&\n (cursorFormat.parentElement.textContent.length > 1 ||\n cursorFormat.parentElement.firstChild && cursorFormat.parentElement.firstChild.nodeType === 1) ?\n cursorNode.textContent : cursorNode.textContent.replace(regEx, ''));\n emptySpaceNode = cursorNode;\n }\n else {\n cursorFormat.firstChild.textContent = cursorFormat.firstChild.textContent.replace(regEx, '');\n emptySpaceNode = cursorFormat.firstChild;\n }\n var pointer = void 0;\n if (emptySpaceNode.textContent.length === 0) {\n if (!isNOU(emptySpaceNode.previousSibling)) {\n cursorNode = emptySpaceNode.previousSibling;\n pointer = emptySpaceNode.textContent.length - 1;\n domSelection.setCursorPoint(docElement, emptySpaceNode, pointer);\n }\n else if (!isNOU(emptySpaceNode.parentElement) && emptySpaceNode.parentElement.textContent.length === 0) {\n var brElem = document.createElement('BR');\n emptySpaceNode.parentElement.appendChild(brElem);\n detach(emptySpaceNode);\n cursorNode = brElem;\n domSelection.setCursorPoint(docElement, cursorNode.parentElement, 0);\n }\n }\n }\n if ((['fontcolor', 'fontname', 'fontsize', 'backgroundcolor'].indexOf(format) > -1)) {\n if (format === 'fontcolor') {\n cursorFormat.style.color = value;\n }\n else if (format === 'fontname') {\n cursorFormat.style.fontFamily = value;\n }\n else if (format === 'fontsize') {\n cursorFormat.style.fontSize = value;\n }\n else {\n cursorFormat.style.backgroundColor = value;\n }\n cursorNode = cursorFormat;\n }\n else {\n InsertMethods.unwrap(cursorFormat);\n }\n }\n else {\n if (cursorNodes.length > 1 && range.startOffset > 0 && (cursorNodes[0].firstElementChild &&\n cursorNodes[0].firstElementChild.tagName.toLowerCase() === 'br')) {\n cursorNodes[0].innerHTML = '';\n }\n if (cursorNodes.length === 1 && range.startOffset === 0 && (cursorNodes[0].nodeName === 'BR' ||\n cursorNodes[0].nextSibling.nodeName === 'BR')) {\n detach(cursorNodes[0].nodeName === '#text' ? cursorNodes[0].nextSibling : cursorNodes[0]);\n }\n cursorNode = this.getInsertNode(docElement, range, format, value).firstChild;\n }\n return cursorNode;\n };\n SelectionCommands.getCursorFormat = function (isFormatted, cursorNodes, format, endNode) {\n var currentNode;\n for (var index = 0; index < cursorNodes.length; index++) {\n currentNode = cursorNodes[index].lastElementChild ?\n cursorNodes[index].lastElementChild : cursorNodes[index];\n }\n return isFormatted.getFormattedNode(currentNode, format, endNode);\n };\n SelectionCommands.removeFormat = function (nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domSelection, endNode, domNode) {\n var splitNode = null;\n var startText = range.startContainer.nodeName === '#text' ?\n range.startContainer.textContent.substring(range.startOffset, range.startContainer.textContent.length) :\n range.startContainer.textContent;\n var nodeText = nodes[index].textContent;\n if (!(range.startContainer === range.endContainer && range.startOffset === 0\n && range.endOffset === range.startContainer.length)) {\n var nodeIndex = [];\n var cloneNode = nodes[index];\n do {\n nodeIndex.push(domSelection.getIndex(cloneNode));\n cloneNode = cloneNode.parentNode;\n } while (cloneNode && (cloneNode !== formatNode));\n if (nodes[index].nodeName !== 'BR') {\n cloneNode = splitNode = (isCursor && (formatNode.textContent.length - 1) === range.startOffset) ?\n nodeCutter.SplitNode(range, formatNode, true)\n : nodeCutter.GetSpliceNode(range, formatNode);\n }\n if (!isCursor) {\n while (cloneNode && cloneNode.childNodes.length > 0 && ((nodeIndex.length - 1) >= 0)\n && (cloneNode.childNodes.length > nodeIndex[nodeIndex.length - 1])) {\n cloneNode = cloneNode.childNodes[nodeIndex[nodeIndex.length - 1]];\n nodeIndex.pop();\n }\n if (nodes[index].nodeName !== 'BR') {\n if (cloneNode.nodeType === 3 && !(isCursor && cloneNode.nodeValue === '')) {\n nodes[index] = cloneNode;\n }\n else {\n var divNode = document.createElement('div');\n divNode.innerHTML = '​';\n if (cloneNode.nodeType !== 3) {\n cloneNode.insertBefore(divNode.firstChild, cloneNode.firstChild);\n nodes[index] = cloneNode.firstChild;\n }\n else {\n cloneNode.parentNode.insertBefore(divNode.firstChild, cloneNode);\n nodes[index] = cloneNode.previousSibling;\n cloneNode.parentNode.removeChild(cloneNode);\n }\n }\n }\n }\n else {\n var lastNode = splitNode;\n for (; lastNode.firstChild !== null && lastNode.firstChild.nodeType !== 3; null) {\n lastNode = lastNode.firstChild;\n }\n lastNode.innerHTML = '​';\n nodes[index] = lastNode.firstChild;\n }\n }\n else if (isFontStyle && !nodes[index].contains(formatNode) && nodes[index].nodeType === 3 &&\n nodes[index].textContent !== formatNode.textContent) {\n // If the selection is within the format node .\n var isFullNodeSelected = nodes[index].textContent === nodes[index].wholeText;\n var nodeTraverse = nodes[index];\n var styleElement = this.GetFormatNode(format, value);\n // while loop and traverse back until text content does not match with parent text content\n while (nodeTraverse && nodeTraverse.textContent === nodeTraverse.parentElement.textContent) {\n nodeTraverse = nodeTraverse.parentElement;\n }\n if (isFullNodeSelected && formatNode.textContent !== nodeTraverse.textContent) {\n var nodeArray = [];\n var priorityNode = this.getPriorityFormatNode(nodeTraverse, endNode);\n if (priorityNode && priorityNode.textContent === nodeTraverse.textContent) {\n nodeTraverse = priorityNode;\n }\n nodeArray.push(nodeTraverse);\n this.applyStyles(nodeArray, 0, styleElement);\n return nodes[index];\n }\n }\n var fontStyle;\n if (format === 'backgroundcolor') {\n fontStyle = formatNode.style.fontSize;\n }\n var bgStyle;\n if (format === 'fontsize') {\n var bg = closest(nodes[index].parentElement, 'span[style*=' + 'background-color' + ']');\n if (!isNOU(bg)) {\n bgStyle = bg.style.backgroundColor;\n }\n }\n var formatNodeStyles = formatNode.getAttribute('style');\n var formatNodeTagName = formatNode.tagName;\n var child = InsertMethods.unwrap(formatNode);\n if (child[0] && !isFontStyle) {\n var nodeTraverse = child[index] ? child[index] : child[0];\n var textNode = nodeTraverse;\n for (; nodeTraverse && nodeTraverse.parentElement && nodeTraverse.parentElement !== endNode; \n // eslint-disable-next-line\n nodeTraverse = nodeTraverse) {\n var nodeTraverseCondition = void 0;\n if (formatNode.nodeName === 'SPAN') {\n nodeTraverseCondition = nodeTraverse.parentElement.tagName.toLocaleLowerCase()\n === formatNode.tagName.toLocaleLowerCase() && nodeTraverse.parentElement.getAttribute('style') === formatNodeStyles;\n }\n else {\n nodeTraverseCondition = nodeTraverse.parentElement.tagName.toLocaleLowerCase()\n === formatNode.tagName.toLocaleLowerCase();\n }\n if (nodeTraverse.parentElement && nodeTraverseCondition &&\n (nodeTraverse.parentElement.childElementCount > 1 || range.startOffset > 1)) {\n if (textNode.parentElement && textNode.parentElement.tagName.toLocaleLowerCase()\n === formatNode.tagName.toLocaleLowerCase()) {\n if ((range.startOffset === range.endOffset) && textNode.nodeType !== 1 &&\n !isNOU(textNode.textContent) && textNode.parentElement.childElementCount > 1) {\n range.setStart(textNode, 0);\n range.setEnd(textNode, textNode.textContent.length);\n nodeCutter.SplitNode(range, textNode.parentElement, false);\n }\n }\n if (nodeTraverse.parentElement.tagName.toLocaleLowerCase() === 'span') {\n if (formatNode.style.textDecoration === 'underline' &&\n nodeTraverse.parentElement.style.textDecoration !== 'underline') {\n nodeTraverse = nodeTraverse.parentElement;\n continue;\n }\n }\n InsertMethods.unwrap(nodeTraverse.parentElement);\n nodeTraverse = !isNOU(nodeTraverse.parentElement) && !domNode.isBlockNode(nodeTraverse.parentElement) ? textNode :\n nodeTraverse.parentElement;\n }\n else {\n nodeTraverse = nodeTraverse.parentElement;\n }\n }\n }\n if (child.length > 0 && isFontStyle) {\n for (var num = 0; num < child.length; num++) {\n if (child[num].nodeType !== 3 || (child[num].textContent &&\n child[num].textContent.trim().length > 0)) {\n child[num] = InsertMethods.Wrap(child[num], this.GetFormatNode(format, value, formatNodeTagName, formatNodeStyles));\n if (child[num].textContent === startText) {\n if (num === 0) {\n range.setStartBefore(child[num]);\n }\n else if (num === child.length - 1) {\n range.setEndAfter(child[num]);\n }\n }\n }\n }\n var currentNodeElem = nodes[index].parentElement;\n if (!isNOU(fontStyle) && fontStyle !== '') {\n currentNodeElem.style.fontSize = fontStyle;\n }\n if (!isNOU(bgStyle) && bgStyle !== '') {\n currentNodeElem.style.backgroundColor = bgStyle;\n }\n if ((format === 'backgroundcolor' && !isNOU(fontStyle) && fontStyle !== '') &&\n currentNodeElem.parentElement.innerHTML === currentNodeElem.outerHTML) {\n var curParentElem = currentNodeElem.parentElement;\n curParentElem.parentElement.insertBefore(currentNodeElem, curParentElem);\n detach(curParentElem);\n }\n if (format === 'fontsize' || format === 'fontcolor') {\n var liElement = nodes[index].parentElement;\n var parentElement = nodes[index].parentElement;\n while (!isNOU(parentElement) && parentElement.tagName.toLowerCase() !== 'li') {\n parentElement = parentElement.parentElement;\n liElement = parentElement;\n }\n var num = index;\n var liChildContent = '';\n while (num >= 0 && !isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' && liElement.textContent.replace('/\\u200B/g', '').trim().includes(nodes[num].textContent.trim())) {\n liChildContent = ' ' + nodes[num].textContent.trim() + liChildContent;\n num--;\n }\n var isNestedList = false;\n var nestedListCount = 0;\n var isNestedListItem = false;\n if (!isNOU(liElement) && liElement.childNodes) {\n for (var num_1 = 0; num_1 < liElement.childNodes.length; num_1++) {\n if (liElement.childNodes[num_1].nodeName === ('OL' || 'UL')) {\n nestedListCount++;\n isNestedList = true;\n }\n }\n }\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' &&\n liElement.textContent.split('\\u200B').join('').trim() === liChildContent.split('\\u200B').join('').trim()) {\n if (format === 'fontsize') {\n liElement.style.fontSize = value;\n }\n else {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n }\n else if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' && isNestedList) {\n if (isNestedList && nestedListCount > 0) {\n for (var num_2 = 0; num_2 < liElement.childNodes.length; num_2++) {\n if (nodes[index].textContent === liElement.childNodes[num_2].textContent && nodes[index].textContent === nodeText && liElement.textContent.replace('/\\u200B/g', '').trim().includes(liChildContent.split('\\u200B').join('').trim())) {\n isNestedListItem = true;\n }\n }\n }\n if (isNestedListItem) {\n for (var num_3 = 0; num_3 < liElement.childNodes.length; num_3++) {\n if (liElement.childNodes[num_3].nodeName === ('OL' || 'UL')) {\n liElement.childNodes[num_3].style.fontSize = 'initial';\n }\n }\n if (format === 'fontsize') {\n liElement.style.fontSize = value;\n }\n else {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n }\n }\n }\n }\n return nodes[index];\n };\n SelectionCommands.insertFormat = function (docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, painterValues, domNode, endNode) {\n if (!isCursor) {\n if ((formatNode === null && isFormat) || isFontStyle) {\n if (nodes[index].nodeName !== 'BR') {\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n nodes[index].textContent = nodeCutter.TrimLineBreak(nodes[index].textContent);\n }\n if (format === 'uppercase' || format === 'lowercase') {\n nodes[index].textContent = (format === 'uppercase') ? nodes[index].textContent.toLocaleUpperCase()\n : nodes[index].textContent.toLocaleLowerCase();\n }\n else if (!(isFontStyle === true && value === '')) {\n var element = this.GetFormatNode(format, value);\n if (value === 'formatPainter' || isFontStyle) {\n var liElement = nodes[index].parentElement;\n var parentElement = nodes[index].parentElement;\n while (!isNOU(parentElement) && parentElement.tagName.toLowerCase() !== 'li') {\n parentElement = parentElement.parentElement;\n liElement = parentElement;\n }\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' &&\n liElement.textContent.trim() === nodes[index].textContent.trim()) {\n if (format === 'fontsize') {\n liElement.style.fontSize = value;\n }\n else if (format === 'fontcolor') {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n }\n if (value === 'formatPainter') {\n return this.insertFormatPainterElem(nodes, index, range, nodeCutter, painterValues, domNode);\n }\n var currentNode = nodes[index];\n var priorityNode = this.getPriorityFormatNode(currentNode, endNode);\n // 1. Checking is there any priority node present in the selection range. (Use case for nested styles);\n // 2 Or font style is applied. (Use case not a nested style)\n if (!isNOU(priorityNode) || isFontStyle) {\n var currentFormatNode = isNOU(priorityNode) ? currentNode : priorityNode;\n currentFormatNode = !isNOU(priorityNode) && priorityNode.style.fontSize !== '' ?\n currentFormatNode.firstChild : currentFormatNode;\n if (isNOU(priorityNode) || format === 'fontsize') {\n while (currentFormatNode) {\n var isSameTextContent = currentFormatNode.parentElement.textContent.trim()\n === nodes[index].textContent.trim();\n 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 }\n else {\n nodes[index] = this.applyStyles(nodes, index, element);\n }\n }\n else {\n nodes[index] = this.applyStyles(nodes, index, element);\n }\n }\n }\n else {\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n }\n }\n else {\n if (format !== 'uppercase' && format !== 'lowercase') {\n var element = this.getInsertNode(docElement, range, format, value);\n nodes[index] = element.firstChild;\n nodeCutter.position = 1;\n }\n else {\n nodeCutter.position = range.startOffset;\n }\n }\n return nodes[index];\n };\n SelectionCommands.applyStyles = function (nodes, index, element) {\n if (!(nodes[index].nodeName === 'BR' && this.enterAction === 'BR')) {\n nodes[index] = (index === (nodes.length - 1)) || nodes[index].nodeName === 'BR' ?\n InsertMethods.Wrap(nodes[index], element)\n : InsertMethods.WrapBefore(nodes[index], element, true);\n nodes[index] = this.getChildNode(nodes[index], element);\n }\n return nodes[index];\n };\n SelectionCommands.getPriorityFormatNode = function (node, endNode) {\n var isFormatted = new IsFormatted();\n var fontSizeNode = isFormatted.getFormattedNode(node, 'fontsize', endNode);\n var fontColorNode;\n var backgroundColorNode;\n var fontNameNode;\n if (isNOU(fontSizeNode)) {\n backgroundColorNode = isFormatted.getFormattedNode(node, 'backgroundcolor', endNode);\n if (isNOU(backgroundColorNode)) {\n fontNameNode = isFormatted.getFormattedNode(node, 'fontname', endNode);\n if (isNOU(fontNameNode)) {\n fontColorNode = isFormatted.getFormattedNode(node, 'fontcolor', endNode);\n if (isNOU(fontColorNode)) {\n return null;\n }\n else {\n return fontColorNode;\n }\n }\n else {\n return fontNameNode;\n }\n }\n else {\n return backgroundColorNode;\n }\n }\n else {\n return fontSizeNode;\n }\n };\n SelectionCommands.getInsertNode = function (docElement, range, format, value) {\n var element = this.GetFormatNode(format, value);\n element.innerHTML = '​';\n if (Browser.isIE) {\n var frag = docElement.createDocumentFragment();\n frag.appendChild(element);\n range.insertNode(frag);\n }\n else {\n range.insertNode(element);\n }\n return element;\n };\n SelectionCommands.getChildNode = function (node, element) {\n if (node === undefined || node === null) {\n element.innerHTML = '​';\n node = element.firstChild;\n }\n return node;\n };\n SelectionCommands.applySelection = function (nodes, domSelection, nodeCutter, index, isCollapsed) {\n if (nodes.length === 1 && !isCollapsed) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.endContainer = domSelection.startContainer;\n domSelection.startOffset = 0;\n domSelection.endOffset = nodes[index].textContent.length;\n }\n else if (nodes.length === 1 && isCollapsed) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.endContainer = domSelection.startContainer;\n domSelection.startOffset = nodeCutter.position;\n domSelection.endOffset = nodeCutter.position;\n }\n else if (index === 0) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.startOffset = 0;\n }\n else if (index === nodes.length - 1) {\n domSelection.endContainer = domSelection.getNodeArray(nodes[index], false);\n domSelection.endOffset = nodes[index].textContent.length;\n }\n return domSelection;\n };\n SelectionCommands.GetFormatNode = function (format, value, tagName, styles) {\n var node;\n switch (format) {\n case 'bold':\n return document.createElement('strong');\n case 'italic':\n return document.createElement('em');\n case 'underline':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.textDecoration = 'underline';\n return node;\n case 'strikethrough':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.textDecoration = 'line-through';\n return node;\n case 'superscript':\n return document.createElement('sup');\n case 'subscript':\n return document.createElement('sub');\n case 'fontcolor':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.color = value;\n node.style.textDecoration = 'inherit';\n return node;\n case 'fontname':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.fontFamily = value;\n return node;\n case 'fontsize':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.fontSize = value;\n return node;\n default:\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.backgroundColor = value;\n return node;\n }\n };\n SelectionCommands.updateStyles = function (ele, tag, styles) {\n if (styles !== null && tag === 'SPAN') {\n ele.setAttribute('style', styles);\n }\n };\n // Below function is used to insert the element created by the format painter plugin.\n SelectionCommands.insertFormatPainterElem = function (nodes, index, range, nodeCutter, painterValues, domNode) {\n var parent = !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 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.enterAction = 'P';\n return SelectionCommands;\n}());\nexport { SelectionCommands };\n","import * as CONSTANT from './../base/constant';\nimport { SelectionCommands } from './selection-commands';\nimport * as EVENTS from './../../common/constant';\n/**\n * Selection EXEC internal component\n *\n * @hidden\n\n */\nvar SelectionBasedExec = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function SelectionBasedExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n SelectionBasedExec.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.SELECTION_TYPE, this.applySelection, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDownHandler, this);\n };\n SelectionBasedExec.prototype.keyDownHandler = function (e) {\n var validFormats = ['bold', 'italic', 'underline', 'strikethrough', 'superscript',\n 'subscript', 'uppercase', 'lowercase'];\n if (e.event.ctrlKey && validFormats.indexOf(e.event.action) > -1) {\n e.event.preventDefault();\n SelectionCommands.applyFormat(this.parent.currentDocument, e.event.action, this.parent.editableElement, e.enterAction);\n this.callBack(e, e.event.action);\n }\n };\n SelectionBasedExec.prototype.applySelection = function (e) {\n SelectionCommands.applyFormat(this.parent.currentDocument, e.subCommand.toLocaleLowerCase(), this.parent.editableElement, e.enterAction, e.value, e.selector);\n this.callBack(e, e.subCommand);\n };\n SelectionBasedExec.prototype.callBack = function (event, action) {\n if (event.callBack) {\n event.callBack({\n requestType: action,\n event: event.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return SelectionBasedExec;\n}());\nexport { SelectionBasedExec };\n","import * as CONSTANT from './../base/constant';\nimport { InsertHtml } from './inserthtml';\n/**\n * Selection EXEC internal component\n *\n * @hidden\n\n */\nvar InsertHtmlExec = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - sepcifies the parent element\n * @hidden\n\n */\n function InsertHtmlExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n InsertHtmlExec.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.INSERTHTML_TYPE, this.applyHtml, this);\n };\n InsertHtmlExec.prototype.applyHtml = function (e) {\n InsertHtml.Insert(this.parent.currentDocument, e.value, this.parent.editableElement, true, e.enterAction);\n if (e.subCommand === 'pasteCleanup') {\n var pastedElements = this.parent.editableElement.querySelectorAll('.pasteContent_RTE');\n var allPastedElements = [].slice.call(pastedElements);\n var imgElements = this.parent.editableElement.querySelectorAll('.pasteContent_Img');\n var allImgElm = [].slice.call(imgElements);\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n elements: allPastedElements,\n imgElem: allImgElm\n });\n }\n else {\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n }\n };\n return InsertHtmlExec;\n}());\nexport { InsertHtmlExec };\n","/**\n * `Clear Format` module is used to handle Clear Format.\n */\nimport { closest } from '@syncfusion/ej2-base';\nimport { NodeSelection } from './../../selection/index';\nimport { NodeCutter } from './nodecutter';\nimport { DOMNode } from './dom-node';\nimport { InsertMethods } from './insert-methods';\nimport { IsFormatted } from './isformatted';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nvar ClearFormat = /** @class */ (function () {\n function ClearFormat() {\n }\n /**\n * clear method\n *\n * @param {Document} docElement - specifies the document element.\n * @param {Node} endNode - specifies the end node\n * @param {string} enterAction - specifies the enter key action\n * @param {string} selector - specifies the string value\n * @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 /**\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 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 } from '@syncfusion/ej2-base';\n/**\n * PasteCleanup for MsWord content\n *\n * @hidden\n\n */\nvar MsWordPaste = /** @class */ (function () {\n function MsWordPaste(parent) {\n this.olData = [\n 'decimal',\n 'lower-alpha',\n 'lower-roman',\n 'upper-alpha',\n 'upper-roman',\n 'lower-greek'\n ];\n this.ulData = [\n 'disc',\n 'square',\n 'circle',\n 'disc',\n 'square',\n 'circle'\n ];\n this.ignorableNodes = ['A', 'APPLET', 'B', 'BLOCKQUOTE', 'BR',\n 'BUTTON', 'CENTER', 'CODE', 'COL', 'COLGROUP', 'DD', 'DEL', 'DFN', 'DIR', 'DIV',\n 'DL', 'DT', 'EM', 'FIELDSET', 'FONT', 'FORM', 'FRAME', 'FRAMESET', 'H1', 'H2',\n 'H3', 'H4', 'H5', 'H6', 'HR', 'I', 'IMG', 'IFRAME', 'INPUT', 'INS', 'LABEL',\n 'LI', 'OL', 'OPTION', 'P', 'PARAM', 'PRE', 'Q', 'S', 'SELECT', 'SPAN', 'STRIKE',\n 'STRONG', 'SUB', 'SUP', 'TABLE', 'TBODY', 'TD', 'TEXTAREA', 'TFOOT', 'TH',\n 'THEAD', 'TITLE', 'TR', 'TT', 'U', 'UL'];\n this.blockNode = ['div', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',\n 'address', 'blockquote', 'button', 'center', 'dd', 'dir', 'dl', 'dt', 'fieldset',\n 'frameset', 'hr', 'iframe', 'isindex', 'li', 'map', 'menu', 'noframes', 'noscript',\n 'object', 'ol', 'pre', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'ul',\n 'header', 'article', 'nav', 'footer', 'section', 'aside', 'main', 'figure', 'figcaption'];\n this.borderStyle = ['border-top', 'border-right', 'border-bottom', 'border-left'];\n this.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'];\n this.listContents = [];\n this.parent = parent;\n this.addEventListener();\n }\n MsWordPaste.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.MS_WORD_CLEANUP_PLUGIN, this.wordCleanup, this);\n };\n MsWordPaste.prototype.wordCleanup = function (e) {\n var wordPasteStyleConfig = !isNOU(e.allowedStylePropertiesArray) ? e.allowedStylePropertiesArray : [];\n var listNodes = [];\n var tempHTMLContent = e.args.clipboardData.getData('text/HTML');\n var rtfData = e.args.clipboardData.getData('text/rtf');\n var elm = createElement('p');\n elm.setAttribute('id', 'MSWord-Content');\n elm.innerHTML = tempHTMLContent;\n var patern = /class='?Mso|style='[^ ]*\\bmso-/i;\n var patern2 = /class=\"?Mso|style=\"[^ ]*\\bmso-/i;\n var patern3 = /(class=\"?Mso|class='?Mso|class=\"?Xl|class='?Xl|class=Xl|style=\"[^\"]*\\bmso-|style='[^']*\\bmso-|w:WordDocument)/gi;\n var pattern4 = /style='mso-width-source:/i;\n if (patern.test(tempHTMLContent) || patern2.test(tempHTMLContent) || patern3.test(tempHTMLContent) ||\n pattern4.test(tempHTMLContent)) {\n this.imageConversion(elm, rtfData);\n tempHTMLContent = tempHTMLContent.replace(/]+>/i, '');\n this.addListClass(elm);\n listNodes = this.cleanUp(elm, listNodes);\n if (!isNOU(listNodes[0]) && listNodes[0].parentElement.tagName !== 'UL' &&\n listNodes[0].parentElement.tagName !== 'OL') {\n this.listConverter(listNodes);\n }\n this.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.removeClassName(elm);\n if (pattern4.test(tempHTMLContent)) {\n this.addTableBorderClass(elm);\n }\n // Removing the margin for list items\n var liChildren = elm.querySelectorAll('li');\n if (liChildren.length > 0) {\n for (var i = 0; i < liChildren.length; i++) {\n if (!isNOU(liChildren[i].style.marginLeft)) {\n liChildren[i].style.marginLeft = '';\n }\n }\n }\n e.callBack(elm.innerHTML);\n }\n else {\n e.callBack(elm.innerHTML);\n }\n };\n MsWordPaste.prototype.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 detach(imgElem[i]);\n }\n }\n imgElem = elm.querySelectorAll('img');\n var imgSrc = [];\n var base64Src = [];\n var imgName = [];\n // eslint-disable-next-line\n var linkRegex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (imgElem.length > 0) {\n for (var i = 0; i < imgElem.length; i++) {\n imgSrc.push(imgElem[i].getAttribute('src'));\n imgName.push(imgElem[i].getAttribute('src').split('/')[imgElem[i].getAttribute('src').split('/').length - 1].split('.')[0]);\n }\n var hexValue = this.hexConversion(rtfData);\n for (var i = 0; i < hexValue.length; i++) {\n base64Src.push(this.convertToBase64(hexValue[i]));\n }\n for (var i = 0; i < imgElem.length; i++) {\n if (imgSrc[i].match(linkRegex)) {\n imgElem[i].setAttribute('src', imgSrc[i]);\n }\n else {\n imgElem[i].setAttribute('src', base64Src[i]);\n }\n imgElem[i].setAttribute('id', 'msWordImg-' + imgName[i]);\n }\n }\n };\n MsWordPaste.prototype.checkVShape = function (elm) {\n var allNodes = elm.querySelectorAll('*');\n for (var i = 0; i < allNodes.length; i++) {\n switch (allNodes[i].nodeName) {\n case 'V:SHAPETYPE':\n detach(allNodes[i]);\n break;\n case 'V:SHAPE':\n if (allNodes[i].firstElementChild.nodeName === 'V:IMAGEDATA') {\n var src = allNodes[i].firstElementChild.getAttribute('src');\n var imgElement = createElement('img');\n imgElement.setAttribute('src', src);\n allNodes[i].parentElement.insertBefore(imgElement, allNodes[i]);\n detach(allNodes[i]);\n }\n break;\n }\n }\n };\n MsWordPaste.prototype.convertToBase64 = function (hexValue) {\n var byteArr = this.conHexStringToBytes(hexValue.hex);\n var base64String = this.conBytesToBase64(byteArr);\n var base64 = hexValue.type ? 'data:' + hexValue.type + ';base64,' + base64String : null;\n return base64;\n };\n MsWordPaste.prototype.conBytesToBase64 = function (byteArr) {\n var base64Str = '';\n var base64Char = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n var byteArrLen = byteArr.length;\n for (var i = 0; i < byteArrLen; i += 3) {\n var array3 = byteArr.slice(i, i + 3);\n var array3length = array3.length;\n var array4 = [];\n if (array3length < 3) {\n for (var j = array3length; j < 3; j++) {\n array3[j] = 0;\n }\n }\n array4[0] = (array3[0] & 0xFC) >> 2;\n array4[1] = ((array3[0] & 0x03) << 4) | (array3[1] >> 4);\n array4[2] = ((array3[1] & 0x0F) << 2) | ((array3[2] & 0xC0) >> 6);\n array4[3] = array3[2] & 0x3F;\n for (var j = 0; j < 4; j++) {\n if (j <= array3length) {\n base64Str += base64Char.charAt(array4[j]);\n }\n else {\n base64Str += '=';\n }\n }\n }\n return base64Str;\n };\n MsWordPaste.prototype.conHexStringToBytes = function (hex) {\n var byteArr = [];\n var byteArrLen = hex.length / 2;\n for (var i = 0; i < byteArrLen; i++) {\n byteArr.push(parseInt(hex.substr(i * 2, 2), 16));\n }\n return byteArr;\n };\n MsWordPaste.prototype.hexConversion = function (rtfData) {\n // eslint-disable-next-line\n var picHead = /\\{\\\\pict[\\s\\S]+?\\\\bliptag\\-?\\d+(\\\\blipupi\\-?\\d+)?(\\{\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)?[\\s\\}]*?/;\n // eslint-disable-next-line 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 (picHead.test(fullImg[i])) {\n if (fullImg[i].indexOf('\\\\pngblip') !== -1) {\n imgType = 'image/png';\n }\n else if (fullImg[i].indexOf('\\\\jpegblip') !== -1) {\n imgType = 'image/jpeg';\n }\n else {\n continue;\n }\n result.push({\n hex: imgType ? fullImg[i].replace(picHead, '').replace(/[^\\da-fA-F]/g, '') : null,\n type: imgType\n });\n }\n }\n }\n return result;\n };\n MsWordPaste.prototype.removeClassName = function (elm) {\n var elmWithClass = elm.querySelectorAll('*[class]');\n for (var i = 0; i < elmWithClass.length; i++) {\n elmWithClass[i].removeAttribute('class');\n }\n };\n MsWordPaste.prototype.breakLineAddition = function (elm) {\n var allElements = elm.querySelectorAll('*');\n for (var i = 0; i < allElements.length; i++) {\n if (allElements[i].children.length === 0 && allElements[i].innerHTML === ' ' &&\n (allElements[i].innerHTML === ' ' && !allElements[i].closest('li')) &&\n !allElements[i].closest('td') && (allElements[i].nodeName !== 'SPAN' ||\n allElements[i].nodeName === 'SPAN' && (isNOU(allElements[i].previousElementSibling) &&\n isNOU(allElements[i].nextElementSibling)))) {\n var detachableElement = this.findDetachElem(allElements[i]);\n var brElement = createElement('br');\n if (!isNOU(detachableElement.parentElement)) {\n detachableElement.parentElement.insertBefore(brElement, detachableElement);\n detach(detachableElement);\n }\n }\n }\n };\n MsWordPaste.prototype.findDetachElem = function (element) {\n var removableElement;\n if (!isNOU(element.parentElement) &&\n element.parentElement.textContent.trim() === '' && element.parentElement.tagName !== 'TD' &&\n isNOU(element.parentElement.querySelector('img'))) {\n removableElement = this.findDetachElem(element.parentElement);\n }\n else {\n removableElement = element;\n }\n return removableElement;\n };\n MsWordPaste.prototype.removeUnwantedElements = function (elm) {\n var innerElement = elm.innerHTML;\n for (var i = 0; i < this.removableElements.length; i++) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regExpStartElem = new RegExp('<' + this.removableElements[i] + '>', '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 if (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 if (styleElement.length > 0) {\n var styles = styleElement[0].innerHTML.match(/[\\S ]+\\s+{[\\s\\S]+?}/gi);\n var styleClassObject_1 = !isNOU(styles) ? this.findStyleObject(styles) : null;\n var keys = Object.keys(styleClassObject_1);\n var values = keys.map(function (key) {\n return styleClassObject_1[\"\" + key];\n });\n values = this.removeUnwantedStyle(values, wordPasteStyleConfig);\n this.filterStyles(elm, wordPasteStyleConfig);\n var resultElem = void 0;\n var fromClass = false;\n for (var i = 0; i < keys.length; i++) {\n if (keys[i].split('.')[0] === '') {\n resultElem = elm.getElementsByClassName(keys[i].split('.')[1]);\n fromClass = true;\n }\n else if (keys[i].split('.').length === 1 && keys[i].split('.')[0].indexOf('@') >= 0) {\n continue;\n }\n else if (keys[i].split('.').length === 1 && keys[i].split('.')[0].indexOf('@') < 0) {\n resultElem = elm.getElementsByTagName(keys[i]);\n }\n else {\n resultElem = elm.querySelectorAll(keys[i]);\n }\n for (var j = 0; j < resultElem.length; j++) {\n var styleProperty = resultElem[j].getAttribute('style');\n if (!isNOU(styleProperty) && styleProperty.trim() !== '') {\n var valueSplit = values[i].split(';');\n if (!fromClass) {\n for (var k = 0; k < valueSplit.length; k++) {\n if (styleProperty.indexOf(valueSplit[k].split(':')[0]) >= 0) {\n valueSplit.splice(k, 1);\n k--;\n }\n }\n }\n var changedValue = styleProperty + valueSplit.join(';') + ';';\n resultElem[j].setAttribute('style', changedValue);\n }\n else {\n values[i] = values[i].replace(/text-indent:-(.*?)(?=;|$)/gm, '');\n resultElem[j].setAttribute('style', values[i]);\n }\n }\n fromClass = false;\n }\n var listClass = ['MsoListParagraphCxSpFirst', 'MsoListParagraphCxSpMiddle', 'MsoListParagraphCxSpLast'];\n for (var i = 0; i < listClass.length; i++) {\n if (keys.indexOf('li.' + listClass[i]) > -1) {\n var olULElems = elm.querySelectorAll('ol.' + listClass[i] + ', ul.' + listClass[i]);\n for (var j = 0; j < olULElems.length; j++) {\n var styleProperty = olULElems[j].getAttribute('style');\n if (!isNOU(styleProperty) && styleProperty.trim() !== '' && olULElems[j].style.marginLeft !== '') {\n var valueSplit = values[keys.indexOf('li.' + listClass[i])].split(';');\n for (var k = 0; k < valueSplit.length; k++) {\n if ('margin-left'.indexOf(valueSplit[k].split(':')[0]) >= 0) {\n if (!isNOU(valueSplit[k].split(':')[1]) &&\n valueSplit[k].split(':')[1].indexOf('in') >= 0 &&\n olULElems[j].style.marginLeft.indexOf('in') >= 0) {\n var classStyle = parseFloat(valueSplit[k].split(':')[1].split('in')[0]);\n var inlineStyle = parseFloat(olULElems[j].style.marginLeft.split('in')[0]);\n olULElems[j].style.marginLeft = (inlineStyle - classStyle) + 'in';\n }\n }\n }\n }\n }\n }\n }\n }\n };\n MsWordPaste.prototype.filterStyles = function (elm, wordPasteStyleConfig) {\n var elmWithStyles = elm.querySelectorAll('*[style]');\n for (var i = 0; i < elmWithStyles.length; i++) {\n var elemStyleProperty = elmWithStyles[i].getAttribute('style').split(';');\n var styleValue = '';\n for (var j = 0; j < elemStyleProperty.length; j++) {\n if (wordPasteStyleConfig.indexOf(elemStyleProperty[j].split(':')[0].trim()) >= 0) {\n styleValue += elemStyleProperty[j] + ';';\n }\n }\n elmWithStyles[i].setAttribute('style', styleValue);\n }\n };\n MsWordPaste.prototype.removeUnwantedStyle = function (values, wordPasteStyleConfig) {\n for (var i = 0; i < values.length; i++) {\n var styleValues = values[i].split(';');\n values[i] = '';\n for (var j = 0; j < styleValues.length; j++) {\n if (wordPasteStyleConfig.indexOf(styleValues[j].split(':')[0]) >= 0) {\n values[i] += styleValues[j] + ';';\n }\n }\n }\n return values;\n };\n MsWordPaste.prototype.findStyleObject = function (styles) {\n var styleClassObject = {};\n for (var i = 0; i < styles.length; i++) {\n var tempStyle = styles[i];\n var classNameCollection = tempStyle.replace(/([\\S ]+\\s+){[\\s\\S]+?}/gi, '$1');\n var stylesCollection = tempStyle.replace(/[\\S ]+\\s+{([\\s\\S]+?)}/gi, '$1');\n classNameCollection = classNameCollection.replace(/^[\\s]|[\\s]$/gm, '');\n stylesCollection = stylesCollection.replace(/^[\\s]|[\\s]$/gm, '');\n classNameCollection = classNameCollection.replace(/\\n|\\r|\\n\\r/g, '');\n stylesCollection = stylesCollection.replace(/\\n|\\r|\\n\\r/g, '');\n for (var classNames = classNameCollection.split(', '), j = 0; j < classNames.length; j++) {\n styleClassObject[classNames[j]] = stylesCollection;\n }\n }\n return styleClassObject;\n };\n MsWordPaste.prototype.removingComments = function (elm) {\n var innerElement = elm.innerHTML;\n innerElement = innerElement.replace(//g, '');\n elm.innerHTML = innerElement;\n };\n MsWordPaste.prototype.cleanUp = function (node, listNodes) {\n 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 collection = [];\n var content = '';\n var stNode;\n var currentListStyle = '';\n for (var i = 0; i < listNodes.length; i++) {\n if (listNodes[i] === null) {\n data.push({ content: this.makeConversion(collection), node: listNodes[i - 1] });\n collection = [];\n continue;\n }\n if (listNodes[i].getAttribute('style') && listNodes[i].getAttribute('style').indexOf('mso-outline-level') !== -1) {\n listNodes[i].setAttribute('style', listNodes[i].getAttribute('style').replace('mso-outline-level', 'mso-outline'));\n }\n content = listNodes[i].getAttribute('style');\n if (content && content.indexOf('level') !== -1) {\n // eslint-disable-next-line\n level = parseInt(content.charAt(content.indexOf('level') + 5), null);\n }\n else {\n level = 1;\n }\n this.listContents = [];\n this.getListContent(listNodes[i]);\n var type = void 0;\n var listStyleType = void 0;\n var startAttr = void 0;\n var styleMarginLeft = void 0;\n if (!isNOU(this.listContents[0])) {\n type = this.listContents[0].trim().length > 1 ? 'ol' : 'ul';\n listStyleType = this.getlistStyleType(this.listContents[0], type);\n if (type === 'ol' && (i === 0 || listNodes[i - 1] === null)) {\n var startString = this.listContents[0].split('.')[0];\n var listTypes = ['A', 'a', 'I', 'i', 'α', '1', '1-']; // Add '1-' for rare list type.\n if (listTypes.indexOf(startString) === -1) {\n if (listStyleType === 'decimal') {\n // Bug in getlistStyleType() list style stype is returned as decimal for nested list with start attribute\n if (!isNaN(parseInt(startString, 10))) {\n startAttr = parseInt(startString, 10);\n }\n }\n else if (listStyleType === 'upper-alpha') {\n startAttr = (startString.split('.')[0].charCodeAt(0) - 64);\n }\n else if (listStyleType === 'lower-alpha') {\n startAttr = (startString.split('.')[0].charCodeAt(0) - 96);\n }\n 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 if (listNodes[i].style.marginLeft !== '') {\n styleMarginLeft = listNodes[i].style.marginLeft;\n }\n }\n var tempNode = [];\n for (var j = 1; j < this.listContents.length; j++) {\n tempNode.push(this.listContents[j]);\n }\n var currentClassName = void 0;\n if (!isNOU(listNodes[i].className)) {\n currentClassName = listNodes[i].className;\n }\n if (!isNOU(listNodes[i].getAttribute('style'))) {\n listNodes[i].setAttribute('style', listNodes[i].getAttribute('style').replace('text-align:start;', ''));\n if (listNodes[i].style.textAlign !== '') {\n listNodes[i].setAttribute('style', 'text-align:' + listNodes[i].style.textAlign);\n currentListStyle = listNodes[i].getAttribute('style');\n }\n }\n collection.push({ listType: type, content: tempNode, nestedLevel: level, class: currentClassName,\n listStyle: currentListStyle, listStyleTypeName: listStyleType, start: startAttr, styleMarginLeft: styleMarginLeft });\n }\n }\n stNode = listNodes.shift();\n while (stNode) {\n var elemColl = [];\n for (var temp1 = 0; temp1 < data.length; temp1++) {\n if (data[temp1].node === stNode) {\n for (var index = 0; index < data[temp1].content.childNodes.length; index++) {\n elemColl.push(data[temp1].content.childNodes[index]);\n }\n for (var index = 0; index < elemColl.length; index++) {\n stNode.parentElement.insertBefore(elemColl[index], stNode);\n }\n break;\n }\n }\n stNode.remove();\n stNode = listNodes.shift();\n if (!stNode) {\n stNode = listNodes.shift();\n }\n }\n };\n MsWordPaste.prototype.getlistStyleType = function (listContent, type) {\n var currentListClass;\n 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 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');\n pElement.innerHTML = collection[index].content.join(' ');\n if ((collection[index].nestedLevel === 1) && listCount === 0 && collection[index].content) {\n root.appendChild(temp = createElement(collection[index].listType, { className: collection[index].class }));\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.marginLeft = collection[index].styleMarginLeft;\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n else if (collection[index].nestedLevel === pLevel) {\n if (prevList.parentElement.tagName.toLowerCase() === collection[index].listType) {\n prevList.parentElement.appendChild(prevList = createElement('li'));\n prevList.appendChild(pElement);\n }\n else {\n temp = createElement(collection[index].listType);\n temp.style.listStyleType = collection[index].listStyleTypeName;\n prevList.parentElement.parentElement.appendChild(temp);\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n }\n }\n else if (collection[index].nestedLevel > pLevel) {\n if (!isNOU(prevList)) {\n for (var j = 0; j < collection[index].nestedLevel - pLevel; j++) {\n prevList.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n if (j !== collection[index].nestedLevel - pLevel - 1 &&\n collection[index].nestedLevel - pLevel > 1) {\n prevList.style.listStyleType = 'none';\n }\n temp.appendChild(prevList);\n }\n prevList.appendChild(pElement);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n else {\n if (collection[index].nestedLevel > pLevel && isNormalList) {\n var initialNode = void 0;\n 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 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 prevList = createElement('li');\n prevList.appendChild(pElement);\n elem.appendChild(prevList);\n break;\n // eslint-disable-next-line\n }\n else if (collection[index].nestedLevel > parseInt(elem.attributes.getNamedItem('level').textContent, null)) {\n elem.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyleType = collection[index].listStyleTypeName;\n break;\n }\n }\n continue;\n }\n }\n prevList.setAttribute('class', collection[index].class);\n var currentStyle = prevList.getAttribute('style');\n prevList.setAttribute('style', (!isNOU(currentStyle) ? currentStyle : ''));\n pLevel = collection[index].nestedLevel;\n listCount++;\n if (!isNOU(collection[index].start)) {\n temp.setAttribute('start', collection[index].start.toString());\n }\n }\n return root;\n };\n MsWordPaste.prototype.getListContent = function (elem) {\n var pushContent = '';\n var firstChild = elem.firstElementChild;\n if (firstChild.textContent.trim() === '' && !isNOU(firstChild.firstElementChild) &&\n firstChild.firstElementChild.nodeName === 'IMG') {\n pushContent = elem.innerHTML.trim();\n this.listContents.push('');\n this.listContents.push(pushContent);\n }\n else {\n //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.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 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(document);\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 if (closest(parentElem, 'p')) {\n return 'Text';\n }\n else if (closest(parentElem, 'li')) {\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 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.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('a,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 = window.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 };\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 return EditorManager;\n}());\nexport { EditorManager };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Formatter } from './formatter';\nimport { EditorManager } from './../../editor-manager/base/editor-manager';\nimport { extend } from '@syncfusion/ej2-base';\nimport { htmlKeyConfig } from './../../common/config';\n/**\n * HTML adapter\n *\n * @hidden\n\n */\nvar HTMLFormatter = /** @class */ (function (_super) {\n __extends(HTMLFormatter, _super);\n function HTMLFormatter(options) {\n var _this = _super.call(this) || this;\n _this.initialize();\n extend(_this, _this, options, true);\n if (_this.currentDocument && _this.element) {\n _this.updateFormatter(_this.element, _this.currentDocument, options.options, options.formatPainterSettings);\n }\n return _this;\n }\n HTMLFormatter.prototype.initialize = function () {\n this.keyConfig = htmlKeyConfig;\n };\n /**\n * Update the formatter of RichTextEditor\n *\n * @param {Element} editElement - specifies the edit element.\n * @param {Document} doc - specifies the doucment\n * @param {number} options - specifies the options\n * @param {FormatPainterSettingsModel} formatPainterSettings - specifies the format painter settings\n * @returns {void}\n * @hidden\n\n */\n HTMLFormatter.prototype.updateFormatter = function (editElement, doc, options, formatPainterSettings) {\n if (editElement && doc) {\n this.editorManager = new EditorManager({\n document: doc,\n editableElement: editElement,\n options: options,\n formatPainterSettings: formatPainterSettings\n });\n }\n };\n return HTMLFormatter;\n}(Formatter));\nexport { HTMLFormatter };\n","import { IsFormatted } from './isformatted';\nimport * as CONSTANT from './../base/constant';\nimport { NodeSelection } from './../../selection/index';\nimport { getDefaultHtmlTbStatus } from './../../common/util';\n/**\n * Update Toolbar Status\n *\n * @hidden\n\n */\nexport var statusCollection = getDefaultHtmlTbStatus();\nvar ToolbarStatus = /** @class */ (function () {\n function ToolbarStatus() {\n }\n /**\n * get method\n *\n * @param {Document} docElement - specifies the document element\n * @param {Node} targetNode - specifies the target node\n * @param {string[]} formatNode - specifies the format node\n * @param {string[]} fontSize - specifies the font size\n * @param {string[]} fontName - specifies the font name.\n * @param {Node} documentNode - specifies the document node.\n * @returns {IToolbarStatus} - returns the toolbar status\n * @hidden\n\n */\n ToolbarStatus.get = function (docElement, targetNode, formatNode, fontSize, fontName, documentNode) {\n var formatCollection = JSON.parse(JSON.stringify(statusCollection));\n var nodeCollection = JSON.parse(JSON.stringify(statusCollection));\n var nodeSelection = new NodeSelection();\n var range = nodeSelection.getRange(docElement);\n var nodes = documentNode ? [documentNode] : range.collapsed ? nodeSelection.getNodeCollection(range) :\n nodeSelection.getSelectionNodeCollectionBr(range);\n var nodesLength = nodes.length;\n var isNodeChanged = false;\n for (var index = 0; index < nodes.length; index++) {\n while (nodes[index].nodeType === 3 && range.startContainer.nodeType === 3 && nodes[index].parentNode &&\n nodes[index].parentNode.lastElementChild && nodes[index].parentNode.lastElementChild.nodeName !== 'BR' &&\n (this.getImmediateBlockNode(nodes[index].parentNode)).textContent.replace(/\\u200B/g, '').length === 0 &&\n range.startContainer.textContent.replace(/\\u200B/g, '').length === 0 &&\n nodeSelection.get(docElement).toString().replace(/\\u200B/g, '').length === 0) {\n nodes[index] = nodes[index].parentNode.lastElementChild.firstChild;\n isNodeChanged = true;\n }\n if (isNodeChanged && nodes[index]) {\n nodeSelection.setCursorPoint(docElement, nodes[index], nodes[index].textContent.length);\n isNodeChanged = false;\n }\n if ((nodes[index].nodeName !== 'BR' && nodes[index].nodeType !== 3) ||\n (nodesLength > 1 && nodes[index].nodeType === 3 && nodes[index].textContent.trim() === '')) {\n nodes.splice(index, 1);\n index--;\n }\n }\n for (var index = 0; index < nodes.length; index++) {\n // eslint-disable-next-line max-len\n formatCollection = this.getFormatParent(docElement, formatCollection, nodes[index], targetNode, formatNode, fontSize, fontName);\n if ((index === 0 && formatCollection.bold) || !formatCollection.bold) {\n nodeCollection.bold = formatCollection.bold;\n }\n if ((index === 0 && formatCollection.insertcode) || !formatCollection.insertcode) {\n nodeCollection.insertcode = formatCollection.insertcode;\n }\n if ((index === 0 && formatCollection.italic) || !formatCollection.italic) {\n nodeCollection.italic = formatCollection.italic;\n }\n if ((index === 0 && formatCollection.underline) || !formatCollection.underline) {\n nodeCollection.underline = formatCollection.underline;\n }\n if ((index === 0 && formatCollection.strikethrough) || !formatCollection.strikethrough) {\n nodeCollection.strikethrough = formatCollection.strikethrough;\n }\n if ((index === 0 && formatCollection.superscript) || !formatCollection.superscript) {\n nodeCollection.superscript = formatCollection.superscript;\n }\n if ((index === 0 && formatCollection.subscript) || !formatCollection.subscript) {\n nodeCollection.subscript = formatCollection.subscript;\n }\n if ((index === 0 && formatCollection.fontcolor) || !formatCollection.fontcolor) {\n nodeCollection.fontcolor = formatCollection.fontcolor;\n }\n if ((index === 0 && formatCollection.fontname) || !formatCollection.fontname) {\n nodeCollection.fontname = formatCollection.fontname;\n }\n if ((index === 0 && formatCollection.fontsize) || !formatCollection.fontsize) {\n nodeCollection.fontsize = formatCollection.fontsize;\n }\n if ((index === 0 && formatCollection.backgroundcolor) || !formatCollection.backgroundcolor) {\n nodeCollection.backgroundcolor = formatCollection.backgroundcolor;\n }\n if ((index === 0 && formatCollection.orderedlist) || !formatCollection.orderedlist) {\n nodeCollection.orderedlist = formatCollection.orderedlist;\n }\n if ((index === 0 && formatCollection.unorderedlist) || !formatCollection.unorderedlist) {\n nodeCollection.unorderedlist = formatCollection.unorderedlist;\n }\n if ((index === 0 && formatCollection.alignments) || !formatCollection.alignments) {\n nodeCollection.alignments = formatCollection.alignments;\n }\n if ((index === 0 && formatCollection.formats) || !formatCollection.formats) {\n nodeCollection.formats = formatCollection.formats;\n }\n if ((index === 0 && formatCollection.createlink) || !formatCollection.createlink) {\n nodeCollection.createlink = formatCollection.createlink;\n }\n if ((index === 0 && formatCollection.numberFormatList) || !formatCollection.numberFormatList) {\n nodeCollection.numberFormatList = formatCollection.numberFormatList;\n }\n if ((index === 0 && formatCollection.bulletFormatList) || !formatCollection.bulletFormatList) {\n nodeCollection.bulletFormatList = formatCollection.bulletFormatList;\n }\n formatCollection = JSON.parse(JSON.stringify(statusCollection));\n }\n return nodeCollection;\n };\n ToolbarStatus.getImmediateBlockNode = function (node) {\n do {\n node = node.parentNode;\n } while (node && CONSTANT.BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) < 0);\n return node;\n };\n ToolbarStatus.getFormatParent = function (docElement, formatCollection, node, targetNode, formatNode, fontSize, fontName) {\n if (targetNode.contains(node) ||\n (node.nodeType === 3 && targetNode.nodeType !== 3 && targetNode.contains(node.parentNode))) {\n do {\n formatCollection = this.isFormattedNode(docElement, formatCollection, node, formatNode, fontSize, fontName);\n node = node.parentNode;\n } while (node && (node !== targetNode));\n }\n return formatCollection;\n };\n ToolbarStatus.isFormattedNode = function (docElement, formatCollection, node, formatNode, fontSize, fontName) {\n if (!formatCollection.bold) {\n formatCollection.bold = IsFormatted.isBold(node);\n }\n if (!formatCollection.italic) {\n formatCollection.italic = IsFormatted.isItalic(node);\n }\n if (!formatCollection.underline) {\n formatCollection.underline = IsFormatted.isUnderline(node);\n }\n if (!formatCollection.strikethrough) {\n formatCollection.strikethrough = IsFormatted.isStrikethrough(node);\n }\n if (!formatCollection.superscript) {\n formatCollection.superscript = IsFormatted.isSuperscript(node);\n }\n if (!formatCollection.subscript) {\n formatCollection.subscript = IsFormatted.isSubscript(node);\n }\n if (!formatCollection.fontcolor) {\n formatCollection.fontcolor = this.isFontColor(docElement, node);\n }\n if (!formatCollection.fontname) {\n formatCollection.fontname = this.isFontName(docElement, node, fontName);\n }\n if (!formatCollection.fontsize) {\n formatCollection.fontsize = this.isFontSize(docElement, node, fontSize);\n }\n if (!formatCollection.backgroundcolor) {\n formatCollection.backgroundcolor = this.isBackgroundColor(node);\n }\n if (!formatCollection.orderedlist) {\n formatCollection.orderedlist = this.isOrderedList(node);\n }\n if (!formatCollection.unorderedlist) {\n formatCollection.unorderedlist = this.isUnorderedList(node);\n }\n if (!formatCollection.alignments) {\n formatCollection.alignments = this.isAlignment(node);\n }\n if (!formatCollection.formats) {\n formatCollection.formats = this.isFormats(node, formatNode);\n if (formatCollection.formats === 'pre') {\n formatCollection.insertcode = true;\n }\n }\n if (!formatCollection.createlink) {\n formatCollection.createlink = this.isLink(node);\n }\n if (!formatCollection.numberFormatList) {\n formatCollection.numberFormatList = this.isNumberFormatList(node);\n }\n if (!formatCollection.bulletFormatList) {\n formatCollection.bulletFormatList = this.isBulletFormatList(node);\n }\n return formatCollection;\n };\n ToolbarStatus.isFontColor = function (docElement, node) {\n var color = node.style && node.style.color;\n if ((color === null || color === undefined || color === '') && node.nodeType !== 3) {\n color = this.getComputedStyle(docElement, node, 'color');\n }\n if (color !== null && color !== '' && color !== undefined) {\n return color;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isLink = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'a') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isBackgroundColor = function (node) {\n var backColor = node.style && node.style.backgroundColor;\n if (backColor !== null && backColor !== '' && backColor !== undefined) {\n return backColor;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFontSize = function (docElement, node, fontSize) {\n var size = node.style && node.style.fontSize;\n if ((size === null || size === undefined || size === '') && node.nodeType !== 3 &&\n node.parentElement.classList.contains('e-content')) {\n size = this.getComputedStyle(docElement, node, 'font-size');\n }\n if ((size !== null && size !== '' && size !== undefined)\n && (fontSize === null || fontSize === undefined || (fontSize.indexOf(size) > -1))) {\n return size;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFontName = function (docElement, node, fontName) {\n var name = node.style && node.style.fontFamily;\n if ((name === null || name === undefined || name === '') && node.nodeType !== 3) {\n name = this.getComputedStyle(docElement, node, 'font-family');\n }\n var index = null;\n if ((name !== null && name !== '' && name !== undefined)\n && (fontName === null || fontName === undefined || (fontName.filter(function (value, pos) {\n // eslint-disable-next-line\n var pattern = new RegExp(name, 'i');\n if ((value.replace(/\"/g, '').replace(/ /g, '').toLowerCase() === name.replace(/\"/g, '').replace(/ /g, '').toLowerCase()) ||\n (value.split(',')[0] && value.split(',')[0].search(pattern) > -1)) {\n index = pos;\n }\n }) && (index !== null)))) {\n // eslint-disable-next-line\n return (index !== null) ? fontName[index] : name.replace(/\"/g, '');\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isOrderedList = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'ol') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isUnorderedList = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'ul') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isAlignment = function (node) {\n var align = node.style && node.style.textAlign;\n if (align === 'left') {\n return 'justifyleft';\n }\n else if (align === 'center') {\n return 'justifycenter';\n }\n else if (align === 'right') {\n return 'justifyright';\n }\n else if (align === 'justify') {\n return 'justifyfull';\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFormats = function (node, formatNode) {\n if (((formatNode === undefined || formatNode === null)\n && CONSTANT.BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) > -1)\n || (formatNode !== null && formatNode !== undefined\n && formatNode.indexOf(node.nodeName.toLocaleLowerCase()) > -1)) {\n return node.nodeName.toLocaleLowerCase();\n }\n else {\n return null;\n }\n };\n ToolbarStatus.getComputedStyle = function (docElement, node, prop) {\n return docElement.defaultView.getComputedStyle(node, null).getPropertyValue(prop);\n };\n ToolbarStatus.isNumberFormatList = function (node) {\n var list = node.style && node.style.listStyleType;\n if (list === 'lower-alpha') {\n return 'Lower Alpha';\n }\n else if (list === 'number') {\n return 'Number';\n }\n else if (list === 'upper-alpha') {\n return 'Upper Alpha';\n }\n else if (list === 'lower-roman') {\n return 'Lower Roman';\n }\n else if (list === 'upper-roman') {\n return 'Upper Roman';\n }\n else if (list === 'lower-greek') {\n return 'Lower Greek';\n }\n else if (list === 'none') {\n return 'None';\n }\n else 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 * as events from '../base/constant';\nimport { ToolbarStatus } from '../../editor-manager/plugin/toolbar-status';\nimport { getDefaultHtmlTbStatus } from '../../common/util';\n/**\n * HtmlToolbarStatus module for refresh the toolbar status\n */\nvar HtmlToolbarStatus = /** @class */ (function () {\n function HtmlToolbarStatus(parent) {\n this.parent = parent;\n this.toolbarStatus = this.prevToolbarStatus = getDefaultHtmlTbStatus();\n this.addEventListener();\n }\n HtmlToolbarStatus.prototype.addEventListener = function () {\n this.parent.on(events.toolbarRefresh, this.onRefreshHandler, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n HtmlToolbarStatus.prototype.removeEventListener = function () {\n this.parent.off(events.toolbarRefresh, this.onRefreshHandler);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n HtmlToolbarStatus.prototype.onRefreshHandler = function (args) {\n if (this.parent.readonly) {\n return;\n }\n var fontsize = [];\n var fontName = [];\n var formats = [];\n this.parent.fontSize.items.forEach(function (item) {\n fontsize.push(item.value);\n });\n this.parent.fontFamily.items.forEach(function (item) {\n fontName.push(item.value);\n });\n this.parent.format.types.forEach(function (item) {\n formats.push(item.value.toLocaleLowerCase());\n });\n this.toolbarStatus = ToolbarStatus.get(this.parent.contentModule.getDocument(), this.parent.contentModule.getEditPanel(), formats, fontsize, fontName, args.documentNode);\n var tbStatusString = JSON.stringify(this.toolbarStatus);\n this.parent.notify(events.toolbarUpdated, this.toolbarStatus);\n if (JSON.stringify(this.prevToolbarStatus) !== tbStatusString) {\n this.parent.notify(events.updateTbItemsStatus, { html: JSON.parse(tbStatusString), markdown: null });\n this.prevToolbarStatus = JSON.parse(tbStatusString);\n }\n };\n return HtmlToolbarStatus;\n}());\nexport { HtmlToolbarStatus };\n","import { getEditValue } from '../base/util';\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n * @param {ServiceLocator} serviceLocator - specifies the service.\n * @returns {void}\n */\n function ContentRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n }\n /**\n * The function is used to render Rich Text Editor content div\n *\n * @returns {void}\n * @hidden\n\n */\n ContentRender.prototype.renderPanel = function () {\n var rteObj = this.parent;\n var div = this.parent.createElement('div', { className: 'e-rte-content', id: this.parent.getID() + 'rte-view' });\n var rteContent = getEditValue(rteObj.value, rteObj);\n this.editableElement = this.parent.createElement('div', {\n className: 'e-content',\n id: this.parent.getID() + '_rte-edit-view',\n attrs: {\n 'contenteditable': 'true'\n },\n innerHTML: rteContent\n });\n div.appendChild(this.editableElement);\n this.setPanel(div);\n rteObj.element.appendChild(div);\n };\n /**\n * Get the content div element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Get the editable element of RichTextEditor\n *\n * @returns {Element} - specifies the return element.\n * @hidden\n\n */\n ContentRender.prototype.getEditPanel = function () {\n return this.editableElement;\n };\n /**\n * Returns the text content as string.\n *\n * @returns {string} - specifies the string element.\n */\n ContentRender.prototype.getText = function () {\n var textString = this.getEditPanel().innerText;\n return textString === '\\n' ? '' : textString;\n };\n /**\n * Set the content div element of RichTextEditor\n *\n * @param {Element} panel - specifies the panel element.\n * @returns {void}\n * @hidden\n\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the document of RichTextEditor\n *\n * @returns {Document} - specifies the document.\n * @hidden\n\n */\n ContentRender.prototype.getDocument = function () {\n return this.getEditPanel().ownerDocument;\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ContentRender } from '../renderer/content-renderer';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getEditValue } from '../base/util';\nvar IFRAMEHEADER = \"\\n \\n \\n \\n \\n \\n \";\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n\n */\nvar IframeContentRender = /** @class */ (function (_super) {\n __extends(IframeContentRender, _super);\n function IframeContentRender() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * The function is used to render Rich Text Editor iframe\n *\n * @hidden\n\n */\n IframeContentRender.prototype.renderPanel = function () {\n var rteObj = this.parent;\n var rteContent = getEditValue(rteObj.value, rteObj);\n var iFrameBodyContent = '' +\n rteContent + '';\n var iFrameContent = IFRAMEHEADER + iFrameBodyContent;\n var iframe = this.parent.createElement('iframe', {\n id: this.parent.getID() + '_rte-view',\n className: 'e-rte-content',\n styles: 'display:block;',\n attrs: { 'srcdoc': iFrameContent }\n });\n this.setPanel(iframe);\n rteObj.element.appendChild(iframe);\n iframe.contentDocument.body.id = this.parent.getID() + '_rte-edit-view';\n iframe.contentDocument.body.setAttribute('aria-owns', this.parent.getID());\n iframe.contentDocument.open();\n iFrameContent = this.setThemeColor(iFrameContent, { color: '#333' });\n iframe.contentDocument.write(iFrameContent);\n iframe.contentDocument.close();\n if (rteObj.enableRtl) {\n this.contentPanel.contentDocument.body.setAttribute('class', 'e-rtl');\n }\n };\n IframeContentRender.prototype.setThemeColor = function (content, styles) {\n var fontColor = getComputedStyle(this.parent.element, '.e-richtexteditor').getPropertyValue('color');\n return content.replace(styles.color, fontColor);\n };\n /**\n * Get the editable element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n\n */\n IframeContentRender.prototype.getEditPanel = function () {\n var editNode;\n if (!isNullOrUndefined(this.contentPanel.contentDocument)) {\n editNode = this.contentPanel.contentDocument.body;\n }\n else {\n editNode = this.parent.inputElement;\n }\n return editNode;\n };\n /**\n * Get the document of RichTextEditor\n *\n * @returns {void}\n * @hidden\n\n */\n IframeContentRender.prototype.getDocument = function () {\n return this.getEditPanel().ownerDocument;\n };\n return IframeContentRender;\n}(ContentRender));\nexport { IframeContentRender };\n","import { select, detach, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { getIndex, toObjectLowerCase } from '../base/util';\nimport { templateItems, tools } from '../models/items';\n/**\n * `Color Picker` module is used to handle ColorPicker actions.\n */\nvar ColorPickerInput = /** @class */ (function () {\n function ColorPickerInput(parent, serviceLocator) {\n this.tools = {};\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = tools;\n }\n }\n ColorPickerInput.prototype.initializeInstance = function () {\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n };\n /**\n * renderColorPickerInput method\n *\n * @param {IColorPickerRenderArgs} args - specify the arguments.\n * @returns {void}\n * @hidden\n\n */\n ColorPickerInput.prototype.renderColorPickerInput = function (args) {\n var _this = this;\n this.initializeInstance();\n var suffixID = args.containerType;\n var tbElement = args.container;\n var targetID;\n var options;\n templateItems.forEach(function (item) {\n if (getIndex(item, args.items) !== -1) {\n switch (item) {\n case 'fontcolor': {\n targetID = _this.parent.getID() + '_' + suffixID + '_FontColor_Target';\n var fontNode = _this.parent.createElement('input');\n fontNode.id = targetID;\n fontNode.classList.add(classes.CLS_FONT_COLOR_TARGET);\n if (!isNullOrUndefined(_this.parent.cssClass)) {\n var allClassName = _this.parent.cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n fontNode.classList.add(allClassName[i]);\n }\n }\n }\n document.body.appendChild(fontNode);\n options = {\n cssClass: _this.tools[item.toLocaleLowerCase()].icon\n + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS + ' ' + _this.parent.cssClass,\n value: _this.tools[item.toLocaleLowerCase()].value,\n command: _this.tools[item.toLocaleLowerCase()].command,\n subCommand: _this.tools[item.toLocaleLowerCase()].subCommand,\n element: select('#' + _this.parent.getID() + '_' + suffixID + '_FontColor', tbElement),\n target: (targetID)\n };\n _this.fontColorPicker = _this.toolbarRenderer.renderColorPicker(options, 'fontcolor');\n _this.fontColorDropDown = _this.toolbarRenderer.renderColorPickerDropDown(options, 'fontcolor', _this.fontColorPicker);\n break;\n }\n case 'backgroundcolor': {\n targetID = _this.parent.getID() + '_' + suffixID + '_BackgroundColor_Target';\n var backNode = _this.parent.createElement('input');\n backNode.id = targetID;\n backNode.classList.add(classes.CLS_BACKGROUND_COLOR_TARGET);\n if (!isNullOrUndefined(_this.parent.cssClass)) {\n var allClassName = _this.parent.cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n backNode.classList.add(allClassName[i]);\n }\n }\n }\n document.body.appendChild(backNode);\n options = {\n cssClass: _this.tools[item.toLocaleLowerCase()].icon\n + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS + ' ' + _this.parent.cssClass,\n value: _this.tools[item.toLocaleLowerCase()].value,\n command: _this.tools[item.toLocaleLowerCase()].command,\n subCommand: _this.tools[item.toLocaleLowerCase()].subCommand,\n element: select('#' + _this.parent.getID() + '_' + suffixID + '_BackgroundColor', tbElement),\n target: (targetID)\n };\n _this.backgroundColorPicker = _this.toolbarRenderer.renderColorPicker(options, 'backgroundcolor');\n _this.backgroundColorDropDown = _this.toolbarRenderer.renderColorPickerDropDown(options, 'backgroundcolor', _this.backgroundColorPicker, _this.defaultColorPicker);\n break;\n }\n }\n }\n });\n if (this.parent.inlineMode.enable) {\n this.setCssClass({ cssClass: this.parent.cssClass });\n }\n };\n ColorPickerInput.prototype.destroy = function () {\n this.removeEventListener();\n this.destroyColorPicker();\n };\n /**\n * destroyColorPicker method\n *\n * @returns {void}\n * @hidden\n\n */\n ColorPickerInput.prototype.destroyColorPicker = function () {\n if (this.fontColorPicker && !this.fontColorPicker.isDestroyed) {\n this.fontColorPicker.destroy();\n }\n if (this.backgroundColorPicker && !this.backgroundColorPicker.isDestroyed) {\n this.backgroundColorPicker.destroy();\n }\n if (this.fontColorDropDown && !this.fontColorDropDown.isDestroyed) {\n var innerEle = this.fontColorDropDown.element.querySelector('.e-rte-color-content');\n if (innerEle) {\n detach(innerEle);\n }\n this.fontColorDropDown.destroy();\n }\n if (this.backgroundColorDropDown && !this.backgroundColorDropDown.isDestroyed) {\n var innerEle = this.backgroundColorDropDown.element.querySelector('.e-rte-color-content');\n if (innerEle) {\n this.defaultColorPicker = innerEle.children[0].style.borderBottomColor;\n detach(innerEle);\n }\n this.backgroundColorDropDown.destroy();\n }\n };\n ColorPickerInput.prototype.setRtl = function (args) {\n if (this.fontColorPicker) {\n this.fontColorPicker.setProperties({ enableRtl: args.enableRtl });\n this.fontColorDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.backgroundColorPicker) {\n this.backgroundColorPicker.setProperties({ enableRtl: args.enableRtl });\n this.backgroundColorDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n };\n ColorPickerInput.prototype.setCssClass = function (e) {\n this.updateCss(this.fontColorPicker, this.fontColorDropDown, e);\n this.updateCss(this.backgroundColorPicker, this.backgroundColorDropDown, e);\n };\n ColorPickerInput.prototype.updateCss = function (colorPickerObj, dropDownObj, e) {\n if (colorPickerObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n colorPickerObj.setProperties({ cssClass: (colorPickerObj.cssClass + ' ' + e.cssClass).trim() });\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n colorPickerObj.setProperties({ cssClass: (colorPickerObj.cssClass.replace(e.oldCssClass, '').replace(' ', ' ').trim() + ' ' + e.cssClass).trim() });\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass.replace(e.oldCssClass, '').replace(' ', ' ').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n ColorPickerInput.prototype.addEventListener = function () {\n this.parent.on(events.toolbarRenderComplete, this.renderColorPickerInput, this);\n this.parent.on(events.rtlMode, this.setRtl, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.destroyColorPicker, this.destroyColorPicker, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n };\n ColorPickerInput.prototype.onPropertyChanged = function (model) {\n var newProp = model.newProp;\n var element;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'fontColor':\n if (this.fontColorPicker) {\n for (var _b = 0, _c = Object.keys(newProp.fontColor); _b < _c.length; _b++) {\n var font = _c[_b];\n switch (font) {\n case 'default': {\n this.fontColorPicker.setProperties({ value: newProp.fontColor.default });\n element = this.fontColorDropDown.element;\n var fontBorder = element.querySelector('.' + this.tools['fontcolor'].icon);\n fontBorder.style.borderBottomColor = newProp.fontColor.default;\n break;\n }\n case 'mode':\n this.fontColorPicker.setProperties({ mode: newProp.fontColor.mode });\n break;\n case 'columns':\n this.fontColorPicker.setProperties({ columns: newProp.fontColor.columns });\n break;\n case 'colorCode':\n this.fontColorPicker.setProperties({ presetColors: newProp.fontColor.colorCode });\n break;\n case 'modeSwitcher':\n this.fontColorPicker.setProperties({ modeSwitcher: newProp.fontColor.modeSwitcher });\n break;\n }\n }\n }\n break;\n case 'backgroundColor':\n if (this.backgroundColorPicker) {\n for (var _d = 0, _e = Object.keys(newProp.backgroundColor); _d < _e.length; _d++) {\n var background = _e[_d];\n switch (background) {\n case 'default': {\n this.backgroundColorPicker.setProperties({ value: newProp.backgroundColor.default });\n element = this.backgroundColorDropDown.element;\n var backgroundBorder = element.querySelector('.' + this.tools['backgroundcolor'].icon);\n backgroundBorder.style.borderBottomColor = newProp.backgroundColor.default;\n break;\n }\n case 'mode':\n this.backgroundColorPicker.setProperties({ mode: newProp.backgroundColor.mode });\n break;\n case 'columns':\n this.backgroundColorPicker.setProperties({ columns: newProp.backgroundColor.columns });\n break;\n case 'colorCode':\n this.backgroundColorPicker.setProperties({ presetColors: newProp.backgroundColor.colorCode });\n break;\n case 'modeSwitcher':\n this.backgroundColorPicker.setProperties({ modeSwitcher: newProp.backgroundColor.modeSwitcher });\n break;\n }\n }\n }\n break;\n }\n }\n };\n ColorPickerInput.prototype.removeEventListener = function () {\n this.parent.off(events.toolbarRenderComplete, this.renderColorPickerInput);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.rtlMode, this.setRtl);\n this.parent.off(events.destroyColorPicker, this.destroyColorPicker);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.bindCssClass, this.setCssClass);\n };\n return ColorPickerInput;\n}());\nexport { ColorPickerInput };\n","import * as events from '../base/constant';\nimport { detach, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * XhtmlValidation module called when set enableXhtml as true\n */\nvar XhtmlValidation = /** @class */ (function () {\n function XhtmlValidation(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n XhtmlValidation.prototype.addEventListener = function () {\n this.parent.on(events.xhtmlValidation, this.enableXhtmlValidation, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n XhtmlValidation.prototype.removeEventListener = function () {\n this.parent.off(events.xhtmlValidation, this.enableXhtmlValidation);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n XhtmlValidation.prototype.enableXhtmlValidation = function () {\n if (this.parent.enableXhtml) {\n if (isNullOrUndefined(this.parent.inputElement)) {\n this.currentElement = this.parent.element;\n }\n else {\n this.currentElement = this.parent.inputElement;\n }\n this.clean(this.currentElement);\n this.ImageTags();\n this.removeTags();\n this.RemoveUnsupported();\n this.currentElement.innerHTML = this.selfEncloseValidation(this.currentElement.innerHTML, this.currentElement.innerText === '\\n' ?\n this.currentElement.innerText.length : this.currentElement.innerText.trim().length);\n this.parent.setProperties({ value: this.currentElement.innerHTML }, true);\n }\n };\n /**\n * @param {string} currentValue - specifies the string value.\n * @param {number} valueLength - specifies the length of the current value.\n * @returns {void}\n\n */\n XhtmlValidation.prototype.selfEncloseValidation = function (currentValue, valueLength) {\n if (valueLength === 0 && currentValue.indexOf('table') < 0 && currentValue.indexOf('img') < 0 &&\n currentValue !== '


    ' && currentValue !== '

    ' && currentValue !== '
    ') {\n var arrayValue = currentValue.split(' ');\n arrayValue[arrayValue.length - 1] = '​' + arrayValue[arrayValue.length - 1];\n currentValue = arrayValue.join('');\n }\n currentValue = currentValue.replace(/
    /g, '
    ').replace(/
    /g, '
    ').replace(/ /g, ' ');\n var valueTemp;\n var valueDupe = [];\n var valueOriginal = [];\n var imgRegexp = [//gi, //gi, //gi, //gi, //gi,\n //gi, //gi, //gi, //gi, //gi,\n //gi, //gi];\n for (var j = 0; j < imgRegexp.length; j++) {\n valueTemp = imgRegexp[j].exec(currentValue);\n while ((valueTemp) !== null) {\n valueDupe.push(valueTemp[0].toString());\n valueTemp = imgRegexp[j].exec(currentValue);\n }\n valueOriginal = valueDupe.slice(0);\n for (var i = 0; i < valueDupe.length; i++) {\n if (valueDupe[i].indexOf('/') === -1 || valueDupe[i].lastIndexOf('/') !== valueDupe[i].length - 2) {\n valueDupe[i] = valueDupe[i].substr(0, valueDupe[i].length - 1) + ' /' +\n valueDupe[i].substr(valueDupe[i].length - 1, valueDupe[i].length);\n }\n }\n for (var g = 0; g <= valueDupe.length - 1; g++) {\n currentValue = currentValue.replace(valueOriginal[g], valueDupe[g]);\n }\n }\n return currentValue;\n };\n XhtmlValidation.prototype.clean = function (node) {\n for (var n = 0; n < node.childNodes.length; n++) {\n var child = node.childNodes[n];\n if (child.nodeType === 8 || child.nodeName === 'V:IMAGE') {\n node.removeChild(child);\n n--;\n }\n else if (child.nodeType === 1) {\n this.clean(child);\n }\n }\n return this.currentElement.innerHTML;\n };\n XhtmlValidation.prototype.ImageTags = function () {\n var imgNodes = this.currentElement.querySelectorAll('IMG');\n for (var i = imgNodes.length - 1; i >= 0; i--) {\n if (!imgNodes[i].hasAttribute('alt')) {\n var img = imgNodes[i];\n img.setAttribute('alt', '');\n }\n }\n };\n XhtmlValidation.prototype.removeTags = function () {\n var removeAttribute = [['br', 'ul'], ['br', 'ol'], ['table', 'span'], ['div', 'span'], ['p', 'span']];\n for (var i = 0; i < removeAttribute.length; i++) {\n this.RemoveElementNode(removeAttribute[i][0], removeAttribute[i][1]);\n }\n };\n XhtmlValidation.prototype.RemoveElementNode = function (rmvNode, parentNode) {\n var parentArray = this.currentElement.querySelectorAll(parentNode);\n for (var i = 0; i < parentArray.length; i++) {\n var rmvArray = parentArray[i].querySelectorAll(rmvNode);\n for (var j = rmvArray.length; j > 0; j--) {\n detach(rmvArray[j - 1]);\n }\n }\n };\n XhtmlValidation.prototype.RemoveUnsupported = function () {\n var underlineEle = this.currentElement.querySelectorAll('u');\n for (var i = underlineEle.length - 1; i >= 0; i--) {\n var spanEle = this.parent.createElement('span');\n spanEle.style.textDecoration = 'underline';\n spanEle.innerHTML = underlineEle[i].innerHTML;\n underlineEle[i].parentNode.insertBefore(spanEle, underlineEle[i]);\n detach(underlineEle[i]);\n }\n var strongEle = this.currentElement.querySelectorAll('strong');\n for (var i = strongEle.length - 1; i >= 0; i--) {\n var boldEle = this.parent.createElement('b');\n boldEle.innerHTML = strongEle[i].innerHTML;\n strongEle[i].parentNode.insertBefore(boldEle, strongEle[i]);\n detach(strongEle[i]);\n }\n var attrArray = ['language', 'role', 'target', 'contenteditable', 'cellspacing',\n 'cellpadding', 'border', 'valign', 'colspan'];\n for (var i = 0; i <= attrArray.length; i++) {\n this.RemoveAttributeByName(attrArray[i]);\n }\n };\n XhtmlValidation.prototype.RemoveAttributeByName = function (attrName) {\n if (this.currentElement.firstChild !== null) {\n if (this.currentElement.firstChild.nodeType !== 3) {\n for (var i = 0; i < this.currentElement.childNodes.length; i++) {\n var ele = this.currentElement.childNodes[i];\n if (ele.nodeType !== 3 && ele.nodeName !== 'TABLE' && ele.nodeName !== 'TBODY' && ele.nodeName !== 'THEAD' &&\n ele.nodeName !== 'TH' && ele.nodeName !== 'TR' && ele.nodeName !== 'TD') {\n if (ele.hasAttribute(attrName)) {\n ele.removeAttribute(attrName);\n }\n if (ele.hasChildNodes()) {\n for (var j = 0; j < ele.childNodes.length; j++) {\n var childEle = ele.childNodes[j];\n if (childEle.nodeType !== 3 && childEle.nodeName !== 'TABLE' && childEle.nodeName !== 'TBODY' &&\n childEle.nodeName !== 'THEAD' && childEle.nodeName !== 'TH' && childEle.nodeName !== 'TR' &&\n childEle.nodeName !== 'TD' && childEle.hasAttribute(attrName) &&\n !childEle.classList.contains('e-mention-chip')) {\n childEle.removeAttribute(attrName);\n }\n if (childEle.hasChildNodes()) {\n for (var k = 0; k < childEle.childNodes.length; k++) {\n if (childEle.childNodes[k].nodeType !== 3 && childEle.childNodes[k].nodeName !== 'TABLE' &&\n childEle.childNodes[k].nodeName !== 'TBODY' && childEle.childNodes[k].nodeName !== 'THEAD' &&\n childEle.childNodes[k].nodeName !== 'TH' && childEle.childNodes[k].nodeName !== 'TR'\n && childEle.childNodes[k].nodeName !== 'TD'\n && childEle.childNodes[k].hasAttribute(attrName)) {\n childEle.childNodes[k].removeAttribute(attrName);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n };\n return XhtmlValidation;\n}());\nexport { XhtmlValidation };\n","import * as events from '../base/constant';\nimport { isNullOrUndefined, closest, attributes, removeClass, addClass, Browser, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { HTMLFormatter } from '../formatter/html-formatter';\nimport { RenderType } from '../base/enum';\nimport * as classes from '../base/classes';\nimport { HtmlToolbarStatus } from './html-toolbar-status';\nimport { IframeContentRender } from '../renderer/iframe-content-renderer';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { ColorPickerInput } from './color-picker';\nimport { NodeSelection } from '../../selection/selection';\nimport { InsertHtml } from '../../editor-manager/plugin/inserthtml';\nimport { getTextNodesUnder, sanitizeHelper, getDefaultValue } from '../base/util';\nimport { isIDevice } from '../../common/util';\nimport { XhtmlValidation } from './xhtml-validation';\nimport { ON_BEGIN } from './../../common/constant';\n/**\n * `HtmlEditor` module is used to HTML editor\n */\nvar HtmlEditor = /** @class */ (function () {\n function HtmlEditor(parent, serviceLocator) {\n this.rangeCollection = [];\n this.isImageDelete = false;\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.xhtmlValidation = new XhtmlValidation(parent);\n this.addEventListener();\n }\n /**\n * Destroys the Markdown.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n HtmlEditor.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n HtmlEditor.prototype.sanitizeHelper = function (value) {\n value = sanitizeHelper(value, this.parent);\n return value;\n };\n HtmlEditor.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.nodeSelectionObj = new NodeSelection();\n this.colorPickerModule = new ColorPickerInput(this.parent, this.locator);\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on(events.htmlToolbarClick, this.onToolbarClick, this);\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.keyUp, this.onKeyUp, this);\n this.parent.on(events.renderColorPicker, this.renderColorPicker, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.selectAll, this.selectAll, this);\n this.parent.on(events.selectRange, this.selectRange, this);\n this.parent.on(events.getSelectedHtml, this.getSelectedHtml, this);\n this.parent.on(events.selectionSave, this.onSelectionSave, this);\n this.parent.on(events.selectionRestore, this.onSelectionRestore, this);\n this.parent.on(events.readOnlyMode, this.updateReadOnly, this);\n this.parent.on(events.paste, this.onPaste, this);\n this.parent.on(events.tableclass, this.isTableClassAdded, this);\n };\n HtmlEditor.prototype.updateReadOnly = function () {\n if (this.parent.readonly) {\n attributes(this.parent.contentModule.getEditPanel(), { contenteditable: 'false' });\n addClass([this.parent.element], classes.CLS_RTE_READONLY);\n }\n else {\n attributes(this.parent.contentModule.getEditPanel(), { contenteditable: 'true' });\n removeClass([this.parent.element], classes.CLS_RTE_READONLY);\n }\n };\n HtmlEditor.prototype.onSelectionSave = function () {\n var currentDocument = this.contentRenderer.getDocument();\n var range = this.nodeSelectionObj.getRange(currentDocument);\n this.saveSelection = this.nodeSelectionObj.save(range, currentDocument);\n };\n HtmlEditor.prototype.onSelectionRestore = function (e) {\n this.parent.isBlur = false;\n this.contentRenderer.getEditPanel().focus();\n if (isNullOrUndefined(e.items) || e.items) {\n this.saveSelection.restore();\n }\n };\n HtmlEditor.prototype.isTableClassAdded = function () {\n var tableElement = this.parent.inputElement.querySelectorAll('table');\n for (var i = 0; i < tableElement.length; i++) {\n if (!tableElement[i].classList.contains('e-rte-table')) {\n tableElement[i].classList.add('e-rte-table');\n }\n }\n };\n HtmlEditor.prototype.onKeyUp = function (e) {\n var args = e.args;\n var restrictKeys = [8, 9, 13, 16, 17, 18, 20, 27, 37, 38, 39, 40, 44, 45, 46, 91,\n 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123];\n var range = this.parent.getRange();\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n var pointer;\n var isRootParent = false;\n if (restrictKeys.indexOf(args.keyCode) < 0 && !args.shiftKey && !args.ctrlKey && !args.altKey) {\n pointer = range.startOffset;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n range.startContainer.nodeName === '#text' ? range.startContainer.parentElement !== this.parent.inputElement ? range.startContainer.parentElement.classList.add('currentStartMark')\n : isRootParent = true : range.startContainer.classList.add('currentStartMark');\n if (range.startContainer.textContent.charCodeAt(0) === 8203) {\n 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 var currentChild = this.parent.inputElement.firstChild;\n while (!isNOU(currentChild) && currentChild.textContent.replace(regEx, '').trim().length > 0) {\n currentChild.innerHTML = currentChild.innerHTML.replace(regEx, '');\n currentChild = currentChild.nextElementSibling;\n }\n var currentChildNode = this.parent.inputElement.querySelector('.currentStartMark').childNodes;\n if (currentChildNode.length > 1) {\n for (var i = 0; i < currentChildNode.length; i++) {\n if (currentChildNode[i].nodeName === '#text' && currentChildNode[i].textContent.length === 0) {\n detach(currentChildNode[i]);\n i--;\n }\n if (focusNode.textContent.replace(regEx, '') === currentChildNode[i].textContent) {\n pointer = focusNode.textContent.length > 1 ?\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().length;\n var selectionLength = this.parent.getSelection().length;\n var totalLength = (currentLength - selectionLength) + 1;\n if (!(this.parent.maxLength === -1 || totalLength <= this.parent.maxLength) &&\n e.args.keyCode === 13) {\n e.args.preventDefault();\n return;\n }\n else {\n this.parent.notify(events.enterHandler, { args: e.args });\n }\n }\n }\n if (e.args.action === 'space') {\n var currentRange_1 = this.parent.getRange();\n var editorValue = currentRange_1.startContainer.textContent.slice(0, currentRange_1.startOffset);\n var orderedList_1 = this.isOrderedList(editorValue);\n var unOrderedList = this.isUnOrderedList(editorValue);\n if (orderedList_1 && !unOrderedList || unOrderedList && !orderedList_1) {\n var eventArgs_1 = {\n callBack: null,\n event: e.args,\n name: 'keydown-handler'\n };\n var actionBeginArgs = {\n cancel: false,\n item: { command: 'Lists', subCommand: orderedList_1 ? 'OL' : 'UL' },\n name: 'actionBegin',\n originalEvent: e.args,\n requestType: orderedList_1 ? 'OL' : 'UL'\n };\n this.parent.trigger(events.actionBegin, actionBeginArgs, function (actionBeginArgs) {\n if (!actionBeginArgs.cancel) {\n _this.parent.formatter.editorManager.observer.notify(ON_BEGIN, eventArgs_1);\n _this.parent.trigger(events.actionComplete, {\n editorMode: _this.parent.editorMode,\n elements: _this.parent.formatter.editorManager.domNode.blockNodes(),\n event: e.args,\n name: events.actionComplete,\n range: _this.parent.getRange(),\n requestType: orderedList_1 ? 'OL' : 'UL'\n });\n }\n });\n }\n }\n if (Browser.info.name === 'chrome' && (!isNullOrUndefined(this.rangeElement) && !isNullOrUndefined(this.oldRangeElement) ||\n !isNullOrUndefined(this.deleteRangeElement) && !isNullOrUndefined(this.deleteOldRangeElement)) &&\n currentRange.startContainer.parentElement.tagName !== 'TD' && currentRange.startContainer.parentElement.tagName !== 'TH') {\n this.rangeElement = null;\n this.oldRangeElement = null;\n this.deleteRangeElement = null;\n this.deleteOldRangeElement = null;\n if (!this.isImageDelete) {\n args.preventDefault();\n }\n args.preventDefault();\n }\n };\n HtmlEditor.prototype.isOrderedList = function (editorValue) {\n editorValue = editorValue.replace(/\\u200B/g, '');\n var olListStartRegex = [/^[1]+[.]+$/, /^[i]+[.]+$/, /^[a]+[.]+$/];\n if (!isNullOrUndefined(editorValue)) {\n for (var i = 0; i < olListStartRegex.length; i++) {\n if (olListStartRegex[i].test(editorValue)) {\n return true;\n }\n }\n }\n return false;\n };\n HtmlEditor.prototype.isUnOrderedList = function (editorValue) {\n editorValue = editorValue.replace(/\\u200B/g, '');\n var ulListStartRegex = [/^[*]$/, /^[-]$/];\n if (!isNullOrUndefined(editorValue)) {\n for (var i = 0; i < ulListStartRegex.length; i++) {\n if (ulListStartRegex[i].test(editorValue)) {\n return true;\n }\n }\n }\n return false;\n };\n HtmlEditor.prototype.backSpaceCleanup = function (e, currentRange) {\n var isLiElement = false;\n 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 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) {\n var checkNode = currentRange.startContainer.nodeName === '#text' ? currentRange.startContainer.parentElement : currentRange.startContainer;\n if ((!this.parent.formatter.editorManager.domNode.isBlockNode(checkNode) &&\n !isNOU(checkNode.previousSibling) && checkNode.previousSibling.nodeName === 'BR') ||\n (!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.lastElementChild;\n if (!isNullOrUndefined(liElement.lastElementChild) && liElement.lastElementChild.nodeName !== 'BR') {\n this.rangeElement = liElement.lastElementChild;\n isLiElement = true;\n }\n else {\n this.rangeElement = liElement;\n }\n }\n }\n else if (this.rangeElement === this.parent.inputElement || this.rangeElement.tagName === 'TABLE' ||\n (!isNullOrUndefined(this.rangeElement.previousElementSibling) && this.rangeElement.previousElementSibling.tagName === 'TABLE')) {\n return;\n }\n else {\n this.oldRangeElement = this.rangeElement.previousElementSibling;\n }\n if (isNullOrUndefined(this.oldRangeElement)) {\n return;\n }\n else {\n if (this.oldRangeElement.tagName === 'OL' || this.oldRangeElement.tagName === 'UL') {\n this.oldRangeElement = this.oldRangeElement.lastElementChild.lastElementChild\n ? this.oldRangeElement.lastElementChild.lastElementChild :\n this.oldRangeElement.lastElementChild;\n }\n var lastNode = this.oldRangeElement.lastChild;\n while (lastNode.nodeType !== 3 && lastNode.nodeName !== '#text' &&\n lastNode.nodeName !== 'BR') {\n lastNode = lastNode.lastChild;\n }\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), \n // eslint-disable-next-line\n lastNode, lastNode.textContent.length);\n if (this.oldRangeElement.querySelectorAll('BR').length === 1) {\n detach(this.oldRangeElement.querySelector('BR'));\n }\n if (!isNullOrUndefined(this.rangeElement) && this.oldRangeElement !== this.rangeElement) {\n while (this.rangeElement.firstChild) {\n this.oldRangeElement.appendChild(this.rangeElement.childNodes[0]);\n }\n // eslint-disable-next-line\n !isLiElement ? detach(this.rangeElement) : detach(this.rangeElement.parentElement);\n this.oldRangeElement.normalize();\n }\n }\n }\n };\n HtmlEditor.prototype.deleteCleanup = function (e, currentRange) {\n var isLiElement = false;\n var liElement;\n var rootElement;\n if (e.args.code === 'Delete' && e.args.keyCode === 46 &&\n this.parent.contentModule.getText().trim().length !== 0 && this.parent.getSelection().length === 0 && currentRange.startContainer.parentElement.tagName !== 'TD' &&\n currentRange.startContainer.parentElement.tagName !== 'TH') {\n this.deleteRangeElement = rootElement = this.getRootBlockNode(currentRange.startContainer);\n if (this.deleteRangeElement.tagName === 'OL' || this.deleteRangeElement.tagName === 'UL') {\n liElement = this.getRangeLiNode(currentRange.startContainer);\n if (liElement.nextElementSibling && liElement.nextElementSibling.childElementCount > 0\n && !liElement.nextElementSibling.querySelector('BR')) {\n if (!isNullOrUndefined(liElement.lastElementChild)) {\n this.deleteRangeElement = liElement.lastElementChild;\n isLiElement = true;\n }\n else {\n this.deleteRangeElement = liElement;\n }\n }\n else {\n this.deleteRangeElement = this.getRangeElement(liElement);\n }\n }\n else if (this.deleteRangeElement.nodeType === 3 || (this.deleteRangeElement.tagName === 'TABLE' ||\n (!isNullOrUndefined(this.deleteRangeElement.nextElementSibling) && this.deleteRangeElement.nextElementSibling.tagName === 'TABLE'))) {\n return;\n }\n if (this.getCaretIndex(currentRange, this.deleteRangeElement) === this.deleteRangeElement.textContent.length) {\n if (!isNullOrUndefined(liElement)) {\n if (isLiElement || !isNullOrUndefined(liElement.nextElementSibling)) {\n this.deleteOldRangeElement = this.getRangeElement(liElement.nextElementSibling);\n }\n else {\n this.deleteOldRangeElement = rootElement.nextElementSibling;\n }\n }\n else {\n this.deleteOldRangeElement = this.deleteRangeElement.nextElementSibling;\n }\n if (isNullOrUndefined(this.deleteOldRangeElement)) {\n return;\n }\n else {\n if (currentRange.startOffset === 0 && currentRange.endOffset === 1 &&\n this.deleteRangeElement.childNodes[0].nodeName === 'IMG') {\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.parent.contentModule.getDocument(), this.deleteRangeElement, this.deleteRangeElement, 0, 1);\n this.isImageDelete = true;\n }\n else {\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), this.deleteRangeElement, this.deleteRangeElement.childNodes.length);\n this.isImageDelete = false;\n }\n if (this.deleteRangeElement.querySelector('BR')) {\n detach(this.deleteRangeElement.querySelector('BR'));\n }\n if (!isNullOrUndefined(this.deleteRangeElement) && (this.deleteOldRangeElement.tagName !== 'OL' && this.deleteOldRangeElement.tagName !== 'UL')\n && this.deleteOldRangeElement !== this.deleteRangeElement) {\n while (this.deleteOldRangeElement.firstChild) {\n this.deleteRangeElement.appendChild(this.deleteOldRangeElement.childNodes[0]);\n }\n if (!isLiElement) {\n detach(this.deleteOldRangeElement);\n }\n else {\n detach(this.deleteOldRangeElement.parentElement);\n }\n this.deleteRangeElement.normalize();\n }\n else {\n this.deleteRangeElement = null;\n this.deleteOldRangeElement = null;\n }\n }\n }\n else {\n this.deleteRangeElement = null;\n }\n }\n };\n HtmlEditor.prototype.getCaretIndex = function (currentRange, element) {\n var position = 0;\n if (this.parent.contentModule.getDocument().getSelection().rangeCount !== 0) {\n var preCaretRange = currentRange.cloneRange();\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(currentRange.endContainer, currentRange.endOffset);\n position = preCaretRange.toString().length;\n }\n return position;\n };\n HtmlEditor.prototype.getRangeElement = function (element) {\n var rangeElement = element.lastElementChild ? element.lastElementChild.tagName === 'BR' ?\n element.lastElementChild.previousElementSibling ? element.lastElementChild.previousElementSibling\n : element : element.lastElementChild : element;\n return rangeElement;\n };\n HtmlEditor.prototype.getRootBlockNode = function (rangeBlockNode) {\n // eslint-disable-next-line\n for (; rangeBlockNode && this.parent && this.parent.inputElement !== rangeBlockNode; rangeBlockNode = rangeBlockNode) {\n if (rangeBlockNode.parentElement === this.parent.inputElement) {\n break;\n }\n else {\n rangeBlockNode = rangeBlockNode.parentElement;\n }\n }\n return rangeBlockNode;\n };\n HtmlEditor.prototype.getRangeLiNode = function (rangeLiNode) {\n var node = rangeLiNode.parentElement;\n while (node !== this.parent.inputElement) {\n if (node.nodeType === 1 && node.tagName === 'LI') {\n break;\n }\n node = node.parentElement;\n }\n return node;\n };\n HtmlEditor.prototype.onPaste = function (e) {\n // eslint-disable-next-line\n var regex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (e.text.match(regex)) {\n if (e.isWordPaste) {\n return;\n }\n e.args.preventDefault();\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n // eslint-disable-next-line\n var saveSelection = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n // eslint-disable-next-line\n var httpRegex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)))/gi);\n var wwwRegex = new RegExp(/([^\\S]|^)(((www\\.))(\\S+))/gi);\n var enterSplitText = e.text.split('\\n');\n var contentInnerElem = '';\n for (var i = 0; i < enterSplitText.length; i++) {\n if (enterSplitText[i].trim() === '') {\n contentInnerElem += getDefaultValue(this.parent);\n }\n else {\n var contentWithSpace = '';\n var spaceBetweenContent = true;\n var spaceSplit = enterSplitText[i].split(' ');\n for (var j = 0; j < spaceSplit.length; j++) {\n if (spaceSplit[j].trim() === '') {\n contentWithSpace += spaceBetweenContent ? ' ' : ' ';\n }\n else {\n spaceBetweenContent = false;\n contentWithSpace += spaceSplit[j] + ' ';\n }\n }\n if (i === 0) {\n contentInnerElem += '' + contentWithSpace.trim() + '';\n }\n else {\n contentInnerElem += '

    ' + contentWithSpace.trim() + '

    ';\n }\n }\n }\n var divElement = this.parent.createElement('div');\n divElement.setAttribute('class', 'pasteContent');\n divElement.style.display = 'inline';\n divElement.innerHTML = contentInnerElem.replace('¶', '&para');\n var paraElem = divElement.querySelectorAll('span, p');\n for (var i = 0; i < paraElem.length; i++) {\n var splitTextContent = paraElem[i].innerHTML.split(' ');\n var resultSplitContent = '';\n for (var j = 0; j < splitTextContent.length; j++) {\n if (splitTextContent[j].match(httpRegex) || splitTextContent[j].match(wwwRegex)) {\n resultSplitContent += '' + splitTextContent[j] + ' ';\n }\n else {\n resultSplitContent += splitTextContent[j] + ' ';\n }\n }\n paraElem[i].innerHTML = resultSplitContent.trim();\n }\n if (!isNullOrUndefined(this.parent.pasteCleanupModule)) {\n e.callBack(divElement.innerHTML);\n }\n else {\n this.parent.formatter.editorManager.execCommand('insertHTML', null, null, null, divElement);\n }\n }\n };\n HtmlEditor.prototype.spaceLink = function (e) {\n var range = this.nodeSelectionObj.getRange(this.contentRenderer.getDocument());\n var selectNodeEle = this.nodeSelectionObj.getParentNodeCollection(range);\n var text = range.startContainer.textContent.substr(0, range.endOffset);\n var splitText = text.split(' ');\n var urlText = splitText[splitText.length - 1];\n var urlTextRange = range.startOffset - (text.length - splitText[splitText.length - 1].length);\n urlText = urlText.slice(0, urlTextRange);\n // eslint-disable-next-line\n var regex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (selectNodeEle[0].nodeName !== 'A' && urlText.match(regex)) {\n var selection = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n var url = urlText.indexOf('http') > -1 ? urlText : 'http://' + urlText;\n var selectParent = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n var value = {\n url: url,\n selection: selection, selectParent: selectParent,\n text: urlText,\n title: '',\n target: '_blank'\n };\n this.parent.formatter.process(this.parent, {\n item: {\n 'command': 'Links',\n 'subCommand': 'CreateLink'\n }\n }, e, value);\n }\n };\n HtmlEditor.prototype.onToolbarClick = function (args) {\n var _this = this;\n var save;\n var selectNodeEle;\n var selectParentEle;\n var item = args.item;\n var closestElement = closest(args.originalEvent.target, '.e-rte-quick-popup');\n if (item.command !== 'FormatPainter') {\n if (closestElement && !closestElement.classList.contains('e-rte-inline-popup')) {\n if (!(item.subCommand === 'SourceCode' || item.subCommand === 'Preview' ||\n item.subCommand === 'FontColor' || item.subCommand === 'BackgroundColor')) {\n if (isIDevice() && item.command === 'Images') {\n this.nodeSelectionObj.restore();\n }\n var range = this.nodeSelectionObj.getRange(this.parent.contentModule.getDocument());\n save = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n selectNodeEle = this.nodeSelectionObj.getNodeCollection(range);\n selectParentEle = this.nodeSelectionObj.getParentNodeCollection(range);\n }\n if (item.command === 'Images') {\n this.parent.notify(events.imageToolbarAction, {\n member: 'image', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Audios') {\n this.parent.notify(events.audioToolbarAction, {\n member: 'audio', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Videos') {\n this.parent.notify(events.videoToolbarAction, {\n member: 'video', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Links') {\n this.parent.notify(events.linkToolbarAction, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Table') {\n this.parent.notify(events.tableToolbarAction, {\n member: 'table', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n }\n else {\n var linkDialog = document.getElementById(this.parent.getID() + '_rtelink');\n var imageDialog = document.getElementById(this.parent.getID() + '_image');\n if (!(item.subCommand === 'SourceCode' || item.subCommand === 'Preview' ||\n item.subCommand === 'FontColor' || item.subCommand === 'BackgroundColor')) {\n var range = this.nodeSelectionObj.getRange(this.parent.contentModule.getDocument());\n if (isNullOrUndefined(linkDialog) && isNullOrUndefined(imageDialog)) {\n save = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n }\n selectNodeEle = this.nodeSelectionObj.getNodeCollection(range);\n selectParentEle = this.nodeSelectionObj.getParentNodeCollection(range);\n }\n switch (item.subCommand) {\n case 'Maximize':\n this.parent.notify(events.enableFullScreen, { args: args });\n break;\n case 'Minimize':\n this.parent.notify(events.disableFullScreen, { args: args });\n break;\n case 'CreateLink':\n this.parent.notify(events.insertLink, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'RemoveLink':\n this.parent.notify(events.unLink, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'Print':\n this.parent.print();\n break;\n case 'Image':\n this.parent.notify(events.insertImage, {\n member: 'image', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'Audio':\n this.parent.notify(events.insertAudio, {\n member: 'audio', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'Video':\n this.parent.notify(events.insertVideo, {\n member: 'video', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'CreateTable':\n this.parent.notify(events.createTable, {\n member: 'table', args: args, selection: save\n });\n break;\n case 'SourceCode':\n this.parent.notify(events.sourceCode, { member: 'viewSource', args: args });\n break;\n case 'Preview':\n this.parent.notify(events.updateSource, { member: 'updateSource', args: args });\n break;\n case 'FontColor':\n case 'BackgroundColor':\n break;\n case 'File':\n this.parent.notify(events.renderFileManager, {\n member: 'fileManager', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n 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 (!isNullOrUndefined(e.newProp.formatter)) {\n var editElement = this.contentRenderer.getEditPanel();\n var option = { undoRedoSteps: this.parent.undoRedoSteps,\n undoRedoTimer: this.parent.undoRedoTimer };\n this.parent.formatter.updateFormatter(editElement, this.contentRenderer.getDocument(), option);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string value\n * @hidden\n */\n HtmlEditor.prototype.getModuleName = function () {\n return 'htmlEditor';\n };\n /**\n * For selecting all content in RTE\n *\n * @returns {void}\n * @private\n * @hidden\n */\n HtmlEditor.prototype.selectAll = function () {\n var nodes = getTextNodesUnder(this.parent.contentModule.getDocument(), this.parent.contentModule.getEditPanel());\n if (nodes.length > 0) {\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.parent.contentModule.getDocument(), nodes[0], nodes[nodes.length - 1], 0, nodes[nodes.length - 1].textContent.length);\n }\n };\n /**\n * For selecting all content in RTE\n *\n * @param {NotifyArgs} e - specifies the notified arguments\n * @returns {void}\n * @private\n * @hidden\n */\n HtmlEditor.prototype.selectRange = function (e) {\n this.parent.formatter.editorManager.nodeSelection.setRange(this.parent.contentModule.getDocument(), e.range);\n };\n /**\n * For get a selected text in RTE\n *\n * @param {NotifyArgs} e - specifies the notified arguments\n * @returns {void}\n * @hidden\n */\n HtmlEditor.prototype.getSelectedHtml = function (e) {\n e.callBack(this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument()).toString());\n };\n return HtmlEditor;\n}());\nexport { HtmlEditor };\n","import { detach, getUniqueID, append, closest, selectAll, select, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, Browser, isNullOrUndefined, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isCollide, Tooltip } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { RenderType } from '../base/enum';\nimport { setToolbarStatus, updateUndoRedoStatus, isIDevice } from '../base/util';\nimport { BaseToolbar } from './base-toolbar';\nimport { DropDownButtons } from './dropdown-buttons';\nimport { ColorPickerInput } from './color-picker';\n/**\n * `Quick toolbar` module is used to handle Quick toolbar actions.\n */\nvar BaseQuickToolbar = /** @class */ (function () {\n function BaseQuickToolbar(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.isDOMElement = false;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n this.popupRenderer = this.renderFactory.getRenderer(RenderType.Popup);\n this.dropDownButtons = new DropDownButtons(this.parent, this.locator);\n this.colorPickerObj = new ColorPickerInput(this.parent, this.locator);\n }\n BaseQuickToolbar.prototype.appendPopupContent = function () {\n this.toolbarElement = this.parent.createElement('div', { className: classes.CLS_QUICK_TB });\n this.element.appendChild(this.toolbarElement);\n };\n /**\n * render method\n *\n * @param {IQuickToolbarOptions} args - specifies the arguments\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.render = function (args) {\n var className;\n if (args.popupType === 'Image') {\n className = classes.CLS_IMAGE_POP;\n }\n else if (args.popupType === 'Inline') {\n className = classes.CLS_INLINE_POP;\n }\n else {\n className = '';\n }\n var popupId = getUniqueID(args.popupType + '_Quick_Popup');\n this.stringItems = args.toolbarItems;\n this.element = this.parent.createElement('div', { id: popupId, className: className + ' ' + classes.CLS_RTE_ELEMENTS });\n this.element.setAttribute('aria-owns', this.parent.getID());\n this.appendPopupContent();\n this.createToolbar(args.toolbarItems, args.mode, args.cssClass);\n this.popupRenderer.renderPopup(this);\n this.addEventListener();\n };\n BaseQuickToolbar.prototype.createToolbar = function (items, mode, cssClass) {\n this.quickTBarObj = new BaseToolbar(this.parent, this.locator);\n this.quickTBarObj.render({\n container: 'quick',\n target: this.toolbarElement,\n items: items,\n mode: mode,\n cssClass: cssClass\n });\n this.quickTBarObj.toolbarObj.refresh();\n };\n BaseQuickToolbar.prototype.setPosition = function (e) {\n var x;\n var y;\n var imgWrapper = closest(e.target, '.e-img-caption');\n var isAligned = (e.target.classList.contains('e-imginline') ||\n e.target.classList.contains('e-imgbreak')) ? false : true;\n var target = !isNOU(imgWrapper) ? imgWrapper : e.target;\n addClass([this.toolbarElement], [classes.CLS_RM_WHITE_SPACE]);\n var targetOffsetTop = target.offsetTop;\n var parentOffsetTop = window.pageYOffset + e.parentData.top;\n if ((targetOffsetTop - e.editTop) > e.popHeight) {\n y = parentOffsetTop + e.tBarElementHeight + (targetOffsetTop - e.editTop) - e.popHeight - 5;\n }\n else if (((e.editTop + e.editHeight) - (targetOffsetTop + target.offsetHeight)) > e.popHeight) {\n y = parentOffsetTop + e.tBarElementHeight + (targetOffsetTop - e.editTop) + target.offsetHeight + 5;\n }\n else {\n y = e.y;\n }\n target = isAligned ? e.target : target;\n if (target.offsetWidth > e.popWidth) {\n x = (target.offsetWidth / 2) - (e.popWidth / 2) + e.parentData.left + target.offsetLeft;\n }\n else {\n x = e.parentData.left + target.offsetLeft;\n }\n this.popupObj.position.X = ((x + e.popWidth) > e.parentData.right) ? e.parentData.right - e.popWidth : x;\n this.popupObj.position.Y = (y >= 0) ? y : e.y + 5;\n this.popupObj.dataBind();\n removeClass([this.toolbarElement], [classes.CLS_RM_WHITE_SPACE]);\n };\n BaseQuickToolbar.prototype.checkCollision = function (e, viewPort, type) {\n var x;\n var y;\n var parentTop = e.parentData.top;\n var contentTop = e.windowY + parentTop + e.tBarElementHeight;\n var collision = [];\n if (viewPort === 'document') {\n collision = isCollide(e.popup);\n }\n else {\n collision = isCollide(e.popup, e.parentElement);\n }\n for (var i = 0; i < collision.length; i++) {\n switch (collision[i]) {\n case 'top':\n if (viewPort === 'document') {\n y = e.windowY;\n }\n else {\n y = (window.pageYOffset + parentTop) + e.tBarElementHeight;\n }\n break;\n case 'bottom': {\n var posY = void 0;\n if (viewPort === 'document') {\n if (type === 'inline') {\n posY = (e.y - e.popHeight - 10);\n }\n else {\n if ((e.windowHeight - (parentTop + e.tBarElementHeight)) > e.popHeight) {\n if ((contentTop - e.windowHeight) > e.popHeight) {\n posY = (contentTop + (e.windowHeight - parentTop)) - e.popHeight;\n }\n else {\n posY = contentTop;\n }\n }\n else {\n posY = e.windowY + (parentTop + e.tBarElementHeight);\n }\n }\n }\n else {\n if (e.target.tagName !== 'IMG') {\n posY = (e.parentData.bottom + window.pageYOffset) - e.popHeight - 10;\n }\n else {\n posY = (e.parentData.bottom + window.pageYOffset) - e.popHeight - 5;\n }\n }\n y = posY;\n break;\n }\n case 'right':\n if (type === 'inline') {\n x = window.pageXOffset + (e.windowWidth - (e.popWidth + e.bodyRightSpace + 10));\n }\n else {\n x = e.x - e.popWidth;\n }\n break;\n case 'left':\n if (type === 'inline') {\n x = 0;\n }\n else {\n x = e.parentData.left;\n }\n break;\n }\n }\n this.popupObj.position.X = (x) ? x : this.popupObj.position.X;\n this.popupObj.position.Y = (y) ? y : this.popupObj.position.Y;\n this.popupObj.dataBind();\n };\n /**\n * showPopup method\n *\n * @param {number} x - specifies the x value\n * @param {number} y - specifies the y value\n * @param {Element} target - specifies the element\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.showPopup = function (x, y, target) {\n var _this = this;\n var eventArgs = { popup: this.popupObj, cancel: false, targetElement: target,\n 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')) {\n _this.parent.disableToolbarItem(_this.parent.toolbarSettings.items);\n _this.parent.enableToolbarItem(['Undo', 'Redo']);\n }\n append([_this.element], document.body);\n if (_this.parent.showTooltip) {\n _this.tooltip = new Tooltip({\n target: '#' + _this.element.id + ' [title]',\n openDelay: 400,\n showTipPointer: true,\n windowCollision: true,\n position: 'BottomCenter'\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 (target.tagName === 'IMG' || target.tagName === 'AUDIO' || target.tagName === 'VIDEO' || target.tagName === 'IFRAME' || (target.classList &&\n (target.classList.contains(classes.CLS_AUDIOWRAP) || target.classList.contains(classes.CLS_CLICKELEM) ||\n target.classList.contains(classes.CLS_VID_CLICK_ELEM)))) {\n _this.setPosition(showPopupData);\n }\n if (!_this.parent.inlineMode.enable) {\n _this.checkCollision(showPopupData, 'parent', '');\n }\n _this.checkCollision(showPopupData, 'document', ((_this.parent.inlineMode.enable) ? 'inline' : ''));\n _this.popupObj.element.classList.remove('e-popup-open');\n removeClass([_this.element], [classes.CLS_HIDE]);\n _this.popupObj.show({ name: 'ZoomIn', duration: (Browser.isIE ? 250 : 400) });\n if (_this.popupObj && _this.parent.cssClass) {\n removeClass([_this.popupObj.element], _this.parent.cssClass);\n addClass([_this.popupObj.element], _this.parent.cssClass);\n }\n setStyleAttribute(_this.element, {\n maxWidth: window.outerWidth + 'px'\n });\n addClass([_this.element], [classes.CLS_POP]);\n _this.isDOMElement = true;\n }\n });\n };\n /**\n * hidePopup method\n *\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.hidePopup = function () {\n var viewSourcePanel = this.parent.sourceCodeModule.getViewPanel();\n if (Browser.isDevice && !isIDevice()) {\n removeClass([this.parent.getToolbar()], [classes.CLS_HIDE]);\n }\n if (!isNullOrUndefined(document.querySelector('.e-tooltip-wrap'))) {\n if (!isNullOrUndefined(document.querySelector('#' + this.element.id + ' [data-tooltip-id]'))) {\n var tooltipTargetEle = document.querySelector('#' + this.element.id + ' [data-tooltip-id]');\n var dataContent = tooltipTargetEle.getAttribute('data-content');\n tooltipTargetEle.removeAttribute('data-content');\n tooltipTargetEle.setAttribute('title', dataContent);\n tooltipTargetEle.removeAttribute('data-tooltip-id');\n }\n this.tooltip.destroy();\n }\n 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.isDOMElement = false;\n };\n /**\n * @param {string} item - specifies the string value\n * @param {number} index - specifies the index value\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.addQTBarItem = function (item, index) {\n this.quickTBarObj.toolbarObj.addItems(this.quickTBarObj.getItems(item, 'toolbar'), index);\n };\n /**\n * @param {number} index - specifies the index value\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.removeQTBarItem = function (index) {\n this.quickTBarObj.toolbarObj.removeItems(index);\n };\n BaseQuickToolbar.prototype.removeEleFromDOM = function () {\n var element = this.popupObj.element;\n if (this.isDOMElement) {\n this.dropDownButtons.destroyDropDowns();\n this.colorPickerObj.destroyColorPicker();\n removeClass([this.element], [classes.CLS_POP]);\n detach(element);\n var args = this.popupObj;\n this.parent.trigger(events.quickToolbarClose, args);\n }\n };\n BaseQuickToolbar.prototype.updateStatus = function (args) {\n var options = {\n args: args,\n dropDownModule: this.dropDownButtons,\n parent: this.parent,\n tbElements: selectAll('.' + classes.CLS_TB_ITEM, this.element),\n tbItems: this.quickTBarObj.toolbarObj.items\n };\n setToolbarStatus(options, true, this.parent);\n if (!select('.e-rte-srctextarea', this.parent.element)) {\n updateUndoRedoStatus(this.parent.getBaseToolbarObject(), this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n };\n /**\n * Destroys the Quick toolbar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.destroy = function () {\n if (this.popupObj && !this.popupObj.isDestroyed) {\n this.popupObj.destroy();\n this.removeEleFromDOM();\n }\n this.removeEventListener();\n };\n /**\n * addEventListener method\n *\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n if (this.parent.inlineMode.enable) {\n this.parent.on(events.toolbarUpdated, this.updateStatus, this);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the model element\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.inlineMode)) {\n for (var _i = 0, _a = Object.keys(e.newProp.inlineMode); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enable':\n if (e.newProp.inlineMode.enable) {\n this.parent.on(events.toolbarUpdated, this.updateStatus, this);\n }\n else {\n this.parent.off(events.toolbarUpdated, this.updateStatus);\n }\n break;\n }\n }\n }\n };\n /**\n * removeEventListener method\n *\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n if (this.parent.inlineMode.enable) {\n this.parent.off(events.toolbarUpdated, this.updateStatus);\n }\n };\n return BaseQuickToolbar;\n}());\nexport { BaseQuickToolbar };\n","import { Popup } from '@syncfusion/ej2-popups';\nimport { CLS_QUICK_POP } from '../base/classes';\nimport * as events from '../base/constant';\n/**\n * `Popup renderer` module is used to render popup in RichTextEditor.\n *\n * @hidden\n\n */\nvar PopupRenderer = /** @class */ (function () {\n /**\n * Constructor for popup renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent.\n */\n function PopupRenderer(parent) {\n this.parent = parent;\n }\n PopupRenderer.prototype.quickToolbarOpen = function () {\n var args = this.popupObj;\n this.parent.trigger(events.quickToolbarOpen, args);\n };\n /**\n * renderPopup method\n *\n * @param {BaseQuickToolbar} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n PopupRenderer.prototype.renderPopup = function (args) {\n this.setPanel(args.element);\n this.renderPanel();\n args.popupObj = new Popup(args.element, {\n targetType: 'relative',\n relateTo: this.parent.element,\n open: this.quickToolbarOpen.bind(this)\n });\n this.popupObj = args.popupObj;\n args.popupObj.hide();\n };\n /**\n * The function is used to add popup class in Quick Toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n PopupRenderer.prototype.renderPanel = function () {\n this.getPanel().classList.add(CLS_QUICK_POP);\n };\n /**\n * Get the popup element of RichTextEditor\n *\n * @returns {Element} - specifies the element\n * @hidden\n\n */\n PopupRenderer.prototype.getPanel = function () {\n return this.popupPanel;\n };\n /**\n * Set the popup element of RichTextEditor\n *\n * @returns {void}\n * @param {Element} panel - specifies the element\n * @hidden\n\n */\n PopupRenderer.prototype.setPanel = function (panel) {\n this.popupPanel = panel;\n };\n return PopupRenderer;\n}());\nexport { PopupRenderer };\n","import { select, isNullOrUndefined, Browser, addClass, removeClass, EventHandler, closest, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\nimport * as events from '../base/constant';\nimport { pageYOffset, hasClass, isIDevice } from '../base/util';\nimport { BaseQuickToolbar } from './base-quick-toolbar';\nimport { PopupRenderer } from '../renderer/popup-renderer';\nimport { CLS_INLINE_POP, CLS_INLINE } from '../base/classes';\n/**\n * `Quick toolbar` module is used to handle Quick toolbar actions.\n */\nvar QuickToolbar = /** @class */ (function () {\n function QuickToolbar(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.renderFactory.addRenderer(RenderType.Popup, new PopupRenderer(this.parent));\n this.addEventListener();\n }\n QuickToolbar.prototype.formatItems = function (items) {\n var formattedItems = [];\n items.forEach(function (item) {\n if (typeof item === 'string') {\n switch (item.toLocaleLowerCase()) {\n case 'open':\n formattedItems.push('openLink');\n break;\n case 'edit':\n formattedItems.push('editLink');\n break;\n case 'unlink':\n formattedItems.push('removeLink');\n break;\n default:\n formattedItems.push(item);\n break;\n }\n }\n else {\n formattedItems.push(item);\n }\n });\n return formattedItems;\n };\n QuickToolbar.prototype.getQTBarOptions = function (popType, mode, items, type) {\n return {\n popupType: popType,\n toolbarItems: items,\n mode: mode,\n renderType: type,\n cssClass: this.parent.cssClass\n };\n };\n /**\n * createQTBar method\n *\n * @param {string} popupType - specifies the string value\n * @param {string} mode - specifies the string value.\n * @param {string} items - specifies the string.\n * @param {RenderType} type - specifies the render type.\n * @returns {BaseQuickToolbar} - specifies the quick toolbar\n * @hidden\n\n */\n QuickToolbar.prototype.createQTBar = function (popupType, mode, items, type) {\n if (items.length < 1) {\n return null;\n }\n var qTBar = new BaseQuickToolbar(this.parent, this.locator);\n qTBar.render(this.getQTBarOptions(popupType, mode, this.formatItems(items), type));\n return qTBar;\n };\n QuickToolbar.prototype.initializeQuickToolbars = function () {\n this.parent.quickToolbarModule = this;\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n if (this.parent.inlineMode.enable && this.parent.inlineMode.onSelection && isIDevice()) {\n EventHandler.add(this.contentRenderer.getDocument(), 'selectionchange', this.selectionChangeHandler, this);\n }\n };\n // eslint-disable-next-line\n QuickToolbar.prototype.onMouseDown = function (e) {\n this.parent.isBlur = false;\n this.parent.isRTE = true;\n };\n QuickToolbar.prototype.keyUpQT = function (e) {\n if (e.which === 27) {\n this.hideQuickToolbars();\n }\n };\n QuickToolbar.prototype.renderQuickToolbars = function () {\n if (this.linkQTBar || this.imageQTBar || this.audioQTBar || this.videoQTBar || this.textQTBar || this.tableQTBar) {\n return;\n }\n this.linkQTBar = this.createQTBar('Link', 'Scrollable', this.parent.quickToolbarSettings.link, RenderType.LinkToolbar);\n this.renderFactory.addRenderer(RenderType.LinkToolbar, this.linkQTBar);\n this.textQTBar = this.createQTBar('Text', 'Scrollable', this.parent.quickToolbarSettings.text, RenderType.TextToolbar);\n this.renderFactory.addRenderer(RenderType.TextToolbar, this.textQTBar);\n this.imageQTBar = this.createQTBar('Image', 'MultiRow', this.parent.quickToolbarSettings.image, RenderType.ImageToolbar);\n this.renderFactory.addRenderer(RenderType.ImageToolbar, this.imageQTBar);\n this.audioQTBar = this.createQTBar('Audio', 'MultiRow', this.parent.quickToolbarSettings.audio, RenderType.AudioToolbar);\n this.renderFactory.addRenderer(RenderType.AudioToolbar, this.audioQTBar);\n this.videoQTBar = this.createQTBar('Video', 'MultiRow', this.parent.quickToolbarSettings.video, RenderType.VideoToolbar);\n this.renderFactory.addRenderer(RenderType.VideoToolbar, this.videoQTBar);\n this.tableQTBar = this.createQTBar('Table', 'MultiRow', this.parent.quickToolbarSettings.table, RenderType.TableToolbar);\n this.renderFactory.addRenderer(RenderType.TableToolbar, this.tableQTBar);\n if (this.linkQTBar) {\n EventHandler.add(this.linkQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.linkQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.imageQTBar) {\n EventHandler.add(this.imageQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.imageQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.audioQTBar) {\n EventHandler.add(this.audioQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.audioQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.videoQTBar) {\n EventHandler.add(this.videoQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.videoQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.textQTBar) {\n EventHandler.add(this.textQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.textQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.tableQTBar) {\n EventHandler.add(this.tableQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.tableQTBar.element, 'keyup', this.keyUpQT, this);\n }\n };\n QuickToolbar.prototype.renderInlineQuickToolbar = function () {\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n addClass([this.parent.element], [CLS_INLINE]);\n this.inlineQTBar = this.createQTBar('Inline', 'MultiRow', this.parent.toolbarSettings.items, RenderType.InlineToolbar);\n this.renderFactory.addRenderer(RenderType.InlineToolbar, this.inlineQTBar);\n EventHandler.add(this.inlineQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.inlineQTBar.element, 'keyup', this.keyUpQT, this);\n }\n };\n /**\n * Method for showing the inline quick toolbar\n *\n * @param {number} x -specifies the value of x.\n * @param {number} y - specifies the y valu.\n * @param {HTMLElement} target - specifies the target element.\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.showInlineQTBar = function (x, y, target) {\n if (this.parent.readonly || target.tagName.toLowerCase() === 'img') {\n return;\n }\n this.inlineQTBar.showPopup(x, y, target);\n };\n /**\n * Method for hidding the inline quick toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.hideInlineQTBar = function () {\n if (this.inlineQTBar && !hasClass(this.inlineQTBar.element, 'e-popup-close')) {\n this.inlineQTBar.hidePopup();\n }\n };\n /**\n * Method for hidding the quick toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.hideQuickToolbars = function () {\n if (this.linkQTBar && !hasClass(this.linkQTBar.element, 'e-popup-close') && document.body.contains(this.linkQTBar.element)) {\n this.linkQTBar.hidePopup();\n }\n if (this.textQTBar && !hasClass(this.textQTBar.element, 'e-popup-close') && document.body.contains(this.textQTBar.element)) {\n this.textQTBar.hidePopup();\n }\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close') && document.body.contains(this.imageQTBar.element)) {\n this.imageQTBar.hidePopup();\n }\n if (this.audioQTBar && !hasClass(this.audioQTBar.element, 'e-popup-close') && document.body.contains(this.audioQTBar.element)) {\n this.audioQTBar.hidePopup();\n }\n if (this.videoQTBar && !hasClass(this.videoQTBar.element, 'e-popup-close') && document.body.contains(this.videoQTBar.element)) {\n this.videoQTBar.hidePopup();\n }\n if (this.tableQTBar && !hasClass(this.tableQTBar.element, 'e-popup-close') && document.body.contains(this.tableQTBar.element)) {\n this.tableQTBar.hidePopup();\n }\n if (!isNOU(this.parent) && this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n this.hideInlineQTBar();\n }\n };\n QuickToolbar.prototype.deBounce = function (x, y, target) {\n var _this = this;\n clearTimeout(this.deBouncer);\n this.deBouncer = window.setTimeout(function () {\n _this.showInlineQTBar(x, y, target);\n }, 1000);\n };\n QuickToolbar.prototype.mouseUpHandler = function (e) {\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n var args = e.args.touches ?\n e.args.changedTouches[0] : e.args;\n var range = this.parent.getRange();\n var target = e.args.target;\n if (isNullOrUndefined(select('.' + CLS_INLINE_POP, document.body))) {\n if (isIDevice() && e.touchData && e.touchData.prevClientX !== e.touchData.clientX\n && e.touchData.prevClientY !== e.touchData.clientY) {\n return;\n }\n this.hideInlineQTBar();\n var parentLeft = this.parent.element.getBoundingClientRect().left;\n this.offsetX = this.parent.iframeSettings.enable ? window.pageXOffset + parentLeft + args.clientX : args.pageX;\n this.offsetY = pageYOffset(args, this.parent.element, this.parent.iframeSettings.enable);\n if (target.nodeName === 'TEXTAREA') {\n this.showInlineQTBar(this.offsetX, this.offsetY, target);\n }\n else {\n var closestAnchor = closest(target, 'a');\n target = closestAnchor ? closestAnchor : target;\n var startNode = this.parent.getRange().startContainer.parentElement;\n var endNode = this.parent.getRange().endContainer.parentElement;\n if ((isNOU(closest(startNode, 'A')) || isNOU(closest(endNode, 'A'))) && (!closest(target, 'td,th') || !range.collapsed) &&\n (target.tagName !== 'IMG' || this.parent.getRange().startOffset !== this.parent.getRange().endOffset)) {\n if (this.parent.inlineMode.onSelection && range.collapsed) {\n return;\n }\n this.target = target;\n this.showInlineQTBar(this.offsetX, this.offsetY, target);\n }\n }\n }\n }\n };\n QuickToolbar.prototype.keyDownHandler = function () {\n if ((this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice()))\n && !isNullOrUndefined(select('.' + CLS_INLINE_POP, document))) {\n this.hideInlineQTBar();\n }\n };\n QuickToolbar.prototype.inlineQTBarMouseDownHandler = function () {\n if ((this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice()))\n && !isNullOrUndefined(select('.' + CLS_INLINE_POP, document))) {\n this.hideInlineQTBar();\n }\n };\n QuickToolbar.prototype.keyUpHandler = function (e) {\n if (this.parent.inlineMode.enable && !Browser.isDevice) {\n var args = e.args;\n if (this.parent.inlineMode.onSelection) {\n if (this.parent.getSelection().length > 0) {\n if ((args.ctrlKey && args.keyCode === 65) || (args.shiftKey && (args.keyCode === 33 || args.keyCode === 34 ||\n args.keyCode === 35 || args.keyCode === 36 || args.keyCode === 37 || args.keyCode === 38 ||\n args.keyCode === 39 || args.keyCode === 40))) {\n this.showInlineQTBar(this.offsetX, this.offsetY, args.target);\n }\n }\n return;\n }\n this.deBounce(this.offsetX, this.offsetY, args.target);\n }\n };\n QuickToolbar.prototype.selectionChangeHandler = function (e) {\n var _this = this;\n clearTimeout(this.deBouncer);\n this.deBouncer = window.setTimeout(function () {\n _this.onSelectionChange(e);\n }, 1000);\n };\n QuickToolbar.prototype.onSelectionChange = function (e) {\n if (!isNullOrUndefined(select('.' + CLS_INLINE_POP, document.body))) {\n return;\n }\n var selection = this.contentRenderer.getDocument().getSelection();\n if (!selection.isCollapsed) {\n this.mouseUpHandler({ args: e });\n }\n };\n /**\n * getInlineBaseToolbar method\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.getInlineBaseToolbar = function () {\n return this.inlineQTBar && this.inlineQTBar.quickTBarObj;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.destroy = function () {\n if (this.linkQTBar) {\n EventHandler.remove(this.linkQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.linkQTBar.element, 'keyup', this.keyUpQT);\n this.linkQTBar.destroy();\n }\n if (this.textQTBar) {\n EventHandler.remove(this.textQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.textQTBar.element, 'keyup', this.keyUpQT);\n this.textQTBar.destroy();\n }\n if (this.imageQTBar) {\n EventHandler.remove(this.imageQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.imageQTBar.element, 'keyup', this.keyUpQT);\n this.imageQTBar.destroy();\n }\n if (this.audioQTBar) {\n EventHandler.remove(this.audioQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.audioQTBar.element, 'keyup', this.keyUpQT);\n this.audioQTBar.destroy();\n }\n if (this.videoQTBar) {\n EventHandler.remove(this.videoQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.videoQTBar.element, 'keyup', this.keyUpQT);\n this.videoQTBar.destroy();\n }\n if (this.tableQTBar) {\n EventHandler.remove(this.tableQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.tableQTBar.element, 'keyup', this.keyUpQT);\n this.tableQTBar.destroy();\n }\n if (this.inlineQTBar) {\n EventHandler.remove(this.inlineQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.inlineQTBar.element, 'keyup', this.keyUpQT);\n if (isIDevice()) {\n EventHandler.remove(document, 'selectionchange', this.selectionChangeHandler);\n }\n this.inlineQTBar.destroy();\n }\n this.removeEventListener();\n };\n QuickToolbar.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n QuickToolbar.prototype.wireInlineQTBarEvents = function () {\n this.parent.on(events.mouseUp, this.mouseUpHandler, this);\n this.parent.on(events.mouseDown, this.inlineQTBarMouseDownHandler, this);\n this.parent.on(events.keyDown, this.keyDownHandler, this);\n this.parent.on(events.keyUp, this.keyUpHandler, this);\n this.parent.on(events.sourceCodeMouseDown, this.mouseUpHandler, this);\n this.parent.on(events.renderInlineToolbar, this.renderInlineQuickToolbar, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n QuickToolbar.prototype.unWireInlineQTBarEvents = function () {\n this.parent.off(events.mouseUp, this.mouseUpHandler);\n this.parent.off(events.mouseDown, this.inlineQTBarMouseDownHandler);\n this.parent.off(events.keyDown, this.keyDownHandler);\n this.parent.off(events.keyUp, this.keyUpHandler);\n this.parent.off(events.sourceCodeMouseDown, this.mouseUpHandler);\n this.parent.off(events.renderInlineToolbar, this.renderInlineQuickToolbar);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n // eslint-disable-next-line\n QuickToolbar.prototype.toolbarUpdated = function (args) {\n if (this.linkQTBar && !hasClass(this.linkQTBar.element, 'e-popup-close')) {\n this.linkQTBar.hidePopup();\n }\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close')) {\n this.imageQTBar.hidePopup();\n }\n if (this.audioQTBar && !hasClass(this.audioQTBar.element, 'e-popup-close')) {\n this.audioQTBar.hidePopup();\n }\n if (this.videoQTBar && !hasClass(this.videoQTBar.element, 'e-popup-close')) {\n this.videoQTBar.hidePopup();\n }\n if (this.tableQTBar && !hasClass(this.tableQTBar.element, 'e-popup-close')) {\n this.tableQTBar.hidePopup();\n }\n };\n /**\n * addEventListener\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialEnd, this.initializeQuickToolbars, this);\n this.parent.on(events.mouseDown, this.renderQuickToolbars, this);\n this.parent.on(events.toolbarUpdated, this.toolbarUpdated, this);\n this.parent.on(events.drop, this.renderQuickToolbars, this);\n this.wireInlineQTBarEvents();\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n if (this.parent.quickToolbarSettings.actionOnScroll === 'hide') {\n this.parent.on(events.scroll, this.hideQuickToolbars, this);\n this.parent.on(events.contentscroll, this.hideQuickToolbars, this);\n }\n this.parent.on(events.focusChange, this.hideQuickToolbars, this);\n this.parent.on(events.iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.rtlMode, this.setRtl, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n };\n QuickToolbar.prototype.onKeyDown = function (e) {\n var args = e.args;\n if (args.which === 8 || args.which === 46) {\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close')) {\n this.imageQTBar.hidePopup();\n }\n if (this.audioQTBar && !hasClass(this.audioQTBar.element, 'e-popup-close')) {\n this.audioQTBar.hidePopup();\n }\n if (this.videoQTBar && !hasClass(this.videoQTBar.element, 'e-popup-close')) {\n this.videoQTBar.hidePopup();\n }\n }\n };\n QuickToolbar.prototype.onIframeMouseDown = function () {\n this.hideQuickToolbars();\n this.hideInlineQTBar();\n };\n QuickToolbar.prototype.updateCss = function (baseQTObj, e) {\n if (baseQTObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass && baseQTObj.quickTBarObj.toolbarObj.cssClass !== e.cssClass)) {\n baseQTObj.quickTBarObj.toolbarObj.setProperties({ cssClass: (baseQTObj.quickTBarObj.toolbarObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n baseQTObj.quickTBarObj.toolbarObj.setProperties({ cssClass: (baseQTObj.quickTBarObj.toolbarObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n QuickToolbar.prototype.setCssClass = function (e) {\n var baseQuickToolbarObj = [\n this.inlineQTBar, this.imageQTBar, this.linkQTBar, this.textQTBar, this.tableQTBar\n ];\n for (var i = 0; i < baseQuickToolbarObj.length; i++) {\n this.updateCss(baseQuickToolbarObj[i], e);\n }\n };\n QuickToolbar.prototype.setRtl = function (args) {\n if (this.inlineQTBar) {\n this.inlineQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.imageQTBar) {\n this.imageQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.audioQTBar) {\n this.audioQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.videoQTBar) {\n this.videoQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.linkQTBar) {\n this.linkQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n };\n /**\n * removeEventListener\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.initializeQuickToolbars);\n this.parent.off(events.mouseDown, this.renderQuickToolbars);\n this.parent.off(events.toolbarUpdated, this.toolbarUpdated);\n this.parent.off(events.drop, this.renderQuickToolbars);\n this.unWireInlineQTBarEvents();\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n if (this.parent.quickToolbarSettings.actionOnScroll === 'hide') {\n this.parent.off(events.scroll, this.hideQuickToolbars);\n this.parent.off(events.contentscroll, this.hideQuickToolbars);\n }\n this.parent.off(events.focusChange, this.hideQuickToolbars);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.rtlMode, this.setRtl);\n this.parent.off(events.bindCssClass, this.setCssClass);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the element.\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.quickToolbarSettings)) {\n for (var _i = 0, _a = Object.keys(e.newProp.quickToolbarSettings); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'actionOnScroll':\n if (e.newProp.quickToolbarSettings.actionOnScroll === 'none') {\n this.parent.off(events.scroll, this.hideQuickToolbars);\n this.parent.off(events.contentscroll, this.hideQuickToolbars);\n }\n else {\n this.parent.on(events.scroll, this.hideQuickToolbars, this);\n this.parent.on(events.contentscroll, this.hideQuickToolbars, this);\n }\n break;\n }\n }\n }\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.inlineQTBar) {\n removeClass([this.parent.element], [CLS_INLINE]);\n this.unWireInlineQTBarEvents();\n this.hideInlineQTBar();\n }\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n addClass([this.parent.element], [CLS_INLINE]);\n this.wireInlineQTBarEvents();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n QuickToolbar.prototype.getModuleName = function () {\n return 'quickToolbar';\n };\n return QuickToolbar;\n}());\nexport { QuickToolbar };\n","import { 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.editPanel.textContent;\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","import { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { DatePickerComponent } from '@syncfusion/ej2-react-calendars';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, Edit, GridComponent, Sort, Toolbar } from '@syncfusion/ej2-react-grids';\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { Count, HtmlEditor, Inject, QuickToolbar, RichTextEditorComponent, Toolbar as rteToolbar } from '@syncfusion/ej2-react-richtexteditor';\r\nimport React, { Component } from 'react';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { Button, Col, Label, Modal, ModalBody, ModalFooter, ModalHeader, Row } from 'reactstrap';\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { Context } from '../../helpers/Context';\r\n\r\nexport class AuditLog extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n this.fullToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', 'StrikeThrough',\r\n 'FontName', 'FontSize', 'FontColor', 'BackgroundColor',\r\n 'LowerCase', 'UpperCase', '|', 'Formats', 'Alignments', 'OrderedList', 'UnorderedList',\r\n 'Outdent', 'Indent', '|', 'CreateLink', 'Image', '|', 'ClearFormat',\r\n 'SourceCode', 'FullScreen', '|', 'Undo', 'Redo'\r\n ],\r\n type: 'Expand'\r\n };\r\n\r\n this.simpleToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', '|', 'ClearFormat', 'Undo', 'Redo', '|', 'SourceCode'],\r\n type: 'Expand'\r\n };\r\n\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n Action: '',\r\n URL: '',\r\n SKU: '',\r\n Success: false,\r\n Meta: '',\r\n ActionDate: new Date(),\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Audit Log :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id == id });\r\n this.setState({ Id: data.id, Action: data.action, URL: data.URL, SKU: data.SKU, Success: data.success, Meta: data.meta, ActionDate: data.actionDate, });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n Action: '',\r\n URL: '',\r\n SKU: '',\r\n Success: false,\r\n Meta: '',\r\n ActionDate: new Date(),\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n valid &= fieldRequired(this.state.Action, 'tbActionError', '* required');\r\n valid &= fieldRequired(this.state.URL, 'tbURLError', '* required');\r\n valid &= fieldRequired(this.state.Success, 'tbSuccessError', '* required');\r\n valid &= fieldRequired(this.state.ActionDate, 'tbActionDateError', '* required');\r\n\r\n if (valid) {\r\n const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n this.state.AddedBy = data.addedBy;\r\n this.state.DateAdded = data.dateAdded;\r\n this.state.Id = data.id;\r\n this.state.Status = data.status;\r\n }\r\n else {\r\n this.state.Status = 1;\r\n }\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n return (\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n let contents = this.state.loading ?

    Loading...

    : AuditLog.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n const { handleNavigate } = this.context;\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n

    Audit Log

    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {contents}\r\n \r\n \r\n
    \r\n\r\n \r\n }>Edit Audit Log\r\n \r\n
    \r\n this.setState({ Action: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n this.setState({ URL: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n this.setState({ SKU: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n this.setState({ Success: e.target.value })} />  
    \r\n
    \r\n\r\n
    \r\n \r\n this.setState({ Meta: e.value })} >\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n this.setState({ ActionDate: e.target.value })} />
    \r\n
    \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/auditlog', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Id: this.state.Id, Action: this.state.Action, URL: this.state.URL, SKU: this.state.SKU, Success: this.state.Success, Meta: this.state.Meta, ActionDate: this.state.ActionDate, }\r\n\r\n try {\r\n const response = await fetch('api/auditlog', {\r\n method: dataId == 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Audit Log', content: 'The audit log was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Audit Log', content: 'There was an error saving the audit log!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/auditlog/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Audit Log', content: 'The audit log was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Audit Log', content: 'There was an error deleting the audit log!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","function _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); }\nvar _excluded = [\"className\", \"cssModule\", \"type\", \"bsSize\", \"valid\", \"invalid\", \"tag\", \"addon\", \"plaintext\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\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); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n/* eslint react/prefer-stateless-function: 0 */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, warnOnce, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n type: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n bsSize: PropTypes.string,\n valid: PropTypes.bool,\n invalid: PropTypes.bool,\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n plaintext: PropTypes.bool,\n addon: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar Input = /*#__PURE__*/function (_React$Component) {\n _inherits(Input, _React$Component);\n var _super = _createSuper(Input);\n function Input(props) {\n var _this;\n _classCallCheck(this, Input);\n _this = _super.call(this, props);\n _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n _this.focus = _this.focus.bind(_assertThisInitialized(_this));\n return _this;\n }\n _createClass(Input, [{\n key: \"getRef\",\n value: function getRef(ref) {\n if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n this.ref = ref;\n }\n }, {\n key: \"focus\",\n value: function focus() {\n if (this.ref) {\n this.ref.focus();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n _this$props$type = _this$props.type,\n type = _this$props$type === void 0 ? 'text' : _this$props$type,\n bsSize = _this$props.bsSize,\n valid = _this$props.valid,\n invalid = _this$props.invalid,\n tag = _this$props.tag,\n addon = _this$props.addon,\n plaintext = _this$props.plaintext,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutProperties(_this$props, _excluded);\n var checkInput = ['switch', 'radio', 'checkbox'].indexOf(type) > -1;\n var isNotaNumber = /\\D/g;\n var textareaInput = type === 'textarea';\n var selectInput = type === 'select';\n var rangeInput = type === 'range';\n var Tag = tag || (selectInput || textareaInput ? type : 'input');\n var formControlClass = 'form-control';\n if (plaintext) {\n formControlClass = \"\".concat(formControlClass, \"-plaintext\");\n Tag = tag || 'input';\n } else if (rangeInput) {\n formControlClass = 'form-range';\n } else if (selectInput) {\n formControlClass = 'form-select';\n } else if (checkInput) {\n if (addon) {\n formControlClass = null;\n } else {\n formControlClass = 'form-check-input';\n }\n }\n if (attributes.size && isNotaNumber.test(attributes.size)) {\n warnOnce('Please use the prop \"bsSize\" instead of the \"size\" to bootstrap\\'s input sizing.');\n bsSize = attributes.size;\n delete attributes.size;\n }\n var classes = mapToCssModules(classNames(className, invalid && 'is-invalid', valid && 'is-valid', bsSize ? selectInput ? \"form-select-\".concat(bsSize) : \"form-control-\".concat(bsSize) : false, formControlClass), cssModule);\n if (Tag === 'input' || tag && typeof tag === 'function') {\n attributes.type = type === 'switch' ? 'checkbox' : type;\n }\n if (attributes.children && !(plaintext || type === 'select' || typeof Tag !== 'string' || Tag === 'select')) {\n warnOnce(\"Input with a type of \\\"\".concat(type, \"\\\" cannot have children. Please use \\\"value\\\"/\\\"defaultValue\\\" instead.\"));\n delete attributes.children;\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n className: classes,\n \"aria-invalid\": invalid\n }));\n }\n }]);\n return Input;\n}(React.Component);\nInput.propTypes = propTypes;\nexport default Input;","import React, { Component } from 'react';\r\nimport { Button, Modal, ModalFooter, ModalHeader, ModalBody, Label, Input, Row, Col } from 'reactstrap';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, GridComponent, Sort, Search, ExcelExport, Edit, Toolbar, ToolbarItems } from '@syncfusion/ej2-react-grids';\r\nimport { DatePickerComponent, TimePickerComponent } from '@syncfusion/ej2-react-calendars';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { TextBoxComponent, NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { HtmlEditor, Image, Inject, Count, Link, Toolbar as rteToolbar, QuickToolbar, RichTextEditorComponent } from '@syncfusion/ej2-react-richtexteditor';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { Context } from '../../helpers/Context';\r\n\r\nexport class BannerLocations extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n BannerId: 0,\r\n SectionId: 0,\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Banner Locations :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id == id });\r\n this.setState({ Id: data.id, BannerId: data.bannerId, SectionId: data.sectionId, });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n BannerId: 0,\r\n SectionId: 0,\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n valid &= fieldRequired(this.state.BannerId, 'tbBannerIdError', '* required');\r\n valid &= fieldRequired(this.state.SectionId, 'tbSectionIdError', '* required');\r\n\r\n if (valid) {\r\n const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n this.state.AddedBy = data.addedBy;\r\n this.state.DateAdded = data.dateAdded;\r\n this.state.Id = data.id;\r\n this.state.Status = data.status;\r\n }\r\n else {\r\n this.state.Status = 1;\r\n }\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n return (\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n const { handleNavigate } = this.context;\r\n let contents = this.state.loading ?

    Loading...

    : BannerLocations.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n

    Banner Locations

    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {contents}\r\n \r\n \r\n
    \r\n\r\n \r\n }>Edit Banner Locations\r\n \r\n
    \r\n \r\n this.setState({ BannerId: e.target.value })} />\r\n
    \r\n\r\n
    \r\n \r\n this.setState({ SectionId: e.target.value })} />\r\n
    \r\n\r\n\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/bannerlocations', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Id: this.state.Id, BannerId: this.state.BannerId, SectionId: this.state.SectionId, }\r\n\r\n try {\r\n const response = await fetch('api/bannerlocations', {\r\n method: dataId == 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Banner Locations', content: 'The banner locations was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Banner Locations', content: 'There was an error saving the banner locations!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/bannerlocations/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Banner Locations', content: 'The banner locations was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Banner Locations', content: 'There was an error deleting the banner locations!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base, Event, getUniqueID, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { closest, Draggable, remove, compareElementParent } from '@syncfusion/ej2-base';\nimport { addClass, isNullOrUndefined, getComponent, isBlazor, EventHandler } from '@syncfusion/ej2-base';\n/**\n * Sortable Module provides support to enable sortable functionality in Dom Elements.\n * ```html\n *
    \n *
    Item 1
    \n *
    Item 2
    \n *
    Item 3
    \n *
    Item 4
    \n *
    Item 5
    \n *
    \n * ```\n * ```typescript\n * let ele: HTMLElement = document.getElementById('sortable');\n * let sortObj: Sortable = new Sortable(ele, {});\n * ```\n */\nvar Sortable = /** @class */ (function (_super) {\n __extends(Sortable, _super);\n function Sortable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.getHelper = function (e) {\n // eslint-disable-next-line prefer-const\n var target = _this.getSortableElement(e.sender.target);\n if (!_this.isValidTarget(target, _this)) {\n return false;\n }\n var element;\n if (_this.helper) {\n element = _this.helper({ sender: target, element: e.element });\n }\n else {\n element = target.cloneNode(true);\n element.style.width = target.offsetWidth + \"px\";\n element.style.height = target.offsetHeight + \"px\";\n }\n addClass([element], ['e-sortableclone']);\n document.body.appendChild(element);\n return element;\n };\n // eslint-disable-next-line\n _this.onDrag = function (e) {\n if (!e.target) {\n return;\n }\n _this.trigger('drag', { event: e.event, element: _this.element, target: e.target });\n var newInst = _this.getSortableInstance(e.target);\n var target = _this.getSortableElement(e.target, newInst);\n if ((_this.isValidTarget(target, newInst) || e.target.className.indexOf('e-list-group-item') > -1) && (_this.curTarget !== target ||\n !isNullOrUndefined(newInst.placeHolder)) && (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target : true)) {\n if (e.target.className.indexOf('e-list-group-item') > -1) {\n target = e.target;\n }\n _this.curTarget = target;\n if (_this.target === target) {\n return;\n }\n var oldIdx = _this.getIndex(newInst.placeHolderElement, newInst);\n var placeHolder = _this.getPlaceHolder(target, newInst);\n var newIdx = void 0;\n if (placeHolder) {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) : oldIdx;\n newIdx = _this.getIndex(target, newInst, e.event);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(newInst);\n if (isPlaceHolderPresent && oldIdx === newIdx) {\n return;\n }\n if (isPlaceHolderPresent) {\n remove(newInst.placeHolderElement);\n }\n newInst.placeHolderElement = placeHolder;\n if (e.target.className.indexOf('e-list-group-item') > -1) {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n else if (newInst.element !== _this.element && newIdx === newInst.element.childElementCount) {\n newInst.element.appendChild(newInst.placeHolderElement);\n }\n else {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n _this.refreshDisabled(oldIdx, newIdx, newInst);\n }\n else {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) :\n _this.getIndex(target, newInst) < oldIdx || !oldIdx ? oldIdx : oldIdx - 1;\n newIdx = _this.getIndex(target, newInst);\n var idx = newInst.element !== _this.element ? newIdx : oldIdx < newIdx ? newIdx + 1 : newIdx;\n _this.updateItemClass(newInst);\n newInst.element.insertBefore(_this.target, newInst.element.children[idx]);\n _this.refreshDisabled(oldIdx, newIdx, newInst);\n _this.curTarget = _this.target;\n _this.trigger('drop', {\n droppedElement: _this.target, element: newInst.element, previousIndex: oldIdx, currentIndex: newIdx,\n target: e.target, helper: document.getElementsByClassName('e-sortableclone')[0], event: e.event, scope: _this.scope\n });\n }\n }\n else if (_this.curTarget !== _this.target && _this.scope && _this.curTarget !== target && !isNullOrUndefined(newInst.placeHolder)) {\n remove(_this.getSortableInstance(_this.curTarget).placeHolderElement);\n _this.curTarget = _this.target;\n }\n newInst = _this.getSortableInstance(_this.curTarget);\n if (isNullOrUndefined(target) && e.target !== newInst.placeHolderElement) {\n if (_this.isPlaceHolderPresent(newInst)) {\n _this.removePlaceHolder(newInst);\n }\n }\n else {\n var placeHolders = [].slice.call(document.getElementsByClassName('e-sortable-placeholder'));\n var inst_1;\n placeHolders.forEach(function (placeHolder) {\n inst_1 = _this.getSortableInstance(placeHolder);\n if (inst_1.element && inst_1 !== newInst) {\n _this.removePlaceHolder(inst_1);\n }\n });\n }\n };\n // eslint-disable-next-line\n _this.onDragStart = function (e) {\n _this.target = _this.getSortableElement(e.target);\n var cancelDrag = false;\n _this.target.classList.add('e-grabbed');\n _this.curTarget = _this.target;\n e.helper = document.getElementsByClassName('e-sortableclone')[0];\n var args = { cancel: false, element: _this.element, target: _this.target };\n _this.trigger('beforeDragStart', args, function (observedArgs) {\n if (observedArgs.cancel) {\n cancelDrag = observedArgs.cancel;\n _this.onDragStop(e);\n }\n });\n if (cancelDrag) {\n return;\n }\n if (isBlazor) {\n _this.trigger('dragStart', {\n event: e.event, element: _this.element, target: _this.target,\n bindEvents: e.bindEvents, dragElement: e.dragElement\n });\n }\n else {\n _this.trigger('dragStart', { event: e.event, element: _this.element, target: _this.target });\n }\n };\n // eslint-disable-next-line\n _this.onDragStop = function (e) {\n var dropInst = _this.getSortableInstance(_this.curTarget);\n var prevIdx;\n var curIdx;\n var handled;\n prevIdx = _this.getIndex(_this.target);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(dropInst);\n if (isPlaceHolderPresent) {\n var curIdx_1 = _this.getIndex(dropInst.placeHolderElement, dropInst);\n var args = {\n previousIndex: prevIdx, currentIndex: curIdx_1, target: e.target, droppedElement: _this.target,\n helper: e.helper, cancel: false, handled: false\n };\n _this.trigger('beforeDrop', args, function (observedArgs) {\n if (!observedArgs.cancel) {\n handled = observedArgs.handled;\n _this.updateItemClass(dropInst);\n if (observedArgs.handled) {\n var ele = _this.target.cloneNode(true);\n _this.target.classList.remove('e-grabbed');\n _this.target = ele;\n }\n dropInst.element.insertBefore(_this.target, dropInst.placeHolderElement);\n var curIdx_2 = _this.getIndex(_this.target, dropInst);\n prevIdx = _this === dropInst && (prevIdx - curIdx_2) > 1 ? prevIdx - 1 : prevIdx;\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx_2,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope, handled: handled\n });\n }\n remove(dropInst.placeHolderElement);\n });\n }\n dropInst = _this.getSortableInstance(e.target);\n // eslint-disable-next-line prefer-const\n curIdx = dropInst.element.childElementCount;\n prevIdx = _this.getIndex(_this.target);\n if (dropInst.element === e.target || (!isPlaceHolderPresent && _this.curTarget === _this.target)) {\n var beforeDropArgs = {\n previousIndex: prevIdx, currentIndex: _this.curTarget === _this.target ? prevIdx : curIdx,\n target: e.target, droppedElement: _this.target, helper: e.helper, cancel: false\n };\n _this.trigger('beforeDrop', beforeDropArgs, function (observedArgs) {\n if ((dropInst.element === e.target || e.target.className.indexOf('e-list-nrt') > -1 || e.target.className.indexOf('e-list-nr-template') > -1\n || e.target.closest('.e-list-nr-template')) && !observedArgs.cancel) {\n _this.updateItemClass(dropInst);\n dropInst.element.appendChild(_this.target);\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope\n });\n }\n });\n }\n _this.target.classList.remove('e-grabbed');\n _this.target = null;\n _this.curTarget = null;\n remove(e.helper);\n getComponent(_this.element, 'draggable').intDestroy(e.event);\n };\n _this.bind();\n return _this;\n }\n Sortable_1 = Sortable;\n Sortable.prototype.bind = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('sortable');\n }\n if (!this.itemClass) {\n this.itemClass = 'e-sort-item';\n this.dataBind();\n }\n this.initializeDraggable();\n };\n Sortable.prototype.initializeDraggable = function () {\n new Draggable(this.element, {\n helper: this.getHelper,\n dragStart: this.onDragStart,\n drag: this.onDrag,\n dragStop: this.onDragStop,\n dragTarget: \".\" + this.itemClass,\n enableTapHold: true,\n tapHoldThreshold: 200,\n queryPositionInfo: this.queryPositionInfo,\n distance: 1\n });\n this.wireEvents();\n };\n Sortable.prototype.wireEvents = function () {\n var wrapper = this.element;\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n };\n Sortable.prototype.unwireEvents = function () {\n var wrapper = this.element;\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n };\n Sortable.prototype.keyDownHandler = function (e) {\n if (e.keyCode === 27) {\n var dragStop = getComponent(this.element, 'draggable');\n if (dragStop) {\n dragStop.intDestroy(null);\n }\n var dragWrapper = document.getElementsByClassName('e-sortableclone')[0];\n if (dragWrapper) {\n dragWrapper.remove();\n }\n var dragPlaceholder = document.getElementsByClassName('e-sortable-placeholder')[0];\n if (dragPlaceholder) {\n dragPlaceholder.remove();\n }\n }\n };\n Sortable.prototype.getPlaceHolder = function (target, instance) {\n if (instance.placeHolder) {\n var placeHolderElement = instance.placeHolder({ element: instance.element, grabbedElement: this.target, target: target });\n placeHolderElement.classList.add('e-sortable-placeholder');\n return placeHolderElement;\n }\n return null;\n };\n Sortable.prototype.isValidTarget = function (target, instance) {\n return target && compareElementParent(target, instance.element) && target.classList.contains(instance.itemClass) &&\n !target.classList.contains('e-disabled');\n };\n Sortable.prototype.removePlaceHolder = function (instance) {\n remove(instance.placeHolderElement);\n instance.placeHolderElement = null;\n };\n Sortable.prototype.updateItemClass = function (instance) {\n if (this !== instance) {\n this.target.classList.remove(this.itemClass);\n this.target.classList.add(instance.itemClass);\n }\n };\n Sortable.prototype.getSortableInstance = function (element) {\n element = closest(element, \".e-\" + this.getModuleName());\n if (element) {\n var inst = getComponent(element, Sortable_1);\n return inst.scope && this.scope && inst.scope === this.scope ? inst : this;\n }\n else {\n return this;\n }\n };\n Sortable.prototype.refreshDisabled = function (oldIdx, newIdx, instance) {\n if (instance === this) {\n var element = void 0;\n var increased = oldIdx < newIdx;\n var disabledIdx = void 0;\n var start = increased ? oldIdx : newIdx;\n var end = increased ? newIdx : oldIdx;\n while (start <= end) {\n element = this.element.children[start];\n if (element.classList.contains('e-disabled')) {\n disabledIdx = this.getIndex(element);\n this.element.insertBefore(element, this.element.children[increased ? disabledIdx + 2 : disabledIdx - 1]);\n start = increased ? disabledIdx + 2 : disabledIdx + 1;\n }\n else {\n start++;\n }\n }\n }\n };\n Sortable.prototype.getIndex = function (target, instance, e) {\n if (instance === void 0) { instance = this; }\n var idx;\n var placeHolderPresent;\n [].slice.call(instance.element.children).forEach(function (element, index) {\n if (element.classList.contains('e-sortable-placeholder')) {\n placeHolderPresent = true;\n }\n if (element === target) {\n idx = index;\n if (!isNullOrUndefined(e)) {\n if (placeHolderPresent) {\n idx -= 1;\n }\n var offset = target.getBoundingClientRect();\n var clientY = offset.bottom - ((offset.bottom - offset.top) / 2);\n var cltY = e.changedTouches ? e.changedTouches[0].clientY : e.clientY;\n idx = cltY <= clientY ? idx : idx + 1;\n }\n return;\n }\n });\n return idx;\n };\n Sortable.prototype.getSortableElement = function (element, instance) {\n if (instance === void 0) { instance = this; }\n return closest(element, \".\" + instance.itemClass);\n };\n Sortable.prototype.queryPositionInfo = function (value) {\n value.left = pageXOffset ? parseFloat(value.left) - pageXOffset + \"px\" : value.left;\n value.top = pageYOffset ? parseFloat(value.top) - pageYOffset + \"px\" : value.top;\n return value;\n };\n Sortable.prototype.isPlaceHolderPresent = function (instance) {\n return instance.placeHolderElement && !!closest(instance.placeHolderElement, \"#\" + instance.element.id);\n };\n /**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param destination - Defines the destination element to which the sortable elements needs to be appended.\n *\n * If it is null, then the Sortable library element will be considered as destination.\n * @param targetIndexes - Specifies the sortable elements indexes which needs to be sorted.\n * @param insertBefore - Specifies the index before which the sortable elements needs to be appended.\n * If it is null, elements will be appended as last child.\n * @function moveTo\n * @returns {void}\n */\n Sortable.prototype.moveTo = function (destination, targetIndexes, insertBefore) {\n moveTo(this.element, destination, targetIndexes, insertBefore);\n };\n /**\n * It is used to destroy the Sortable library.\n */\n Sortable.prototype.destroy = function () {\n this.unwireEvents();\n if (this.itemClass === 'e-sort-item') {\n this.itemClass = null;\n this.dataBind();\n }\n getComponent(this.element, Draggable).destroy();\n _super.prototype.destroy.call(this);\n };\n Sortable.prototype.getModuleName = function () {\n return 'sortable';\n };\n Sortable.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'itemClass':\n [].slice.call(this.element.children).forEach(function (element) {\n if (element.classList.contains(oldProp.itemClass)) {\n element.classList.remove(oldProp.itemClass);\n }\n if (newProp.itemClass) {\n element.classList.add(newProp.itemClass);\n }\n });\n break;\n }\n }\n };\n var Sortable_1;\n __decorate([\n Property(false)\n ], Sortable.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"itemClass\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"scope\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"helper\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"placeHolder\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drop\", void 0);\n Sortable = Sortable_1 = __decorate([\n NotifyPropertyChanges\n ], Sortable);\n return Sortable;\n}(Base));\nexport { Sortable };\n/**\n * It is used to sort array of elements from source element to destination element.\n *\n * @private\n */\nexport function moveTo(from, to, targetIndexes, insertBefore) {\n var targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach(function (index) {\n targetElements.push(from.children[index]);\n });\n }\n else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach(function (target) {\n to.appendChild(target);\n });\n }\n else {\n var insertElement_1 = to.children[insertBefore];\n targetElements.forEach(function (target) {\n to.insertBefore(target, insertElement_1);\n });\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { EventHandler, closest, removeClass, addClass, Complex, Property, ChildProperty, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, getComponent, Event, extend, detach, attributes } from '@syncfusion/ej2-base';\nimport { getUniqueID, Browser, formatUnit, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { prepend, append } from '@syncfusion/ej2-base';\nimport { cssClass, Sortable, moveTo } from '@syncfusion/ej2-lists';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\n/**\n * Defines the Selection settings of List Box.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Multiple')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showCheckbox\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Left')\n ], SelectionSettings.prototype, \"checkboxPosition\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Defines the toolbar settings of List Box.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property('Right')\n ], ToolbarSettings.prototype, \"position\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n/**\n * The ListBox is a graphical user interface component used to display a list of items.\n * Users can select one or more items in the list using a checkbox or by keyboard selection.\n * It supports sorting, grouping, reordering and drag and drop of items.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ListBox = /** @class */ (function (_super) {\n __extends(ListBox, _super);\n /**\n * Constructor for creating the ListBox component.\n *\n * @param {ListBoxModel} options - Specifies ListBox model\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function ListBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isValidKey = false;\n _this.isDataSourceUpdate = false;\n _this.keyDownStatus = false;\n return _this;\n }\n ListBox_1 = ListBox;\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}.\n * @private\n */\n ListBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Build and render the component.\n *\n * @private\n * @returns {void}\n */\n ListBox.prototype.render = function () {\n this.inputString = '';\n this.initLoad = true;\n this.isCustomFiltering = false;\n this.initialSelectedOptions = this.value;\n _super.prototype.render.call(this);\n this.setEnabled();\n this.renderComplete();\n };\n ListBox.prototype.initWrapper = function () {\n var hiddenSelect = this.createElement('select', { className: 'e-hidden-select', attrs: { 'multiple': '' } });\n hiddenSelect.style.visibility = 'hidden';\n this.list.classList.add('e-listbox-wrapper');\n if (this.itemTemplate) {\n this.list.classList.add('e-list-template');\n }\n this.list.classList.add('e-wrapper');\n this.list.classList.add('e-lib');\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.setAttribute('tabindex', '0');\n if (this.initLoad) {\n this.element.appendChild(this.list);\n }\n }\n else {\n if (this.initLoad) {\n this.element.parentElement.insertBefore(this.list, this.element);\n }\n this.list.insertBefore(this.element, this.list.firstChild);\n this.element.style.display = 'none';\n }\n this.list.insertBefore(hiddenSelect, this.list.firstChild);\n if (this.list.getElementsByClassName('e-list-item')[0]) {\n this.list.getElementsByClassName('e-list-item')[0].classList.remove(dropDownBaseClasses.focus);\n }\n if (this.itemTemplate) {\n this.renderReactTemplates();\n }\n removeClass([this.list], [dropDownBaseClasses.content, dropDownBaseClasses.root]);\n this.validationAttribute(this.element, hiddenSelect);\n this.list.setAttribute('role', 'listbox');\n attributes(this.list, { 'role': 'listbox', 'aria-label': 'listbox', 'aria-multiselectable': this.selectionSettings.mode === 'Multiple' ? 'true' : 'false' });\n this.updateSelectionSettings();\n };\n ListBox.prototype.updateSelectionSettings = function () {\n if (this.selectionSettings.showCheckbox && this.selectionSettings.showSelectAll && this.liCollections.length) {\n var l10nSelect = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nSelect.getConstant('selectAllText');\n this.unSelectAllText = l10nSelect.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n }\n };\n ListBox.prototype.initDraggable = function () {\n var _this = this;\n if (this.ulElement) {\n this.ulElement.id = this.element.id + '_parent';\n }\n if (this.allowDragAndDrop) {\n new Sortable(this.ulElement, {\n scope: this.scope,\n itemClass: 'e-list-item',\n dragStart: this.triggerDragStart.bind(this),\n drag: this.triggerDrag.bind(this),\n beforeDrop: this.beforeDragEnd.bind(this),\n drop: this.dragEnd.bind(this),\n placeHolder: function () { return _this.createElement('span', { className: 'e-placeholder' }); },\n helper: function (e) {\n var wrapper = _this.list.cloneNode();\n var ele = e.sender.cloneNode(true);\n wrapper.appendChild(ele);\n var refEle = _this.getItems()[0];\n wrapper.style.width = refEle.offsetWidth + 'px';\n wrapper.style.height = refEle.offsetHeight + 'px';\n if ((_this.value && _this.value.length) > 1 && _this.isSelected(ele)) {\n ele.appendChild(_this.createElement('span', {\n className: 'e-list-badge', innerHTML: _this.value.length + ''\n }));\n }\n wrapper.style.zIndex = getZindexPartial(_this.element) + '';\n return wrapper;\n }\n });\n }\n };\n ListBox.prototype.updateActionCompleteData = function (li, item, index) {\n this.jsonData.splice(index, 0, item);\n };\n ListBox.prototype.initToolbar = function () {\n var pos = this.toolbarSettings.position;\n var prevScope = this.element.getAttribute('data-value');\n if (this.toolbarSettings.items.length) {\n var toolElem = this.createElement('div', { className: 'e-listbox-tool', attrs: { 'role': 'toolbar' } });\n var wrapper = this.createElement('div', {\n className: 'e-listboxtool-wrapper e-lib e-' + pos.toLowerCase()\n });\n this.list.parentElement.insertBefore(wrapper, this.list);\n wrapper.appendChild(pos === 'Right' ? this.list : toolElem);\n wrapper.appendChild(pos === 'Right' ? toolElem : this.list);\n this.createButtons(toolElem);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.scope) {\n document.querySelector(this.scope).setAttribute('data-value', this.element.id);\n }\n else {\n this.updateToolBarState();\n }\n }\n var scope = this.element.getAttribute('data-value');\n if (prevScope && scope && (prevScope !== scope)) {\n this.tBListBox = getComponent(document.getElementById(prevScope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n else if (scope) {\n this.tBListBox = getComponent(document.getElementById(scope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.createButtons = function (toolElem) {\n var _this = this;\n var btn;\n var ele;\n var title;\n var l10n = new L10n(this.getModuleName(), {\n moveUp: 'Move Up', moveDown: 'Move Down', moveTo: 'Move To',\n moveFrom: 'Move From', moveAllTo: 'Move All To', moveAllFrom: 'Move All From'\n }, this.locale);\n this.toolbarSettings.items.forEach(function (value) {\n title = l10n.getConstant(value);\n ele = _this.createElement('button', {\n attrs: {\n 'type': 'button',\n 'data-value': value,\n 'title': title,\n 'aria-label': title\n }\n });\n toolElem.appendChild(ele);\n btn = new Button({ iconCss: 'e-icons e-' + value.toLowerCase() }, ele);\n btn.createElement = _this.createElement;\n });\n };\n ListBox.prototype.validationAttribute = function (input, hiddenSelect) {\n _super.prototype.validationAttribute.call(this, input, hiddenSelect);\n hiddenSelect.required = input.required;\n input.required = false;\n };\n ListBox.prototype.setHeight = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n ele.style.height = formatUnit(this.height);\n if (this.allowFiltering && this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n else {\n removeClass([this.list], 'e-filter-list');\n }\n };\n ListBox.prototype.setCssClass = function () {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.cssClass) {\n addClass([wrap], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n addClass([this.list], 'e-rtl');\n }\n };\n ListBox.prototype.setEnable = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.enabled) {\n removeClass([ele], cssClass.disabled);\n }\n else {\n addClass([ele], cssClass.disabled);\n }\n };\n ListBox.prototype.showSpinner = function () {\n if (!this.spinner) {\n this.spinner = this.createElement('div', { className: 'e-listbox-wrapper' });\n }\n this.spinner.style.height = formatUnit(this.height);\n this.element.parentElement.insertBefore(this.spinner, this.element.nextSibling);\n createSpinner({ target: this.spinner }, this.createElement);\n showSpinner(this.spinner);\n };\n ListBox.prototype.hideSpinner = function () {\n if (this.spinner.querySelector('.e-spinner-pane')) {\n hideSpinner(this.spinner);\n }\n if (this.spinner.parentElement) {\n detach(this.spinner);\n }\n };\n ListBox.prototype.onInput = function () {\n this.isDataSourceUpdate = false;\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n this.refreshClearIcon();\n };\n ListBox.prototype.clearText = function () {\n this.filterInput.value = '';\n this.refreshClearIcon();\n var event = document.createEvent('KeyboardEvent');\n this.isValidKey = true;\n this.KeyUp(event);\n };\n ListBox.prototype.refreshClearIcon = function () {\n if (this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n };\n ListBox.prototype.onActionComplete = function (ulElement, list, e) {\n var searchEle;\n if (this.allowFiltering && this.list.getElementsByClassName('e-filter-parent')[0]) {\n searchEle = this.list.getElementsByClassName('e-filter-parent')[0].cloneNode(true);\n }\n if (list.length === 0) {\n var noRecElem = ulElement.childNodes[0];\n if (noRecElem) {\n ulElement.removeChild(noRecElem);\n }\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.allowFiltering && !isNullOrUndefined(searchEle)) {\n this.list.insertBefore(searchEle, this.list.firstElementChild);\n this.filterParent = this.list.getElementsByClassName('e-filter-parent')[0];\n this.filterWireEvents(searchEle);\n }\n this.initWrapper();\n this.setSelection();\n this.initDraggable();\n this.mainList = this.ulElement;\n if (this.initLoad) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.initToolbarAndStyles();\n this.wireEvents();\n if (this.showCheckbox) {\n this.setCheckboxPosition();\n }\n if (this.allowFiltering) {\n this.setFiltering();\n }\n }\n else {\n if (this.isDataSourceUpdate) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.isDataSourceUpdate = false;\n }\n if (this.allowFiltering) {\n var filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n var txtLength = this.filterInput.value.length;\n filterElem.selectionStart = txtLength;\n filterElem.selectionEnd = txtLength;\n filterElem.focus();\n }\n }\n if (this.toolbarSettings.items.length && this.scope && this.scope.indexOf('#') > -1 && !isNullOrUndefined(e)) {\n var scope = this.scope.replace('#', '');\n var scopedLB = getComponent(document.getElementById(scope), this.getModuleName());\n scopedLB.initToolbar();\n }\n this.initLoad = false;\n };\n ListBox.prototype.initToolbarAndStyles = function () {\n this.initToolbar();\n this.setCssClass();\n this.setEnable();\n this.setHeight();\n };\n ListBox.prototype.triggerDragStart = function (args) {\n var _this = this;\n var badge;\n args = extend(this.getDragArgs(args), { dragSelected: true });\n if (Browser.isIos) {\n this.list.style.overflow = 'hidden';\n }\n this.trigger('dragStart', args, function (dragEventArgs) {\n _this.allowDragAll = dragEventArgs.dragSelected;\n if (!_this.allowDragAll) {\n badge = _this.ulElement.getElementsByClassName('e-list-badge')[0];\n if (badge) {\n detach(badge);\n }\n }\n });\n };\n ListBox.prototype.triggerDrag = function (args) {\n var scrollParent;\n var boundRect;\n var scrollMoved = 36;\n var scrollHeight = 10;\n if (this.itemTemplate && args.target) {\n if (args.target && args.target.closest('.e-list-item')) {\n scrollHeight = args.target.closest('.e-list-item').scrollHeight;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItem = args.element.querySelector('.e-list-item');\n if (listItem) {\n scrollHeight = listItem.scrollHeight;\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var event = args.event;\n var wrapper;\n if (args.target && (args.target.classList.contains('e-listbox-wrapper') || args.target.classList.contains('e-list-item')\n || args.target.classList.contains('e-filter-parent') || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item'))) {\n if (args.target.classList.contains('e-list-item') || args.target.classList.contains('e-filter-parent')\n || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item')) {\n wrapper = args.target.closest('.e-listbox-wrapper');\n }\n else {\n wrapper = args.target;\n }\n if (this.allowFiltering) {\n scrollParent = wrapper.querySelector('.e-list-parent');\n }\n else {\n scrollParent = wrapper;\n }\n boundRect = scrollParent.getBoundingClientRect();\n if ((boundRect.y + scrollParent.offsetHeight) - (event.clientY + scrollMoved) < 1) {\n scrollParent.scrollTop = scrollParent.scrollTop + scrollHeight;\n }\n else if ((event.clientY - scrollMoved) - boundRect.y < 1) {\n scrollParent.scrollTop = scrollParent.scrollTop - scrollHeight;\n }\n }\n if (args.target === null) {\n return;\n }\n this.trigger('drag', this.getDragArgs(args));\n };\n ListBox.prototype.beforeDragEnd = function (args) {\n var items = [];\n this.dragValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n if (this.value.indexOf(this.dragValue) > -1) {\n args.items = this.getDataByValues(this.value);\n }\n else {\n args.items = this.getDataByValues([this.dragValue]);\n }\n extend(items, args.items);\n this.trigger('beforeDrop', args);\n if (args.items !== items) {\n this.customDraggedItem = args.items;\n }\n };\n ListBox.prototype.dragEnd = function (args) {\n var _this = this;\n var listData;\n var liColl;\n var jsonData;\n var droppedData;\n var selectedOptions;\n var sortedData;\n var dropValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n var listObj = this.getComponent(args.droppedElement);\n var getArgs = this.getDragArgs({ target: args.droppedElement }, true);\n var sourceArgs = { previousData: this.dataSource };\n var destArgs = { previousData: listObj.dataSource };\n var dragArgs = extend({}, getArgs, { target: args.target, source: { previousData: this.dataSource },\n previousIndex: args.previousIndex, currentIndex: args.currentIndex });\n if (listObj !== this) {\n var sourceArgs1 = extend(sourceArgs, { currentData: this.listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1, destination: destArgs });\n }\n if (Browser.isIos) {\n this.list.style.overflow = '';\n }\n var targetListObj = this.getComponent(args.target);\n if (targetListObj && targetListObj.listData.length === 0) {\n var noRecElem = targetListObj.ulElement.childNodes[0];\n if (noRecElem) {\n targetListObj.ulElement.removeChild(noRecElem);\n }\n }\n if (listObj === this) {\n var ul_1 = this.ulElement;\n listData = [].slice.call(this.listData);\n liColl = [].slice.call(this.liCollections);\n jsonData = [].slice.call(this.jsonData);\n sortedData = [].slice.call(this.sortedData);\n var toSortIdx_1 = args.currentIndex;\n var toIdx_1 = args.currentIndex = this.getCurIdx(this, args.currentIndex);\n var rIdx = listData.indexOf(this.getDataByValue(dropValue));\n var jsonIdx = jsonData.indexOf(this.getDataByValue(dropValue));\n var sIdx = sortedData.indexOf(this.getDataByValue(dropValue));\n listData.splice(toIdx_1, 0, listData.splice(rIdx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx, 1)[0]);\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(rIdx, 1)[0]);\n if (this.allowDragAll) {\n selectedOptions = this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n selectedOptions.forEach(function (value) {\n if (value !== dropValue) {\n var idx = listData.indexOf(_this.getDataByValue(value));\n var jsonIdx_1 = jsonData.indexOf(_this.getDataByValue(value));\n var sIdx_1 = sortedData.indexOf(_this.getDataByValue(value));\n if (idx > toIdx_1) {\n toIdx_1++;\n }\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx_1, 1)[0]);\n listData.splice(toIdx_1, 0, listData.splice(idx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx_1, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(idx, 1)[0]);\n ul_1.insertBefore(_this.getItems()[_this.getIndexByValue(value)], ul_1.getElementsByClassName('e-placeholder')[0]);\n }\n });\n }\n this.listData = listData;\n this.jsonData = jsonData;\n this.sortedData = sortedData;\n this.liCollections = liColl;\n }\n else {\n var li_1;\n var fLiColl_1 = [].slice.call(this.liCollections);\n var currIdx_1 = args.currentIndex = this.getCurIdx(listObj, args.currentIndex);\n var ul_2 = listObj.ulElement;\n listData = [].slice.call(listObj.listData);\n liColl = [].slice.call(listObj.liCollections);\n jsonData = [].slice.call(listObj.jsonData);\n sortedData = [].slice.call(listObj.sortedData);\n selectedOptions = (this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 && this.allowDragAll)\n ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n var fListData_1 = [].slice.call(this.listData);\n var fSortData_1 = [].slice.call(this.sortedData);\n selectedOptions.forEach(function (value, index) {\n droppedData = _this.getDataByValue(value);\n var srcIdx = _this.listData.indexOf(droppedData);\n var jsonSrcIdx = _this.jsonData.indexOf(droppedData);\n var sortIdx = _this.sortedData.indexOf(droppedData);\n fListData_1.splice(srcIdx, 1);\n _this.jsonData.splice(jsonSrcIdx, 1);\n fSortData_1.splice(sortIdx, 1);\n _this.listData = fListData_1;\n _this.sortedData = fSortData_1;\n var destIdx = value === dropValue ? args.currentIndex : currIdx_1;\n listData.splice(destIdx, 0, droppedData);\n jsonData.splice(destIdx, 0, droppedData);\n sortedData.splice(destIdx, 0, droppedData);\n liColl.splice(destIdx, 0, fLiColl_1.splice(srcIdx, 1)[0]);\n if (!value) {\n var liCollElem_1 = _this.getItems();\n for (var i = 0; i < liCollElem_1.length; i++) {\n if (liCollElem_1[i].getAttribute('data-value') === null && liCollElem_1[i].classList.contains('e-list-item')) {\n li_1 = liCollElem_1[i];\n break;\n }\n }\n }\n else {\n li_1 = _this.getItems()[_this.getIndexByValue(value)];\n }\n if (!li_1) {\n li_1 = args.helper;\n }\n _this.removeSelected(_this, value === dropValue ? [args.droppedElement] : [li_1]);\n ul_2.insertBefore(li_1, ul_2.getElementsByClassName('e-placeholder')[0]);\n currIdx_1++;\n });\n if (this.fields.groupBy) {\n var sourceElem = this.renderItems(this.listData, this.fields);\n this.updateListItems(sourceElem, this.ulElement);\n this.setSelection();\n }\n if (listObj.sortOrder !== 'None' || this.selectionSettings.showCheckbox\n !== listObj.selectionSettings.showCheckbox || listObj.fields.groupBy || listObj.itemTemplate || this.itemTemplate) {\n var sortable = getComponent(ul_2, 'sortable');\n var sourceElem = listObj.renderItems(listData, listObj.fields);\n listObj.updateListItems(sourceElem, ul_2);\n this.setSelection();\n if (sortable.placeHolderElement) {\n ul_2.appendChild(sortable.placeHolderElement);\n }\n ul_2.appendChild(args.helper);\n listObj.setSelection();\n }\n this.liCollections = fLiColl_1;\n listObj.liCollections = liColl;\n listObj.jsonData = extend([], [], jsonData, false);\n listObj.listData = extend([], [], listData, false);\n listObj.sortedData = extend([], [], sortedData, false);\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n }\n if (this === listObj) {\n var sourceArgs1 = extend(sourceArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1 });\n }\n else {\n var dragArgs1 = extend(destArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { destination: dragArgs1 });\n }\n if (!isNullOrUndefined(this.customDraggedItem)) {\n dragArgs.items = this.customDraggedItem;\n }\n this.trigger('drop', dragArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var liCollElem = dragArgs.elements;\n if (liCollElem.length) {\n for (var i = 0; i < liCollElem.length; i++) {\n liCollElem[i].classList.remove('e-grabbed');\n }\n }\n };\n ListBox.prototype.updateListItems = function (sourceElem, destElem) {\n var i = 0;\n destElem.innerHTML = '';\n while (i < sourceElem.childNodes.length) {\n destElem.appendChild(sourceElem.childNodes[i]);\n }\n };\n ListBox.prototype.removeSelected = function (listObj, elems) {\n if (listObj.selectionSettings.showCheckbox) {\n elems.forEach(function (ele) { ele.getElementsByClassName('e-frame')[0].classList.remove('e-check'); });\n }\n else {\n removeClass(elems, cssClass.selected);\n }\n };\n ListBox.prototype.getCurIdx = function (listObj, idx) {\n if (listObj.fields.groupBy) {\n idx -= [].slice.call(listObj.ulElement.children).slice(0, idx)\n .filter(function (ele) { return ele.classList.contains(cssClass.group); }).length;\n }\n return idx;\n };\n ListBox.prototype.getComponent = function (li) {\n var listObj;\n var ele = (this.element.tagName === 'EJS-LISTBOX' ? closest(li, '.e-listbox')\n : closest(li, '.e-listbox-wrapper') && closest(li, '.e-listbox-wrapper').querySelector('.e-listbox'));\n if (ele) {\n listObj = getComponent(ele, this.getModuleName());\n }\n return listObj;\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n ListBox.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n ListBox.prototype.listOption = function (dataSource, fields) {\n this.listCurrentOptions = _super.prototype.listOption.call(this, dataSource, fields);\n this.listCurrentOptions = extend({}, this.listCurrentOptions, { itemCreated: this.triggerBeforeItemRender.bind(this) }, true);\n this.notify('listoption', { module: 'CheckBoxSelection' });\n return this.listCurrentOptions;\n };\n ListBox.prototype.triggerBeforeItemRender = function (e) {\n e.item.setAttribute('tabindex', '-1');\n this.trigger('beforeItemRender', { element: e.item, item: e.curData });\n };\n ListBox.prototype.requiredModules = function () {\n var modules = [];\n if (this.selectionSettings.showCheckbox) {\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * This method is used to enable or disable the items in the ListBox based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.enableItems = function (items, enable, isValue) {\n var _this = this;\n if (enable === void 0) { enable = true; }\n var li;\n items.forEach(function (item) {\n var text = item;\n li = _this.findListElement(_this.list, 'li', 'data-value', isValue ? text : _this.getValueByText(text));\n if (!li) {\n return;\n }\n if (enable) {\n removeClass([li], cssClass.disabled);\n li.removeAttribute('aria-disabled');\n }\n else {\n addClass([li], cssClass.disabled);\n li.setAttribute('aria-disabled', 'true');\n }\n });\n };\n /**\n * Based on the state parameter, specified list item will be selected/deselected.\n *\n * @param {string[]} items - Array of text value of the item.\n * @param {boolean} state - Set `true`/`false` to select/un select the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.selectItems = function (items, state, isValue) {\n if (state === void 0) { state = true; }\n if (state && !this.selectionSettings.showCheckbox && this.selectionSettings.mode === 'Single') {\n this.getSelectedItems().forEach(function (li) {\n li.classList.remove('e-active');\n li.removeAttribute('aria-selected');\n removeClass([li], cssClass.selected);\n });\n }\n this.setSelection(items, state, !isValue);\n this.updateSelectedOptions();\n var selElems = [];\n for (var i = 0; i < items.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (items[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n selElems.push(liColl[j]);\n }\n }\n }\n this.triggerChange(selElems, null);\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n *\n * @param {boolean} state - Set `true`/`false` to select/un select the entire list items.\n * @returns {void}\n */\n ListBox.prototype.selectAll = function (state) {\n if (state === void 0) { state = true; }\n this.selectAllItems(state);\n };\n /**\n * Adds a new item to the list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the list.\n * @returns {void}.\n */\n ListBox.prototype.addItems = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItems = function (items, itemIndex) {\n this.removeItem(items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItem = function (items, itemIndex) {\n var liCollections = [];\n var liElement = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n if (items) {\n items = (items instanceof Array ? items : [items]);\n var fields = this.fields;\n var dataValue = void 0;\n var objValue = void 0;\n var dupData = [];\n var itemIdx = void 0;\n extend(dupData, [], this.jsonData);\n var removeIdxes = [];\n var removeLiIdxes = [];\n for (var j = 0; j < items.length; j++) {\n if (items[j] instanceof Object) {\n dataValue = getValue(fields.value, items[j]);\n }\n else {\n dataValue = items[j].toString();\n }\n for (var i = 0, len = dupData.length; i < len; i++) {\n if (dupData[i] instanceof Object) {\n objValue = getValue(fields.value, dupData[i]);\n }\n else {\n objValue = dupData[i].toString();\n }\n if (objValue === dataValue) {\n itemIdx = this.getIndexByValue(dataValue);\n var idx = itemIdx === i ? itemIdx : i;\n liCollections.push(liElement[idx]);\n removeIdxes.push(idx);\n removeLiIdxes.push(idx);\n }\n }\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.listData.splice(removeIdxes[k], 1);\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.jsonData.splice(removeIdxes[k], 1);\n }\n for (var k = removeLiIdxes.length - 1; k >= 0; k--) {\n this.updateLiCollection(removeLiIdxes[k]);\n }\n }\n else {\n itemIndex = itemIndex ? itemIndex : 0;\n liCollections.push(liElement[itemIndex]);\n this.listData.splice(itemIndex, 1);\n this.jsonData.splice(itemIndex, 1);\n this.updateLiCollection(itemIndex);\n }\n for (var i = 0; i < liCollections.length; i++) {\n this.ulElement.removeChild(liCollections[i]);\n }\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n this.value = [];\n this.updateToolBarState();\n };\n /**\n * Gets the array of data Object that matches the given array of values.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the array value of the list item.\n * @returns {object[]}.\n */\n ListBox.prototype.getDataByValues = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n data.push(this.getDataByValue(value[i]));\n }\n return data;\n };\n /**\n * Moves the given value(s) / selected value(s) upwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveUp = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) downwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveDown = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(false, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) in Top of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveTop = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(null, false, elem, true);\n };\n /**\n * Moves the given value(s) / selected value(s) in bottom of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveBottom = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem, false, true);\n };\n /**\n * Moves the given value(s) / selected value(s) to the given / default scoped ListBox.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value or array value of the list item.\n * @param {number} index - Specifies the index.\n * @param {string} targetId - Specifies the target id.\n * @returns {void}\n */\n ListBox.prototype.moveTo = function (value, index, targetId) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveData(this, tlistbox, false, elem, index);\n };\n /**\n * Moves all the values from one ListBox to the scoped ListBox.\n *\n * @param { string } targetId - Specifies the scoped ListBox ID.\n * @param { string } index - Specifies the index to where the items moved.\n * @returns {void}\n */\n ListBox.prototype.moveAllTo = function (targetId, index) {\n if (this.listData.length > 0) {\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveAllData(this, tlistbox, false, index);\n }\n };\n /* eslint-disable */\n /**\n * Gets the updated dataSource in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Updated DataSource.\n */\n /* eslint-enable */\n ListBox.prototype.getDataList = function () {\n return this.jsonData;\n };\n /* eslint-disable */\n /**\n * Returns the sorted Data in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Sorted data\n */\n /* eslint-enable */\n ListBox.prototype.getSortedList = function () {\n var sortData;\n var tempData;\n sortData = tempData = this.sortedData;\n if (this.fields.groupBy) {\n sortData = [];\n for (var i = 0; i < tempData.length; i++) {\n if (tempData[i].isHeader) {\n continue;\n }\n sortData.push(tempData[i]);\n }\n }\n return sortData;\n };\n ListBox.prototype.getElemByValue = function (value) {\n var elem = [];\n for (var i = 0; i < value.length; i++) {\n elem.push(this.ulElement.querySelector('[data-value =\"' + value[i] + '\"]'));\n }\n return elem;\n };\n ListBox.prototype.updateLiCollection = function (index) {\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 1);\n this.liCollections = tempLi;\n };\n ListBox.prototype.selectAllItems = function (state, event) {\n var _this = this;\n [].slice.call(this.getItems()).forEach(function (li) {\n if (!li.classList.contains(cssClass.disabled)) {\n if (_this.selectionSettings.showCheckbox) {\n var ele = li.getElementsByClassName('e-check')[0];\n if ((!ele && state) || (ele && !state)) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (_this.maximumSelectionLength >= _this.list.querySelectorAll('.e-list-item span.e-check').length) {\n _this.checkMaxSelection();\n }\n }\n }\n else {\n if (state) {\n li.classList.add(cssClass.selected);\n }\n else {\n li.classList.remove(cssClass.selected);\n }\n }\n }\n });\n this.updateSelectedOptions();\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n var liEle = this.list.getElementsByTagName('li');\n var index = 0;\n if (state) {\n var _loop_1 = function () {\n var dataValue1 = this_1.getFormattedValue(liEle[index].getAttribute('data-value'));\n if (!this_1.value.some(function (e) { return e === dataValue1; })) {\n this_1.value.push(this_1.getFormattedValue(liEle[index].getAttribute('data-value')));\n }\n };\n var this_1 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_1();\n }\n }\n else {\n var _loop_2 = function () {\n var dataValue2 = this_2.getFormattedValue(liEle[index].getAttribute('data-value'));\n this_2.value = this_2.value.filter(function (e) { return e !== dataValue2; });\n };\n var this_2 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_2();\n }\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.triggerChange(this.getSelectedItems(), event);\n };\n ListBox.prototype.updateMainList = function () {\n var mainList = this.mainList.querySelectorAll('.e-list-item');\n var ulList = this.ulElement.querySelectorAll('.e-list-item');\n var mainCount = mainList.length;\n var ulEleCount = ulList.length;\n if (this.selectionSettings.showCheckbox || (document.querySelectorAll('ul').length > 1 || mainCount !== ulEleCount)) {\n var listindex = 0;\n var valueindex = 0;\n var count = 0;\n for (listindex; listindex < mainCount;) {\n if (this.value) {\n for (valueindex; valueindex < this.value.length; valueindex++) {\n if (mainList[listindex].getAttribute('data-value') === this.value[valueindex]) {\n count++;\n }\n }\n }\n if (!count && this.selectionSettings.showCheckbox) {\n mainList[listindex].getElementsByClassName('e-frame')[0].classList.remove('e-check');\n }\n if (document.querySelectorAll('ul').length > 1 && count && mainCount !== ulEleCount) {\n this.mainList.removeChild(this.mainList.getElementsByTagName('li')[listindex]);\n listindex = 0;\n }\n else {\n listindex++;\n }\n count = 0;\n valueindex = 0;\n }\n }\n };\n ListBox.prototype.wireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.add(this.list, 'click', this.clickHandler, this);\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusOutHandler, this);\n this.wireToolbarEvent();\n if (this.selectionSettings.showCheckbox) {\n EventHandler.remove(document, 'mousedown', this.checkBoxSelectionModule.onDocumentClick);\n }\n if (this.fields.groupBy || this.element.querySelector('select>optgroup')) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler, this);\n }\n };\n ListBox.prototype.wireToolbarEvent = function () {\n if (this.toolbarSettings.items.length) {\n EventHandler.add(this.getToolElem(), 'click', this.toolbarClickHandler, this);\n }\n };\n ListBox.prototype.unwireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.remove(this.list, 'click', this.clickHandler);\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusOutHandler);\n if (this.allowFiltering && this.clearFilterIconElem) {\n EventHandler.remove(this.clearFilterIconElem, 'click', this.clearText);\n }\n if (this.toolbarSettings.items.length) {\n EventHandler.remove(this.getToolElem(), 'click', this.toolbarClickHandler);\n }\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler);\n }\n };\n ListBox.prototype.clickHandler = function (e) {\n this.selectHandler(e);\n };\n ListBox.prototype.checkSelectAll = function () {\n var searchCount = 0;\n var liItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n for (var i = 0; i < liItems.length; i++) {\n if (!liItems[i].classList.contains('e-disabled')) {\n searchCount++;\n }\n }\n var len = this.getSelectedItems().length;\n if (this.showSelectAll && searchCount) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection',\n value: (searchCount === len) ? 'check' : (len === 0) ? 'uncheck' : 'indeterminate' });\n }\n };\n ListBox.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.allowFiltering) {\n var filterType = this.inputString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (dataType === null) {\n dataType = this.typeOfData(this.jsonData).typeof;\n }\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n };\n ListBox.prototype.setFiltering = function () {\n var filterInputObj;\n if (this.initLoad || isNullOrUndefined(this.filterParent)) {\n this.filterParent = this.createElement('span', {\n className: listBoxClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: listBoxClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: [listBoxClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n append([filterInputObj.container], this.filterParent);\n prepend([this.filterParent], this.list);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-label': 'search list item',\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n if (this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n this.inputString = this.filterInput.value;\n this.filterWireEvents();\n return filterInputObj;\n }\n };\n ListBox.prototype.filterWireEvents = function (filterElem) {\n if (filterElem) {\n this.filterInput = filterElem.querySelector('.e-input-filter');\n }\n this.clearFilterIconElem = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n if (this.clearFilterIconElem) {\n EventHandler.add(this.clearFilterIconElem, 'click', this.clearText, this);\n if (!filterElem) {\n this.clearFilterIconElem.style.visibility = 'hidden';\n }\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.KeyUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onKeyDown, this);\n };\n ListBox.prototype.selectHandler = function (e, isKey) {\n var isSelect = true;\n var currSelIdx;\n var li = closest(e.target, '.' + 'e-list-item');\n var selectedLi = [li];\n if (li && li.parentElement) {\n currSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n if (!this.selectionSettings.showCheckbox) {\n if ((e.ctrlKey || e.metaKey || Browser.isDevice) && this.isSelected(li)) {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n isSelect = false;\n }\n else if (!(this.selectionSettings.mode === 'Multiple' && (e.ctrlKey || e.metaKey || Browser.isDevice))) {\n this.getSelectedItems().forEach(function (ele) {\n ele.removeAttribute('aria-selected');\n });\n removeClass(this.getSelectedItems(), cssClass.selected);\n }\n }\n else {\n isSelect = !li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n if (e.shiftKey && !this.selectionSettings.showCheckbox && this.selectionSettings.mode !== 'Single') {\n selectedLi = [].slice.call(li.parentElement.children)\n .slice(Math.min(currSelIdx, this.prevSelIdx), Math.max(currSelIdx, this.prevSelIdx) + 1)\n .filter(function (ele) { return ele.classList.contains('e-list-item'); });\n }\n else {\n this.prevSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (isSelect) {\n if (!this.selectionSettings.showCheckbox) {\n addClass(selectedLi, cssClass.selected);\n }\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'true');\n });\n this.list.setAttribute('aria-activedescendant', li.id);\n }\n else {\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'false');\n });\n }\n if (!isKey && (this.maximumSelectionLength > (this.value && this.value.length) || !isSelect) &&\n (this.maximumSelectionLength >= (this.value && this.value.length) || !isSelect) &&\n !(this.maximumSelectionLength < (this.value && this.value.length))) {\n this.notify('updatelist', { li: li, e: e, module: 'listbox' });\n }\n if (this.allowFiltering && !isKey) {\n var liDataValue_1 = this.getFormattedValue(li.getAttribute('data-value'));\n if (!isSelect) {\n this.value = this.value.filter(function (value1) {\n return value1 !== liDataValue_1;\n });\n }\n else {\n var values = [];\n extend(values, this.value);\n values.push(liDataValue_1);\n this.value = values;\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.updateSelectedOptions();\n this.triggerChange(this.getSelectedItems(), e);\n if (this.list) {\n this.checkMaxSelection();\n }\n }\n };\n ListBox.prototype.triggerChange = function (selectedLis, event) {\n this.trigger('change', { elements: selectedLis, items: this.getDataByElements(selectedLis), value: this.value, event: event });\n };\n ListBox.prototype.getDataByElems = function (elems) {\n var data = [];\n for (var i = 0, len = elems.length; i < len; i++) {\n data.push(this.getDataByValue(this.getFormattedValue(elems[i].getAttribute('data-value'))));\n }\n return data;\n };\n ListBox.prototype.getDataByElements = function (elems) {\n var data = [];\n var value;\n var sIdx = 0;\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && item === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n return data;\n }\n return null;\n };\n ListBox.prototype.checkMaxSelection = function () {\n var limit = this.list.querySelectorAll('.e-list-item span.e-check').length;\n if (this.selectionSettings.showCheckbox) {\n var index = 0;\n var liCollElem = this.list.getElementsByClassName('e-list-item');\n for (index; index < liCollElem.length; index++) {\n if (!liCollElem[index].querySelector('.e-frame.e-check')) {\n if (limit === this.maximumSelectionLength) {\n liCollElem[index].classList.add('e-disable');\n }\n else if (liCollElem[index].classList.contains('e-disable')) {\n liCollElem[index].classList.remove('e-disable');\n }\n }\n }\n }\n };\n ListBox.prototype.toolbarClickHandler = function (e) {\n var btn = closest(e.target, 'button');\n if (btn) {\n this.toolbarAction = btn.getAttribute('data-value');\n if (btn.disabled) {\n return;\n }\n switch (this.toolbarAction) {\n case 'moveUp':\n this.moveUpDown(true);\n break;\n case 'moveDown':\n this.moveUpDown();\n break;\n case 'moveTo':\n this.moveItemTo();\n break;\n case 'moveFrom':\n this.moveItemFrom();\n break;\n case 'moveAllTo':\n this.moveAllItemTo();\n break;\n case 'moveAllFrom':\n this.moveAllItemFrom();\n break;\n default:\n this.trigger('actionBegin', { cancel: false, items: this.getDataByElems(this.getSelectedItems()),\n eventName: this.toolbarAction });\n break;\n }\n }\n };\n ListBox.prototype.moveUpDown = function (isUp, isKey, value, isTop, isBottom) {\n var _this = this;\n var elems = this.getSelectedItems();\n if (value) {\n elems = value;\n }\n if (((isUp && this.isSelected(this.ulElement.firstElementChild))\n || (!isUp && this.isSelected(this.ulElement.lastElementChild))) && !value) {\n return;\n }\n var tempItems = this.getDataByElems(elems);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n this.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n (isUp ? elems : elems.reverse()).forEach(function (ele) {\n var jsonToIdx = Array.prototype.indexOf.call(_this.ulElement.querySelectorAll('.e-list-item'), ele);\n var idx = Array.prototype.indexOf.call(_this.ulElement.children, ele);\n if (isTop) {\n moveTo(_this.ulElement, _this.ulElement, [idx], 0);\n _this.changeData(idx, 0, jsonToIdx, ele);\n }\n else if (isBottom) {\n moveTo(_this.ulElement, _this.ulElement, [idx], _this.ulElement.querySelectorAll('.e-list-item').length);\n _this.changeData(idx, _this.ulElement.querySelectorAll('.e-list-item').length, jsonToIdx, ele);\n }\n else {\n moveTo(_this.ulElement, _this.ulElement, [idx], isUp ? idx - 1 : idx + 2);\n _this.changeData(idx, isUp ? idx - 1 : idx + 1, isUp ? jsonToIdx - 1 : jsonToIdx + 1, ele);\n }\n });\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n elems[0].focus();\n if (!isKey && this.toolbarSettings.items.length) {\n this.getToolElem().querySelector('[data-value=' + (isUp ? 'moveUp' : 'moveDown') + ']').focus();\n }\n this.updateToolBarState();\n };\n ListBox.prototype.moveItemTo = function () {\n this.moveData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveItemFrom = function () {\n this.moveData(this.getScopedListBox(), this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBox} fListBox - Specifies the from listbox.\n * @param {ListBox} tListBox - Specifies the to listbox.\n * @param {boolean} isKey - Specifies the key.\n * @param {Element[]} value - Specifies the value.\n * @param {number} index - Specifies the index.\n * @returns {void}\n * @private\n */\n ListBox.prototype.moveData = function (fListBox, tListBox, isKey, value, index) {\n var idx = [];\n var dataIdx = [];\n var jsonIdx = [];\n var sortIdx = [];\n var listData = [].slice.call(fListBox.listData);\n var tListData = [].slice.call(tListBox.listData);\n var sortData = [].slice.call(fListBox.sortedData);\n var tSortData = [].slice.call(tListBox.sortedData);\n var fliCollections = [].slice.call(fListBox.liCollections);\n var dataLiIdx = [];\n var tliCollections = [].slice.call(tListBox.liCollections);\n var tempItems = [];\n var data = [];\n var elems = fListBox.getSelectedItems();\n if (value) {\n elems = value;\n }\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n fListBox.value = [];\n if (elems.length) {\n this.removeSelected(fListBox, elems);\n elems.forEach(function (ele) {\n idx.push(Array.prototype.indexOf.call(fListBox.ulElement.children, ele)); // update sortable elem\n // To update lb view data\n dataLiIdx.push(Array.prototype.indexOf.call(fListBox.ulElement.querySelectorAll('.e-list-item'), ele));\n // To update lb listdata data\n dataIdx.push(Array.prototype.indexOf.call(fListBox.listData, fListBox.getDataByElems([ele])[0]));\n // To update lb sorted data\n sortIdx.push(Array.prototype.indexOf.call(fListBox.sortedData, fListBox.getDataByElems([ele])[0]));\n // To update lb original data\n jsonIdx.push(Array.prototype.indexOf.call(fListBox.jsonData, fListBox.getDataByElems([ele])[0]));\n });\n if (this.sortOrder !== 'None') {\n sortIdx.forEach(function (i) {\n tempItems.push(fListBox.sortedData[i]);\n });\n }\n else {\n jsonIdx.forEach(function (i) {\n tempItems.push(fListBox.jsonData[i]);\n });\n }\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n var rLiCollection_1 = [];\n dataLiIdx.sort(function (n1, n2) { return n1 - n2; }).reverse().forEach(function (i) {\n rLiCollection_1.push(fliCollections.splice(i, 1)[0]);\n });\n fListBox.liCollections = fliCollections;\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(rLiCollection_1.reverse()).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(rLiCollection_1.reverse());\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n dataIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n listData.splice(i, 1)[0];\n });\n sortIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n sortData.splice(i, 1)[0];\n });\n jsonIdx.slice().reverse().forEach(function (i) {\n data.push(fListBox.jsonData.splice(i, 1)[0]);\n });\n if (isRefresh) {\n if (fListBox.fields.groupBy) {\n var sourceElem = fListBox.renderItems(listData, fListBox.fields);\n fListBox.updateListItems(sourceElem, fListBox.ulElement);\n }\n else {\n elems.forEach(function (ele) { detach(ele); });\n }\n }\n else {\n moveTo(fListBox.ulElement, tListBox.ulElement, idx, index);\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n if (tListBox.mainList.childElementCount !== tListBox.jsonData.length) {\n tListBox.mainList = tListBox.ulElement;\n }\n fListBox.updateMainList();\n var tJsonData = [].slice.call(tListBox.jsonData);\n tSortData = [].slice.call(tListBox.sortedData);\n this.selectNextList(elems, dataLiIdx, dataIdx, fListBox);\n if (isKey) {\n this.list.focus();\n }\n fListBox.listData = listData;\n fListBox.sortedData = sortData;\n index = (index) ? index : tListData.length;\n for (var i = tempItems.length - 1; i >= 0; i--) {\n tListData.splice(index, 0, tempItems[i]);\n tJsonData.splice(index, 0, tempItems[i]);\n tSortData.splice(index, 0, tempItems[i]);\n }\n tListBox.listData = tListData;\n tListBox.jsonData = tJsonData;\n tListBox.sortedData = tSortData;\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(tListData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n tListBox.setSelection();\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n }\n if (fListBox.value.length === 1 && fListBox.getSelectedItems().length) {\n fListBox.value[0] = fListBox.getFormattedValue(fListBox.getSelectedItems()[0].getAttribute('data-value'));\n }\n };\n ListBox.prototype.selectNextList = function (elems, dataLiIdx, dataIdx, inst) {\n var childCnt = inst.ulElement.querySelectorAll('.e-list-item').length;\n var ele;\n var liIdx;\n var validIdx = -1;\n if (elems.length === 1 && childCnt && !inst.selectionSettings.showCheckbox) {\n liIdx = childCnt <= dataLiIdx[0] ? childCnt - 1 : dataLiIdx[0];\n ele = inst.ulElement.querySelectorAll('.e-list-item')[liIdx];\n validIdx = inst.getValidIndex(ele, liIdx, childCnt === dataIdx[0] ? 38 : 40);\n if (validIdx > -1) {\n (inst.ulElement.querySelectorAll('.e-list-item')[validIdx].classList.add(cssClass.selected));\n }\n }\n };\n ListBox.prototype.moveAllItemTo = function () {\n this.moveAllData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveAllItemFrom = function () {\n this.moveAllData(this.getScopedListBox(), this);\n };\n ListBox.prototype.moveAllData = function (fListBox, tListBox, isKey, index) {\n var listData = [].slice.call(tListBox.listData);\n var jsonData = [].slice.call(tListBox.jsonData);\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n this.removeSelected(fListBox, fListBox.getSelectedItems());\n var tempItems = [].slice.call(fListBox.listData);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n if (isRefresh) {\n var noRecElem = fListBox.ulElement.childNodes[0];\n if (noRecElem) {\n fListBox.ulElement.removeChild(noRecElem);\n }\n }\n moveTo(fListBox.ulElement, tListBox.ulElement, \n // eslint-disable-next-line prefer-spread\n Array.apply(null, { length: fListBox.ulElement.childElementCount }).map(Number.call, Number), index);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n if (isKey) {\n this.list.focus();\n }\n index = (index) ? index : listData.length;\n for (var i = 0; i < fListBox.listData.length; i++) {\n listData.splice(index + i, 0, fListBox.listData[i]);\n }\n for (var i = 0; i < fListBox.jsonData.length; i++) {\n jsonData.splice(index + i, 0, fListBox.jsonData[i]);\n }\n var fliCollections = [].slice.call(fListBox.liCollections);\n var tliCollections = [].slice.call(tListBox.liCollections);\n fListBox.liCollections = [];\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(fliCollections).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(fliCollections);\n }\n fListBox.value = [];\n listData = listData\n .filter(function (data) { return data.isHeader !== true; });\n var sortedData = listData.filter(function (val) {\n return tListBox.jsonData.indexOf(val) === -1;\n });\n for (var i = 0; i < sortedData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tListBox.jsonData.splice(index + i, 0, sortedData[i]);\n }\n tListBox.listData = listData;\n if (fListBox.listData.length === fListBox.jsonData.length) {\n fListBox.listData = fListBox.sortedData = fListBox.jsonData = [];\n }\n else if (fListBox.allowFiltering) {\n for (var i = 0; i < fListBox.listData.length; i++) {\n for (var j = 0; j < fListBox.jsonData.length; j++) {\n if (fListBox.listData[i] === fListBox.jsonData[j]) {\n fListBox.jsonData.splice(j, 1);\n }\n }\n }\n fListBox.listData = fListBox.sortedData = [];\n }\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(listData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n else {\n tListBox.sortedData = listData;\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n };\n ListBox.prototype.changeData = function (fromIdx, toIdx, jsonToIdx, ele) {\n var listData = [].slice.call(this.listData);\n var jsonData = [].slice.call(this.jsonData);\n var sortData = [].slice.call(this.sortedData);\n var jsonIdx = Array.prototype.indexOf.call(this.jsonData, this.getDataByElems([ele])[0]);\n var sortIdx = Array.prototype.indexOf.call(this.sortedData, this.getDataByElems([ele])[0]);\n var liColl = [].slice.call(this.liCollections);\n listData.splice(toIdx, 0, listData.splice(fromIdx, 1)[0]);\n jsonData.splice(jsonToIdx, 0, jsonData.splice(jsonIdx, 1)[0]);\n sortData.splice(toIdx, 0, sortData.splice(sortIdx, 1)[0]);\n liColl.splice(toIdx, 0, liColl.splice(fromIdx, 1)[0]);\n this.listData = listData;\n this.jsonData = jsonData;\n this.liCollections = liColl;\n this.sortedData = sortData;\n };\n ListBox.prototype.getSelectedItems = function () {\n var ele = [];\n if (this.selectionSettings.showCheckbox) {\n [].slice.call(this.ulElement.getElementsByClassName('e-check')).forEach(function (cbox) {\n ele.push(closest(cbox, '.' + 'e-list-item'));\n });\n }\n else {\n ele = [].slice.call(this.ulElement.getElementsByClassName(cssClass.selected));\n }\n return ele;\n };\n ListBox.prototype.getScopedListBox = function () {\n var _this = this;\n var listObj;\n if (this.scope) {\n [].slice.call(document.querySelectorAll(this.scope)).forEach(function (ele) {\n if (getComponent(ele, _this.getModuleName())) {\n listObj = getComponent(ele, _this.getModuleName());\n }\n });\n }\n return listObj;\n };\n ListBox.prototype.getGrabbedItems = function (args) {\n var grabbItems = false;\n for (var i = 0; i < this.value.length; i++) {\n if (this.value[i] === this.getFormattedValue(args.target.getAttribute('data-value'))) {\n grabbItems = true;\n break;\n }\n }\n if (grabbItems) {\n for (var i = 0; i < this.value.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (this.value[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n liColl[j].classList.add('e-grabbed');\n }\n }\n }\n }\n var elems;\n if (this.isAngular) {\n elems = Array.prototype.slice.call(this.element.getElementsByClassName('e-list-parent')[0].querySelectorAll('.e-grabbed'));\n }\n else {\n elems = Array.prototype.slice.call(this.element.nextElementSibling.querySelectorAll('.e-grabbed'));\n }\n return elems;\n };\n ListBox.prototype.getDragArgs = function (args, isDragEnd) {\n var elems = this.getGrabbedItems(args);\n if (elems.length) {\n if (isDragEnd) {\n elems.push(args.target);\n }\n }\n else {\n elems = [args.target];\n }\n return { elements: elems, items: this.getDataByElems(elems) };\n };\n ListBox.prototype.onKeyDown = function (e) {\n this.keyDownHandler(e);\n e.stopPropagation();\n };\n ListBox.prototype.keyDownHandler = function (e) {\n if ([32, 35, 36, 37, 38, 39, 40, 65].indexOf(e.keyCode) > -1 && !this.allowFiltering) {\n if (e.target && e.target.className.indexOf('e-edit-template') > -1) {\n return;\n }\n e.preventDefault();\n if (e.keyCode === 32 && this.ulElement.children.length) {\n this.selectHandler({\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n });\n }\n else if (e.keyCode === 65 && e.ctrlKey) {\n this.selectAll();\n }\n else if ((e.keyCode === 38 || e.keyCode === 40) && e.ctrlKey && e.shiftKey) {\n this.moveUpDown(e.keyCode === 38 ? true : false, true);\n }\n else if ((this.toolbarSettings.items.length || this.tBListBox) && (e.keyCode === 39 || e.keyCode === 37) && e.ctrlKey) {\n var listObj = this.tBListBox || this.getScopedListBox();\n if (e.keyCode === 39) {\n if (e.shiftKey) {\n this.moveAllData(this, listObj, true);\n }\n else {\n this.moveData(this, listObj, true);\n }\n }\n else {\n if (e.shiftKey) {\n this.moveAllData(listObj, this, true);\n }\n else {\n this.moveData(listObj, this, true);\n }\n }\n }\n else if (e.keyCode !== 37 && e.keyCode !== 39 && e.code !== 'KeyA') {\n this.upDownKeyHandler(e);\n }\n }\n else if (this.allowFiltering) {\n if (e.keyCode === 40 || e.keyCode === 38) {\n this.upDownKeyHandler(e);\n }\n }\n };\n ListBox.prototype.upDownKeyHandler = function (e) {\n var ul = this.ulElement;\n var defaultIdx = (e.keyCode === 40 || e.keyCode === 36) ? 0 : ul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = ul.getElementsByClassName('e-focused')[0] || ul.getElementsByClassName(cssClass.selected)[0];\n if (fli) {\n if (e.keyCode !== 35 && e.keyCode !== 36) {\n fliIdx = Array.prototype.indexOf.call(ul.children, fli);\n if (e.keyCode === 40) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx < 0 || fliIdx > ul.childElementCount - 1) {\n return;\n }\n }\n removeClass([fli], 'e-focused');\n }\n var cli = ul.children[fliIdx];\n if (cli) {\n fliIdx = this.getValidIndex(cli, fliIdx, e.keyCode);\n if (fliIdx === -1) {\n addClass([fli], 'e-focused');\n return;\n }\n ul.children[fliIdx].focus();\n ul.children[fliIdx].classList.add('e-focused');\n if (!e.ctrlKey || !this.selectionSettings.showCheckbox && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n this.selectHandler({ target: ul.children[fliIdx], ctrlKey: e.ctrlKey, shiftKey: e.shiftKey }, true);\n }\n if (this.selectionSettings.showCheckbox && e.ctrlKey && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n var selectedidx = Array.prototype.indexOf.call(ul.children, fli);\n var sidx = e.code === 'Home' ? 0 : selectedidx;\n var eidx = e.code === 'Home' ? selectedidx : ul.children.length - 1;\n for (var i = sidx; i <= eidx; i++) {\n var item = ul.children[i];\n this.notify('updatelist', { li: item, e: {\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n }, module: 'listbox' });\n }\n }\n }\n };\n ListBox.prototype.KeyUp = function (e) {\n var _this = this;\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n this.isValidKey = (e.keyCode === 8) || (e.keyCode === 46) || this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n switch (e.keyCode) {\n default:\n if (this.allowFiltering) {\n var eventArgsData_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgsData_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgsData_1, function (args) {\n _this.isDataFetched = false;\n if (args.cancel || (_this.filterInput.value !== '' && _this.isFiltered)) {\n return;\n }\n if (!args.cancel && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.inputString = _this.filterInput.value;\n _this.filteringAction(_this.jsonData, new Query(), _this.fields);\n }\n if (!_this.isFiltered && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.dataUpdater(_this.jsonData, new Query(), _this.fields);\n }\n });\n }\n }\n }\n };\n /**\n * To filter the data from given data source by using query.\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}.\n */\n ListBox.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFiltering = true;\n this.filteringAction(dataSource, query, fields);\n };\n ListBox.prototype.filteringAction = function (dataSource, query, fields) {\n this.resetList(dataSource, fields, query);\n };\n ListBox.prototype.targetElement = function () {\n this.targetInputElement = this.list.getElementsByClassName('e-input-filter')[0];\n return this.targetInputElement.value;\n };\n ListBox.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var backCommand = true;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (backCommand) {\n this.remoteCustomValue = false;\n this.onActionComplete(list, this.jsonData);\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.selectionSettings.showCheckbox, e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n }\n };\n ListBox.prototype.focusOutHandler = function () {\n var ele = this.list.getElementsByClassName('e-focused')[0];\n if (ele) {\n ele.classList.remove('e-focused');\n }\n if (this.allowFiltering) {\n this.refreshClearIcon();\n }\n };\n ListBox.prototype.getValidIndex = function (cli, index, keyCode) {\n var cul = this.ulElement;\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n if (keyCode === 40 || keyCode === 36) {\n index++;\n }\n else {\n index--;\n }\n }\n if (index < 0 || index === cul.childElementCount) {\n return -1;\n }\n cli = cul.childNodes[index];\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n index = this.getValidIndex(cli, index, keyCode);\n }\n return index;\n };\n ListBox.prototype.updateSelectedOptions = function () {\n var _this = this;\n var selectedOptions = [];\n var values = [];\n extend(values, this.value);\n this.getSelectedItems().forEach(function (ele) {\n if (!ele.classList.contains('e-grabbed')) {\n selectedOptions.push(_this.getFormattedValue(ele.getAttribute('data-value')));\n }\n });\n if (this.mainList.childElementCount === this.ulElement.childElementCount) {\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n for (var i = 0; i < selectedOptions.length; i++) {\n if (values.indexOf(selectedOptions[i]) > -1) {\n continue;\n }\n else {\n values.push(selectedOptions[i]);\n }\n }\n this.setProperties({ value: values }, true);\n }\n else {\n this.setProperties({ value: selectedOptions }, true);\n }\n }\n this.updateSelectTag();\n this.updateToolBarState();\n if (this.tBListBox) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.clearSelection = function (values) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (this.selectionSettings.showCheckbox) {\n var dvalue_1;\n this.getSelectedItems().forEach(function (li) {\n dvalue_1 = _this.getFormattedValue(li.getAttribute('data-value'));\n if (values.indexOf(dvalue_1) < 0) {\n li.getElementsByClassName('e-check')[0].classList.remove('e-check');\n li.removeAttribute('aria-selected');\n }\n });\n }\n };\n ListBox.prototype.setSelection = function (values, isSelect, isText) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (isSelect === void 0) { isSelect = true; }\n if (isText === void 0) { isText = false; }\n var li;\n var liselect;\n if (values) {\n values.forEach(function (value) {\n var text;\n if (isText) {\n text = _this.getValueByText(value);\n }\n else {\n text = value;\n }\n if (typeof (text) === 'string') {\n text = text.split('\\\\').join('\\\\\\\\');\n li = _this.list.querySelector('[data-value=\"' + text.replace(/\"/g, '\\\\\"') + '\"]');\n }\n else {\n li = _this.list.querySelector('[data-value=\"' + text + '\"]');\n }\n if (li) {\n if (_this.selectionSettings.showCheckbox) {\n liselect = li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n else {\n liselect = li.classList.contains('e-selected');\n }\n if (!isSelect && liselect || isSelect && !liselect && li) {\n if (_this.selectionSettings.showCheckbox) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n li.focus();\n }\n else {\n if (isSelect) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\n li.focus();\n }\n else {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n }\n }\n }\n }\n });\n }\n this.updateSelectTag();\n };\n ListBox.prototype.updateSelectTag = function () {\n var ele = this.getSelectTag();\n var innerHTML = '';\n ele.innerHTML = '';\n if (this.value) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n innerHTML += '';\n }\n ele.innerHTML += innerHTML;\n for (var i = 0, len = ele.childNodes.length; i < len; i++) {\n ele.childNodes[i].setAttribute('value', this.value[i].toString());\n }\n }\n this.checkSelectAll();\n };\n ListBox.prototype.checkDisabledState = function (inst) {\n return inst.ulElement.querySelectorAll('.' + cssClass.li).length === 0;\n };\n ListBox.prototype.updateToolBarState = function () {\n var _this = this;\n if (this.toolbarSettings.items.length) {\n var listObj_1 = this.getScopedListBox();\n var wrap_1 = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n this.toolbarSettings.items.forEach(function (value) {\n var btn = wrap_1.querySelector('[data-value=\"' + value + '\"]');\n switch (value) {\n case 'moveAllTo':\n btn.disabled = _this.checkDisabledState(_this);\n break;\n case 'moveAllFrom':\n btn.disabled = _this.checkDisabledState(listObj_1);\n break;\n case 'moveFrom':\n btn.disabled = listObj_1.value && listObj_1.value.length ? false : true;\n break;\n case 'moveUp':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[0]) ? false : true;\n break;\n case 'moveDown':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[_this.ulElement.childElementCount - 1]) ? false : true;\n break;\n default:\n btn.disabled = _this.value && _this.value.length ? false : true;\n break;\n }\n });\n }\n };\n ListBox.prototype.setCheckboxPosition = function () {\n var listWrap = this.list;\n if (!this.initLoad && this.selectionSettings.checkboxPosition === 'Left') {\n listWrap.classList.remove('e-right');\n }\n if (this.selectionSettings.checkboxPosition === 'Right') {\n listWrap.classList.add('e-right');\n }\n };\n ListBox.prototype.showCheckbox = function (showCheckbox) {\n var index = 0;\n var liColl = this.list.lastElementChild.querySelectorAll('li');\n var liCollLen = this.list.lastElementChild.getElementsByClassName('e-list-item').length;\n if (showCheckbox) {\n this.ulElement = this.renderItems(this.listData, this.fields);\n this.mainList = this.ulElement;\n this.list.removeChild(this.list.getElementsByTagName('ul')[0]);\n this.list.appendChild(this.ulElement);\n if (this.selectionSettings.showSelectAll && !this.list.getElementsByClassName('e-selectall-parent')[0]) {\n var l10nShow = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nShow.getConstant('selectAllText');\n this.unSelectAllText = l10nShow.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n }\n else {\n if (this.list.getElementsByClassName('e-selectall-parent')[0]) {\n this.list.removeChild(this.list.getElementsByClassName('e-selectall-parent')[0]);\n }\n for (index; index < liCollLen; index++) {\n if (liColl[index].classList.contains('e-list-item')) {\n liColl[index].removeChild(liColl[index].getElementsByClassName('e-checkbox-wrapper')[0]);\n }\n if (liColl[index].hasAttribute('aria-selected')) {\n liColl[index].removeAttribute('aria-selected');\n }\n }\n this.mainList = this.ulElement;\n }\n this.value = [];\n };\n ListBox.prototype.isSelected = function (ele) {\n if (!isNullOrUndefined(ele)) {\n return ele.classList.contains(cssClass.selected) || ele.querySelector('.e-check') !== null;\n }\n else {\n return false;\n }\n };\n ListBox.prototype.getSelectTag = function () {\n return this.list.getElementsByClassName('e-hidden-select')[0];\n };\n ListBox.prototype.getToolElem = function () {\n return this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n };\n ListBox.prototype.formResetHandler = function () {\n this.value = this.initialSelectedOptions;\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - Module name\n */\n ListBox.prototype.getModuleName = function () {\n return 'listbox';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ListBox.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ListBox.prototype.getLocaleName = function () {\n return 'listbox';\n };\n ListBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.innerHTML = '';\n }\n else {\n this.element.style.display = 'inline-block';\n if (this.toolbarSettings.items.length) {\n this.list.parentElement.parentElement.insertBefore(this.list, this.list.parentElement);\n detach(this.list.nextElementSibling);\n }\n this.list.parentElement.insertBefore(this.element, this.list);\n }\n _super.prototype.destroy.call(this);\n this.enableRtlElements = [];\n this.liCollections = null;\n this.list = null;\n this.ulElement = null;\n this.mainList = null;\n this.spinner = null;\n this.rippleFun = null;\n if (this.itemTemplate) {\n this.clearTemplate();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBoxModel} newProp - Specifies the new properties.\n * @param {ListBoxModel} oldProp - Specifies the old properties.\n * @returns {void}\n * @private\n */\n ListBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.list.classList.add('e-rtl');\n }\n else {\n this.list.classList.remove('e-rtl');\n }\n break;\n case 'value':\n removeClass(this.list.querySelectorAll('.' + cssClass.selected), cssClass.selected);\n this.clearSelection(this.value);\n this.setSelection();\n break;\n case 'height':\n this.setHeight();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'allowDragAndDrop':\n if (newProp.allowDragAndDrop) {\n this.initDraggable();\n }\n else {\n getComponent(this.ulElement, 'sortable').destroy();\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.setFiltering();\n }\n else {\n this.list.removeChild(this.list.getElementsByClassName('e-filter-parent')[0]);\n this.filterParent = null;\n removeClass([this.list], 'e-filter-list');\n }\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n }\n break;\n case 'scope':\n if (this.allowDragAndDrop) {\n getComponent(this.ulElement, 'sortable').scope = newProp.scope;\n }\n if (this.toolbarSettings.items.length) {\n if (oldProp.scope) {\n getComponent(document.querySelector(oldProp.scope), this.getModuleName())\n .tBListBox = null;\n }\n if (newProp.scope) {\n getComponent(document.querySelector(newProp.scope), this.getModuleName())\n .tBListBox = this;\n }\n }\n break;\n case 'toolbarSettings': {\n var ele = void 0;\n var pos = newProp.toolbarSettings.position;\n var toolElem = this.getToolElem();\n if (pos) {\n removeClass([wrap], ['e-right', 'e-left']);\n wrap.classList.add('e-' + pos.toLowerCase());\n if (pos === 'Left') {\n wrap.insertBefore(toolElem, this.list);\n }\n else {\n wrap.appendChild(toolElem);\n }\n }\n if (newProp.toolbarSettings.items) {\n if (oldProp.toolbarSettings && oldProp.toolbarSettings.items.length) {\n ele = this.list.parentElement;\n ele.parentElement.insertBefore(this.list, ele);\n detach(ele);\n }\n this.initToolbarAndStyles();\n this.wireToolbarEvent();\n }\n break;\n }\n case 'selectionSettings': {\n var showSelectAll = newProp.selectionSettings.showSelectAll;\n var showCheckbox = newProp.selectionSettings.showCheckbox;\n if (!isNullOrUndefined(showSelectAll)) {\n this.showSelectAll = showSelectAll;\n if (this.showSelectAll) {\n var l10nSel = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.checkBoxSelectionModule.checkAllParent = null;\n this.showSelectAll = true;\n this.selectAllText = l10nSel.getConstant('selectAllText');\n this.unSelectAllText = l10nSel.getConstant('selectAllText');\n this.popupWrapper = this.list;\n }\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n if (!isNullOrUndefined(showCheckbox)) {\n this.showCheckbox(showCheckbox);\n }\n if (this.selectionSettings.showCheckbox) {\n this.setCheckboxPosition();\n }\n break;\n }\n case 'dataSource':\n this.isDataSourceUpdate = true;\n this.jsonData = [].slice.call(this.dataSource);\n break;\n }\n }\n };\n var ListBox_1;\n __decorate([\n Property('')\n ], ListBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], ListBox.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"scope\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dataBound\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], ListBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], ListBox.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], ListBox.prototype, \"selectionSettings\", void 0);\n ListBox = ListBox_1 = __decorate([\n NotifyPropertyChanges\n ], ListBox);\n return ListBox;\n}(DropDownBase));\nexport { ListBox };\nvar listBoxClasses = {\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n clearIcon: 'e-clear-icon'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { ListBox } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n* The ListBox allows the user to select values from the predefined list of values.\n * ```\n * \n * ```\n */\nvar ListBoxComponent = /** @class */ (function (_super) {\n __extends(ListBoxComponent, _super);\n function ListBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n ListBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return ListBoxComponent;\n}(ListBox));\nexport { ListBoxComponent };\napplyMixins(ListBoxComponent, [ComponentBase, React.Component]);\n","import React, { Component } from 'react';\r\nimport { getCurrentDomain } from '../helpers/Lookup';\r\n\r\nexport class BannerThumbnails extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n BannerUrls: Array.isArray(props.bannerUrls) ? props.bannerUrls : props.bannerUrls.split(',').map(url => url.trim()).filter(url => url !== ''),\r\n };\r\n }\r\n\r\n handleBannerUpload = (event) => {\r\n const file = event.target.files[0];\r\n if (file) {\r\n const reader = new FileReader();\r\n reader.onload = (e) => {\r\n const newImageUrl = e.target.result;\r\n this.setState({ BannerUrls: [...this.state.BannerUrls, newImageUrl] });\r\n this.props.onUpdateBannerUrls([...this.state.BannerUrls, newImageUrl]);\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n };\r\n\r\n openImageUploader = () => {\r\n this.uploadInputRef.click();\r\n }\r\n\r\n deleteImage = (index) => {\r\n const updatedImageUrls = [...this.state.BannerUrls];\r\n updatedImageUrls.splice(index, 1);\r\n this.setState({ BannerUrls: updatedImageUrls });\r\n this.props.onUpdateBannerUrls(updatedImageUrls);\r\n }\r\n\r\n render() {\r\n const { BannerUrls } = this.state;\r\n // console.log(this.state, BannerUrls.length, this.props.isSingleBanner)\r\n return (\r\n
    \r\n
    \r\n {BannerUrls.map((imageUrl, index) => (\r\n
    \r\n {/*{console.log(imageUrl, imageUrl.includes(\"\\\\\")) }*/}\r\n {`Thumbnail\r\n this.deleteImage(index)} className=\"fa-solid fa-circle-minus\" title=\"Remove Image\">\r\n
    \r\n ))}\r\n {this.props.isSingleBanner && BannerUrls.length === 0 && ()}\r\n {!this.props.isSingleBanner && ()}\r\n
    \r\n
    \r\n this.uploadInputRef = ref}\r\n type=\"file\"\r\n accept=\"image/*\"\r\n onChange={this.handleBannerUpload}\r\n className=\"upload-input\"\r\n />\r\n
    \r\n
    \r\n );\r\n }\r\n}","import { DropDownListComponent, ListBoxComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, Edit, GridComponent, Sort, Toolbar } from '@syncfusion/ej2-react-grids';\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { Inject } from '@syncfusion/ej2-react-richtexteditor';\r\nimport React, { Component } from 'react';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { Button, Col, Label, Modal, ModalBody, ModalFooter, ModalHeader, Row } from 'reactstrap';\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { Context } from '../../helpers/Context';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { BannerThumbnails } from '../BannerThumbnails';\r\n\r\nexport class Banners extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n const linkTypeData = [\r\n { value: 0, text: '- Select -' },\r\n { value: 1, text: 'Brand' },\r\n { value: 2, text: 'Category' }\r\n ];\r\n\r\n this.state = {\r\n editData: [], orderData: [], loading: true, editModal: false, orderModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n SiteSection: 0,\r\n Title: '',\r\n Filename: '',\r\n StartDate: new Date(),\r\n EndDate: new Date(),\r\n ActionType: '',\r\n ActionData: '',\r\n CategoryLink: '',\r\n DisplayOrder: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n BrandList: [],\r\n CategoryList: [],\r\n LinkTypes: linkTypeData,\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.toggleOrderModal = this.toggleOrderModal.bind(this);\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n toggleOrderModal() {\r\n this.setState({\r\n orderModal: !this.state.orderModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Banners :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id === id });\r\n this.setState({ Id: data.id, SiteSection: data.siteSection, Title: data.title, Filename: data.filename, StartDate: data.startDate, EndDate: data.endDate, ActionType: data.actionType, ActionData: data.actionData, DisplayOrder: data.displayOrder, AddedBy: data.addedBy, DateAdded: data.dateAdded, ModifiedBy: data.modifiedBy, DateModified: data.dateModified, Status: data.status, CategoryLink: data.categoryLink });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n SiteSection: 0,\r\n Title: '',\r\n Filename: '',\r\n StartDate: new Date(),\r\n EndDate: new Date(),\r\n ActionType: '',\r\n ActionData: '',\r\n CategoryLink: '',\r\n DisplayOrder: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n valid &= fieldRequired(this.state.Title, 'tbTitleError', '* required');\r\n valid &= fieldRequired(this.state.Filename, 'tbFilenameError', '* required');\r\n\r\n if (valid) {\r\n const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n this.state.AddedBy = data.addedBy;\r\n this.state.DateAdded = data.dateAdded;\r\n this.state.Id = data.id;\r\n this.state.Status = data.status;\r\n }\r\n else {\r\n this.state.Status = 1;\r\n }\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n return (\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n handleUpdatedBannerUrls = (Filename) => {\r\n this.setState({ Filename: Filename });\r\n }\r\n\r\n onItemDrop = (e) => {\r\n console.log(e)\r\n const orderData = [];\r\n e.source.currentData.map((item, idx) =>\r\n orderData.push({ ...item, displayOrder: (idx + 1) })\r\n );\r\n this.setState({ orderData })\r\n }\r\n\r\n capitalizeKeys = (obj) => {\r\n const newObj = {};\r\n for (let key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n const capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);\r\n newObj[capitalizedKey] = obj[key];\r\n }\r\n }\r\n return newObj;\r\n }\r\n\r\n render() {\r\n const { handleNavigate } = this.context;\r\n let contents = this.state.loading ?

    Loading...

    : Banners.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n let banner = this.state.Filename;\r\n if (this.state.Filename.includes(\"\\\\\\\\\")) {\r\n banner = JSON.parse(this.state.Filename)\r\n }\r\n //console.log(this.state, banner)\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n

    TriggerCraft Banners

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {contents}\r\n \r\n \r\n
    \r\n\r\n \r\n }>Edit Banners\r\n \r\n \r\n
    \r\n this.setState({ Title: e.target.value })} />
    \r\n
    \r\n\r\n \r\n
    \r\n this.setState({ ActionData: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n this.setState({ ActionType: \"\", SiteSection: e.itemData.value })} />\r\n
    \r\n
    \r\n\r\n {this.state.SiteSection === 1 ?\r\n
    \r\n this.setState({ ActionType: e.itemData.slug })} />\r\n
    \r\n
    :\r\n this.state.SiteSection === 2 ?\r\n
    \r\n this.setState({ ActionType: e.itemData.slug })} />\r\n
    \r\n
    :\r\n null\r\n }\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n }>Set Display Order\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n\r\n try {\r\n const response = await fetch('api/productbrands', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ BrandList: data });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n try {\r\n const response = await fetch('api/productcategories', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n console.log(data)\r\n this.setState({ CategoryList: data });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n try {\r\n const response = await fetch('api/banners', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ editData: data, orderData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Id: this.state.Id, SiteSection: this.state.SiteSection, Title: this.state.Title, Filename: Array.isArray(this.state.Filename) ? this.state.Filename.join(\", \") : this.state.Filename, StartDate: this.state.StartDate, EndDate: this.state.EndDate, ActionType: this.state.ActionType, ActionData: this.state.ActionData, DisplayOrder: this.state.DisplayOrder, AddedBy: this.state.AddedBy, DateAdded: this.state.DateAdded, ModifiedBy: this.state.ModifiedBy, DateModified: this.state.DateModified, Status: this.state.Status, CategoryLink: this.state.CategoryLink }\r\n\r\n try {\r\n const response = await fetch('api/banners', {\r\n method: dataId == 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Banners', content: 'The banners was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Banners', content: 'There was an error saving the banners!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async saveOrder() {\r\n //console.log(this.state.orderData)\r\n var bearer = 'Bearer ' + getAuthToken();\r\n const capitalizedOrderData = this.state.orderData.map(item => this.capitalizeKeys(item));\r\n const data = JSON.stringify(capitalizedOrderData);\r\n this.setState({ orderModal: false, loading: true })\r\n try {\r\n const response = await fetch(\"api/banners/SaveDisplayOrder\", {\r\n method: \"PUT\",\r\n withCredentials: true,\r\n credentials: \"include\",\r\n headers: {\r\n \"Authorization\": bearer,\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: data\r\n });\r\n\r\n if (response.ok) {\r\n ToastUtility.show({\r\n title: 'Banners', content: 'The display order was successfully updated!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n this.loadData();\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/banners/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Banners', content: 'The banners was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Banners', content: 'There was an error deleting the banners!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\nimport { Button, Modal, ModalFooter, ModalHeader, ModalBody, Label, Input, Row, Col } from 'reactstrap';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, GridComponent, Sort, Search, ExcelExport, Edit, Toolbar, ToolbarItems } from '@syncfusion/ej2-react-grids';\r\nimport { DatePickerComponent, TimePickerComponent } from '@syncfusion/ej2-react-calendars';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { TextBoxComponent, NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { HtmlEditor, Image, Inject, Count, Link, Toolbar as rteToolbar, QuickToolbar, RichTextEditorComponent } from '@syncfusion/ej2-react-richtexteditor';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { Context } from '../../helpers/Context';\r\n\r\nexport class BannerSections extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n Slug: '',\r\n Title: '',\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Banner Sections :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id == id });\r\n this.setState({ Id: data.id, Slug: data.slug, Title: data.title, AddedBy: data.addedBy, DateAdded: data.dateAdded, ModifiedBy: data.modifiedBy, DateModified: data.dateModified, Status: data.status, });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n Slug: '',\r\n Title: '',\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n valid &= fieldRequired(this.state.Slug, 'tbSlugError', '* required');\r\n valid &= fieldRequired(this.state.Title, 'tbTitleError', '* required');\r\n\r\n if (valid) {\r\n const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n this.state.AddedBy = data.addedBy;\r\n this.state.DateAdded = data.dateAdded;\r\n this.state.Id = data.id;\r\n this.state.Status = data.status;\r\n }\r\n else {\r\n this.state.Status = 1;\r\n }\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n return (\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n const { handleNavigate } = this.context;\r\n let contents = this.state.loading ?

    Loading...

    : BannerSections.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n

    Banner Sections

    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {contents}\r\n \r\n \r\n
    \r\n\r\n \r\n }>Edit Banner Sections\r\n \r\n
    \r\n this.setState({ Slug: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n this.setState({ Title: e.target.value })} />
    \r\n
    \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/bannersections', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Id: this.state.Id, Slug: this.state.Slug, Title: this.state.Title, AddedBy: this.state.AddedBy, DateAdded: this.state.DateAdded, ModifiedBy: this.state.ModifiedBy, DateModified: this.state.DateModified, Status: this.state.Status, }\r\n\r\n try {\r\n const response = await fetch('api/bannersections', {\r\n method: dataId == 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Banner Sections', content: 'The banner sections was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Banner Sections', content: 'There was an error saving the banner sections!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/bannersections/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Banner Sections', content: 'The banner sections was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Banner Sections', content: 'There was an error deleting the banner sections!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\nimport { Button, Modal, ModalFooter, ModalHeader, ModalBody, Label, Input, Row, Col } from 'reactstrap';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, GridComponent, Sort, Search, ExcelExport, Edit, Toolbar, ToolbarItems } from '@syncfusion/ej2-react-grids';\r\nimport { DatePickerComponent, TimePickerComponent } from '@syncfusion/ej2-react-calendars';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { TextBoxComponent, NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { HtmlEditor, Image, Inject, Count, Link, Toolbar as rteToolbar, QuickToolbar, RichTextEditorComponent } from '@syncfusion/ej2-react-richtexteditor';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { getAuthToken, getUserDetails } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { Context } from '../../helpers/Context';\r\n\r\nexport class ContactMessages extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-eye e-icons' } },\r\n ];\r\n\r\n this.fullToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', 'StrikeThrough',\r\n 'FontName', 'FontSize', 'FontColor', 'BackgroundColor',\r\n 'LowerCase', 'UpperCase', '|', 'Formats', 'Alignments', 'OrderedList', 'UnorderedList',\r\n 'Outdent', 'Indent', '|', 'CreateLink', 'Image', '|', 'ClearFormat',\r\n 'SourceCode', 'FullScreen', '|', 'Undo', 'Redo'\r\n ],\r\n type: 'Expand'\r\n };\r\n\r\n this.simpleToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', '|', 'ClearFormat', 'Undo', 'Redo', '|', 'SourceCode'],\r\n type: 'Expand'\r\n };\r\n\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n UserId: 0,\r\n ReasonId: 0,\r\n Firstname: '',\r\n Surname: '',\r\n Email: '',\r\n Mobile: '',\r\n IPAddress: '',\r\n DateSent: new Date(),\r\n DateAttended: new Date(),\r\n AttendedBy: 0,\r\n Status: 0,\r\n Message: '',\r\n Title: '',\r\n AdminName: '',\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Contact Messages :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id == id });\r\n console.log(data)\r\n this.setState({ Id: data.id, UserId: data.userId, ReasonId: data.reasonId, Firstname: data.firstname, Title: data.title, Surname: data.surname, AdminName: data.adminName, Email: data.email, Mobile: data.mobile, IPAddress: data.iPAddress, DateSent: data.dateSent, DateAttended: data.dateAttended, AttendedBy: data.attendedBy, Status: data.status, Message: data.message, });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n UserId: 0,\r\n ReasonId: 0,\r\n Firstname: '',\r\n Surname: '',\r\n Email: '',\r\n Mobile: '',\r\n IPAddress: '',\r\n DateSent: new Date(),\r\n DateAttended: new Date(),\r\n AttendedBy: 0,\r\n Status: 0,\r\n Message: '',\r\n Title: '',\r\n AdminName: '',\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n //valid &= fieldRequired(this.state.Firstname, 'tbFirstnameError', '* required');\r\n //valid &= fieldRequired(this.state.Surname, 'tbSurnameError', '* required');\r\n //valid &= fieldRequired(this.state.Email, 'tbEmailError', '* required');\r\n //valid &= fieldRequired(this.state.Mobile, 'tbMobileError', '* required');\r\n //valid &= fieldRequired(this.state.IPAddress, 'tbIPAddressError', '* required');\r\n //valid &= fieldRequired(this.state.DateSent, 'tbDateSentError', '* required');\r\n //valid &= fieldRequired(this.state.Message, 'tbMessageError', '* required');\r\n\r\n if (valid) {\r\n const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n this.state.AddedBy = data.addedBy;\r\n this.state.DateAdded = data.dateAdded;\r\n this.state.Id = data.id;\r\n this.state.Status = data.status;\r\n }\r\n else {\r\n this.state.Status = 1;\r\n }\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n return (\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n { return ({new Date(props.dateSent).toDateString()}); }} />\r\n \r\n { return ({props.attendedBy ? new Date(props.dateAttended).toDateString() : \"\"}); }} />\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n let contents = this.state.loading ?

    Loading...

    : ContactMessages.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n const { handleNavigate } = this.context;\r\n console.log(this.state)\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n

    Contact Messages

    \r\n \r\n \r\n \r\n {/**/}\r\n \r\n
    \r\n \r\n \r\n {contents}\r\n \r\n \r\n
    \r\n\r\n \r\n }>Customer Contact Message\r\n \r\n\r\n
    \r\n
    \r\n Contact Reason: {this.state.Title}\r\n
    \r\n
    \r\n First Name: {this.state.Firstname}\r\n
    \r\n
    \r\n Surname: {this.state.Surname}\r\n
    \r\n
    \r\n Email Address: {this.state.Email}\r\n
    \r\n
    \r\n Mobile Number: {this.state.Mobile}\r\n
    \r\n
    \r\n IP Address: {this.state.IPAddress ? this.state.IPAddress : \"N/A\"}\r\n
    \r\n
    \r\n Date Sent: {new Date(this.state.DateSent).toLocaleString()}\r\n
    \r\n
    \r\n Date Attended: {this.state.DateAttended ? new Date(this.state.DateAttended).toLocaleString() : \"N/A\"}\r\n
    \r\n
    \r\n Attended By: {this.state.AttendedBy ? this.state.AdminName : \"N/A\"}\r\n
    \r\n
    \r\n Message:\r\n
    \r\n {this.state.Message}\r\n
    \r\n
    \r\n {/*
    */}\r\n {/* this.setState({ AttendedBy: e.target.value })} />
    */}\r\n {/*
    */}\r\n\r\n \r\n \r\n \r\n {!this.state.DateAttended && }\r\n \r\n \r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/contactmessages', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n const userId = getUserDetails().id\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Id: this.state.Id, UserId: this.state.UserId, ReasonId: this.state.ReasonId, Firstname: this.state.Firstname, Surname: this.state.Surname, Email: this.state.Email, Mobile: this.state.Mobile, IPAddress: this.state.IPAddress ? this.state.IPAddress : \"\", DateSent: this.state.DateSent, DateAttended: new Date(), AttendedBy: userId, Status: this.state.Status, Message: this.state.Message, }\r\n\r\n try {\r\n const response = await fetch('api/contactmessages', {\r\n method: 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Contact Messages', content: 'The contact messages was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Contact Messages', content: 'There was an error saving the contact messages!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/contactmessages/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Contact Messages', content: 'The contact messages was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Contact Messages', content: 'There was an error deleting the contact messages!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\nimport { Button, Modal, ModalFooter, ModalHeader, ModalBody, Label, Input, Row, Col } from 'reactstrap';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, GridComponent, Sort, Search, ExcelExport, Edit, Toolbar, ToolbarItems } from '@syncfusion/ej2-react-grids';\r\nimport { DatePickerComponent, TimePickerComponent } from '@syncfusion/ej2-react-calendars';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { TextBoxComponent, NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { HtmlEditor, Image, Inject, Count, Link, Toolbar as rteToolbar, QuickToolbar, RichTextEditorComponent } from '@syncfusion/ej2-react-richtexteditor';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { Context } from '../../helpers/Context';\r\n\r\nexport class ContactReasons extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n Title: '',\r\n Destination: '',\r\n CCAddress: '',\r\n DisplayOrder: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Contact Reasons :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id == id });\r\n this.setState({ Id: data.id, Title: data.title, Destination: data.destination, CCAddress: data.ccAddress, DisplayOrder: data.displayOrder, AddedBy: data.addedBy, DateAdded: data.dateAdded, ModifiedBy: data.modifiedBy, DateModified: data.dateModified, Status: data.status, });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n Title: '',\r\n Destination: '',\r\n CCAddress: '',\r\n DisplayOrder: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n valid &= fieldRequired(this.state.Title, 'tbTitleError', '* required');\r\n valid &= fieldRequired(this.state.Destination, 'tbDestinationError', '* required');\r\n //valid &= fieldRequired(this.state.DisplayOrder, 'tbDisplayOrderError', '* required');\r\n\r\n if (valid) {\r\n const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n this.state.AddedBy = data.addedBy;\r\n this.state.DateAdded = data.dateAdded;\r\n this.state.Id = data.id;\r\n this.state.Status = data.status;\r\n }\r\n else {\r\n this.state.Status = 1;\r\n }\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n return (\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n let contents = this.state.loading ?

    Loading...

    : ContactReasons.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n const { handleNavigate } = this.context;\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n

    Contact Reasons

    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {contents}\r\n \r\n \r\n
    \r\n\r\n \r\n }>Edit Contact Reasons\r\n \r\n
    \r\n this.setState({ Title: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n
    \r\n this.setState({ Destination: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n this.setState({ CCAddress: e.target.value })} />
    \r\n
    \r\n
    \r\n\r\n {/*
    */}\r\n {/* this.setState({ DisplayOrder: e.target.value })} />
    */}\r\n {/*
    */}\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/contactreasons', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Id: this.state.Id, Title: this.state.Title, Destination: this.state.Destination, CCAddress: this.state.CCAddress, DisplayOrder: this.state.DisplayOrder, AddedBy: this.state.AddedBy, DateAdded: this.state.DateAdded, ModifiedBy: this.state.ModifiedBy, DateModified: this.state.DateModified, Status: this.state.Status, }\r\n\r\n try {\r\n const response = await fetch('api/contactreasons', {\r\n method: dataId == 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Contact Reasons', content: 'The contact reasons was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Contact Reasons', content: 'There was an error saving the contact reasons!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/contactreasons/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Contact Reasons', content: 'The contact reasons was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Contact Reasons', content: 'There was an error deleting the contact reasons!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","var _excluded = [\"className\", \"cssModule\", \"color\", \"body\", \"inverse\", \"outline\", \"tag\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Toggles card padding using `.card-body` */\n body: PropTypes.bool,\n /** Add custom class */\n className: PropTypes.string,\n /** Change background color of component */\n color: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func]),\n /** Inverts the color */\n inverse: PropTypes.bool,\n /** Changes the card to have only outline */\n outline: PropTypes.bool,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction Card(props) {\n var className = props.className,\n cssModule = props.cssModule,\n color = props.color,\n body = props.body,\n inverse = props.inverse,\n outline = props.outline,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n innerRef = props.innerRef,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'card', inverse ? 'text-white' : false, body ? 'card-body' : false, color ? \"\".concat(outline ? 'border' : 'bg', \"-\").concat(color) : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n ref: innerRef\n }));\n}\nCard.propTypes = propTypes;\nexport default Card;","var _excluded = [\"className\", \"cssModule\", \"innerRef\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func]),\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction CardBody(props) {\n var className = props.className,\n cssModule = props.cssModule,\n innerRef = props.innerRef,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'card-body'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n ref: innerRef\n }));\n}\nCardBody.propTypes = propTypes;\nexport default CardBody;","/* eslint-disable default-case */\r\nimport React, { Component } from 'react';\r\nimport { Button, Modal, ModalFooter, ModalHeader, ModalBody, Label, Input, Row, Col, Card, CardBody } from 'reactstrap';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, GridComponent, Sort, Search, ExcelExport, Edit, Toolbar, ToolbarItems } from '@syncfusion/ej2-react-grids';\r\nimport { DatePickerComponent, TimePickerComponent } from '@syncfusion/ej2-react-calendars';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { TextBoxComponent, NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { HtmlEditor, Image, Inject, Count, Link, Toolbar as rteToolbar, QuickToolbar, RichTextEditorComponent } from '@syncfusion/ej2-react-richtexteditor';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { getAuthToken, getUserDetails } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { Context } from '../../helpers/Context';\r\n\r\nexport class FAQs extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n this.fullToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', 'StrikeThrough',\r\n 'FontName', 'FontSize', 'FontColor', 'BackgroundColor',\r\n 'LowerCase', 'UpperCase', '|', 'Formats', 'Alignments', 'OrderedList', 'UnorderedList',\r\n 'Outdent', 'Indent', '|', 'CreateLink', 'Image', '|', 'ClearFormat',\r\n 'SourceCode', 'FullScreen', '|', 'Undo', 'Redo'\r\n ],\r\n type: 'Expand'\r\n };\r\n\r\n this.simpleToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', '|', 'ClearFormat', 'Undo', 'Redo', '|', 'SourceCode'],\r\n type: 'Expand'\r\n };\r\n\r\n\r\n this.state = {\r\n editData: [], ParentList: [], FilterHeadingId: 0, loading: true, editModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n Title: '',\r\n Copy: '',\r\n ParentId: 0,\r\n Type: 1,\r\n DisplayOrder: 0,\r\n DateAdded: new Date(),\r\n AddedBy: 0,\r\n DateModified: new Date(),\r\n ModifiedBy: 0,\r\n Status: 0,\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.renderDataTable = this.renderDataTable.bind(this);\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"FAQs Administration\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id === id });\r\n console.log(data);\r\n this.setState({ Id: data.id, Title: data.title, Copy: data.copy, ParentId: data.parentId, DateAdded: data.dateAdded, AddedBy: data.addedBy, DateModified: data.dateModified, ModifiedBy: data.modifiedBy, Status: data.status, });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n Title: '',\r\n Copy: '',\r\n ParentId: 0,\r\n DisplayOrder: 0,\r\n DateAdded: new Date(),\r\n AddedBy: getUserDetails().id,\r\n DateModified: new Date(),\r\n ModifiedBy: getUserDetails().id,\r\n Status: 0,\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n\r\n valid &= fieldRequired(this.state.Title, \"errTitle\", \"* Required\");\r\n\r\n if (valid) {\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n console.log(args)\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n renderDataTable(data, type, gridCommands, gridToolbar, commandClick) {\r\n\r\n let FilteredData = data.filter(c => c.type === type);\r\n\r\n if (type > 1)\r\n FilteredData = FilteredData.filter(c => c.parentId === this.state.FilterHeadingId);\r\n\r\n const HeadingFilterData = [{ id: 0, title: \"No Heading\" }, ...data.filter(c => c.type === 1)]\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 {type === 1 ?\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n FAQs.GetHeading(data, colData)} />\r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n }\r\n\r\n static GetHeading(data, colData) {\r\n\r\n if (colData.parentId > 0)\r\n return data.find(c => c.id === colData.parentId).title;\r\n else\r\n return \"No Heading\";\r\n }\r\n\r\n render() {\r\n const { handleNavigate } = this.context;\r\n let contents = this.state.loading ?

    Loading...

    : this.renderDataTable(this.state.editData, this.state.Type, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n

    FAQs Administration

    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {contents}\r\n \r\n \r\n
    \r\n\r\n \r\n }>Edit FAQs\r\n \r\n
    \r\n \r\n {/* this.setState({ Title: e.value })} >\r\n \r\n
    */}\r\n\r\n this.setState({ Title: e.target.value })} className='form-control form-control-sm' />\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n this.setState({ Copy: e.value })} >\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/faqs', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n\r\n const ParentList = [{ id: 0, title: \"- None -\" }, ...data.filter(c => c.type === 1)];\r\n this.setState({ editData: data, ParentList, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Title: this.state.Title, Copy: this.state.Copy, ParentId: this.state.ParentId, Type: this.state.Type, DisplayOrder: this.state.DisplayOrder, DateAdded: this.state.DateAdded, AddedBy: this.state.AddedBy, DateModified: this.state.DateModified, ModifiedBy: this.state.ModifiedBy, Status: this.state.Status, }\r\n\r\n try {\r\n const response = await fetch('api/faqs', {\r\n method: 'POST',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'FAQs', content: 'The faqs was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n else\r\n ToastUtility.show({\r\n title: 'FAQs', content: 'There was an error saving faqs!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'FAQs', content: 'There was an error saving the faqs!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/faqs/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'FAQs', content: 'The faqs was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n ToastUtility.show({\r\n title: 'FAQs', content: 'There was an error deleting the faqs!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'FAQs', content: 'There was an error deleting the faqs!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import { Category, ChartComponent, ColumnSeries, DataLabel, Inject, Legend, LineSeries, SeriesCollectionDirective, SeriesDirective, Tooltip } from '@syncfusion/ej2-react-charts';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport React, { Component } from 'react';\r\nimport DatePicker from \"react-datepicker\";\r\nimport moment from 'moment';\r\nimport ExcelJS from 'exceljs'\r\nimport { saveAs } from 'file-saver';\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Col, Pagination, PaginationItem, PaginationLink, Row, Table, Button, Label, Modal, ModalFooter, ModalHeader, ModalBody } from 'reactstrap';\r\nimport { getAuthToken, getUserDetails } from '../../helpers/authentication';\r\nimport { Context } from '../../helpers/Context';\r\nimport { getCurrentDomain } from '../../helpers/Lookup';\r\n\r\nexport class OrderDashboard extends Component {\r\n //static endDate = new Date().toLocaleDateString('en-US', OrderDashboard.options);\r\n //static startDate = new Date().toLocaleDateString('en-US', OrderDashboard.options);\r\n static options = {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n };\r\n static endDate = moment().add(1, \"days\").format(\"yyyy-MM-DD\");\r\n static startDate = moment().add(-7, \"days\").format(\"yyyy-MM-DD\");\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, notesModal: false, viewNotesModal: false,\r\n transactionHistory:[],\r\n Id: 0,\r\n Slug: '',\r\n Title: '',\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n reportStartDate: OrderDashboard.startDate, reportEndDate: OrderDashboard.endDate,\r\n dateRange: [{ startDate: new Date(OrderDashboard.startDate), endDate: new Date(OrderDashboard.endDate), key: \"selection\" }],\r\n reportRange: [null, null],\r\n Status: 0,\r\n ReportData: [],\r\n primaryXAxis: { valueType: 'Category' },\r\n selectAll: false,\r\n selectedItems: [],\r\n currentPage: 1,\r\n itemsPerPage: 10,\r\n UserList: [],\r\n orderBy: \"OrderIDDown\",\r\n Statuses: [\r\n { id: 1, name: 'Pending Payment' },\r\n { id: 2, name: 'Pending Delivery' },\r\n { id: 3, name: 'Complete' },\r\n { id: 10, name: 'User Cancelled' },\r\n ],\r\n searchQuery: '',\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.toggleNotesEdit = this.toggleNotesEdit.bind(this);\r\n this.toggleNotesView = this.toggleNotesView.bind(this);\r\n this.sortBy = this.sortBy.bind(this);\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n toggleNotesEdit() {\r\n this.setState({\r\n notesModal: !this.state.notesModal\r\n });\r\n }\r\n\r\n toggleNotesView() {\r\n this.setState({\r\n viewNotesModal: !this.state.viewNotesModal\r\n });\r\n }\r\n\r\n sortBy(header) {\r\n if (this.state.orderBy.includes(header)) {\r\n if (this.state.orderBy.includes(\"Down\")) {\r\n this.setState({ orderBy: header + \"Up\" })\r\n } else {\r\n this.setState({ orderBy: header + \"Down\" })\r\n }\r\n } else {\r\n this.setState({ orderBy: header + \"Down\" })\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Order Dashboard :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n updateDateRange = async (event) => {\r\n let startDate = event[0].toLocaleDateString('en-US', OrderDashboard.options);\r\n let endDate = event[1].toLocaleDateString('en-US', OrderDashboard.options);\r\n this.setState({ reportStartDate: startDate, reportEndDate: endDate }, e => {\r\n this.setDefaultDate();\r\n });\r\n }\r\n\r\n setDefaultDate = () => {\r\n let workDate = new Date(this.state.reportStartDate);\r\n let dateRange = []\r\n\r\n while (workDate < new Date(this.state.reportEndDate)) {\r\n let newDate = new Date(workDate.toDateString());\r\n dateRange.push(newDate);\r\n workDate.setDate(workDate.getDate() + 1);\r\n }\r\n this.setState({ dateRange: dateRange, loading: true });\r\n this.loadData()\r\n }\r\n\r\n handleStatusChange = (order, selectedStatus, event) => {\r\n //console.log(selectedStatus, event)\r\n //event.stopPropagation();\r\n const data = {\r\n Amount: order.amount,\r\n CartId: order.cartId,\r\n DateComplete: selectedStatus === 3 ? new Date() : order.dateComplete,\r\n DateStarted: order.dateStarted,\r\n DateSubmitted: order.dateSubmitted,\r\n DeliveryAddressId: order.deliveryAddressId,\r\n DeliveryFee: order.deliveryFee,\r\n DeliveryMessage: order.deliveryMessage,\r\n DeliveryMeta: order.deliveryMeta,\r\n Id: order.id,\r\n Instructions: order.instructions,\r\n NumItems: order.numItems,\r\n OrderId: order.orderId,\r\n orderType: order.orderType,\r\n PaymentMessage: order.paymentMessage,\r\n PaymentMeta: order.paymentMeta,\r\n PromoCode: order.promoCode,\r\n Status: selectedStatus,\r\n StatusMessage: this.state.Statuses.find(item => { return item.id === selectedStatus }).name,\r\n StockCheck: order.stockCheck,\r\n UseCredit: order.useCredit,\r\n UserId: order.userId,\r\n Vat: order.vat,\r\n }\r\n\r\n if (event.isInteracted) this.updateStaus(data);\r\n\r\n }\r\n\r\n exportSurveyReport = (data) => {\r\n //console.log(data)\r\n if (data.length) {\r\n const filteredItems = data.filter(item => this.state.selectedItems.includes(item.id)).map(item => ({ ...item, orderId: \"TC\" + item.orderId.toString().padStart(4, '0'), deliveryFee: new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', }).format(item.deliveryFee), amount: new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', }).format(item.amount) }));\r\n\r\n let overview = filteredItems\r\n const workbook = new ExcelJS.Workbook()\r\n const worksheet = workbook.addWorksheet('TriggerCraft Orders')\r\n worksheet.columns = [\r\n { header: 'OrderID', key: 'orderId', width: 10 },\r\n { header: 'First Name', key: 'firstName', width: 20 },\r\n { header: 'First Name', key: 'lastName', width: 20 },\r\n { header: 'Date Started', key: 'dateStarted', width: 30 },\r\n { header: 'Date Submitted', key: 'dateSubmitted', width: 30 },\r\n { header: 'Date Completed', key: 'dateComplete', width: 30 },\r\n { header: 'Delivery Fee', key: 'deliveryFee', width: 15, style: { alignment: { horizontal: 'right' } } },\r\n { header: 'Status Message', key: 'statusMessage', width: 40 },\r\n { header: 'Payment Message', key: 'paymentMessage', width: 40 },\r\n { header: 'Amount', key: 'amount', width: 15, style: { alignment: { horizontal: 'right' } } },\r\n { header: 'Payment Meta', key: 'paymentMeta', width: 100 },\r\n ];\r\n worksheet.addRows(overview);\r\n\r\n workbook.xlsx.writeBuffer().then((buffer) => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n })\r\n saveAs(blob, `Order_Report_(${new Date().toISOString().split(\"T\")[0]}).xlsx`);\r\n\r\n })\r\n } else {\r\n alert('No Data to Export')\r\n }\r\n }\r\n\r\n toggleSelectAll = () => {\r\n const { selectAll } = this.state;\r\n this.setState({\r\n selectAll: !selectAll,\r\n selectedItems: !selectAll ? this.state.editData.map(item => item.id) : [],\r\n });\r\n };\r\n\r\n toggleItem = (id) => {\r\n const { selectedItems } = this.state;\r\n if (selectedItems.includes(id)) {\r\n this.setState({\r\n selectedItems: selectedItems.filter(id => id !== id),\r\n });\r\n } else {\r\n this.setState({\r\n selectedItems: [...selectedItems, id],\r\n });\r\n }\r\n };\r\n\r\n handlePageClick = (page) => {\r\n this.setState({ currentPage: page });\r\n };\r\n\r\n getUserName = (id) => {\r\n const name = this.state.UserList.find(item => { return item.id === id })\r\n //console.log(id, name)\r\n return `${name.firstName} ${name.lastName}`\r\n };\r\n\r\n handleSearchInputChange = (e) => {\r\n this.setState({ searchQuery: e.target.value });\r\n };\r\n\r\n viewOrder = async (id) => {\r\n const { getUserAddressAdmin } = this.context;\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id == id });\r\n try {\r\n let address = await getUserAddressAdmin(data.deliveryAddressId);\r\n\r\n this.setState({\r\n currentOrder: data.orderData,\r\n grandTotal: data.amount,\r\n deliveryFee: data.deliveryFee,\r\n instructions: data.instructions,\r\n selectedAddress: address,\r\n statusMessage: data.statusMessage,\r\n fullName: `${data.firstName} ${data.lastName}`,\r\n emailAddress: data.emailAddress,\r\n adminNotes: data.notes,\r\n });\r\n } catch (error) {\r\n console.error(\"Error fetching user address:\", error);\r\n }\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n Description: '',\r\n instructions: '',\r\n statusMessage: '',\r\n MaxUses: 0,\r\n NumUses: 0,\r\n StartDate: new Date(),\r\n EndDate: new Date(),\r\n Type: 0,\r\n Amount: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n deliveryFee: 0,\r\n grandTotal: 0,\r\n currentOrder: [],\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true, AdminNote: \"\" });\r\n };\r\n\r\n renderTableRows = () => {\r\n const { selectAll, selectedItems, currentPage, itemsPerPage, editData, searchQuery, Statuses } = this.state;\r\n const indexOfLastItem = currentPage * itemsPerPage;\r\n const indexOfFirstItem = indexOfLastItem - itemsPerPage;\r\n const filteredItems = editData\r\n .filter((item) =>\r\n item.orderId.toString().includes(searchQuery) ||\r\n `${item.firstName} ${item.lastName}`.toLowerCase().includes(searchQuery.toLowerCase()) ||\r\n new Date(item.dateStarted).toDateString().toLowerCase().includes(searchQuery.toLowerCase()) ||\r\n item.statusMessage.toLowerCase().includes(searchQuery.toLowerCase()) ||\r\n item.amount.toString().includes(searchQuery)\r\n )\r\n .slice(indexOfFirstItem, indexOfLastItem);\r\n\r\n return filteredItems.sort((a, b) => {\r\n\r\n switch (this.state.orderBy) {\r\n case \"OrderIDDown\":\r\n return b.orderId - a.orderId;\r\n case \"CustomerDown\":\r\n return a.firstName.localeCompare(b.firstName);\r\n case \"CustomerUp\":\r\n return b.firstName.localeCompare(a.firstName);\r\n case \"DateDown\":\r\n return new Date(a.dateSubmitted) - new Date(b.dateSubmitted);\r\n case \"DateUp\":\r\n return new Date(b.dateSubmitted) - new Date(a.dateSubmitted);\r\n case \"AmountDown\":\r\n return a.amount - b.amount;\r\n case \"AmountUp\":\r\n return b.amount - a.amount;\r\n default:\r\n return a.orderId - b.orderId;\r\n }\r\n }).map((item, index) => (\r\n \r\n \r\n this.toggleItem(item.id)}\r\n />\r\n \r\n this.viewOrder(item.id)}>{\"TC\" + item.orderId.toString().padStart(4, '0')}\r\n this.viewOrder(item.id)}>{`${item.firstName} ${item.lastName}`}\r\n this.viewOrder(item.id)}>{item.dateSubmitted ? new Date(item.dateSubmitted).toDateString() : \"\"}\r\n \r\n this.handleStatusChange(item, e.value, e)} />\r\n \r\n this.viewOrder(item.id)}>{new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', }).format(item.amount)}\r\n \r\n ));\r\n };\r\n\r\n render() {\r\n const { selectAll, currentPage, itemsPerPage } = this.state;\r\n const totalItems = this.state.editData.length;\r\n const totalPages = Math.ceil(totalItems / itemsPerPage);\r\n const { handleNavigate } = this.context;\r\n //const { currentPage, itemsPerPage } = this.state;\r\n //const indexOfLastItem = currentPage * itemsPerPage;\r\n //const indexOfFirstItem = indexOfLastItem - itemsPerPage;\r\n //const currentItems = data.slice(indexOfFirstItem, indexOfLastItem);\r\n //const totalPages = Math.ceil(data.length / itemsPerPage);\r\n //console.log(this.state)\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n

    Order Dashboard

    \r\n \r\n \r\n \r\n Admin dashboard \r\n \r\n
    \r\n \r\n \r\n
    \r\n Filter\r\n
    \r\n
    \r\n \r\n
    \r\n [this.setState({ reportRange: update, storeLoader: true, channelLoader: true }), update[1] && this.updateDateRange(update)]}\r\n isClearable={false} />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {this.state.loading ?

    Loading...

    : \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n \r\n {this.state.loading ?

    Loading...

    : \r\n
    \r\n {this.state.selectedItems.length ? :\r\n }\r\n \r\n\r\n <>\r\n
    \r\n \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.renderTableRows()}\r\n \r\n
    \r\n \r\n this.sortBy(\"OrderID\")}>OrderID this.sortBy(\"Customer\")}>Customer this.sortBy(\"Date\")}>DateStatus this.sortBy(\"Amount\")}>Amount
    \r\n
    \r\n\r\n \r\n \r\n this.handlePageClick(currentPage - 1)} />\r\n \r\n {[...Array(totalPages)].map((_, i) => (\r\n \r\n this.handlePageClick(i + 1)}>{i + 1}\r\n \r\n ))}\r\n \r\n this.handlePageClick(currentPage + 1)} />\r\n \r\n \r\n \r\n
    \r\n }\r\n
    \r\n
    \r\n\r\n \r\n }>Order Details\r\n \r\n
    \r\n

    Product Info

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.currentOrder && this.state.currentOrder.map((data, index) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    Product NameProduct IDSKUQuantityPayment StatusSub TotalTotal
    {data.Title}{data.ProductId}{data.Sku}{data.Qty}{this.state.statusMessage}{new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', }).format(data.PriceCharged)}{new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', }).format(data.TotalCharged)}
    \r\n

    Customer Details

    \r\n {this.state.editModal && <>\r\n

    Customer Name: {this.state.fullName}

    \r\n

    Email: {this.state.emailAddress}

    \r\n

    Address: {this.state.selectedAddress.address}

    \r\n

    Company: {this.state.selectedAddress.company}

    \r\n

    Apartment: {this.state.selectedAddress.apartment}

    \r\n

    Suburb: {this.state.selectedAddress.suburb}

    \r\n

    City: {this.state.selectedAddress.city}

    \r\n

    Province: {this.state.selectedAddress.province}

    \r\n

    Postal Code: {this.state.selectedAddress.postalCode}

    \r\n

    Mobile Number: {this.state.selectedAddress.mobileNumber}

    \r\n

    Instructions: {this.state.instructions}

    }\r\n
    \r\n
    \r\n TOTAL\r\n {new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', }).format(this.state.currentOrder && this.state.currentOrder.reduce((previousValue, currentValue) => {\r\n return previousValue + currentValue.TotalCharged;\r\n }, 0))}\r\n
    \r\n
    \r\n DELIVERY FEE\r\n {new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', }).format(this.state.deliveryFee)}\r\n
    \r\n
    \r\n GRAND TOTAL\r\n {new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', }).format(this.state.grandTotal)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.state.adminNotes?.length > 0 ? :
    }\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n }>Add Note\r\n \r\n
    \r\n this.setState({ AdminNote: e.target.value })} />
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n }>Admin Notes\r\n \r\n
    \r\n {this.state.adminNotes?.length > 0 ? this.state.adminNotes.map((item, index) => (\r\n
    \r\n {item.UserName} - {new Date(item.DateAdded).toDateString()}\r\n

    \r\n {item.AdminNote}\r\n
    )) :\r\n
    No notes for this order
    }\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n const { getAllProducts } = this.context;\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/cart', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n let data = await response.json();\r\n data = data.map(item => ({ ...item, orderData: JSON.parse(item.orderData), notes: JSON.parse(item.notes) })).filter(item => item.status !== 0)\r\n //data = data.filter(item => item.status !== 0)\r\n this.setState({ editData: data, ProductList: await getAllProducts() });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n try {\r\n const response = await fetch(`api/cart/getsalesdata/${this.state.reportStartDate}/${this.state.reportEndDate}`, {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n let data = await response.json();\r\n //console.log(data)\r\n this.setState({ ReportData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n try {\r\n const response = await fetch(`api/cart/getpayfasthistory`, {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n let data = await response.json();\r\n console.log(data)\r\n this.setState({ transactionHistory: data});\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveNote() {\r\n const userData = getUserDetails();\r\n this.setState({ loading: true, showError: false, showSuccess: false, notesModal: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: 0, CartId: this.state.editId, AdminNote: this.state.AdminNote, AddedBy: userData.id, DateAdded: new Date(), Status: 1, }\r\n\r\n try {\r\n const response = await fetch('api/adminordernotes', {\r\n method: 'POST',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n await this.loadData();\r\n this.viewOrder(this.state.editId);\r\n ToastUtility.show({\r\n title: 'Admin Notes', content: 'The admin note was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Admin Notes', content: 'There was an error saving the admin note!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async updateStaus(data) {\r\n const { sendCustomEvent } = this.context;\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n\r\n try {\r\n const response = await fetch('api/cart', {\r\n method: 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Order Status', content: 'The order status was successfully updated!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n sendCustomEvent(\"Order Status\", \"Updated Order Status\", `${data.Status}`)\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Order Status', content: 'There was an error updating the order status!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/bannersections/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Order Dashboard', content: 'The Order was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Order Dashboard', content: 'There was an error deleting the Order!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\nimport { Button, Modal, ModalFooter, ModalHeader, ModalBody, Label, Input, Row, Col } from 'reactstrap';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, GridComponent, Sort, Search, ExcelExport, Edit, Toolbar, ToolbarItems } from '@syncfusion/ej2-react-grids';\r\nimport { DatePickerComponent, TimePickerComponent } from '@syncfusion/ej2-react-calendars';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { TextBoxComponent, NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { HtmlEditor, Image, Inject, Count, Link, Toolbar as rteToolbar, QuickToolbar, RichTextEditorComponent } from '@syncfusion/ej2-react-richtexteditor';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { getAuthToken, getUserDetails } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { Context } from '../../helpers/Context';\r\nimport { BannerThumbnails } from '../BannerThumbnails';\r\nimport { IsDevEnv } from '../../helpers/Lookup';\r\n\r\nexport class PageContent extends Component {\r\n static contextType = Context;\r\n\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n ];\r\n\r\n this.fullToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', 'StrikeThrough',\r\n 'FontName', 'FontSize', 'FontColor', 'BackgroundColor',\r\n 'LowerCase', 'UpperCase', '|', 'Formats', 'Alignments', 'OrderedList', 'UnorderedList',\r\n 'Outdent', 'Indent', '|', 'CreateLink', 'Image', '|', 'ClearFormat',\r\n 'SourceCode', 'FullScreen', '|', 'Undo', 'Redo'\r\n ],\r\n type: 'Expand'\r\n };\r\n\r\n this.simpleToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', '|', 'ClearFormat', 'Undo', 'Redo', '|', 'SourceCode'],\r\n type: 'Expand'\r\n };\r\n\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n Slug: '',\r\n AdminTitle: '',\r\n Title: '',\r\n Banners: '',\r\n Copy: '',\r\n MetaKeywords: '',\r\n MetaDescription: '',\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n NewBannerData: \"\"\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.handleUpdatedBannerUrls = this.handleUpdatedBannerUrls.bind(this);\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Page Content :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id === id });\r\n this.setState({ Id: data.id, Title: data.title, Slug: data.slug, Banners: data.banners, Copy: data.copy, MetaKeywords: data.metaKeywords, MetaDescription: data.metaDescription, AddedBy: data.addedBy, DateAdded: data.dateAdded, ModifiedBy: data.modifiedBy, DateModified: data.dateModified, Status: data.status, });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n Slug: '',\r\n AdminTitle: '',\r\n Title: '',\r\n Banners: '',\r\n Copy: '',\r\n MetaKeywords: '',\r\n MetaDescription: '',\r\n AddedBy: getUserDetails().id,\r\n DateAdded: new Date(),\r\n ModifiedBy: getUserDetails().id,\r\n DateModified: new Date(),\r\n Status: 0,\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true, NewBannerData: \"\" });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n // valid &= fieldRequired(this.state.Slug, 'tbSlugError', '* required');\r\n // valid &= fieldRequired(this.state.AdminTitle, 'tbAdminTitleError', '* required');\r\n valid &= fieldRequired(this.state.Title, 'tbTitleError', '* required');\r\n // valid &= fieldRequired(this.state.Banners, 'tbBannersError', '* required');\r\n valid &= fieldRequired(this.state.Copy, 'tbCopyError', '* required');\r\n\r\n if (valid) {\r\n // const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n // if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n // this.state.AddedBy = data.addedBy;\r\n // this.state.DateAdded = data.dateAdded;\r\n // this.state.Id = data.id;\r\n // this.state.Status = data.status;\r\n // }\r\n // else {\r\n // this.state.Status = 1;\r\n // }\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n return (\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n let contents = this.state.loading ?

    Loading...

    : PageContent.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n const { handleNavigate } = this.context;\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n

    Page Content

    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {contents}\r\n \r\n \r\n
    \r\n\r\n \r\n }>Edit Page Content\r\n \r\n \r\n
    \r\n this.setState({ Title: e.target.value })} />
    \r\n
    \r\n
    \r\n this.setState({ Slug: e.target.value })} />
    \r\n
    \r\n\r\n {/*
    \r\n \r\n this.setState({ Banners: e.value })} >\r\n \r\n
    \r\n
    */}\r\n\r\n
    \r\n \r\n this.setState({ Copy: e.value })} >\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n this.setState({ MetaKeywords: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n this.setState({ MetaDescription: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n\r\n\r\n handleUpdatedBannerUrls = (updatedUrls) => {\r\n console.log(updatedUrls);\r\n this.setState({ NewBannerData: updatedUrls[0] });\r\n }\r\n\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/pagecontent', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Slug: this.state.Slug, Title: this.state.Title, Copy: this.state.Copy, MetaKeywords: this.state.MetaKeywords, MetaDescription: this.state.MetaDescription, AddedBy: this.state.AddedBy, DateAdded: this.state.DateAdded, ModifiedBy: this.state.ModifiedBy, DateModified: this.state.DateModified, Status: this.state.Status, NewBannerData: this.state.NewBannerData }\r\n\r\n try {\r\n const response = await fetch('api/pagecontent', {\r\n method: 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Page Content', content: 'The page content was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n else\r\n ToastUtility.show({\r\n title: 'Page Content', content: 'There was an error saving the page content!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Page Content', content: 'There was an error saving the page content!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/pagecontent/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Page Content', content: 'The page content was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Page Content', content: 'There was an error deleting the page content!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import { RowModelGenerator } from '../services/row-model-generator';\nimport { splitFrozenRowObjectCells } from '../base/util';\n/**\n * FreezeRowModelGenerator is used to generate grid data rows with freeze row and column.\n *\n * @hidden\n */\nvar FreezeRowModelGenerator = /** @class */ (function () {\n function FreezeRowModelGenerator(parent) {\n this.parent = parent;\n this.rowModelGenerator = new RowModelGenerator(this.parent);\n }\n FreezeRowModelGenerator.prototype.generateRows = function (data, notifyArgs, virtualRows) {\n var tableName;\n if (notifyArgs.renderFrozenRightContent || (notifyArgs.renderMovableContent && !this.parent.enableVirtualization)) {\n tableName = 'frozen-right';\n }\n else if (notifyArgs.renderMovableContent || notifyArgs.isFrozen) {\n tableName = 'movable';\n }\n else {\n tableName = this.parent.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n }\n if (notifyArgs.requestType === 'virtualscroll' && notifyArgs.virtualInfo.sentinelInfo.axis === 'X') {\n if (tableName !== 'movable') {\n return null;\n }\n }\n var row = this.parent.enableVirtualization && !notifyArgs.isFrozenRowsRender ? virtualRows\n : this.rowModelGenerator.generateRows(data, notifyArgs);\n for (var i = 0, len = row.length; i < len; i++) {\n row[parseInt(i.toString(), 10)].cells =\n splitFrozenRowObjectCells(this.parent, row[parseInt(i.toString(), 10)].cells, tableName);\n }\n return row;\n };\n return FreezeRowModelGenerator;\n}());\nexport { FreezeRowModelGenerator };\n","import { isNullOrUndefined, remove, extend } from '@syncfusion/ej2-base';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { FreezeRowModelGenerator } from '../services/freeze-row-model-generator';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport * as events from '../base/constant';\nimport { getScrollBarWidth, getEditedDataIndex, resetRowIndex, setRowElements, getRowIndexFromElement, getGroupKeysAndFields, getPredicates, generateExpandPredicates } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * Infinite Scrolling class\n *\n * @hidden\n */\nvar InfiniteScroll = /** @class */ (function () {\n /**\n * Constructor for the Grid infinite scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n function InfiniteScroll(parent, serviceLocator) {\n this.infiniteCache = {};\n this.infiniteCurrentViewData = {};\n this.infiniteFrozenCache = {};\n this.isDownScroll = false;\n this.isUpScroll = false;\n this.isScroll = true;\n this.enableContinuousScroll = false;\n this.initialRender = true;\n this.isRemove = false;\n this.isInitialCollapse = false;\n this.prevScrollTop = 0;\n this.actions = ['filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'sorting', 'refresh'];\n this.keys = [literals.downArrow, literals.upArrow, literals.enter, literals.shiftEnter];\n this.rowTop = 0;\n this.isInitialMovableRender = true;\n this.virtualInfiniteData = {};\n this.isCancel = false;\n this.emptyRowData = {};\n this.isNormaledit = false;\n this.isInfiniteScroll = false;\n this.isLastPage = false;\n this.isInitialRender = true;\n this.isFocusScroll = false;\n this.isGroupCollapse = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.isNormaledit = this.parent.editSettings.mode === 'Normal';\n this.addEventListener();\n this.widthService = serviceLocator.getService('widthService');\n this.rowModelGenerator = this.parent.isFrozenGrid() ? new FreezeRowModelGenerator(this.parent)\n : new RowModelGenerator(this.parent);\n }\n InfiniteScroll.prototype.getModuleName = function () {\n return 'infiniteScroll';\n };\n /**\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.addEventListener = function () {\n this.parent.on(events.dataReady, this.onDataReady, this);\n this.parent.on(events.dataSourceModified, this.dataSourceModified, this);\n this.parent.on(events.infinitePageQuery, this.infinitePageQuery, this);\n this.parent.on(events.infiniteScrollHandler, this.infiniteScrollHandler, this);\n this.parent.on(events.beforeCellFocused, this.infiniteCellFocus, this);\n this.parent.on(events.appendInfiniteContent, this.appendInfiniteRows, this);\n this.parent.on(events.removeInfiniteRows, this.removeInfiniteCacheRows, this);\n this.parent.on(events.resetInfiniteBlocks, this.resetInfiniteBlocks, this);\n this.parent.on(events.setInfiniteCache, this.setCache, this);\n this.parent.on(events.initialCollapse, this.ensureIntialCollapse, this);\n this.parent.on(events.keyPressed, this.infiniteCellFocus, this);\n this.parent.on(events.infiniteShowHide, this.setDisplayNone, this);\n this.parent.on(events.virtualScrollEditActionBegin, this.editActionBegin, this);\n this.parent.on(events.getVirtualData, this.getVirtualInfiniteData, this);\n this.parent.on(events.editReset, this.resetInfiniteEdit, this);\n this.parent.on(events.virtualScrollEditSuccess, this.infiniteEditSuccess, this);\n this.parent.on(events.refreshVirtualCache, this.refreshInfiniteCache, this);\n this.parent.on(events.refreshInfiniteEditrowindex, this.refreshInfiniteEditrowindex, this);\n this.parent.on(events.infiniteEditHandler, this.infiniteEditHandler, this);\n this.parent.on(events.virtualScrollAddActionBegin, this.infiniteAddActionBegin, this);\n this.parent.on(events.modelChanged, this.modelChanged, this);\n this.parent.on(events.refreshInfiniteCurrentViewData, this.refreshInfiniteCurrentViewData, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.contentReady, this.selectNewRow, this);\n this.parent.on(events.captionActionComplete, this.captionActionComplete, this);\n this.parent.on(events.setVirtualPageQuery, this.setGroupCollapsePageQuery, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.parent.on(events.deleteComplete, this.deleteComplate, this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.addEventListener(events.dataBound, this.dataBoundFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.dataReady, this.onDataReady);\n this.parent.off(events.dataSourceModified, this.dataSourceModified);\n this.parent.off(events.infinitePageQuery, this.infinitePageQuery);\n this.parent.off(events.infiniteScrollHandler, this.infiniteScrollHandler);\n this.parent.off(events.beforeCellFocused, this.infiniteCellFocus);\n this.parent.off(events.appendInfiniteContent, this.appendInfiniteRows);\n this.parent.off(events.removeInfiniteRows, this.removeInfiniteCacheRows);\n this.parent.off(events.resetInfiniteBlocks, this.resetInfiniteBlocks);\n this.parent.off(events.setInfiniteCache, this.setCache);\n this.parent.off(events.initialCollapse, this.ensureIntialCollapse);\n this.parent.off(events.keyPressed, this.infiniteCellFocus);\n this.parent.off(events.infiniteShowHide, this.setDisplayNone);\n this.parent.off(events.virtualScrollEditActionBegin, this.editActionBegin);\n this.parent.off(events.getVirtualData, this.getVirtualInfiniteData);\n this.parent.off(events.editReset, this.resetInfiniteEdit);\n this.parent.off(events.virtualScrollEditSuccess, this.infiniteEditSuccess);\n this.parent.off(events.refreshVirtualCache, this.refreshInfiniteCache);\n this.parent.on(events.refreshInfiniteEditrowindex, this.refreshInfiniteEditrowindex);\n this.parent.off(events.infiniteEditHandler, this.infiniteEditHandler);\n this.parent.off(events.virtualScrollAddActionBegin, this.infiniteAddActionBegin);\n this.parent.off(events.modelChanged, this.modelChanged);\n this.parent.off(events.refreshInfiniteCurrentViewData, this.refreshInfiniteCurrentViewData);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.contentReady, this.selectNewRow);\n this.parent.off(events.captionActionComplete, this.captionActionComplete);\n this.parent.off(events.setVirtualPageQuery, this.setGroupCollapsePageQuery);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(events.dataBound, this.dataBoundFunction);\n };\n InfiniteScroll.prototype.dataBound = function () {\n if (this.groupCaptionAction === 'collapse') {\n this.groupCaptionAction = 'refresh';\n this.makeGroupCollapseRequest();\n }\n else if (this.groupCaptionAction === 'refresh') {\n this.parent.hideSpinner();\n this.groupCaptionAction = this.empty;\n }\n };\n InfiniteScroll.prototype.setGroupCollapsePageQuery = function (args) {\n var gObj = this.parent;\n if (!gObj.infiniteScrollSettings.enableCache && this.isGroupCollapse) {\n args.skipPage = true;\n this.isGroupCollapse = false;\n if (this.groupCaptionAction === 'collapse') {\n var captionRow = gObj.getRowObjectFromUID(this.parentCapUid);\n var rowObjs = gObj.getRowsObject();\n var childCount = 0;\n for (var i = rowObjs.length - 1; i >= 0; i--) {\n if (rowObjs[parseInt(i.toString(), 10)].indent === captionRow.indent) {\n break;\n }\n if (rowObjs[parseInt(i.toString(), 10)].isDataRow) {\n childCount++;\n }\n }\n var key = getGroupKeysAndFields(rowObjs.indexOf(captionRow), rowObjs);\n var pred = generateExpandPredicates(key.fields, key.keys, this);\n var predicateList = getPredicates(pred);\n pred = predicateList[predicateList.length - 1];\n for (var i = predicateList.length - 2; i >= 0; i--) {\n pred = pred.and(predicateList[parseInt(i.toString(), 10)]);\n }\n args.query.where(pred);\n args.query.skip(childCount);\n this.parentCapUid = this.empty;\n }\n else {\n var rows = gObj.getRows();\n var size = gObj.pageSettings.pageSize;\n var skip = getRowIndexFromElement(rows[rows.length - 1]) + 1;\n var additionalCnt = ((skip - (skip % size)) + size) - skip;\n if ((skip % size) === 0) {\n additionalCnt = 0;\n }\n args.query.skip(skip);\n args.query.take((gObj.infiniteScrollSettings.initialBlocks * gObj.pageSettings.pageSize) + additionalCnt);\n }\n }\n };\n InfiniteScroll.prototype.captionActionComplete = function (args) {\n var gObj = this.parent;\n if (!gObj.infiniteScrollSettings.enableCache && args.isCollapse) {\n var contetRect = gObj.getContent().firstElementChild.getBoundingClientRect();\n var tableReact = gObj.contentModule.getTable().getBoundingClientRect();\n if (Math.round(tableReact.bottom - gObj.getRowHeight()) <= Math.round(contetRect.bottom)) {\n this.parentCapUid = args.parentUid;\n this.groupCaptionAction = 'collapse';\n gObj.showSpinner();\n var caption = gObj.getRowObjectFromUID(args.parentUid);\n var childCount = this.getCaptionChildCount(caption);\n if (!childCount) {\n this.groupCaptionAction = 'refresh';\n this.makeGroupCollapseRequest();\n }\n else {\n this.makeGroupCollapseRequest(args.parentUid);\n }\n }\n }\n };\n InfiniteScroll.prototype.makeGroupCollapseRequest = function (parentUid) {\n var gObj = this.parent;\n var captionRows = [].slice.call(gObj.getContentTable().querySelectorAll('tr'));\n var rows = gObj.groupSettings.enableLazyLoading ? captionRows : gObj.getRows();\n var index = !gObj.groupSettings.enableLazyLoading ? getRowIndexFromElement(rows[rows.length - 1]) :\n gObj.contentModule['visibleRows'].length - 1;\n var prevPage = this.parent.pageSettings.currentPage;\n if (prevPage >= this.maxPage) {\n gObj.hideSpinner();\n return;\n }\n this.parent.pageSettings.currentPage = Math.ceil(index / this.parent.pageSettings.pageSize) + 1;\n var scrollArg = {\n requestType: 'infiniteScroll',\n currentPage: this.parent.pageSettings.currentPage,\n prevPage: prevPage,\n startIndex: index + 1,\n direction: 'down',\n isCaptionCollapse: true,\n parentUid: parentUid\n };\n this.isGroupCollapse = true;\n this.parent.notify('model-changed', scrollArg);\n };\n InfiniteScroll.prototype.getCaptionChildCount = function (caption) {\n var rowObj = this.parent.getRowsObject();\n var index = rowObj.indexOf(caption);\n var make = false;\n for (var i = index; i < rowObj.length; i++) {\n if ((rowObj[parseInt(i.toString(), 10)].indent === caption.indent || rowObj[parseInt(i.toString(), 10)].indent < caption.indent)\n && rowObj[parseInt(i.toString(), 10)].data.key !== caption.data.key) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && !this.childCheck(rowObj, rowObj[parseInt(i.toString(), 10)], i)) {\n make = true;\n break;\n }\n }\n return make;\n };\n InfiniteScroll.prototype.childCheck = function (rowObj, row, index) {\n var childCount = 0;\n for (var i = index + 1; i < rowObj.length; i++) {\n if (rowObj[parseInt(i.toString(), 10)].indent === row.indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === (row.indent + 1)\n && rowObj[parseInt(i.toString(), 10)].parentUid === row.uid) {\n childCount++;\n }\n }\n return row.data.count === childCount;\n };\n InfiniteScroll.prototype.updateCurrentViewData = function () {\n var gObj = this.parent;\n if (gObj.groupSettings.columns.length) {\n return;\n }\n var keys = Object.keys(this.infiniteCurrentViewData);\n gObj.currentViewData = [];\n var page = gObj.pageSettings.currentPage;\n var isCache = gObj.infiniteScrollSettings.enableCache;\n var blocks = gObj.infiniteScrollSettings.maxBlocks;\n var isMiddlePage = isCache && (page > blocks || (this.isUpScroll && page > 1));\n var start = isMiddlePage ? this.isUpScroll ? page : (page - blocks) + 1 : 1;\n var end = isMiddlePage ? (start + blocks) - 1 : isCache ? blocks : keys.length;\n for (var i = start; i <= end; i++) {\n if (this.infiniteCurrentViewData[parseInt(i.toString(), 10)]) {\n gObj.currentViewData = gObj.currentViewData.concat(this.infiniteCurrentViewData[parseInt(i.toString(), 10)]);\n }\n }\n };\n InfiniteScroll.prototype.refreshInfiniteCurrentViewData = function (e) {\n if (e.args.action === 'add' && e.args.requestType === 'save') {\n this.parent.pageSettings.currentPage = Math.ceil(e.args['index'] / this.parent.pageSettings.pageSize) ?\n Math.ceil(e.args['index'] / this.parent.pageSettings.pageSize) : 1;\n }\n var page = this.parent.pageSettings.currentPage;\n var size = this.parent.pageSettings.pageSize;\n var blocks = this.parent.infiniteScrollSettings.initialBlocks;\n var keys = Object.keys(this.infiniteCurrentViewData);\n var cache = this.parent.infiniteScrollSettings.enableCache;\n if (!this.parent.groupSettings.columns.length) {\n var isAdd = e.args.requestType === 'save' && !(this.parent.sortSettings.columns.length\n || this.parent.filterSettings.columns.length || this.parent.groupSettings.columns.length\n || this.parent.searchSettings.key);\n var isDelete = e.args.requestType === 'delete';\n if (!cache && (isAdd || isDelete)) {\n if (isAdd) {\n var indexCount = 0;\n for (var i = 1; i <= keys.length; i++) {\n indexCount += this.infiniteCurrentViewData[parseInt(i.toString(), 10)].length - 1;\n if (e.args.index <= indexCount) {\n this.resetCurrentViewData(i);\n this.infiniteCurrentViewData[parseInt(i.toString(), 10)]\n .splice(e.args.index, 0, e.args.data);\n break;\n }\n }\n }\n else {\n this.infiniteCurrentViewData[keys[keys.length - 1]].push(e.data[0]);\n }\n }\n else {\n if (blocks > 1 && e.data.length === (blocks * size)) {\n this.setInitialCache(e.data.slice(), {}, cache && e.args.requestType === 'delete', true);\n }\n else {\n this.infiniteCurrentViewData[parseInt(page.toString(), 10)] = e.data.slice();\n }\n }\n }\n };\n InfiniteScroll.prototype.resetCurrentViewData = function (startIndex) {\n var keys = Object.keys(this.infiniteCurrentViewData);\n for (var i = startIndex; i <= keys.length; i++) {\n var lastViewData = this.infiniteCurrentViewData[parseInt(i.toString(), 10)][this\n .infiniteCurrentViewData[parseInt(i.toString(), 10)].length - 1];\n if (this.infiniteCurrentViewData[i + 1]) {\n this.infiniteCurrentViewData[i + 1].splice(0, 0, lastViewData);\n }\n this.infiniteCurrentViewData[parseInt(i.toString(), 10)].pop();\n }\n };\n InfiniteScroll.prototype.deleteComplate = function () {\n if (this.parent.isFrozenGrid() && !this.parent.infiniteScrollSettings.enableCache) {\n this.parent.contentModule.refreshScrollOffset();\n }\n };\n InfiniteScroll.prototype.modelChanged = function (args) {\n var rows = this.parent.getRows();\n if (args.requestType === 'save' && args.index && args.data) {\n this.addRowIndex = args.index;\n }\n if (rows && rows.length && args.requestType !== 'infiniteScroll' && (args.requestType === 'delete' || this.requestType === 'add')) {\n this.firstIndex = getRowIndexFromElement(rows[0]);\n this.firstBlock = Math.ceil((this.firstIndex + 1) / this.parent.pageSettings.pageSize);\n this.lastIndex = getRowIndexFromElement(rows[rows.length - 1]);\n if (args.requestType === 'delete') {\n var rowObj = this.parent.getRowsObject();\n args.startIndex = this.parent.infiniteScrollSettings.enableCache\n ? (this.firstBlock - 1) * this.parent.pageSettings.pageSize : rowObj[rowObj.length - 1].index;\n }\n else {\n args.startIndex = this.firstIndex;\n }\n if (!this.parent.infiniteScrollSettings.enableCache\n && this.parent.pageSettings.currentPage === this.maxPage && args.requestType === 'delete') {\n this.isLastPage = true;\n this.lastIndex = this.lastIndex - 1;\n }\n }\n };\n InfiniteScroll.prototype.infiniteAddActionBegin = function (args) {\n if (this.isNormaledit) {\n this.isAdd = true;\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.emptyRowData).length) {\n this.createEmptyRowdata();\n }\n if (this.parent.pageSettings.currentPage > 1) {\n args.startEdit = false;\n this.resetInfiniteBlocks({}, true);\n this.makeRequest({ currentPage: 1 });\n }\n }\n }\n };\n InfiniteScroll.prototype.infiniteEditHandler = function (args) {\n if (!this.parent.infiniteScrollSettings.enableCache && (args.e.requestType === 'delete'\n || (args.e.requestType === 'save' && this.requestType === 'add'))) {\n var frozenCols = this.parent.isFrozenGrid();\n var rowElms = this.parent.getRows();\n var rows = this.parent.getRowsObject();\n if (this.ensureRowAvailability(rows, args.result[0])) {\n if (rowElms.length && !(this.addRowIndex && this.addRowIndex >= rowElms.length)) {\n this.resetRowIndex(rows, args.e, rowElms, this.requestType === 'add', true);\n if (frozenCols) {\n var rows_1 = this.parent.getMovableRowsObject();\n this.resetRowIndex(rows_1, args.e, this.parent.getMovableDataRows(), this.requestType === 'add');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frRows = this.parent.getFrozenRightRowsObject();\n this.resetRowIndex(frRows, args.e, this.parent.getFrozenRightRows(), this.requestType === 'add');\n }\n }\n }\n if (!this.isLastPage) {\n this.createRow(rows, args);\n }\n else {\n this.isLastPage = false;\n this.parent.pageSettings.currentPage = this.maxPage;\n if (this.parent.selectionModule.index < this.parent.frozenRows) {\n remove(rowElms[this.parent.frozenRows - 1]);\n this.createRow([rows[this.parent.frozenRows - 1]], args, false, true);\n if (frozenCols) {\n var movableRows = this.parent.getMovableDataRows();\n remove(movableRows[this.parent.frozenRows]);\n this.createRow([this.parent.getMovableRowsObject()[this.parent.frozenRows - 1]], args, true, true);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var rightRows = this.parent.getFrozenRightDataRows();\n remove(rightRows[this.parent.frozenRows]);\n this.createRow([this.parent.getFrozenRightRowsObject()[this.parent.frozenRows - 1]], args, false, true, true);\n }\n }\n setRowElements(this.parent);\n }\n }\n }\n this.parent.hideSpinner();\n this.parent.notify(events.refreshInfinitePersistSelection, {});\n if (this.requestType === 'delete') {\n this.parent.notify(events.deleteComplete, args.e);\n }\n else {\n this.parent.notify(events.saveComplete, args.e);\n }\n }\n this.parent.notify(events.freezeRender, { case: 'refreshHeight' });\n };\n InfiniteScroll.prototype.createRow = function (rows, args, isMovable, isFrozenRows, isFrozenRight) {\n var row = !isFrozenRows ? this.generateRows(args.result, args.e) : rows;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n this.parent.removeMaskRow();\n if (args.e.requestType === 'save' && args.e.index && args.e.data) {\n row[0].index = this.addRowIndex;\n this.addRowIndex = null;\n if (row[0].index >= rows.length) {\n return;\n }\n }\n var tbody;\n if (isFrozenRight) {\n tbody = this.parent.element.querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n }\n else {\n tbody = !this.parent.isFrozenGrid() ? this.parent.getContent().querySelector(literals.tbody) : isMovable\n ? this.parent.getMovableVirtualContent().querySelector(literals.tbody)\n : this.parent.getFrozenVirtualContent().querySelector(literals.tbody);\n }\n if (this.parent.frozenRows) {\n tbody = isFrozenRows && this.requestType !== 'add' || !isFrozenRows && this.requestType === 'add'\n ? !this.parent.isFrozenGrid() ? this.parent.getHeaderContent().querySelector(literals.tbody)\n : isMovable ? this.parent.getMovableVirtualHeader().querySelector(literals.tbody)\n : isFrozenRight ? this.parent.element.querySelector('.e-frozen-right-header').querySelector(literals.tbody)\n : this.parent.getFrozenVirtualHeader().querySelector(literals.tbody) : tbody;\n }\n var notifyArgs = {\n rows: rows, cancel: false, args: args, isMovable: isMovable,\n isFrozenRows: isFrozenRows, isFrozenRight: isFrozenRows, row: row\n };\n this.parent.notify(events.infiniteCrudCancel, notifyArgs);\n if (!notifyArgs.cancel) {\n for (var i = row.length - 1; i >= 0; i--) {\n if (this.requestType === 'delete') {\n tbody.appendChild(rowRenderer.render(row[parseInt(i.toString(), 10)], this.parent.getColumns()));\n }\n else {\n tbody.insertBefore(rowRenderer.render(row[parseInt(i.toString(), 10)], this.parent.getColumns()), tbody.rows[(args.e.index)]);\n }\n }\n }\n if (!isFrozenRows && this.parent.frozenRows\n && (this.parent.selectionModule.index < this.parent.frozenRows || this.requestType === 'add')) {\n var rowElems = isMovable ? this.parent.getMovableDataRows() : isFrozenRight ? this.parent.getFrozenRightDataRows()\n : this.parent.getRows();\n var index = (isMovable || isFrozenRight) && this.requestType === 'add'\n ? this.parent.frozenRows : this.parent.frozenRows - 1;\n remove(rowElems[parseInt(index.toString(), 10)]);\n this.createRow([rows[this.parent.frozenRows - 1]], args, isMovable, true, isFrozenRight);\n }\n if (!this.parent.infiniteScrollSettings.enableCache && !isFrozenRows) {\n if (isFrozenRight) {\n setRowElements(this.parent);\n this.parent.contentModule.rightFreezeRows = this.requestType === 'add'\n ? row.concat(rows) : rows.concat(row);\n }\n else if (!this.parent.isFrozenGrid() || isMovable) {\n setRowElements(this.parent);\n this.parent.contentModule.visibleRows = this.requestType === 'add'\n ? row.concat(rows) : rows.concat(row);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n args.e.renderMovableContent = true;\n this.createRow(this.parent.getFrozenRightRowsObject(), args, false, false, true);\n }\n }\n else {\n this.parent.contentModule.visibleFrozenRows = this.requestType === 'add'\n ? row.concat(rows) : rows.concat(row);\n args.e.isFrozen = true;\n this.createRow(this.parent.getMovableRowsObject(), args, true);\n }\n }\n };\n InfiniteScroll.prototype.ensureRowAvailability = function (rows, data) {\n var resume = true;\n if (this.parent.frozenRows && !this.parent.infiniteScrollSettings.enableCache\n && this.parent.sortSettings.columns && this.requestType === 'add') {\n var key = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].data[\"\" + key] === data[\"\" + key]) {\n resume = false;\n break;\n }\n }\n }\n return resume;\n };\n InfiniteScroll.prototype.generateRows = function (data, args) {\n return this.rowModelGenerator.generateRows(data, args);\n };\n InfiniteScroll.prototype.resetRowIndex = function (rows, args, rowElms, isAdd, isFrozen) {\n var _this = this;\n var keyField = this.parent.getPrimaryKeyFieldNames()[0];\n var isRemove = !(rowElms.length % this.parent.pageSettings.pageSize);\n if (isAdd) {\n if (isRemove) {\n if (isFrozen && !this.parent.groupSettings.columns.length) {\n this.swapCurrentViewData(1, true);\n }\n remove(rowElms[rows.length - 1]);\n rowElms.splice(rows.length - 1, 1);\n rows.splice(rows.length - 1, 1);\n }\n }\n else {\n rows.filter(function (e, index) {\n if (e.data[\"\" + keyField] === args.data[0][\"\" + keyField]) {\n if (isFrozen && !_this.parent.groupSettings.columns.length) {\n var page = Math.ceil((index + 1) / _this.parent.pageSettings.pageSize);\n _this.resetInfiniteCurrentViewData(page, index);\n }\n rows.splice(index, 1);\n remove(rowElms[parseInt(index.toString(), 10)]);\n rowElms.splice(index, 1);\n }\n });\n }\n var startIndex = isAdd ? this.addRowIndex ? this.addRowIndex + 1 : 1 : 0;\n resetRowIndex(this.parent, rows, rowElms, startIndex, this.addRowIndex ? this.addRowIndex : 0);\n };\n InfiniteScroll.prototype.resetInfiniteCurrentViewData = function (page, index) {\n index = index - ((page - 1) * this.parent.pageSettings.pageSize);\n this.infiniteCurrentViewData[parseInt(page.toString(), 10)].splice(index, 1);\n this.swapCurrentViewData(page, false);\n };\n InfiniteScroll.prototype.swapCurrentViewData = function (page, isAdd) {\n var keys = Object.keys(this.infiniteCurrentViewData);\n var end = isAdd ? keys.length + 1 : keys.length;\n for (var i = page; i < end; i++) {\n if (this.infiniteCurrentViewData[i + 1]) {\n var pageIndex = isAdd ? i : i + 1;\n var index = isAdd ? this.infiniteCurrentViewData[parseInt(i.toString(), 10)].length - 1 : 0;\n var data = this.infiniteCurrentViewData[parseInt(pageIndex.toString(), 10)].splice(index, 1);\n if (isAdd) {\n this.infiniteCurrentViewData[i + 1] = data.concat(this.infiniteCurrentViewData[i + 1]);\n if ((i + 1) === end - 1) {\n this.infiniteCurrentViewData[i + 1].splice(this.infiniteCurrentViewData[i + 1].length - 1, 1);\n }\n }\n else {\n this.infiniteCurrentViewData[parseInt(i.toString(), 10)].push(data[0]);\n }\n }\n }\n this.updateCurrentViewData();\n };\n InfiniteScroll.prototype.setDisplayNone = function (args) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var frozenCols = this.parent.isFrozenGrid();\n var keys = frozenCols ? Object.keys(this.infiniteFrozenCache) : Object.keys(this.infiniteCache);\n for (var i = 1; i <= keys.length; i++) {\n var cache = frozenCols ? args.isFreeze ? this.infiniteFrozenCache[parseInt(i.toString(), 10)][0]\n : this.infiniteFrozenCache[parseInt(i.toString(), 10)][1] : this.infiniteCache[parseInt(i.toString(), 10)];\n cache.filter(function (e) {\n e.cells[args.index].visible = args.visible === '';\n });\n }\n this.resetContentModuleCache(frozenCols ? this.infiniteFrozenCache : this.infiniteCache);\n }\n };\n InfiniteScroll.prototype.refreshInfiniteCache = function (args) {\n this.getEditedRowObject().data = args.data;\n };\n InfiniteScroll.prototype.refreshInfiniteCacheRowVisibleLength = function (args, currentPage) {\n var cPageRowArray = args[parseInt(currentPage.toString(), 10)];\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n var length_1 = 0;\n var vRowLen = 0;\n var hRowLen = 0;\n for (var i = 0; i < cPageRowArray.length; i++) {\n if (cPageRowArray[parseInt(i.toString(), 10)].visible\n || isNullOrUndefined(cPageRowArray[parseInt(i.toString(), 10)].visible)) {\n vRowLen++;\n }\n else {\n hRowLen++;\n }\n }\n if (hRowLen > vRowLen) {\n length_1 = hRowLen - vRowLen;\n if (length_1 > vRowLen) {\n length_1 = vRowLen;\n }\n }\n else {\n length_1 = vRowLen - hRowLen;\n if (length_1 > hRowLen) {\n length_1 = hRowLen;\n }\n }\n if (length_1 === 0) {\n length_1 = 1;\n }\n return length_1;\n }\n else {\n return cPageRowArray.length;\n }\n };\n InfiniteScroll.prototype.refreshInfiniteEditrowindex = function (args) {\n this.editRowIndex = args.index;\n };\n InfiniteScroll.prototype.getEditedRowObject = function () {\n var rowObjects = this.parent.getRowsObject();\n var editedrow;\n for (var i = 0; i < rowObjects.length; i++) {\n if (rowObjects[parseInt(i.toString(), 10)].index === this.editRowIndex) {\n editedrow = rowObjects[parseInt(i.toString(), 10)];\n }\n }\n return editedrow;\n };\n InfiniteScroll.prototype.infiniteEditSuccess = function (args) {\n if (this.isNormaledit) {\n if (!this.isAdd && args.data) {\n this.updateCurrentViewRecords(args.data);\n }\n this.isAdd = false;\n }\n };\n InfiniteScroll.prototype.updateCurrentViewRecords = function (data) {\n var index = getEditedDataIndex(this.parent, data);\n if (!isNullOrUndefined(index)) {\n this.parent.getCurrentViewRecords()[parseInt(index.toString(), 10)] = data;\n }\n };\n InfiniteScroll.prototype.actionBegin = function (args) {\n if (args.requestType === 'add' || args.requestType === 'delete') {\n this.requestType = args.requestType;\n }\n else if (args.action === 'add' && args.requestType === 'save') {\n this.requestType = args.action;\n }\n if (this.parent.isFrozenGrid() && !args.cancel && args.requestType === 'searching'\n || args.requestType === 'sorting' || args.requestType === 'filtering') {\n this.isInitialRender = true;\n }\n };\n InfiniteScroll.prototype.actionComplete = function (args) {\n if (args.requestType === 'delete' || args.requestType === 'save' || args.requestType === 'cancel') {\n this.requestType = this.empty;\n this.isCancel = args.requestType === 'cancel' || args.requestType === 'save';\n this.isAdd = this.isEdit = false;\n if (this.isNormaledit) {\n this.editRowIndex = this.empty;\n this.virtualInfiniteData = {};\n this.parent.editModule.previousVirtualData = {};\n }\n }\n };\n InfiniteScroll.prototype.resetInfiniteEdit = function () {\n if (this.parent.enableInfiniteScrolling && this.isNormaledit) {\n if ((this.parent.editSettings.allowEditing && this.isEdit) || (this.parent.editSettings.allowAdding && this.isAdd)) {\n this.parent.isEdit = true;\n }\n }\n };\n InfiniteScroll.prototype.getVirtualInfiniteData = function (data) {\n if (this.parent.infiniteScrollSettings.enableCache && this.parent.isEdit && isNullOrUndefined(data['endEdit'])) {\n this.parent.editModule.closeEdit();\n }\n else {\n this.getVirtualInfiniteEditedData();\n data.virtualData = this.virtualInfiniteData;\n data.isAdd = this.isAdd;\n data.isCancel = this.isCancel;\n }\n };\n InfiniteScroll.prototype.editActionBegin = function (e) {\n this.isEdit = true;\n this.editRowIndex = e.index;\n var rowObject = extend({}, this.getEditedRowObject().data);\n e.data = Object.keys(this.virtualInfiniteData).length ? this.virtualInfiniteData : rowObject;\n };\n InfiniteScroll.prototype.dataSourceModified = function () {\n this.resetInfiniteBlocks({ requestType: this.empty }, true);\n };\n InfiniteScroll.prototype.onDataReady = function (e) {\n if (!isNullOrUndefined(e.count) && e.requestType !== 'infiniteScroll') {\n this.maxPage = Math.ceil(e.count / this.parent.pageSettings.pageSize);\n }\n };\n InfiniteScroll.prototype.ensureIntialCollapse = function (isExpand) {\n this.isInitialCollapse = !isExpand;\n };\n InfiniteScroll.prototype.infiniteScrollHandler = function (e) {\n this.restoreInfiniteEdit();\n this.restoreInfiniteAdd();\n var targetEle = e.target;\n var isInfinite = targetEle.classList.contains(literals.content);\n if (isInfinite && this.parent.enableInfiniteScrolling && !e.isLeft) {\n var scrollEle = this.parent.getContent().firstElementChild;\n var captionRows = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n this.prevScrollTop = scrollEle.scrollTop;\n var rows = this.parent.groupSettings.enableLazyLoading ? captionRows : this.parent.getRows();\n if (!rows.length) {\n return;\n }\n var index = getRowIndexFromElement(rows[rows.length - 1]) + 1;\n var prevPage = this.parent.pageSettings.currentPage;\n var args = void 0;\n var offset = targetEle.scrollHeight - targetEle.scrollTop;\n var round = Math.round(targetEle.scrollHeight - targetEle.scrollTop);\n var floor = offset < targetEle.clientHeight ? Math.ceil(offset) : Math.floor(offset);\n if (floor > targetEle.clientHeight) {\n floor = floor - 1;\n }\n var isBottom = (floor === targetEle.clientHeight || round === targetEle.clientHeight);\n if (!isNullOrUndefined(this.groupCaptionAction)) {\n return;\n }\n if (this.isScroll && isBottom && (this.parent.pageSettings.currentPage <= this.maxPage - 1 || this.enableContinuousScroll)) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n this.isUpScroll = false;\n this.isDownScroll = true;\n }\n var rows_2 = [].slice.call(scrollEle.querySelectorAll('.e-row:not(.e-addedrow)'));\n var row = rows_2[rows_2.length - 1];\n var rowIndex = !this.parent.groupSettings.enableLazyLoading ? getRowIndexFromElement(row) :\n this.parent.contentModule['visibleRows'].length - 1;\n this.parent.pageSettings.currentPage = Math.ceil(rowIndex / this.parent.pageSettings.pageSize) + 1;\n args = {\n requestType: 'infiniteScroll',\n currentPage: this.parent.pageSettings.currentPage,\n prevPage: prevPage,\n startIndex: index,\n direction: 'down'\n };\n this.makeRequest(args);\n }\n if (this.isScroll && this.parent.infiniteScrollSettings.enableCache && targetEle.scrollTop === 0\n && this.parent.pageSettings.currentPage !== 1) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n this.isDownScroll = false;\n this.isUpScroll = true;\n }\n var row = [].slice.call(scrollEle.getElementsByClassName(literals.row));\n var rowIndex = getRowIndexFromElement(row[this.parent.pageSettings.pageSize - 1]);\n var startIndex = getRowIndexFromElement(row[0]) - this.parent.pageSettings.pageSize;\n this.parent.pageSettings.currentPage = Math.ceil(rowIndex / this.parent.pageSettings.pageSize) - 1;\n if (this.parent.pageSettings.currentPage) {\n args = {\n requestType: 'infiniteScroll',\n currentPage: this.parent.pageSettings.currentPage,\n prevPage: prevPage,\n startIndex: startIndex,\n direction: 'up'\n };\n this.makeRequest(args);\n }\n }\n if (this.parent.infiniteScrollSettings.enableCache && !this.isScroll && isNullOrUndefined(args)) {\n if (this.isDownScroll || this.isUpScroll) {\n scrollEle.scrollTop = this.top;\n }\n }\n }\n };\n InfiniteScroll.prototype.makeRequest = function (args) {\n var _this = this;\n if (this.parent.pageSettings.currentPage !== args.prevPage) {\n var initBlocks = this.parent.infiniteScrollSettings.initialBlocks;\n if (initBlocks < this.maxPage && this.parent.pageSettings.currentPage <= this.maxPage) {\n this.isInfiniteScroll = true;\n if (isNullOrUndefined(this.infiniteCache[args.currentPage])) {\n setTimeout(function () {\n _this.getVirtualInfiniteEditedData();\n _this.parent.notify('model-changed', args);\n }, 100);\n }\n else {\n setTimeout(function () {\n _this.getVirtualInfiniteEditedData();\n _this.parent.notify(events.refreshInfiniteModeBlocks, args);\n }, 100);\n }\n }\n else {\n this.parent.pageSettings.currentPage = this.maxPage;\n }\n }\n };\n InfiniteScroll.prototype.infinitePageQuery = function (query) {\n if (this.initialRender) {\n this.initialRender = false;\n this.intialPageQuery(query);\n }\n else {\n if ((this.requestType === 'delete' || this.requestType === 'add')) {\n if (!this.isInfiniteScroll && !this.parent.groupSettings.enableLazyLoading) {\n this.editPageQuery(query);\n }\n else if (this.parent.groupSettings.enableLazyLoading && !this.parent.infiniteScrollSettings.enableCache) {\n if (this.parent.infiniteScrollSettings.initialBlocks < this.parent.pageSettings.currentPage) {\n query.page(1, this.parent.pageSettings.pageSize * this.parent.pageSettings.currentPage);\n }\n else {\n query.page(1, this.parent.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks);\n }\n }\n else {\n query.page(this.parent.pageSettings.currentPage, this.parent.pageSettings.pageSize);\n }\n }\n else {\n query.page(this.parent.pageSettings.currentPage, this.parent.pageSettings.pageSize);\n }\n }\n };\n InfiniteScroll.prototype.editPageQuery = function (query) {\n var initialBlocks = this.parent.infiniteScrollSettings.initialBlocks;\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (isCache) {\n this.infiniteCache = {};\n this.infiniteFrozenCache = {};\n this.infiniteCurrentViewData = {};\n query.skip(this.firstIndex);\n query.take(initialBlocks * this.parent.pageSettings.pageSize);\n }\n else {\n if (this.parent.editSettings.mode === 'Dialog') {\n this.parent.clearSelection();\n }\n var index = this.requestType === 'delete' ? this.lastIndex : this.addRowIndex ? this.addRowIndex : this.firstIndex;\n query.skip(index);\n if (!isNullOrUndefined(this.parent.getDataModule().dataManager.dataSource.url) &&\n this.parent.getDataModule().dataManager.dataSource.url !== '' && (this.requestType === 'delete' ||\n this.requestType === 'add')) {\n query.take(initialBlocks * this.parent.pageSettings.pageSize);\n }\n else {\n query.take(1);\n }\n }\n };\n InfiniteScroll.prototype.intialPageQuery = function (query) {\n if (this.parent.infiniteScrollSettings.enableCache\n && this.parent.infiniteScrollSettings.initialBlocks > this.parent.infiniteScrollSettings.maxBlocks) {\n this.parent.infiniteScrollSettings.initialBlocks = this.parent.infiniteScrollSettings.maxBlocks;\n }\n var pageSize = this.parent.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks;\n query.page(1, pageSize);\n };\n InfiniteScroll.prototype.scrollToLastFocusedCell = function (e) {\n var gObj = this.parent;\n var rowIdx = this.lastFocusInfo.rowIdx + (e.keyArgs.action === literals.upArrow ? -1 : 1);\n var cellIdx = this.lastFocusInfo.cellIdx;\n var row = gObj.getRowByIndex(rowIdx);\n if (!row) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var page = Math.floor(rowIdx / this.parent.pageSettings.pageSize) + 1;\n gObj.pageSettings.currentPage = page;\n var cols = gObj.getColumns();\n remove(gObj.getContent().querySelector('tbody'));\n gObj.getContent().querySelector('table').appendChild(gObj.createElement('tbody', { attrs: { 'role': 'rowgroup' } }));\n var focusRows = [];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n for (var i = (page === 1 || this.maxPage === page) ? 0 : -1, k = 0; k < gObj.infiniteScrollSettings.maxBlocks; this.maxPage === page ? i-- : i++, k++) {\n var rows = this.infiniteCache[page + i];\n if (rows) {\n focusRows = focusRows.concat(rows);\n for (var j = 0; j < rows.length; j++) {\n gObj.getContent().querySelector('tbody').appendChild(rowRenderer.render(rows[parseInt(j.toString(), 10)], cols));\n }\n }\n }\n gObj.notify(events.contentReady, { rows: focusRows, args: {} });\n setRowElements(gObj);\n }\n row = gObj.getRowByIndex(rowIdx);\n var target = row.cells[parseInt(cellIdx.toString(), 10)];\n gObj.focusModule.isInfiniteScroll = true;\n gObj.focusModule.onClick({ target: target }, true);\n gObj.selectRow(rowIdx);\n target.focus();\n this.isFocusScroll = false;\n e.cancel = true;\n };\n InfiniteScroll.prototype.setLastCellFocusInfo = function (e) {\n var cell = ((e.byClick && e.clickArgs.target) || (e.byKey && e.keyArgs.target)\n || (!this.isFocusScroll && e).target);\n if (cell && cell.classList.contains('e-rowcell')) {\n var cellIdx = parseInt(cell.getAttribute('data-colindex'), 10);\n var rowIdx = parseInt(cell.parentElement.getAttribute('data-rowindex'), 10);\n this.lastFocusInfo = { rowIdx: rowIdx, cellIdx: cellIdx };\n }\n };\n InfiniteScroll.prototype.infiniteCellFocus = function (e) {\n var gObj = this.parent;\n var cache = gObj.infiniteScrollSettings.enableCache;\n if (e.byKey) {\n if (cache && this.isFocusScroll) {\n this.scrollToLastFocusedCell(e);\n return;\n }\n var cell = document.activeElement;\n var rowIndex = getRowIndexFromElement(cell.parentElement);\n this.cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n var content = gObj.getContent().firstElementChild;\n var totalRowsCount = (this.maxPage * gObj.pageSettings.pageSize) - 1;\n var visibleRowCount = Math.floor(content.offsetHeight / this.parent.getRowHeight());\n var contentRect = content.getBoundingClientRect();\n if (!isNaN(rowIndex)) {\n if (e.keyArgs.action === literals.downArrow || e.keyArgs.action === literals.enter) {\n this.rowIndex = rowIndex += 1;\n var row = gObj.getRowByIndex(rowIndex);\n var rowRect = row && row.getBoundingClientRect();\n if (cache) {\n rowIndex = cell.parentElement.rowIndex + 1;\n }\n if (this.isFocusScroll || (!row && rowIndex < totalRowsCount)\n || (rowRect && rowRect.bottom >= contentRect.bottom)) {\n if (!this.isFocusScroll) {\n this.pressedKey = e.keyArgs.action;\n }\n this.isFocusScroll = false;\n content.scrollTop = ((rowIndex - visibleRowCount) + 1) * this.parent.getRowHeight();\n }\n else if (!cache && row) {\n if (rowRect && (rowRect.bottom >= contentRect.bottom || rowRect.top < contentRect.top)) {\n row.cells[this.cellIndex].scrollIntoView();\n }\n }\n }\n else if (e.keyArgs.action === literals.upArrow || e.keyArgs.action === literals.shiftEnter) {\n this.rowIndex = rowIndex -= 1;\n var row = gObj.getRowByIndex(rowIndex);\n var rowRect = row && row.getBoundingClientRect();\n if (cache) {\n rowIndex = cell.parentElement.rowIndex - 1;\n }\n if (!row || rowRect.top <= contentRect.top) {\n this.pressedKey = e.keyArgs.action;\n content.scrollTop = rowIndex * this.parent.getRowHeight();\n }\n }\n }\n }\n else if (e.key === 'PageDown' || e.key === 'PageUp') {\n this.pressedKey = e.key;\n }\n this.setLastCellFocusInfo(e);\n };\n InfiniteScroll.prototype.createEmptyRowdata = function () {\n var _this = this;\n this.parent.getColumns().filter(function (e) {\n _this.emptyRowData[e.field] = _this.empty;\n });\n };\n InfiniteScroll.prototype.getVirtualInfiniteEditedData = function () {\n var editForm = this.parent.element.querySelector('.' + literals.editedRow);\n var addForm = this.parent.element.querySelector('.' + literals.addedRow);\n var gridForm = this.parent.element.querySelector('.e-gridform');\n if (this.parent.infiniteScrollSettings.enableCache && (editForm || addForm)) {\n var rowData = editForm ? extend({}, this.getEditedRowObject().data)\n : extend({}, this.emptyRowData);\n this.virtualInfiniteData = this.parent.editModule.getCurrentEditedData(gridForm, rowData);\n var hiddenColumn = this.parent.getHiddenColumns();\n for (var i = 0; i < hiddenColumn.length; i++) {\n if (hiddenColumn[parseInt(i.toString(), 10)].defaultValue) {\n this.virtualInfiniteData[hiddenColumn[parseInt(i.toString(), 10)].field] =\n hiddenColumn[parseInt(i.toString(), 10)].defaultValue;\n }\n }\n if (this.parent.isFrozenGrid()) {\n this.virtualInfiniteData = this.parent.editModule\n .getCurrentEditedData(this.parent.getMovableVirtualContent().querySelector('.e-gridform'), rowData);\n }\n }\n };\n InfiniteScroll.prototype.restoreInfiniteEdit = function () {\n var content = this.parent.getContent().firstElementChild;\n var frozenEdit = this.parent.frozenRows ? this.editRowIndex >= this.parent.frozenRows : true;\n if (this.isNormaledit && this.parent.infiniteScrollSettings.enableCache && frozenEdit) {\n if (this.parent.editSettings.allowEditing && !isNullOrUndefined(this.editRowIndex)) {\n var row = this.parent.getRowByIndex(this.editRowIndex);\n if (Object.keys(this.virtualInfiniteData).length && row && !this.parent.getContent().querySelector('.' + literals.editedRow)) {\n var top_1 = row.getBoundingClientRect().top;\n if (top_1 < content.offsetHeight && top_1 > this.parent.getRowHeight()) {\n this.parent.isEdit = false;\n this.parent.editModule.startEdit(row);\n }\n }\n }\n }\n };\n InfiniteScroll.prototype.restoreInfiniteAdd = function () {\n var content = this.parent.getContent().firstElementChild;\n if (this.parent.getCurrentViewRecords().length && this.parent.getRowByIndex(0) && this.isNormaledit &&\n this.parent.infiniteScrollSettings.enableCache && this.isAdd && !content.querySelector('.' + literals.addedRow)) {\n var isTop = content.scrollTop < this.parent.getRowHeight();\n if (isTop) {\n this.parent.isEdit = false;\n this.parent.addRecord();\n }\n }\n };\n InfiniteScroll.prototype.appendInfiniteRows = function (e) {\n var frozenCols = this.parent.isFrozenGrid();\n var scrollEle = this.parent.getContent().firstElementChild;\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.args.requestType === 'infiniteScroll';\n var isMovable = this.parent.getFrozenMode() === literals.leftRight && e.tableName === 'movable';\n if ((this.parent.isAngular || this.parent.isReact || this.parent.isVue || this.parent.isVue3) && isInfiniteScroll &&\n !e.args.isFrozen && this.parent.infiniteScrollSettings.enableCache) {\n var isChildGrid = this.parent.childGrid && this.parent.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.parent.getDataRows();\n if (frozenCols) {\n this.parent.contentModule['freezeRowElements'] = rows;\n var mCont = this.parent.getContent().querySelector('.' + literals.movableContent);\n var frLCont = this.parent.getContent().querySelector('.e-frozen-left-content');\n if (mCont && mCont.querySelectorAll('.e-templatecell').length) {\n this.parent.refreshReactTemplateTD(this.parent.getMovableDataRows(), isChildGrid, true);\n }\n if (frLCont && frLCont.querySelectorAll('.e-templatecell').length) {\n this.parent.refreshReactTemplateTD(this.parent.getDataRows(), isChildGrid, true);\n }\n this.parent.contentModule['freezeRowElements'] = this.parent.getRows();\n }\n else {\n this.parent.refreshReactTemplateTD(rows, isChildGrid);\n }\n }\n if ((isInfiniteScroll && !e.args.isFrozen && !isMovable) || !isInfiniteScroll) {\n if (isInfiniteScroll && e.args.direction === 'up') {\n e.tbody.insertBefore(e.frag, e.tbody.firstElementChild);\n }\n else {\n e.tbody.appendChild(e.frag);\n }\n }\n if (!frozenCols) {\n this.parent.contentModule.getTable().appendChild(e.tbody);\n this.updateCurrentViewData();\n }\n else {\n if (isInfiniteScroll) {\n if (e.tableName === literals.frozenLeft || (this.parent.getFrozenMode() === 'Right' && e.tableName === literals.frozenRight)) {\n this.frozenFrag = e.frag;\n }\n else if (this.parent.getFrozenMode() === literals.leftRight && e.tableName === 'movable') {\n this.movableFrag = e.frag;\n }\n else {\n var tbody = this.parent.getFrozenVirtualContent().querySelector(literals.tbody);\n if (e.args.direction === 'up') {\n tbody.insertBefore(this.frozenFrag, tbody.firstElementChild);\n }\n else {\n tbody.appendChild(this.frozenFrag);\n }\n if (e.tableName === literals.frozenRight) {\n this.parent.getMovableVirtualContent().querySelector(literals.tbody).appendChild(this.movableFrag);\n this.parent.element.querySelector('.e-frozen-right-content').querySelector(literals.tbody).appendChild(e.frag);\n }\n else {\n this.parent.getMovableVirtualContent().querySelector('.' + literals.table).appendChild(e.tbody);\n }\n this.parent.contentModule.refreshScrollOffset();\n this.updateCurrentViewData();\n }\n }\n else {\n var table = void 0;\n if (e.tableName === literals.frozenLeft) {\n table = this.parent.getFrozenVirtualContent().querySelector('.' + literals.table);\n }\n else if (e.tableName === 'movable') {\n table = this.parent.getMovableVirtualContent().querySelector('.' + literals.table);\n if (this.parent.getFrozenMode() !== literals.leftRight) {\n this.parent.contentModule.refreshScrollOffset();\n this.updateCurrentViewData();\n }\n }\n else {\n table = this.parent.element.querySelector('.e-frozen-right-content').querySelector('.' + literals.table);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.parent.contentModule.refreshScrollOffset();\n this.updateCurrentViewData();\n }\n }\n table.appendChild(e.tbody);\n this.widthService.refreshFrozenScrollbar();\n }\n }\n if (this.isInitialRender && !e.args.isFrozen) {\n this.isInitialRender = false;\n this.parent.scrollModule.setHeight();\n }\n if (!e.args.isFrozen) {\n this.rowTop = !this.rowTop ? this.parent.getRows()[0].getBoundingClientRect().top : this.rowTop;\n if (isInfiniteScroll) {\n if (this.parent.infiniteScrollSettings.enableCache && this.isRemove) {\n scrollEle.scrollTop = this.top;\n }\n setRowElements(this.parent);\n }\n this.restoreInfiniteAdd();\n this.isScroll = true;\n }\n this.isInfiniteScroll = false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n InfiniteScroll.prototype.selectNewRow = function (args) {\n var _this = this;\n var gObj = this.parent;\n var row = gObj.getRowByIndex(this.rowIndex);\n var cache = gObj.infiniteScrollSettings.enableCache;\n if (row && this.keys.some(function (value) { return value === _this.pressedKey; })) {\n var content = gObj.getContent().firstElementChild;\n var rowHeight = gObj.getRowHeight();\n var target = row.cells[this.cellIndex];\n if ((this.pressedKey === literals.downArrow || this.pressedKey === literals.enter)\n || (cache && (this.pressedKey === literals.upArrow || this.pressedKey === literals.shiftEnter))) {\n if (!cache && this.pressedKey !== literals.upArrow && this.pressedKey !== literals.shiftEnter) {\n content.scrollTop = content.scrollTop + rowHeight;\n }\n gObj.focusModule.isInfiniteScroll = true;\n gObj.focusModule.onClick({ target: target }, true);\n gObj.selectRow(this.rowIndex);\n }\n }\n else if (this.lastFocusInfo && (this.pressedKey === literals.pageDown || this.pressedKey === literals.pageUp)) {\n var idx = cache ? 0 : this.lastFocusInfo.rowIdx;\n if (gObj.getRowByIndex(idx)) {\n var target = gObj.getCellFromIndex(idx, this.lastFocusInfo.cellIdx);\n if (target) {\n this.isFocusScroll = true;\n if (!cache) {\n gObj.focusModule.isInfiniteScroll = true;\n gObj.focusModule.onClick({ target: target }, true);\n }\n else {\n target.focus({ preventScroll: true });\n }\n }\n }\n }\n this.pressedKey = undefined;\n };\n InfiniteScroll.prototype.removeInfiniteCacheRows = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.args.requestType === 'infiniteScroll';\n if (!e.args.isFrozen && isInfiniteScroll && this.parent.infiniteScrollSettings.enableCache && this.isRemove) {\n var rows = [].slice.call(this.parent.getContentTable().getElementsByClassName(literals.row));\n if (e.args.direction === 'down') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n var captionRows = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n this.removeCaptionRows(captionRows, e.args);\n }\n var addRowCount = this.parent.element.querySelector('.' + literals.addedRow) ? 0 : 1;\n this.removeTopRows(rows, this.parent.pageSettings.pageSize - addRowCount);\n }\n if (e.args.direction === 'up') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n var captionRows = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n this.removeCaptionRows(captionRows, e.args);\n }\n else {\n this.removeBottomRows(rows, rows.length - 1, e.args);\n }\n }\n this.isScroll = false;\n this.top = this.calculateScrollTop(e.args);\n }\n };\n InfiniteScroll.prototype.calculateScrollTop = function (args) {\n var top = 0;\n var scrollCnt = this.parent.getContent().firstElementChild;\n if (args.direction === 'down') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && !this.isInitialCollapse) {\n top = this.captionRowHeight();\n }\n var captionRows = [].slice.call(this.parent.getContent().firstElementChild.querySelectorAll('tr:not(.e-row)'));\n var captionCount = 0;\n if (this.isInitialCollapse && !isNullOrUndefined(captionRows)) {\n captionCount = Math.round((captionRows.length - 1) / this.parent.groupSettings.columns.length);\n }\n var value = captionCount ? captionCount\n : this.parent.pageSettings.pageSize * (this.parent.infiniteScrollSettings.maxBlocks - 1);\n var currentViewRowCount = 0;\n var i = 0;\n while (currentViewRowCount < scrollCnt.clientHeight) {\n i++;\n currentViewRowCount = i * this.parent.getRowHeight();\n }\n i = i - 1;\n top += (value - i) * this.parent.getRowHeight();\n }\n if (args.direction === 'up') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && !this.isInitialCollapse) {\n var len = this.refreshInfiniteCacheRowVisibleLength(this.infiniteCache, this.parent.pageSettings.currentPage);\n top = len * this.parent.getRowHeight();\n }\n else if (this.isInitialCollapse) {\n var groupedData = this.infiniteCache[this.parent.pageSettings.currentPage];\n var count = 0;\n for (var i = 0; i < groupedData.length; i++) {\n if (groupedData[parseInt(i.toString(), 10)].isCaptionRow) {\n count++;\n }\n }\n top += Math.round(count / this.parent.groupSettings.columns.length) * this.parent.getRowHeight();\n }\n else {\n top += (this.parent.pageSettings.pageSize * this.parent.getRowHeight() + getScrollBarWidth());\n }\n }\n return top;\n };\n InfiniteScroll.prototype.captionRowHeight = function () {\n var rows = [].slice.call(this.parent.getContent().querySelectorAll('tr:not(.e-row)'));\n return rows.length * this.parent.getRowHeight();\n };\n InfiniteScroll.prototype.removeTopRows = function (rows, maxIndx) {\n var frozeCols = this.parent.isFrozenGrid();\n var frRows = this.parent.getFrozenMode() === literals.leftRight\n ? [].slice.call(this.parent.element.querySelector('.e-frozen-right-content').getElementsByClassName(literals.row)) : null;\n var movableRows = frozeCols ?\n [].slice.call(this.parent.getMovableVirtualContent().getElementsByClassName(literals.row)) : null;\n for (var i = 0; i <= maxIndx; i++) {\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage === this.parent.infiniteScrollSettings.maxBlocks + 1\n && i > (maxIndx - this.parent.frozenRows)) {\n continue;\n }\n remove(rows[parseInt(i.toString(), 10)]);\n if (movableRows) {\n remove(movableRows[parseInt(i.toString(), 10)]);\n }\n if (frRows) {\n remove(frRows[parseInt(i.toString(), 10)]);\n }\n }\n };\n InfiniteScroll.prototype.removeBottomRows = function (rows, maxIndx, args) {\n var cnt = 0;\n var frozeCols = this.parent.isFrozenGrid();\n var movableRows = frozeCols ?\n [].slice.call(this.parent.getMovableVirtualContent().getElementsByClassName(literals.row)) : null;\n var frRows = this.parent.getFrozenMode() === literals.leftRight ?\n [].slice.call(this.parent.element.querySelector('.e-frozen-right-content').getElementsByClassName(literals.row)) : null;\n var pageSize = this.parent.pageSettings.pageSize;\n if (!frozeCols && this.infiniteCache[args.prevPage].length < pageSize) {\n cnt = this.parent.pageSettings.pageSize - this.infiniteCache[args.prevPage].length;\n }\n if (frozeCols && this.infiniteFrozenCache[args.prevPage][1].length < pageSize) {\n cnt = this.parent.pageSettings.pageSize - this.infiniteFrozenCache[args.prevPage][1].length;\n }\n for (var i = maxIndx; cnt < pageSize; i--) {\n cnt++;\n remove(rows[parseInt(i.toString(), 10)]);\n if (movableRows) {\n remove(movableRows[parseInt(i.toString(), 10)]);\n }\n if (frRows) {\n remove(frRows[parseInt(i.toString(), 10)]);\n }\n }\n };\n InfiniteScroll.prototype.removeCaptionRows = function (rows, args) {\n var rowElements = [].slice.call(this.parent.getContent().getElementsByClassName(literals.row));\n if (args.direction === 'down') {\n var lastRow = rowElements[this.parent.pageSettings.pageSize - 1];\n var lastRowIndex = getRowIndexFromElement(lastRow) - 1;\n var k = 0;\n for (var i = 0; k < lastRowIndex; i++) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains(literals.row)) {\n remove(rows[parseInt(i.toString(), 10)]);\n }\n else {\n k = getRowIndexFromElement(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n if (args.direction === 'up') {\n var lastIndex = getRowIndexFromElement(rowElements[rowElements.length - 1]);\n var page = Math.ceil(lastIndex / this.parent.pageSettings.pageSize);\n var startIndex = 0;\n for (var i = this.parent.pageSettings.currentPage + 1; i < page; i++) {\n startIndex += this.infiniteCache[parseInt(i.toString(), 10)].length;\n }\n for (var i = startIndex; i < rows.length; i++) {\n remove(rows[parseInt(i.toString(), 10)]);\n }\n }\n };\n InfiniteScroll.prototype.resetInfiniteBlocks = function (args, isDataModified) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && args.requestType !== 'infiniteScroll';\n if (!this.initialRender && !isNullOrUndefined(this.parent.infiniteScrollModule) && isInfiniteScroll) {\n if (this.actions.some(function (value) { return value === args.requestType; }) || isDataModified || (args.requestType === 'save'\n && (this.parent.sortSettings.columns.length || this.parent.filterSettings.columns.length\n || this.parent.groupSettings.columns.length || this.parent.searchSettings.key))) {\n var scrollEle = this.parent.getContent().firstElementChild;\n this.initialRender = true;\n scrollEle.scrollTop = 0;\n this.parent.pageSettings.currentPage = 1;\n this.infiniteCache = this.infiniteFrozenCache = {};\n this.infiniteCurrentViewData = {};\n this.resetContentModuleCache({});\n this.isRemove = false;\n this.top = 0;\n this.isInitialMovableRender = true;\n this.isInitialCollapse = false;\n this.parent.contentModule.isRemove = this.isRemove;\n this.parent.contentModule.isAddRows = this.isRemove;\n this.parent.contentModule.visibleRows = [];\n this.parent.contentModule.visibleFrozenRows = [];\n }\n }\n };\n InfiniteScroll.prototype.setCache = function (e) {\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n var frozeCols = this.parent.isFrozenGrid();\n var idx = e.args.isFrozen ? 1 : 0;\n var isEdit = e.args.requestType !== 'infiniteScroll'\n && (this.requestType === 'delete' || this.requestType === 'add');\n var currentPage = this.parent.pageSettings.currentPage;\n if ((frozeCols && this.isInitialMovableRender) || (!frozeCols && !Object.keys(this.infiniteCache).length) || isEdit) {\n this.isInitialMovableRender = !e.args.isFrozen;\n this.setInitialCache(e.modelData, e.args, isEdit);\n }\n if (!frozeCols && isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.infiniteCache[this.parent.pageSettings.currentPage] = e.modelData;\n this.resetContentModuleCache(this.infiniteCache);\n }\n if (frozeCols) {\n if ((idx === 0 && isNullOrUndefined(this.infiniteFrozenCache[parseInt(currentPage.toString(), 10)]))\n || !this.infiniteFrozenCache[parseInt(currentPage.toString(), 10)][parseInt(idx.toString(), 10)].length) {\n this.createFrozenCache(currentPage);\n this.infiniteFrozenCache[parseInt(currentPage.toString(), 10)][parseInt(idx.toString(), 10)] = e.modelData;\n if (idx === 1) {\n this.resetContentModuleCache(this.infiniteFrozenCache);\n }\n }\n }\n if (e.isInfiniteScroll && !this.isRemove) {\n this.isRemove = (currentPage - 1) % this.parent.infiniteScrollSettings.maxBlocks === 0;\n this.parent.contentModule.isRemove = this.isRemove;\n }\n }\n };\n InfiniteScroll.prototype.setInitialCache = function (data, args, isEdit, isCurrentViewData) {\n var frozenCols = this.parent.isFrozenGrid();\n var idx = args.isFrozen ? 1 : 0;\n var k = !isEdit ? 1 : isNullOrUndefined(this.firstBlock) ? 1 : this.firstBlock;\n for (var i = 1; i <= this.parent.infiniteScrollSettings.initialBlocks; i++) {\n var startIndex = (i - 1) * this.parent.pageSettings.pageSize;\n var endIndex = i * this.parent.pageSettings.pageSize;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && !isCurrentViewData) {\n this.setInitialGroupCache(data, k, startIndex, endIndex);\n }\n else {\n if (isCurrentViewData) {\n this.infiniteCurrentViewData[parseInt(k.toString(), 10)] = data.slice(startIndex, endIndex);\n }\n else {\n if (frozenCols) {\n this.createFrozenCache(k);\n this.infiniteFrozenCache[parseInt(k.toString(), 10)][parseInt(idx.toString(), 10)] = data\n .slice(startIndex, endIndex);\n this.resetContentModuleCache(this.infiniteFrozenCache);\n }\n else {\n this.infiniteCache[parseInt(k.toString(), 10)] = data.slice(startIndex, endIndex);\n this.resetContentModuleCache(this.infiniteCache);\n }\n }\n }\n k++;\n }\n };\n InfiniteScroll.prototype.createFrozenCache = function (index) {\n if (!this.infiniteFrozenCache[parseInt(index.toString(), 10)]) {\n this.infiniteFrozenCache[parseInt(index.toString(), 10)] = [[], []];\n }\n };\n InfiniteScroll.prototype.setInitialGroupCache = function (data, index, sIndex, eIndex) {\n var pageData = [];\n var startIndex = 0;\n for (var i = 1; i <= Object.keys(this.infiniteCache).length; i++) {\n startIndex += this.infiniteCache[parseInt(i.toString(), 10)].length;\n }\n var k = sIndex;\n for (var i = startIndex; i < data.length && k < eIndex; i++) {\n if (data[parseInt(i.toString(), 10)].index < eIndex || data[parseInt(i.toString(), 10)].isCaptionRow) {\n k = data[parseInt(i.toString(), 10)].isCaptionRow ? k : data[parseInt(i.toString(), 10)].index;\n pageData.push(data[parseInt(i.toString(), 10)]);\n }\n if (data[parseInt(i.toString(), 10)].index >= eIndex || data[parseInt(i.toString(), 10)].index === eIndex - 1) {\n break;\n }\n }\n this.infiniteCache[parseInt(index.toString(), 10)] = pageData;\n this.resetContentModuleCache(this.infiniteCache);\n };\n InfiniteScroll.prototype.resetContentModuleCache = function (data) {\n this.parent.contentModule\n .infiniteCache = data;\n };\n /**\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return InfiniteScroll;\n}());\nexport { InfiniteScroll };\n","import React, { Component } from 'react';\r\nimport { getCurrentDomain } from '../helpers/Lookup';\r\n\r\nexport class ImageThumbnails extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n imageUrls: Array.isArray(props.imageUrls) ? props.imageUrls : props.imageUrls.split(',').map(url => url.trim()).filter(url => url !== ''),\r\n draggingIndex: null,\r\n };\r\n }\r\n\r\n handleImageUpload = (event) => {\r\n const file = event.target.files[0];\r\n if (file) {\r\n const reader = new FileReader();\r\n reader.onload = (e) => {\r\n const newImageUrl = e.target.result;\r\n this.setState({ imageUrls: [...this.state.imageUrls, newImageUrl] });\r\n this.props.onUpdateImageUrls([...this.state.imageUrls, newImageUrl]);\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n };\r\n\r\n openImageUploader = () => {\r\n this.uploadInputRef.click();\r\n }\r\n\r\n deleteImage = (index) => {\r\n const updatedImageUrls = [...this.state.imageUrls];\r\n updatedImageUrls.splice(index, 1);\r\n this.setState({ imageUrls: updatedImageUrls });\r\n this.props.onUpdateImageUrls(updatedImageUrls);\r\n }\r\n\r\n handleDragStart = (index) => {\r\n this.setState({ draggingIndex: index });\r\n };\r\n\r\n handleDragOver = (index) => {\r\n if (this.state.draggingIndex !== null) {\r\n const draggedImage = this.state.imageUrls[this.state.draggingIndex];\r\n const updatedImageUrls = [...this.state.imageUrls];\r\n updatedImageUrls.splice(this.state.draggingIndex, 1);\r\n updatedImageUrls.splice(index, 0, draggedImage);\r\n this.setState({ imageUrls: updatedImageUrls, draggingIndex: index });\r\n this.props.onUpdateImageUrls(updatedImageUrls);\r\n }\r\n };\r\n\r\n handleDragEnd = () => {\r\n this.setState({ draggingIndex: null });\r\n };\r\n\r\n render() {\r\n const { imageUrls } = this.state;\r\n //console.log(this.state, imageUrls.length, this.props.isSingleImage)\r\n return (\r\n
    \r\n
    \r\n {imageUrls.map((imageUrl, index) => (\r\n
    this.handleDragStart(index)} onDragOver={() => this.handleDragOver(index)} onDragEnd={this.handleDragEnd}>\r\n {`Thumbnail\r\n this.deleteImage(index)} className=\"fa-solid fa-circle-minus\" title=\"Remove Image\">\r\n
    \r\n ))}\r\n {this.props.isSingleImage && imageUrls.length === 0 && () }\r\n {!this.props.isSingleImage && () }\r\n
    \r\n
    \r\n this.uploadInputRef = ref}\r\n type=\"file\"\r\n accept=\"image/*\"\r\n onChange={this.handleImageUpload}\r\n className=\"upload-input\"\r\n />\r\n
    \r\n
    \r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { Button, Modal, ModalFooter, ModalHeader, ModalBody, Label, Input, Row, Col } from 'reactstrap';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, GridComponent, Sort, Search, ExcelExport, Edit, Toolbar, InfiniteScroll, ToolbarItems } from '@syncfusion/ej2-react-grids';\r\nimport { DatePickerComponent, TimePickerComponent } from '@syncfusion/ej2-react-calendars';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { TextBoxComponent, NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { HtmlEditor, Image, Inject, Count, Link, Toolbar as rteToolbar, QuickToolbar, RichTextEditorComponent } from '@syncfusion/ej2-react-richtexteditor';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { ImageThumbnails } from '../ImageThumbnails';\r\nimport { BannerThumbnails } from '../BannerThumbnails';\r\nimport { Context } from '../../helpers/Context';\r\n\r\nexport class ProductBrands extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n this.fullToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', 'StrikeThrough',\r\n 'FontName', 'FontSize', 'FontColor', 'BackgroundColor',\r\n 'LowerCase', 'UpperCase', '|', 'Formats', 'Alignments', 'OrderedList', 'UnorderedList',\r\n 'Outdent', 'Indent', '|', 'CreateLink', 'Image', '|', 'ClearFormat',\r\n 'SourceCode', 'FullScreen', '|', 'Undo', 'Redo'\r\n ],\r\n type: 'Expand'\r\n };\r\n\r\n this.simpleToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', '|', 'ClearFormat', 'Undo', 'Redo', '|', 'SourceCode'],\r\n type: 'Expand'\r\n };\r\n\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n Slug: '',\r\n Title: '',\r\n Description: '',\r\n PrimaryBrandColour: '',\r\n SecondaryBrandColor: '',\r\n AccentBrandColour: '',\r\n TextColour: '',\r\n ShowOnHome: false,\r\n IsRestricted: 0,\r\n BrandImages: [],\r\n BrandBannerImages: [],\r\n DisplayOrder: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Product Brands :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n console.log(id)\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id == id });\r\n this.setState({ Id: data.id, Slug: data.slug, Title: data.title, Description: data.description, ShowOnHome: data.showOnHome, IsRestricted: data.isRestricted, PrimaryBrandColour: data.primaryBrandColour, SecondaryBrandColor: data.secondaryBrandColor, AccentBrandColour: data.accentBrandColour, TextColour: data.textColour, BrandImages: data.brandImages, BrandBannerImages: data.brandBannerImages, DisplayOrder: data.displayOrder, AddedBy: data.addedBy, DateAdded: data.dateAdded, ModifiedBy: data.modifiedBy, DateModified: data.dateModified, Status: data.status, });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n Slug: '',\r\n Title: '',\r\n Description: '',\r\n PrimaryBrandColour: '',\r\n SecondaryBrandColor: '',\r\n AccentBrandColour: '',\r\n TextColour: '',\r\n ShowOnHome: false,\r\n IsRestricted: 0,\r\n BrandImages: '',\r\n BrandBannerImages: '',\r\n DisplayOrder: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n valid &= fieldRequired(this.state.Slug, 'tbSlugError', '* required');\r\n valid &= fieldRequired(this.state.Title, 'tbTitleError', '* required');\r\n //valid &= fieldRequired(this.state.DisplayOrder, 'tbDisplayOrderError', '* required');\r\n\r\n if (valid) {\r\n const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n this.state.AddedBy = data.addedBy;\r\n this.state.DateAdded = data.dateAdded;\r\n this.state.Id = data.id;\r\n this.state.Status = data.status;\r\n }\r\n else {\r\n this.state.Status = 1;\r\n }\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n return (\r\n this.grid = g} commandClick={commandClick} enableInfiniteScrolling={true} height={500} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n handleUpdatedImageUrls = (updatedUrls) => {\r\n this.setState({ BrandImages: updatedUrls });\r\n }\r\n\r\n handleUpdatedBannerUrls = (updatedUrls) => {\r\n this.setState({ BrandBannerImages: updatedUrls });\r\n }\r\n\r\n render() {\r\n const { handleNavigate } = this.context;\r\n let contents = this.state.loading ?

    Loading...

    : ProductBrands.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n console.log(this.state)\r\n let images = this.state.BrandImages;\r\n let banners = this.state.BrandBannerImages;\r\n if (this.state.BrandImages.includes(\"\\\\\\\\\")) {\r\n images = JSON.parse(this.state.BrandImages)\r\n }\r\n if (this.state.BrandBannerImages.includes(\"\\\\\\\\\")) {\r\n banners = JSON.parse(this.state.BrandBannerImages)\r\n }\r\n console.log(this.state.BrandBannerImages)\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n

    Product Brands

    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {contents}\r\n \r\n \r\n
    \r\n\r\n \r\n }>Edit Product Brands\r\n \r\n
    \r\n
    \r\n this.setState({ Title: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n this.setState({ Slug: e.target.value })} />
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n this.setState({ Description: e.value })} >\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n this.setState({ PrimaryBrandColour: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n this.setState({ SecondaryBrandColor: e.target.value })} />
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n this.setState({ AccentBrandColour: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n this.setState({ TextColour: e.target.value })} />
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n this.setState({ ShowOnHome: e.target.checked })} />  
    \r\n
    \r\n\r\n {/*
    */}\r\n {/* this.setState({ IsRestricted: e.target.value })} />
    */}\r\n {/*
    */}\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n {/*
    */}\r\n {/* this.setState({ DisplayOrder: e.target.value })} />
    */}\r\n {/*
    */}\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/productbrands', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Slug: this.state.Slug, Title: this.state.Title, Description: this.state.Description, AccentBrandColour: this.state.AccentBrandColour, TextColour: this.state.TextColour, PrimaryBrandColour: this.state.PrimaryBrandColour, SecondaryBrandColor: this.state.SecondaryBrandColor, ShowOnHome: this.state.ShowOnHome, IsRestricted: this.state.IsRestricted, BrandBannerImages: Array.isArray(this.state.BrandBannerImages) ? this.state.BrandBannerImages.join(\", \") : this.state.BrandBannerImages, BrandImages: Array.isArray(this.state.BrandImages) ? this.state.BrandImages.join(\", \") : this.state.BrandImages, DisplayOrder: this.state.DisplayOrder, AddedBy: this.state.AddedBy, DateAdded: this.state.DateAdded, ModifiedBy: this.state.ModifiedBy, DateModified: this.state.DateModified, Status: 1, }\r\n\r\n try {\r\n const response = await fetch('api/productbrands', {\r\n method: dataId == 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Product Brands', content: 'The product brands was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Product Brands', content: 'There was an error saving the product brands!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/productbrands/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Product Brands', content: 'The product brands was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Product Brands', content: 'There was an error deleting the product brands!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { ListBoxComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, Edit, GridComponent, InfiniteScroll, Sort, Toolbar } from '@syncfusion/ej2-react-grids';\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { Inject } from '@syncfusion/ej2-react-richtexteditor';\r\nimport React, { Component } from 'react';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { Button, Col, Label, Modal, ModalBody, ModalFooter, ModalHeader, Row } from 'reactstrap';\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { Context } from '../../helpers/Context';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { BannerThumbnails } from '../BannerThumbnails';\r\n\r\nexport class ProductCategories extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n this.fullToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', 'StrikeThrough',\r\n 'FontName', 'FontSize', 'FontColor', 'BackgroundColor',\r\n 'LowerCase', 'UpperCase', '|', 'Formats', 'Alignments', 'OrderedList', 'UnorderedList',\r\n 'Outdent', 'Indent', '|', 'CreateLink', 'Image', '|', 'ClearFormat',\r\n 'SourceCode', 'FullScreen', '|', 'Undo', 'Redo'\r\n ],\r\n type: 'Expand'\r\n };\r\n\r\n this.simpleToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', '|', 'ClearFormat', 'Undo', 'Redo', '|', 'SourceCode'],\r\n type: 'Expand'\r\n };\r\n\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n Slug: '',\r\n Title: '',\r\n CategoryImages: '',\r\n CategoryBanners: '',\r\n Tags: '',\r\n ParentId: 0,\r\n DisplayOrder: 0,\r\n IsRestricted: 0,\r\n ShowOnMenu: 0, \r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n orderModal: false,\r\n orderedData: []\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.saveOrder = this.saveOrder.bind(this);\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n orderModalToggle = () => {\r\n this.setState({\r\n orderModal: !this.state.orderModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Product Categories :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id === id });\r\n this.setState({ Id: data.id, Slug: data.slug, Title: data.title, CategoryImages: data.categoryImages, CategoryBanners: data.categoryBanners, Tags: data.tags, ParentId: data.parentId, ShowOnMenu: data.showOnMenu, DisplayOrder: data.displayOrder, IsRestricted: data.isRestricted });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n Slug: '',\r\n Title: '',\r\n CategoryImages: '',\r\n CategoryBanners: '',\r\n Tags: '',\r\n ShowOnMenu: 0, \r\n ParentId: 0,\r\n DisplayOrder: 0,\r\n IsRestricted: 0,\r\n \r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n //valid &= fieldRequired(this.state.Slug, 'tbSlugError', '* required');\r\n valid &= fieldRequired(this.state.Title, 'tbTitleError', '* required');\r\n \r\n\r\n if (valid) {\r\n //const data = this.state.editData.find((item) => { return item.id === this.state.editId });\r\n \r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n onItemDrop = (e) => {\r\n const orderedData = [];\r\n e.source.currentData.map((item, idx) =>\r\n orderedData.push({ ...item, displayOrder: (idx + 1) })\r\n );\r\n\r\n this.setState({ orderedData })\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n //console.log(data);\r\n return (\r\n this.grid = g} commandClick={commandClick} enableInfiniteScrolling={true} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n (props.showOnMenu === 1) ? \"Yes\" : \"No\"} />\r\n props.isRestricted === 1 ? \"Yes\" : \"No\"} />\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n handleUpdatedBannerUrls = (updatedUrls) => {\r\n this.setState({ CategoryBanners: updatedUrls });\r\n }\r\n\r\n handleUpdatedImageUrls = (updatedUrls) => {\r\n this.setState({ CategoryImages: updatedUrls });\r\n }\r\n\r\n render() {\r\n const { handleNavigate } = this.context;\r\n let contents = this.state.loading ?

    Loading...

    : ProductCategories.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n let banners = this.state.CategoryBanners;\r\n let images = this.state.CategoryImages;\r\n if (this.state.CategoryBanners.includes(\"\\\\\\\\\")) {\r\n banners = JSON.parse(this.state.CategoryBanners)\r\n }\r\n if (this.state.CategoryImages.includes(\"\\\\\\\\\")) {\r\n images = JSON.parse(this.state.CategoryImages)\r\n }\r\n //console.log(this.state)\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n

    Product Categories

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {contents}\r\n \r\n \r\n
    \r\n\r\n \r\n }>Edit Product Categories\r\n \r\n
    \r\n
    \r\n this.setState({ Title: e.target.value })} />
    \r\n
    \r\n
    \r\n this.setState({ Slug: e.target.value })} />
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n this.setState({ Tags: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n this.setState({ IsRestricted: this.state.IsRestricted < 1 ? 1 : 0 })} />  
    \r\n this.setState({ ShowOnMenu: this.state.ShowOnMenu < 1 ? 1 : 0 })} />  
    \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n }>Order Risk Statuses\r\n \r\n Drag and Drop\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/productcategories', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Slug: this.state.Slug, Title: this.state.Title, ShowOnMenu: this.state.ShowOnMenu, CategoryImages: Array.isArray(this.state.CategoryImages) ? this.state.CategoryImages.join(\",\") : this.state.CategoryImages, CategoryBanners: Array.isArray(this.state.CategoryBanners) ? this.state.CategoryBanners.join(\",\") : this.state.CategoryBanners, Tags: this.state.Tags, ParentId: this.state.ParentId, DisplayOrder: this.state.DisplayOrder, IsRestricted: this.state.IsRestricted, SubCategoryIds: [] }\r\n //console.log(getAuthToken());\r\n //console.log(data);\r\n try {\r\n const response = await fetch('api/productcategories', {\r\n method: dataId === 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Product Categories', content: 'The product categories was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n //console.error(response.status + \": \" + response.statusText);\r\n console.error(response);\r\n if (response.status === 401)\r\n window.location.href = \"/login\";\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Product Categories', content: 'There was an error saving the product categories!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async saveOrder() {\r\n //const { handleNavigate } = this.context;\r\n //this.orderModalToggle()\r\n this.setState({ orderModal: false, loading: true, showError: false, showSuccess: false });\r\n\r\n const data = this.state.orderedData.map(item => {\r\n return {\r\n id: item.id,\r\n displayOrder: item.displayOrder\r\n };\r\n });\r\n\r\n// var data = JSON.stringify(this.state.orderedData);\r\n \r\n var bearer = 'Bearer ' + getAuthToken();\r\n //console.log(data);\r\n try {\r\n const response = await fetch('api/productcategories/order', {\r\n method: 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n \r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Product Categories', content: 'The display order was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Bottom' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.error(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n window.location.href = \"/login\";\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Product Categories', content: 'There was an error saving the display order!', timeOut: 5000, position: { X: 'Right', Y: 'Bottom' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/productcategories/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Product Categories', content: 'The product categories was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Product Categories', content: 'There was an error deleting the product categories!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React NumericTextBox Component\n * ```html\n * \n * ```\n */\nvar NumericTextBoxComponent = /** @class */ (function (_super) {\n __extends(NumericTextBoxComponent, _super);\n function NumericTextBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n NumericTextBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return NumericTextBoxComponent;\n}(NumericTextBox));\nexport { NumericTextBoxComponent };\napplyMixins(NumericTextBoxComponent, [ComponentBase, React.Component]);\n","import React, { Component } from 'react';\r\nimport { Button, Modal, ModalFooter, ModalHeader, ModalBody, Label, Input, Row, Col } from 'reactstrap';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, GridComponent, Sort, Search, ExcelExport, Edit, Toolbar, ToolbarItems } from '@syncfusion/ej2-react-grids';\r\nimport { DatePickerComponent, TimePickerComponent } from '@syncfusion/ej2-react-calendars';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { TextBoxComponent, NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { HtmlEditor, Image, Inject, Count, Link, Toolbar as rteToolbar, QuickToolbar, RichTextEditorComponent } from '@syncfusion/ej2-react-richtexteditor';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\n\r\nexport class ProductRange extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n this.fullToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', 'StrikeThrough',\r\n 'FontName', 'FontSize', 'FontColor', 'BackgroundColor',\r\n 'LowerCase', 'UpperCase', '|', 'Formats', 'Alignments', 'OrderedList', 'UnorderedList',\r\n 'Outdent', 'Indent', '|', 'CreateLink', 'Image', '|', 'ClearFormat',\r\n 'SourceCode', 'FullScreen', '|', 'Undo', 'Redo'\r\n ],\r\n type: 'Expand'\r\n };\r\n\r\n this.simpleToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', '|', 'ClearFormat', 'Undo', 'Redo', '|', 'SourceCode'],\r\n type: 'Expand'\r\n };\r\n\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n Slug: '',\r\n Title: '',\r\n Description: '',\r\n RangeImages: '',\r\n DisplayOrder: 0,\r\n IsRestricted: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Product Range :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id == id });\r\n this.setState({ Id: data.id, Slug: data.slug, Title: data.title, Description: data.description, RangeImages: data.rangeImages, DisplayOrder: data.displayOrder, IsRestricted: data.isRestricted, AddedBy: data.addedBy, DateAdded: data.dateAdded, ModifiedBy: data.modifiedBy, DateModified: data.dateModified, Status: data.status, });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n Slug: '',\r\n Title: '',\r\n Description: '',\r\n RangeImages: '',\r\n DisplayOrder: 0,\r\n IsRestricted: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n //valid &= fieldRequired(this.state.Slug, 'tbSlugError', '* required');\r\n valid &= fieldRequired(this.state.Title, 'tbTitleError', '* required');\r\n //valid &= fieldRequired(this.state.DisplayOrder, 'tbDisplayOrderError', '* required');\r\n\r\n if (valid) {\r\n const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n this.state.AddedBy = data.addedBy;\r\n this.state.DateAdded = data.dateAdded;\r\n this.state.Id = data.id;\r\n this.state.Status = data.status;\r\n }\r\n else {\r\n this.state.Status = 1;\r\n }\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n return (\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n let contents = this.state.loading ?

    Loading...

    : ProductRange.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n

    Product Range

    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {contents}\r\n \r\n \r\n
    \r\n\r\n \r\n }>Edit Product Range\r\n \r\n
    \r\n this.setState({ Slug: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n this.setState({ Title: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n \r\n this.setState({ Description: e.value })} >\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n this.setState({ RangeImages: e.value })} >\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n this.setState({ DisplayOrder: e.target.value })} />
    \r\n
    \r\n\r\n
    \r\n this.setState({ IsRestricted: e.target.value })} />
    \r\n
    \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/productrange', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Id: this.state.Id, Slug: this.state.Slug, Title: this.state.Title, Description: this.state.Description, RangeImages: this.state.RangeImages, DisplayOrder: this.state.DisplayOrder, IsRestricted: this.state.IsRestricted, AddedBy: this.state.AddedBy, DateAdded: this.state.DateAdded, ModifiedBy: this.state.ModifiedBy, DateModified: this.state.DateModified, Status: this.state.Status, }\r\n\r\n try {\r\n const response = await fetch('api/productrange', {\r\n method: dataId == 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Product Range', content: 'The product range was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Product Range', content: 'There was an error saving the product range!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/productrange/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Product Range', content: 'The product range was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Product Range', content: 'There was an error deleting the product range!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, getValue, closest } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { appendChildren } from '../base/util';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport * as events from '../base/constant';\n/**\n * FilterCellRenderer class which responsible for building filter cell.\n *\n * @hidden\n */\nvar FilterCellRenderer = /** @class */ (function (_super) {\n __extends(FilterCellRenderer, _super);\n function FilterCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-filterbarcell' });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string} returns the gui\n */\n FilterCellRenderer.prototype.getGui = function () {\n return this.parent.createElement('div');\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell\n * @param {Object} data\n */\n /* tslint:disable-next-line:max-func-body-length */\n FilterCellRenderer.prototype.render = function (cell, data) {\n var tr = this.parent.element.querySelector('.e-filterbar');\n var node = this.element.cloneNode();\n var innerDIV = this.getGui();\n var input;\n var column = cell.column;\n tr.appendChild(node);\n node.setAttribute('e-mappinguid', column.uid);\n if (column.filterTemplate) {\n var fltrData = {};\n if (data) {\n fltrData[column.field] = data[column.field];\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n if (column.visible) {\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n var element = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(node, element);\n }\n }\n else {\n node.classList.add('e-hide');\n }\n }\n else {\n if (column.type !== 'checkbox') {\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n node.classList.add('e-fltrtemp');\n attributes(innerDIV, {\n 'class': 'e-fltrtempdiv'\n });\n if (isNullOrUndefined(column.filterBarTemplate.create)) {\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filterUi_input e-filtertext e-fltrTemp',\n attrs: { type: 'search', title: column.headerText }\n });\n innerDIV.appendChild(input);\n }\n else {\n var args = { column: column, node: Element };\n var temp = column.filterBarTemplate.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n input = temp(args);\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n attributes(innerDIV, {\n class: 'e-filterUi_input e-filtertext e-fltrTemp',\n title: column.headerText,\n id: column.field + '_filterBarcell'\n });\n innerDIV.appendChild(input);\n }\n }\n else {\n attributes(innerDIV, {\n 'class': 'e-filterdiv e-fltrinputdiv'\n });\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filtertext',\n attrs: {\n type: 'search', title: column.headerText + cell.attributes.title,\n value: data[cell.column.field] ? data[cell.column.field] : '', role: 'search'\n }\n });\n innerDIV.appendChild(input);\n var args = {\n element: input, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true, cssClass: this.parent.cssClass\n }\n };\n Input.createInput(args, this.parent.createElement);\n }\n //TODO: apply intial filtering\n if (column.allowFiltering === false || column.field === '' || isNullOrUndefined(column.field)) {\n input.setAttribute('disabled', 'true');\n input.classList.add('e-disable');\n }\n var clearIconElem = innerDIV.querySelector('.e-clear-icon');\n if (clearIconElem) {\n clearIconElem.setAttribute('title', this.parent.localeObj.getConstant('ClearButton'));\n }\n if (!column.visible) {\n node.classList.add('e-hide');\n }\n this.appendHtml(node, innerDIV);\n // render's the dropdownlist component if showFilterBarOperator sets to true\n if (this.parent.filterSettings.showFilterBarOperator && this.parent.filterSettings.type === 'FilterBar' &&\n !this.parent.isPrinting && isNullOrUndefined(column.filterTemplate) && isNullOrUndefined(column.filterBarTemplate)) {\n this.operatorIconRender(innerDIV, column, cell);\n }\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n var templateWrite = column.filterBarTemplate.write;\n var args = { element: input, column: column };\n if (typeof templateWrite === 'string') {\n templateWrite = getValue(templateWrite, window);\n }\n templateWrite.call(this, args);\n }\n }\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @returns {Element} retruns the element\n */\n FilterCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n FilterCellRenderer.prototype.operatorIconRender = function (innerDIV, column, cell) {\n var gObj = this.parent;\n var operators;\n var fbicon = this.parent.createElement('input', {\n className: ' e-filterbaroperator e-icons e-icon-filter',\n id: cell.column.uid\n });\n innerDIV.querySelector('span').appendChild(fbicon);\n if (column.filter && column.filter.operator) {\n operators = column.filter.operator;\n }\n else if (gObj.filterSettings.columns.length) {\n for (var i = 0, a = gObj.filterSettings.columns; i < a.length; i++) {\n var col = a[parseInt(i.toString(), 10)];\n if (col.field === column.field) {\n operators = col.operator;\n }\n else {\n operators = 'equal';\n }\n }\n }\n else {\n operators = 'equal';\n }\n if (!isNullOrUndefined(gObj.filterModule.operators[column.field])) {\n operators = gObj.filterModule.operators[column.field];\n }\n this.dropOptr = new DropDownList({\n fields: { text: 'text', value: 'value' },\n popupHeight: 'auto',\n value: operators,\n width: '0px',\n enabled: column.allowFiltering,\n popupWidth: 'auto',\n enableRtl: this.parent.enableRtl,\n change: this.internalEvent.bind(this),\n beforeOpen: function () {\n var operator = gObj.filterModule.customOperators;\n this.dataSource = operator[gObj.getColumnByUid(this.element.id).type + 'Operator'];\n for (var i = 0; i < this.dataSource.length; i++) {\n if (column.filter && column.filter.operator && isNullOrUndefined(gObj.filterModule.operators[column.field]) &&\n this.dataSource[parseInt(i.toString(), 10)].value === column.filter.operator) {\n this.value = column.filter.operator;\n }\n }\n },\n cssClass: this.parent.cssClass ? 'e-popup-flbar' + ' ' + this.parent.cssClass : 'e-popup-flbar'\n });\n this.dropOptr.appendTo(fbicon);\n var spanElmt = closest(this.dropOptr.element, 'span');\n spanElmt.classList.add('e-filterbardropdown');\n spanElmt.removeAttribute('tabindex');\n };\n FilterCellRenderer.prototype.internalEvent = function (e) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(e.element.getAttribute('id'));\n e.column = col;\n gObj.filterModule.operators[col.field] = e.value;\n gObj.notify(events.getFilterBarOperator, e);\n };\n return FilterCellRenderer;\n}(CellRenderer));\nexport { FilterCellRenderer };\n","import { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `filter operators` render boolean column.\n *\n * @hidden\n */\nvar FlMenuOptrUI = /** @class */ (function () {\n function FlMenuOptrUI(parent, customFltrOperators, serviceLocator, filterSettings) {\n this.ddOpen = this.dropDownOpen.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n this.customFilterOperators = customFltrOperators;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroyDropDownList, this);\n this.parent.on(events.destroy, this.destroyDropDownList, this);\n }\n }\n /**\n * @param {Element} dlgConetntEle - specifies the content element\n * @param {Element} target - specifies the target\n * @param {Column} column - specifies the column\n * @param {Dialog} dlgObj - specifies the dialog\n * @param {Object[]} operator - specifies the operator list\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line max-len\n FlMenuOptrUI.prototype.renderOperatorUI = function (dlgConetntEle, target, column, dlgObj, operator) {\n this.dialogObj = dlgObj;\n var optr = column.type + 'Operator';\n this.optrData = this.customOptr = !isNullOrUndefined(operator) ? operator :\n (!isNullOrUndefined(this.parent.filterSettings.operators) && !isNullOrUndefined(this.parent.filterSettings.operators[\"\" + optr])) ?\n this.parent.filterSettings.operators[\"\" + optr] : this.customFilterOperators[\"\" + optr];\n var dropDatasource = this.customOptr;\n var selectedValue = this.dropSelectedVal(column, optr);\n var optrDiv = this.parent.createElement('div', { className: 'e-flm_optrdiv' });\n dlgConetntEle.appendChild(optrDiv);\n var optrInput = this.parent.createElement('input', { id: column.uid + '-floptr' });\n optrDiv.appendChild(optrInput);\n this.dropOptr = new DropDownList({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n enableRtl: this.parent.enableRtl,\n text: selectedValue,\n // eslint-disable-next-line @typescript-eslint/tslint/config\n change: function () {\n var valInput = document.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (this.value === 'isempty' || this.value === 'isnotempty' ||\n this.value === 'isnull' || this.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n }\n });\n this.dropOptr.addEventListener(literals['open'], this.ddOpen);\n this.dropOptr.appendTo('#' + column.uid + '-floptr');\n };\n FlMenuOptrUI.prototype.renderResponsiveDropDownList = function (args) {\n args.popup.element.style.width = '100%';\n };\n FlMenuOptrUI.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n if (this.parent.enableAdaptiveUI) {\n this.renderResponsiveDropDownList(args);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FlMenuOptrUI.prototype.dropSelectedVal = function (col, optr) {\n var selValue = '';\n var columns = this.parent.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.field === column.field || (col.isForeignColumn() && col.foreignKeyValue === column.field)) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', column.operator));\n selValue = !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n }\n }\n if (selValue === '') { // rewuired or not\n if (col.filter.operator) {\n var optrLen = Object.keys(this.optrData).length;\n for (var i = 0; i < optrLen; i++) {\n if (this.optrData[parseInt(i.toString(), 10)].value === col.filter.operator) {\n selValue = this.optrData[parseInt(i.toString(), 10)].text;\n }\n }\n }\n else {\n selValue = this.optrData[0].text;\n }\n }\n return selValue;\n };\n /**\n * @returns {string} returns the operator\n * @hidden\n */\n FlMenuOptrUI.prototype.getFlOperator = function () {\n return this.dropOptr.value;\n };\n FlMenuOptrUI.prototype.destroyDropDownList = function () {\n if (this.dropOptr.isDestroyed) {\n return;\n }\n this.dropOptr.removeEventListener(literals['open'], this.ddOpen);\n this.dropOptr.destroy();\n this.parent.off(events.filterMenuClose, this.destroyDropDownList);\n this.parent.off(events.destroy, this.destroyDropDownList);\n };\n return FlMenuOptrUI;\n}());\nexport { FlMenuOptrUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (this.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n if (li) {\n this.setSelection(li, null);\n }\n else if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n this.list.scrollTop = count * height + fixedHead;\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n this.list.scrollTop = 0;\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && this.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n this.list.scrollTop = 0;\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && currentValue !== this.value) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n this.setProperties({ value: value });\n if (previousValue_1 !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '$1');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, EventHandler, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * \n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n this.resetList(dataSource, fields, query, e);\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n this.fixedHeaderElement = null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n this.list.scrollTop = 0;\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return true && this.inputElement.value.trim() !== '';\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","import { AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { Browser, isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { getZIndexCalcualtion, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `string filterui` render string column.\n *\n * @hidden\n */\nvar StringFilterUI = /** @class */ (function () {\n function StringFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n StringFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'strui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.dialogObj = args.dialogObj;\n this.processDataOperation(args);\n };\n StringFilterUI.prototype.processDataOperation = function (args) {\n var _this = this;\n if (args.column.isForeignColumn()) {\n this.parent.getDataModule().dataManager.executeQuery(this.parent.getDataModule().generateQuery(true))\n .then(function (result) { _this.getAutoCompleteOptions(args, result); });\n return;\n }\n this.getAutoCompleteOptions(args);\n };\n StringFilterUI.prototype.getAutoCompleteOptions = function (args, result) {\n var isForeignColumn = args.column.isForeignColumn();\n var foreignColumnQuery;\n if (isForeignColumn) {\n var filteredData = CheckBoxFilterBase.getDistinct(result.result, args.column.field)\n .records || [];\n var filterQuery = void 0;\n for (var i = 0; i < filteredData.length; i++) {\n if (filterQuery) {\n filterQuery = filterQuery.or(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n else {\n filterQuery = new Predicate(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n }\n foreignColumnQuery = new Query().where(filterQuery);\n foreignColumnQuery.params = this.parent.query.params;\n }\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = { value: isForeignColumn ? args.column.foreignKeyValue : args.column.field };\n var autoComplete = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n query: isForeignColumn ? foreignColumnQuery : this.parent.getDataModule().generateQuery(true, true),\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: args.localizeText.getConstant('EnterValue'),\n actionBegin: function () {\n if (this.query.queries.length && this.query.queries[0].fn === 'onWhere' && this.query.queries[0].e\n && this.query.queries[0].e.predicates) {\n for (var i = 0; i < this.query.queries[0].e.predicates.length; i++) {\n if (this.properties.fields.value === this.query.queries[0].e.predicates[\"\" + i].field) {\n this.query.queries[0].e.predicates.splice(i, 1);\n i = i - 1;\n }\n }\n if (!this.query.queries[0].e.predicates.length) {\n this.query.queries.splice(0, 1);\n }\n }\n }\n }, args.column.filter.params));\n this.acFocus = this.focus(autoComplete, args);\n this.acComplete = this.actionComplete(autoComplete);\n this.acOpen = this.openPopup.bind(this);\n autoComplete.addEventListener(literals.focus, this.acFocus);\n autoComplete.addEventListener(literals['open'], this.acOpen);\n autoComplete.addEventListener(events.actionComplete, this.acComplete);\n if (dataSource && 'result' in dataSource) {\n var query = this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n autoComplete.dataSource = new DataManager(e);\n });\n }\n this.actObj = autoComplete;\n this.actObj.appendTo(this.instance);\n if (isForeignColumn) {\n this.parent.filterModule.filterModule.afterRenderFilterUI();\n }\n };\n StringFilterUI.prototype.write = function (args) {\n if (args.filteredValue !== '' && !isNullOrUndefined(args.filteredValue)) {\n var struiObj = document.querySelector('#strui-' + args.column.uid).ej2_instances[0];\n struiObj.value = args.filteredValue;\n }\n };\n StringFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var actuiObj = document.querySelector('#strui-' + column.uid).ej2_instances[0];\n if (Browser.isDevice) {\n actuiObj.hidePopup();\n actuiObj.focusOut();\n }\n var filterValue = actuiObj.value;\n if (isNullOrUndefined(filterValue) || filterValue === '') {\n filterValue = null;\n }\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', this.parent.filterSettings.enableCaseSensitivity);\n };\n StringFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n StringFilterUI.prototype.focus = function (actObj, args) {\n return function () {\n actObj.filterType = args.getOptrInstance.getFlOperator();\n };\n };\n StringFilterUI.prototype.actionComplete = function (actObj) {\n return function (e) {\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObj) {\n return (getValue(actObj.fields.value, mapObj));\n }).indexOf(getValue((actObj.fields.value), obj)) === index;\n });\n };\n };\n StringFilterUI.prototype.destroy = function () {\n if (!this.actObj || this.actObj.isDestroyed) {\n return;\n }\n this.actObj.removeEventListener(literals.focus, this.acFocus);\n this.actObj.removeEventListener(literals['open'], this.acOpen);\n this.actObj.removeEventListener(events.actionComplete, this.acComplete);\n this.actObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return StringFilterUI;\n}());\nexport { StringFilterUI };\n","import { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { extend, isUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * `numberfilterui` render number column.\n *\n * @hidden\n */\nvar NumberFilterUI = /** @class */ (function () {\n function NumberFilterUI(parent, serviceLocator, filterSettings) {\n this.filterSettings = filterSettings;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n NumberFilterUI.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumberFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'numberui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.numericTxtObj = new NumericTextBox(extend({\n format: typeof (args.column.format) === 'string' || isUndefined(args.column.format) ? args.column.format :\n args.column.format.format,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('EnterValue'),\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.numericTxtObj.appendTo(this.instance);\n };\n NumberFilterUI.prototype.write = function (args) {\n var numberuiObj = document.querySelector('#numberui-' + args.column.uid).ej2_instances[0];\n numberuiObj.element.addEventListener('keydown', this.keyEventHandler);\n numberuiObj.value = args.filteredValue;\n };\n NumberFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var numberuiObj = document.querySelector('#numberui-' + column.uid).ej2_instances[0];\n var filterValue = numberuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n NumberFilterUI.prototype.destroy = function () {\n if (!this.numericTxtObj || this.numericTxtObj.isDestroyed) {\n return;\n }\n this.numericTxtObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return NumberFilterUI;\n}());\nexport { NumberFilterUI };\n","import { getZIndexCalcualtion } from '../base/util';\nimport { Query, DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `boolfilterui` render boolean column.\n *\n * @hidden\n */\nvar BooleanFilterUI = /** @class */ (function () {\n function BooleanFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n BooleanFilterUI.prototype.create = function (args) {\n var isForeignColumn = args.column.isForeignColumn();\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = isForeignColumn ? args.column.foreignKeyValue : args.column.field;\n this.elem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'bool-ui-' + args.column.uid });\n args.target.appendChild(this.elem);\n this.dialogObj = args.dialogObj;\n this.dropInstance = new DropDownList(extend({\n dataSource: dataSource instanceof DataManager ?\n dataSource : new DataManager(dataSource),\n query: new Query().select(fields),\n fields: { text: fields, value: fields },\n placeholder: args.localizeText.getConstant('SelectValue'),\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.ddOpen = this.openPopup.bind(this);\n this.ddComplete = this.actionComplete(fields);\n this.dropInstance.addEventListener(literals['open'], this.ddOpen);\n this.dropInstance.addEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.appendTo(this.elem);\n };\n BooleanFilterUI.prototype.write = function (args) {\n var drpuiObj = document.querySelector('#bool-ui-' + args.column.uid).ej2_instances[0];\n if (!isNullOrUndefined(args.filteredValue)) {\n drpuiObj.value = args.filteredValue;\n }\n };\n BooleanFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var drpuiObj = document.querySelector('#bool-ui-' + column.uid).ej2_instances[0];\n var filterValue = drpuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', false);\n };\n BooleanFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n BooleanFilterUI.prototype.actionComplete = function (fields) {\n return function (e) {\n e.result = DataUtil.distinct(e.result, fields, true);\n };\n };\n BooleanFilterUI.prototype.destroy = function () {\n if (!this.dropInstance || this.dropInstance.isDestroyed) {\n return;\n }\n this.dropInstance.removeEventListener(literals['open'], this.ddOpen);\n this.dropInstance.removeEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return BooleanFilterUI;\n}());\nexport { BooleanFilterUI };\n","import { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { getCustomDateFormat } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `datefilterui` render date column.\n *\n * @hidden\n */\nvar DateFilterUI = /** @class */ (function () {\n function DateFilterUI(parent, serviceLocator, filterSettings) {\n this.dpOpen = this.openPopup.bind(this);\n this.parent = parent;\n this.locator = serviceLocator;\n this.fltrSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n DateFilterUI.prototype.create = function (args) {\n var format = getCustomDateFormat(args.column.format, args.column.type);\n this.dialogObj = args.dialogObj;\n this.inputElem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'dateui-' + args.column.uid });\n args.target.appendChild(this.inputElem);\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n this.datePickerObj = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n else if (args.column.type === 'datetime') {\n this.datePickerObj = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n this.datePickerObj.addEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.appendTo(this.inputElem);\n };\n DateFilterUI.prototype.write = function (args) {\n var dateuiObj = document.querySelector('#dateui-' + args.column.uid).ej2_instances[0];\n dateuiObj.value = !isNullOrUndefined(args.filteredValue) ? new Date(args.filteredValue) : null;\n };\n DateFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var dateuiObj = document.querySelector('#dateui-' + column.uid).ej2_instances[0];\n var filterValue = dateuiObj.value;\n filterValue = isNullOrUndefined(filterValue) ? null : filterValue;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n DateFilterUI.prototype.openPopup = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n DateFilterUI.prototype.destroy = function () {\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n if (isNullOrUndefined(this.datePickerObj) || this.datePickerObj.isDestroyed) {\n return;\n }\n this.datePickerObj.removeEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.destroy();\n };\n return DateFilterUI;\n}());\nexport { DateFilterUI };\n","import { isNullOrUndefined, getValue, remove } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { FlMenuOptrUI } from './filter-menu-operator';\nimport { StringFilterUI } from './string-filter-ui';\nimport { NumberFilterUI } from './number-filter-ui';\nimport { BooleanFilterUI } from './boolean-filter-ui';\nimport { DateFilterUI } from './date-filter-ui';\nimport { getFilterMenuPostion, parentsUntil, appendChildren, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `filter menu` render boolean column.\n *\n * @hidden\n */\nvar FilterMenuRenderer = /** @class */ (function () {\n function FilterMenuRenderer(parent, filterSettings, serviceLocator, customFltrOperators, fltrObj) {\n this.isDialogOpen = false;\n this.maxHeight = '350px';\n this.isMenuCheck = false;\n this.colTypes = {\n 'string': StringFilterUI, 'number': NumberFilterUI, 'date': DateFilterUI, 'dateonly': DateFilterUI, 'boolean': BooleanFilterUI, 'datetime': DateFilterUI\n };\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.customFilterOperators = customFltrOperators;\n this.filterObj = fltrObj;\n this.flMuiObj = new FlMenuOptrUI(this.parent, this.customFilterOperators, this.serviceLocator);\n this.l10n = this.serviceLocator.getService('localization');\n this.menuFilterBase = new CheckBoxFilterBase(parent);\n }\n FilterMenuRenderer.prototype.clearCustomFilter = function (col) {\n this.clearBtnClick(col);\n };\n FilterMenuRenderer.prototype.applyCustomFilter = function (args) {\n this.filterBtnClick(args.col);\n };\n FilterMenuRenderer.prototype.openDialog = function (args) {\n this.options = args;\n this.col = this.parent.getColumnByField(args.field);\n if (isNullOrUndefined(this.col.filter) || (isNullOrUndefined(this.col.filter.type) || this.col.filter.type === 'Menu')) { ///\n this.renderDlgContent(args.target, this.col);\n }\n };\n FilterMenuRenderer.prototype.closeDialog = function (target) {\n if (!this.dlgObj) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n var elem = document.getElementById(this.dlgObj.element.id);\n if (this.dlgObj && !this.dlgObj.isDestroyed && elem) {\n var argument = { cancel: false, column: this.col, target: target, element: elem };\n this.parent.notify(events.filterMenuClose, argument);\n if (argument.cancel) {\n return;\n }\n this.isDialogOpen = false;\n if (this.isMenuCheck) {\n this.menuFilterBase.unWireEvents();\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.isMenuCheck = false;\n }\n this.dlgObj.destroy();\n remove(elem);\n }\n this.parent.notify(events.filterDialogClose, {});\n };\n FilterMenuRenderer.prototype.renderDlgContent = function (target, column) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(events.actionBegin, args);\n var mainDiv = this.parent.createElement('div', { className: 'e-flmenu-maindiv', id: column.uid + '-flmenu' });\n this.dlgDiv = this.parent.createElement('div', { className: 'e-flmenu', id: column.uid + '-flmdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('FilterMenuDialogARIA'));\n if (this.parent.enableAdaptiveUI) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n created: this.dialogCreated.bind(this, target, column),\n position: this.parent.element.classList.contains('e-device') ? { X: 'center', Y: 'center' } : { X: '', Y: '' },\n target: this.parent.element.classList.contains('e-device') ? document.body : this.parent.element,\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.l10n.getConstant('FilterButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-flmenu-okbtn' + ' ' + this.parent.cssClass : 'e-flmenu-okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this, column),\n buttonModel: { content: this.l10n.getConstant('ClearButton'),\n cssClass: this.parent.cssClass ? 'e-flmenu-cancelbtn' + ' ' + this.parent.cssClass : 'e-flmenu-cancelbtn' }\n }],\n content: mainDiv,\n width: (!isNullOrUndefined(parentsUntil(target, 'e-bigger'))) || this.parent.element.classList.contains('e-device') ? 260 : 250,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? 'e-filter-popup' + ' ' + this.parent.cssClass : 'e-filter-popup'\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgObj.appendTo(this.dlgDiv);\n };\n FilterMenuRenderer.prototype.renderResponsiveDialog = function () {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.buttons = [{}];\n }\n };\n FilterMenuRenderer.prototype.dialogCreated = function (target, column) {\n if (!Browser.isDevice && target) {\n getFilterMenuPostion(target, this.dlgObj);\n }\n this.currentDialogCreatedColumn = column;\n this.renderFilterUI(target, column);\n if (!(column.isForeignColumn() && !(!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)))) {\n this.afterRenderFilterUI();\n }\n };\n /**\n * Function to notify filterDialogCreated and trigger actionComplete\n *\n * @returns {void}\n * @hidden\n */\n FilterMenuRenderer.prototype.afterRenderFilterUI = function () {\n var column = this.currentDialogCreatedColumn;\n if (column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.style.left = '0px';\n this.dlgObj.element.style.maxHeight = 'none';\n }\n else {\n this.dlgObj.element.style.maxHeight = this.maxHeight;\n }\n this.dlgObj.show();\n var optrInput = this.dlgObj.element.querySelector('.e-flm_optrdiv').querySelector('input');\n var valInput = this.dlgObj.element.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (optrInput.value === 'Empty' || optrInput.value === 'Not Empty' ||\n optrInput.value === 'Null' || optrInput.value === 'Not Null') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput && valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n if (!column.filterTemplate) {\n this.writeMethod(column, this.dlgObj.element.querySelector('#' + column.uid + '-flmenu'));\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.isDialogOpen = true;\n if (!this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n FilterMenuRenderer.prototype.renderFilterUI = function (target, col) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-flmenu-maindiv');\n this.parent.log('column_type_missing', { column: col });\n this.renderOperatorUI(dlgConetntEle, target, col);\n this.renderFlValueUI(dlgConetntEle, target, col);\n };\n FilterMenuRenderer.prototype.renderOperatorUI = function (dlgConetntEle, target, column) {\n this.flMuiObj.renderOperatorUI(dlgConetntEle, target, column, this.dlgObj, this.filterObj.menuOperator);\n };\n FilterMenuRenderer.prototype.renderFlValueUI = function (dlgConetntEle, target, column) {\n var valueDiv = this.parent.createElement('div', { className: 'e-flmenu-valuediv' });\n var fObj = this.filterObj;\n dlgConetntEle.appendChild(valueDiv);\n var instanceofFilterUI = new this.colTypes[column.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (column.filterTemplate) {\n var fltrData = {};\n var valueInString = 'value';\n fltrData[column.field] = fltrData[\"\" + valueInString] = fObj.values[column.field];\n if (column.foreignKeyValue) {\n fltrData[column.foreignKeyValue] = fObj.values[column.field];\n fltrData[column.field] = undefined;\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n this.parent.renderTemplates();\n }\n else {\n var compElement = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, compElement);\n }\n if (this.isMenuCheck) {\n this.menuFilterBase.cBox = this.dlgObj.element.querySelector('.e-checkboxlist.e-fields');\n this.menuFilterBase.wireEvents();\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.menuFilterBase.getAllData();\n }\n }\n else {\n if (!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)) {\n var temp = column.filter.ui.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj\n });\n }\n else {\n instanceofFilterUI.create({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, localizeText: this.l10n, dialogObj: this.dlgObj\n });\n }\n }\n };\n FilterMenuRenderer.prototype.writeMethod = function (col, dlgContentEle) {\n var flValue;\n var target = dlgContentEle.querySelector('.e-flmenu-valinput');\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.uid === column.uid) {\n flValue = column.value;\n }\n }\n if (!isNullOrUndefined(col.filter) && !isNullOrUndefined(col.filter.ui)\n && !isNullOrUndefined(col.filter.ui.write)) {\n var temp = col.filter.ui.write;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n else {\n instanceofFilterUI.write({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n };\n FilterMenuRenderer.prototype.filterBtnClick = function (col) {\n var flValue;\n var targ = this.dlgObj.element.querySelector('.e-flmenu-valuediv input');\n var flOptrValue = this.flMuiObj.getFlOperator();\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (col.filterTemplate) {\n var element = this.dlgDiv.querySelector('.e-flmenu-valuediv');\n var fltrValue = void 0;\n if (element.children[0].value) {\n fltrValue = element.children[0].value;\n }\n else {\n if (!isNullOrUndefined(element.children[0].ej2_instances)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fltrValue = (this.parent.isAngular ? element.children[0] :\n element.querySelector('input')).ej2_instances[0].value;\n }\n else {\n var eControl = element.querySelector('.e-control');\n if (!isNullOrUndefined(eControl)) {\n fltrValue = col.type === 'boolean' ? eControl.checked :\n !isNullOrUndefined(eControl.ej2_instances) ?\n eControl.ej2_instances[0].value :\n eControl.value;\n }\n }\n }\n this.filterObj.filterByColumn(col.field, flOptrValue, fltrValue);\n }\n else {\n if (!isNullOrUndefined(col.filter) &&\n !isNullOrUndefined(col.filter.ui) && !isNullOrUndefined(col.filter.ui.read)) {\n var temp = col.filter.ui.read;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n // eslint-disable-next-line\n flValue = temp({ element: targ, column: col, operator: flOptrValue, fltrObj: this.filterObj });\n }\n else {\n instanceofFilterUI.read(targ, col, flOptrValue, this.filterObj);\n }\n }\n this.closeDialog();\n if (this.parent.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n FilterMenuRenderer.prototype.closeResponsiveDialog = function () {\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.clearBtnClick = function (column) {\n this.filterObj.removeFilteredColsByField(column.field);\n this.closeDialog();\n var iconClass = this.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = this.parent.element.querySelector('[e-mappinguid=\"' + column.uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (flIcon) {\n flIcon.classList.remove('e-filtered');\n }\n };\n FilterMenuRenderer.prototype.destroy = function () {\n this.closeDialog();\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n FilterMenuRenderer.prototype.getFilterUIInfo = function () {\n return { field: this.col.field, operator: this.flMuiObj.getFlOperator() };\n };\n FilterMenuRenderer.prototype.renderCheckBoxMenu = function () {\n this.isMenuCheck = true;\n this.menuFilterBase.updateModel(this.options);\n this.menuFilterBase.getAndSetChkElem(this.options);\n this.dlgObj.buttons = [{\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: {\n content: this.menuFilterBase.getLocalizedLabel('FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: { cssClass: 'e-flat', content: this.menuFilterBase.getLocalizedLabel('ClearButton') }\n }];\n this.menuFilterBase.dialogObj = this.dlgObj;\n this.menuFilterBase.dlg = this.dlgObj.element;\n this.menuFilterBase.dlg.classList.add('e-menucheckbox');\n this.menuFilterBase.dlg.classList.remove('e-checkboxfilter');\n this.maxHeight = '800px';\n return this.menuFilterBase.sBox.innerHTML;\n };\n FilterMenuRenderer.prototype.actionComplete = function (args) {\n if (this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n return FilterMenuRenderer;\n}());\nexport { FilterMenuRenderer };\n","import * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * @hidden\n * `CheckBoxFilter` module is used to handle filtering action.\n */\nvar CheckBoxFilter = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function CheckBoxFilter(parent, filterSettings, serviceLocator) {\n this.parent = parent;\n this.isresetFocus = true;\n this.checkBoxBase = new CheckBoxFilterBase(parent);\n this.addEventListener();\n }\n /**\n * To destroy the check box filter.\n *\n * @returns {void}\n * @hidden\n */\n CheckBoxFilter.prototype.destroy = function () {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.openDialog = function (options) {\n this.checkBoxBase.openDialog(options);\n this.parent.log('column_type_missing', { column: options.column });\n };\n CheckBoxFilter.prototype.closeDialog = function () {\n this.destroy();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n CheckBoxFilter.prototype.closeResponsiveDialog = function () {\n this.checkBoxBase.closeDialog();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n CheckBoxFilter.prototype.getModuleName = function () {\n return 'checkboxFilter';\n };\n CheckBoxFilter.prototype.actionBegin = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n CheckBoxFilter.prototype.actionComplete = function (args) {\n this.parent.trigger(events.actionComplete, args);\n };\n CheckBoxFilter.prototype.actionPrevent = function (args) {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, args);\n args.cancel = true;\n }\n };\n CheckBoxFilter.prototype.clearCustomFilter = function (col) {\n this.checkBoxBase.clearFilter(col);\n };\n CheckBoxFilter.prototype.applyCustomFilter = function () {\n this.checkBoxBase.fltrBtnHandler();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.cBoxFltrBegin, this.actionBegin, this);\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.parent.on(events.fltrPrevent, this.actionPrevent, this);\n };\n CheckBoxFilter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cBoxFltrBegin, this.actionBegin);\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.parent.off(events.fltrPrevent, this.actionPrevent);\n };\n return CheckBoxFilter;\n}());\nexport { CheckBoxFilter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, rippleEffect, NotifyPropertyChanges, Property, closest } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n this.trigger('change', { value: value, event: event });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.wrapper;\n _super.prototype.destroy.call(this);\n if (radioWrap) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n }\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !this.htmlAttributes.value)) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (ATTRIBUTES.indexOf(key) > -1) {\n var wrapper = this.element.parentElement;\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim().split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.wrapper;\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByTagName('label')[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\n","import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElement, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n var _this = this;\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + \"-\" + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n this.closeMenu(null, e);\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line\n trgtliId = new RegExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && e.target.classList.contains('e-vscroll'))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent(\"click\", true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n MenuBase.prototype.copyObject = function (source, destination) {\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n if (Browser.isIE) {\n args.curData.htmlAttributes.role = 'menuitem';\n args.curData.htmlAttributes.tabindex = '-1';\n }\n else {\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', tabindex: '-1' });\n }\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.setAttribute('role', 'separator');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n wrapper.classList.toggle(RTL);\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul && !isNullOrUndefined(idx)) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n var validUl = isUniqueId ? ul.children[index].id : ul.children[index].textContent;\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
    \n *
      \n * ```\n * ```typescript\n * \n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, remove, Browser } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownList, AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { RadioButton, CheckBox } from '@syncfusion/ej2-buttons';\nimport { distinctStringValues, isComplexField, getComplexFieldID, getCustomDateFormat, applyBiggerTheme, performComplexDataOperation, registerEventHandlers, removeEventHandlers, clearReactVueTemplates } from '../base/util';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { parentsUntil, appendChildren, extend, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport { ContextMenu } from '@syncfusion/ej2-navigations';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilterBase = /** @class */ (function (_super) {\n __extends(ExcelFilterBase, _super);\n /**\n * Constructor for excel filtering module\n *\n * @param {IXLFilter} parent - parent details\n * @param {Object} customFltrOperators - operator details\n * @hidden\n */\n function ExcelFilterBase(parent, customFltrOperators) {\n var _this = _super.call(this, parent) || this;\n _this.childRefs = [];\n _this.eventHandlers = {};\n _this.isDevice = false;\n _this.customFilterOperators = customFltrOperators;\n _this.isExcel = true;\n return _this;\n }\n ExcelFilterBase.prototype.getCMenuDS = function (type, operator) {\n var options = {\n number: ['Equal', 'NotEqual', '', 'LessThan', 'LessThanOrEqual', 'GreaterThan',\n 'GreaterThanOrEqual', 'Between', '', 'CustomFilter'],\n string: ['Equal', 'NotEqual', '', 'StartsWith', 'EndsWith', '', 'Contains', 'NotContains', '', 'CustomFilter']\n };\n options.date = options.number;\n options.datetime = options.number;\n options.dateonly = options.number;\n var model = [];\n for (var i = 0; i < options[\"\" + type].length; i++) {\n if (options[\"\" + type][parseInt(i.toString(), 10)].length) {\n if (operator) {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...',\n iconCss: 'e-icons e-icon-check ' + (operator === options[\"\" + type][parseInt(i.toString(), 10)].toLowerCase() ? '' : 'e-emptyicon')\n });\n }\n else {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...'\n });\n }\n }\n else {\n model.push({ separator: true });\n }\n }\n return model;\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilterBase.prototype.destroy = function () {\n if (this.dlg) {\n this.unwireExEvents();\n _super.prototype.closeDialog.call(this);\n }\n if (!this.isDevice && this.menuObj) {\n var li = this.menuObj.element.querySelector('li.e-focused');\n if (!(li && parentsUntil(li, 'e-excel-menu'))) {\n this.destroyCMenu();\n }\n }\n if (this.dlgObj && !this.dlgObj.isDestroyed) {\n this.removeDialog();\n }\n };\n ExcelFilterBase.prototype.createMenu = function (type, isFiltered, isCheckIcon, eleOptions) {\n var options = { string: 'TextFilter', date: 'DateFilter', dateonly: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n this.menu = this.parent.createElement('div', { className: 'e-contextmenu-wrapper' });\n if (this.parent.enableRtl) {\n this.menu.classList.add('e-rtl');\n }\n else {\n this.menu.classList.remove('e-rtl');\n }\n if (this.parent.cssClass) {\n this.menu.classList.add(this.parent.cssClass);\n }\n var ul = this.parent.createElement('ul');\n var icon = isFiltered ? 'e-excl-filter-icon e-filtered' : 'e-excl-filter-icon';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.allowSorting && this.parent.getModuleName() === 'grid'\n && !this.options.isResponsiveFilter) {\n var hdrele = this.parent.getColumnHeaderByUid(eleOptions.uid).getAttribute('aria-sort');\n var colIsSort = this.parent.getColumnByField(eleOptions.field).allowSorting;\n var isAsc = (!colIsSort || hdrele === 'ascending') ? 'e-disabled e-excel-ascending' : 'e-excel-ascending';\n var isDesc = (!colIsSort || hdrele === 'descending') ? 'e-disabled e-excel-descending' : 'e-excel-descending';\n var ascName = (type === 'string') ? this.getLocalizedLabel('SortAtoZ') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByOldest') : this.getLocalizedLabel('SortSmallestToLargest');\n var descName = (type === 'string') ? this.getLocalizedLabel('SortZtoA') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByNewest') : this.getLocalizedLabel('SortLargestToSmallest');\n ul.appendChild(this.createMenuElem(ascName, isAsc, 'e-sortascending'));\n ul.appendChild(this.createMenuElem(descName, isDesc, 'e-sortdescending'));\n var separator = this.parent.createElement('li', { className: 'e-separator e-menu-item e-excel-separator' });\n ul.appendChild(separator);\n }\n if (!this.options.isResponsiveFilter) {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel('ClearFilter'), isFiltered ? '' : 'e-disabled', icon));\n }\n if (type !== 'boolean') {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel(options[\"\" + type]), 'e-submenu', isCheckIcon && this.ensureTextFilter() ? 'e-icon-check' : icon + ' e-emptyicon', true));\n }\n this.menu.appendChild(ul);\n this.parent.notify(events.beforeFltrcMenuOpen, { element: this.menu });\n this.parent.notify(events.refreshCustomFilterClearBtn, { isFiltered: isFiltered });\n };\n ExcelFilterBase.prototype.createMenuElem = function (val, className, iconName, isSubMenu) {\n var li = this.parent.createElement('li', { className: className + ' e-menu-item' });\n li.innerHTML = val;\n li.insertBefore(this.parent.createElement('span', { className: 'e-menu-icon e-icons ' + iconName, attrs: { 'aria-hidden': 'true' } }), li.firstChild);\n if (isSubMenu) {\n li.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n }\n return li;\n };\n ExcelFilterBase.prototype.wireExEvents = function () {\n EventHandler.add(this.dlg, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.dlg, 'click', this.clickExHandler, this);\n };\n ExcelFilterBase.prototype.unwireExEvents = function () {\n EventHandler.remove(this.dlg, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.dlg, 'click', this.clickExHandler);\n };\n ExcelFilterBase.prototype.clickExHandler = function (e) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var menuItem = parentsUntil(e.target, 'e-menu-item');\n if (menuItem) {\n if (this.getLocalizedLabel('ClearFilter') === menuItem.innerText.trim()) {\n this.clearFilter();\n this.closeDialog();\n }\n else if (this.options.isResponsiveFilter\n && this.getLocalizedLabel(options[this.options.type]) === menuItem.innerText.trim()) {\n this.hoverHandler(e);\n }\n }\n };\n ExcelFilterBase.prototype.destroyCMenu = function () {\n this.isCMenuOpen = false;\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n remove(this.cmenu);\n this.parent.notify(events.renderResponsiveCmenu, { target: null, header: '', isOpen: false, col: this.options.column });\n }\n };\n ExcelFilterBase.prototype.hoverHandler = function (e) {\n if (this.options.isResponsiveFilter && e.type === 'mouseover') {\n return;\n }\n var target = e.target.querySelector('.e-contextmenu');\n var li = parentsUntil(e.target, 'e-menu-item');\n var focused = this.menu.querySelector('.e-focused');\n var isSubMenu;\n if (focused) {\n focused.classList.remove('e-focused');\n }\n if (li) {\n li.classList.add('e-focused');\n isSubMenu = li.classList.contains('e-submenu');\n }\n if (target) {\n return;\n }\n if (!isSubMenu) {\n var submenu = this.menu.querySelector('.e-submenu');\n if (!isNullOrUndefined(submenu)) {\n submenu.classList.remove('e-selected');\n }\n this.destroyCMenu();\n }\n var selectedMenu = this.ensureTextFilter();\n if (!this.isCMenuOpen && isSubMenu) {\n li.classList.add('e-selected');\n this.isCMenuOpen = true;\n var menuOptions = {\n items: this.getCMenuDS(this.options.type, selectedMenu ? selectedMenu.replace(/\\s/g, '') : undefined),\n select: this.selectHandler.bind(this),\n onClose: this.destroyCMenu.bind(this),\n enableRtl: this.parent.enableRtl,\n animationSettings: { effect: 'None' },\n beforeClose: this.preventClose.bind(this),\n cssClass: this.options.isResponsiveFilter && this.parent.cssClass ?\n 'e-res-contextmenu-wrapper' + ' ' + this.parent.cssClass : this.options.isResponsiveFilter ?\n 'e-res-contextmenu-wrapper' : this.parent.cssClass ? this.parent.cssClass : ''\n };\n this.parent.element.appendChild(this.cmenu);\n this.menuObj = new ContextMenu(menuOptions, this.cmenu);\n var client = this.menu.querySelector('.e-submenu').getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n if (this.options.isResponsiveFilter) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.menuObj.element.style.height = 'calc(100% - ' + height + 'px)';\n this.menuObj['open'](height, 0, document.body);\n var header = this.getLocalizedLabel(options[this.options.type]);\n this.parent.notify(events.renderResponsiveCmenu, {\n target: this.menuObj.element.parentElement, header: header, isOpen: true\n });\n }\n else {\n if (Browser.isDevice) {\n this.isDevice = true;\n var contextRect = this.getContextBounds();\n pos.top = (window.innerHeight - contextRect.height) / 2;\n pos.left = (window.innerWidth - contextRect.width) / 2;\n this.closeDialog();\n this.isDevice = false;\n }\n else {\n pos.top = Browser.isIE ? window.pageYOffset + client.top : window.scrollY + client.top;\n pos.left = this.getCMenuYPosition(this.dlg);\n }\n this.menuObj['open'](pos.top, pos.left, e.target);\n }\n applyBiggerTheme(this.parent.element, this.menuObj.element.parentElement);\n }\n };\n ExcelFilterBase.prototype.ensureTextFilter = function () {\n var selectedMenu;\n var predicates = this.existingPredicate[this.options.field];\n if (predicates && predicates.length === 2) {\n if (predicates[0].operator === 'greaterthanorequal' && predicates[1].operator === 'lessthanorequal') {\n selectedMenu = 'between';\n }\n else {\n selectedMenu = 'customfilter';\n }\n }\n else {\n if (predicates && predicates.length === 1) {\n this.optrData = this.customFilterOperators[this.options.type + 'Operator'];\n selectedMenu = predicates[0].operator;\n }\n }\n return selectedMenu;\n };\n ExcelFilterBase.prototype.preventClose = function (args) {\n if (this.options && this.options.isResponsiveFilter && args.event) {\n var target = args.event.target;\n var isFilterBack = target.classList.contains('e-resfilterback')\n || target.classList.contains('e-res-back-btn') || target.classList.contains('e-menu-item');\n args.cancel = !isFilterBack;\n }\n else {\n if (args.event instanceof MouseEvent && args.event.target.classList.contains('e-submenu')) {\n args.cancel = true;\n }\n }\n };\n ExcelFilterBase.prototype.getContextBounds = function () {\n this.menuObj.element.style.display = 'block';\n return this.menuObj.element.getBoundingClientRect();\n };\n ExcelFilterBase.prototype.getCMenuYPosition = function (target) {\n var contextWidth = this.getContextBounds().width;\n var targetPosition = target.getBoundingClientRect();\n var leftPos = targetPosition.right + contextWidth - this.parent.element.clientWidth;\n var targetBorder = target.offsetWidth - target.clientWidth;\n targetBorder = targetBorder ? targetBorder + 1 : 0;\n return (leftPos < 1) ? (targetPosition.right + 1 - targetBorder) : (targetPosition.left - contextWidth - 1 + targetBorder);\n };\n ExcelFilterBase.prototype.openDialog = function (options) {\n var _this = this;\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n if (options.cancel) {\n return;\n }\n this.dialogObj.dataBind();\n var filterLength = (this.existingPredicate[options.field] && this.existingPredicate[options.field].length) ||\n this.options.filteredColumns.filter(function (col) {\n return _this.options.field === col.field;\n }).length;\n this.createMenu(options.type, filterLength > 0, (filterLength === 1 || filterLength === 2), options);\n this.dlg.insertBefore(this.menu, this.dlg.firstChild);\n this.dlg.classList.add('e-excelfilter');\n if (this.parent.enableRtl) {\n this.dlg.classList.add('e-rtl');\n }\n this.dlg.classList.remove('e-checkboxfilter');\n this.cmenu = this.parent.createElement('ul', { className: 'e-excel-menu' });\n if (options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n this.wireExEvents();\n };\n ExcelFilterBase.prototype.closeDialog = function () {\n this.destroy();\n };\n ExcelFilterBase.prototype.selectHandler = function (e) {\n if (e.item) {\n this.parent.notify(events.filterCmenuSelect, {});\n this.menuItem = e.item;\n this.renderDialogue(e);\n }\n };\n /**\n * @hidden\n * @param {MenuEventArgs} e - event args\n * @returns {void}\n */\n ExcelFilterBase.prototype.renderDialogue = function (e) {\n var _this = this;\n var target = e ? e.element : undefined;\n var column = this.options.field;\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var mainDiv = this.parent.createElement('div', {\n className: 'e-xlfl-maindiv',\n id: isComplex ? complexFieldName + '-xlflmenu' : column + '-xlflmenu'\n });\n this.dlgDiv = this.parent.createElement('div', {\n className: 'e-xlflmenu',\n id: isComplex ? complexFieldName + '-xlfldlg' : column + '-xlfldlg'\n });\n if (this.options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n header: this.getLocalizedLabel('CustomFilter'),\n isModal: true,\n overlayClick: this.removeDialog.bind(this),\n showCloseIcon: true,\n locale: this.parent.locale,\n closeOnEscape: false,\n target: document.body,\n // target: this.parent.element,\n visible: false,\n enableRtl: this.parent.enableRtl,\n open: function () {\n var row = _this.dlgObj.element.querySelector('table.e-xlfl-table>tr');\n if (_this.options.column.filterTemplate) {\n var templateField_1 = isComplexField(_this.options.column.field) ?\n getComplexFieldID(_this.options.column.field) : _this.options.column.field;\n var isReactCompiler = _this.parent.isReact && typeof (_this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n _this.parent.renderTemplates(function () {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n });\n }\n else {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n }\n }\n else {\n //(row.cells[1].querySelector('input:not([type=hidden])') as HTMLElement).focus();\n }\n },\n close: this.removeDialog.bind(this),\n created: this.createdDialog.bind(this, target, column),\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.getLocalizedLabel('OKButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-xlfl-okbtn' + ' ' + this.parent.cssClass : 'e-xlfl-okbtn'\n }\n },\n {\n click: this.removeDialog.bind(this),\n buttonModel: { content: this.getLocalizedLabel('CancelButton'),\n cssClass: this.parent.cssClass ? 'e-xlfl-cancelbtn' + ' ' + this.parent.cssClass : 'e-xlfl-cancelbtn' }\n }],\n content: mainDiv,\n width: 430,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgDiv.setAttribute('aria-label', this.getLocalizedLabel('CustomFilterDialogARIA'));\n this.childRefs.push(this.dlgObj);\n this.dlgObj.appendTo(this.dlgDiv);\n };\n ExcelFilterBase.prototype.renderResponsiveDialog = function () {\n if (this.options.isResponsiveFilter) {\n var rowResponsiveDlg = document.querySelector('.e-row-responsive-filter');\n if (rowResponsiveDlg) {\n rowResponsiveDlg.classList.remove('e-row-responsive-filter');\n }\n this.dlgObj.buttons = [{}];\n this.dlgObj.header = undefined;\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.showCloseIcon = false;\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelFilterBase.prototype.removeDialog = function () {\n this.parent.notify(events.customFilterClose, {});\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n this.removeObjects(this.childRefs);\n remove(this.dlgDiv);\n this.parent.notify(events.filterDialogClose, {});\n };\n ExcelFilterBase.prototype.createdDialog = function (target, column) {\n this.renderCustomFilter(target, column);\n this.dlgObj.element.style.left = '0px';\n if (!this.options.isResponsiveFilter) {\n this.dlgObj.element.style.top = '0px';\n }\n else {\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.dlgObj.element.style.top = height + 'px';\n }\n if (!this.options.isResponsiveFilter && Browser.isDevice && window.innerWidth < 440) {\n this.dlgObj.element.style.width = '90%';\n }\n this.parent.notify(events.beforeCustomFilterOpen, { column: column, dialog: this.dialogObj });\n this.dlgObj.show();\n applyBiggerTheme(this.parent.element, this.dlgObj.element.parentElement);\n };\n ExcelFilterBase.prototype.renderCustomFilter = function (target, column) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-xlfl-maindiv');\n var dlgFields = this.parent.createElement('div', { innerHTML: this.getLocalizedLabel('ShowRowsWhere'), className: 'e-xlfl-dlgfields' });\n dlgConetntEle.appendChild(dlgFields);\n //column name\n var fieldSet = this.parent.createElement('div', { innerHTML: this.options.displayName, className: 'e-xlfl-fieldset' });\n dlgConetntEle.appendChild(fieldSet);\n this.renderFilterUI(column, dlgConetntEle);\n };\n /**\n * @hidden\n * @param {string} col - Defines column details\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterBtnClick = function (col) {\n var isComplex = !isNullOrUndefined(col) && isComplexField(col);\n var complexFieldName = !isNullOrUndefined(col) && getComplexFieldID(col);\n var colValue = isComplex ? complexFieldName : col;\n var fValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstvalue').ej2_instances[0];\n var fOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstoptr').ej2_instances[0];\n var sValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndvalue').ej2_instances[0];\n var sOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndoptr').ej2_instances[0];\n var checkBoxValue;\n if (this.options.type === 'string') {\n var checkBox = this.dlgDiv.querySelector('#' + colValue + '-xlflmtcase').ej2_instances[0];\n checkBoxValue = checkBox.checked;\n }\n var andRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-frstpredicate').ej2_instances[0];\n var predicate = (andRadio.checked ? 'and' : 'or');\n if (sValue.value === null) {\n predicate = 'or';\n }\n this.filterByColumn(this.options.field, fOperator.value, fValue.value, predicate, checkBoxValue, this.options.ignoreAccent, sOperator.value, sValue.value);\n this.removeDialog();\n };\n /**\n * @hidden\n * Filters grid row by column name with given options.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} firstOperator - Defines the first operator by how to filter records.\n * @param {string | number | Date | boolean} firstValue - Defines the first value which is used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If ignore case set to true, then filter records with exact match or else\n * filter records with case insensitive(uppercase and lowercase letters treated as same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then ignores the diacritic characters or accents when filtering.\n * @param {string} secondOperator - Defines the second operator by how to filter records.\n * @param {string | number | Date | boolean} secondValue - Defines the first value which is used to filter records.\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n var col = this.parent.getColumnByField ? this.parent.getColumnByField(fieldName) : this.options.column;\n var field = this.isForeignColumn(col) ? col.foreignKeyValue : fieldName;\n var fColl = [];\n var mPredicate;\n var arg = {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: firstOperator, arg3: firstValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: secondOperator, arg8: secondValue, cancel: false\n };\n this.parent.notify(events.fltrPrevent, arg);\n if (arg.cancel) {\n return;\n }\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: firstOperator,\n value: arg.arg3,\n type: this.options.type\n });\n mPredicate = new Predicate(field, firstOperator.toLowerCase(), arg.arg3, !matchCase, ignoreAccent);\n if (!isNullOrUndefined(secondValue) && !isNullOrUndefined(secondOperator)) {\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: secondOperator,\n value: arg.arg8,\n type: this.options.type\n });\n mPredicate = mPredicate[\"\" + predicate](field, secondOperator.toLowerCase(), secondValue, !matchCase, ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: mPredicate, actualPredicate: fColl\n };\n if (this.isForeignColumn(col)) {\n this.foreignKeyFilter(args, fColl, mPredicate);\n }\n else {\n this.options.handler(args);\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderOperatorUI = function (column, table, elementID, predicates, isFirst) {\n var fieldElement = this.parent.createElement('tr', { className: 'e-xlfl-fields' });\n table.appendChild(fieldElement);\n var xlfloptr = this.parent.createElement('td', { className: 'e-xlfl-optr' });\n fieldElement.appendChild(xlfloptr);\n var optrDiv = this.parent.createElement('div', { className: 'e-xlfl-optrdiv' });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var optrInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementID : column + elementID });\n optrDiv.appendChild(optrInput);\n xlfloptr.appendChild(optrDiv);\n var optr = this.options.type + 'Operator';\n var dropDatasource = this.customFilterOperators[\"\" + optr];\n this.optrData = dropDatasource;\n var selectedValue = this.dropSelectedVal(this.options.column, predicates, isFirst);\n //Trailing three dots are sliced.\n var menuText = '';\n if (this.menuItem) {\n menuText = this.menuItem.text.slice(0, -3);\n if (menuText !== this.getLocalizedLabel('CustomFilter')) {\n selectedValue = isFirst ? menuText : undefined;\n }\n if (menuText === this.getLocalizedLabel('Between')) {\n selectedValue = this.getLocalizedLabel(isFirst ? 'GreaterThanOrEqual' : 'LessThanOrEqual');\n }\n }\n var col = this.options.column;\n var dropOptr = new DropDownList(extend({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n text: selectedValue,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.filter.params));\n this.childRefs.push(dropOptr);\n var evt = { 'open': this.dropDownOpen.bind(this), 'change': this.dropDownValueChange.bind(this) };\n registerEventHandlers(optrInput.id, [literals.open, literals.change], evt, this);\n dropOptr.addEventListener(literals['open'], this.eventHandlers[optrInput.id][literals.open]);\n dropOptr.addEventListener(literals.change, this.eventHandlers[optrInput.id][literals.change]);\n dropOptr.appendTo(optrInput);\n var operator = this.getSelectedValue(selectedValue);\n return { fieldElement: fieldElement, operator: operator };\n };\n ExcelFilterBase.prototype.removeHandlersFromComponent = function (component) {\n if (component.element.classList.contains('e-dropdownlist')) {\n removeEventHandlers(component, [literals.open, literals.change], this);\n }\n else if (component.element.classList.contains('e-autocomplete')) {\n removeEventHandlers(component, [events.actionComplete, literals.focus], this);\n }\n };\n ExcelFilterBase.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n ExcelFilterBase.prototype.dropDownValueChange = function (args) {\n if (args.element.id.includes('-xlfl-frstoptr')) {\n this.firstOperator = args.value.toString();\n }\n else {\n this.secondOperator = args.value.toString();\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns filter UI\n */\n ExcelFilterBase.prototype.getFilterUIInfo = function () {\n return { firstOperator: this.firstOperator, secondOperator: this.secondOperator, field: this.options.field };\n };\n ExcelFilterBase.prototype.getSelectedValue = function (text) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('text', 'equal', text));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].value : '';\n };\n ExcelFilterBase.prototype.dropSelectedVal = function (col, predicates, isFirst) {\n var operator;\n if (predicates && predicates.length > 0) {\n operator = predicates.length === 2 ?\n (isFirst ? predicates[0].operator : predicates[1].operator) :\n (isFirst ? predicates[0].operator : undefined);\n }\n else if (isFirst && col.type === 'string' && !col.filter.operator) {\n operator = 'startswith';\n }\n else {\n operator = isFirst ? col.filter.operator || 'equal' : undefined;\n }\n return this.getSelectedText(operator);\n };\n ExcelFilterBase.prototype.getSelectedText = function (operator) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', operator));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n };\n ExcelFilterBase.prototype.renderFilterUI = function (column, dlgConetntEle) {\n var predicates = this.existingPredicate[\"\" + column];\n var table = this.parent.createElement('table', { className: 'e-xlfl-table', attrs: { role: 'grid' } });\n dlgConetntEle.appendChild(table);\n var colGroup = this.parent.createElement(literals.colGroup);\n colGroup.innerHTML = '';\n table.appendChild(colGroup);\n //Renders first dropdown\n var optr = this.renderOperatorUI(column, table, '-xlfl-frstoptr', predicates, true);\n this.firstOperator = optr.operator;\n //Renders first value\n this.renderFlValueUI(column, optr, '-xlfl-frstvalue', predicates, true);\n var predicate = this.parent.createElement('tr', { className: 'e-xlfl-predicate' });\n table.appendChild(predicate);\n //Renders first radion button\n this.renderRadioButton(column, predicate, predicates);\n //Renders second dropdown\n optr = this.renderOperatorUI(column, table, '-xlfl-secndoptr', predicates, false);\n this.secondOperator = optr.operator;\n //Renders second text box\n this.renderFlValueUI(column, optr, '-xlfl-secndvalue', predicates, false);\n };\n ExcelFilterBase.prototype.renderRadioButton = function (column, tr, predicates) {\n var td = this.parent.createElement('td', { className: 'e-xlfl-radio', attrs: { 'colSpan': '2' } });\n tr.appendChild(td);\n var radioDiv = this.parent\n .createElement('div', { className: 'e-xlfl-radiodiv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var frstpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-frstpredicate' : column + 'e-xlfl-frstpredicate', attrs: { 'type': 'radio' } });\n var secndpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-secndpredicate' : column + 'e-xlfl-secndpredicate', attrs: { 'type': 'radio' } });\n //appends into div\n radioDiv.appendChild(frstpredicate);\n radioDiv.appendChild(secndpredicate);\n td.appendChild(radioDiv);\n if (this.options.type === 'string') {\n this.renderMatchCase(column, tr, td, '-xlflmtcase', predicates);\n }\n // Initialize AND RadioButton component.\n var andRadio = new RadioButton({\n label: this.getLocalizedLabel('AND'),\n name: 'default', checked: true,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(andRadio);\n // Initialize OR RadioButton component.\n var orRadio = new RadioButton({\n label: this.getLocalizedLabel('OR'),\n name: 'default',\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(orRadio);\n var flValue = predicates && predicates.length === 2 ? predicates[1].predicate : 'and';\n if (flValue === 'and') {\n andRadio.checked = true;\n orRadio.checked = false;\n }\n else {\n orRadio.checked = true;\n andRadio.checked = false;\n }\n // Render initialized RadioButton.\n andRadio.appendTo(frstpredicate);\n orRadio.appendTo(secndpredicate);\n andRadio.element.nextElementSibling.classList.add('e-xlfl-radio-and');\n orRadio.element.nextElementSibling.classList.add('e-xlfl-radio-or');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelFilterBase.prototype.removeObjects = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var obj = elements_1[_i];\n if (obj && !obj.isDestroyed) {\n this.removeHandlersFromComponent(obj);\n obj.destroy();\n }\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderFlValueUI = function (column, optr, elementId, predicates, isFirst) {\n var value = this.parent.createElement('td', { className: 'e-xlfl-value' });\n optr.fieldElement.appendChild(value);\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var valueDiv = this.parent.createElement('div', { className: 'e-xlfl-valuediv' });\n var isFilteredCol = this.options.filteredColumns.some(function (col) { return column === col.field; });\n var fltrPredicates = this.options.filteredColumns.filter(function (col) { return col.field === column; });\n if (this.options.column.filterTemplate) {\n var data = {};\n var columnObj = this.options.column;\n if (isFilteredCol && elementId) {\n data = this.getExcelFilterData(elementId, data, columnObj, predicates, fltrPredicates);\n }\n var isReactCompiler = this.parent.isReact && typeof (this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + columnObj.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n }\n else {\n var element = this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, element);\n }\n if (isReactCompiler || isReactChild) {\n this.parent.renderTemplates(function () {\n valueDiv.querySelector('input').id = isComplex ? complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.parent.isAngular ? valueDiv.children[0] : valueDiv.querySelector('input')).id = isComplex ?\n complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n }\n }\n else {\n var valueInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId });\n valueDiv.appendChild(valueInput);\n value.appendChild(valueDiv);\n var flValue = void 0;\n var predicate = void 0;\n if (predicates && predicates.length > 0) {\n predicate = predicates.length === 2 ?\n (isFirst ? predicates[0] : predicates[1]) :\n (isFirst ? predicates[0] : undefined);\n flValue = (predicate && predicate.operator === optr.operator) ? predicate.value : undefined;\n if (isNullOrUndefined(flValue)) {\n flValue = undefined;\n }\n }\n var types = {\n 'string': this.renderAutoComplete.bind(this),\n 'number': this.renderNumericTextBox.bind(this),\n 'date': this.renderDate.bind(this),\n 'dateonly': this.renderDate.bind(this),\n 'datetime': this.renderDateTime.bind(this)\n };\n types[this.options.type](this.options, column, valueInput, flValue, this.parent.enableRtl);\n }\n };\n ExcelFilterBase.prototype.getExcelFilterData = function (elementId, data, columnObj, predicates, fltrPredicates) {\n var predIndex = elementId === '-xlfl-frstvalue' ? 0 : 1;\n if (elementId === '-xlfl-frstvalue' || fltrPredicates.length > 1) {\n data = { column: predicates instanceof Array ? predicates[parseInt(predIndex.toString(), 10)] : predicates };\n var indx = this.options.column.columnData && fltrPredicates.length > 1 ?\n (this.options.column.columnData.length === 1 ? 0 : 1) : predIndex;\n data[this.options.field] = columnObj.foreignKeyValue ?\n this.options.column.columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue] :\n fltrPredicates[parseInt(indx.toString(), 10)].value;\n if (this.options.foreignKeyValue) {\n data[this.options.foreignKeyValue] = this.options.column\n .columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue];\n }\n }\n return data;\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderMatchCase = function (column, tr, matchCase, elementId, predicates) {\n var matchCaseDiv = this.parent.createElement('div', { className: 'e-xlfl-matchcasediv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var matchCaseInput = this.parent.createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId, attrs: { 'type': 'checkbox' } });\n matchCaseDiv.appendChild(matchCaseInput);\n matchCase.appendChild(matchCaseDiv);\n var flValue = predicates && predicates.length > 0 ?\n (predicates && predicates.length === 2 ? predicates[1].matchCase : predicates[0].matchCase) :\n false;\n // Initialize Match Case check box.\n var checkbox = new CheckBox({\n label: this.getLocalizedLabel('MatchCase'),\n enableRtl: this.parent.enableRtl, checked: flValue,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(checkbox);\n // Render initialized CheckBox.\n checkbox.appendTo(matchCaseInput);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDate = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type) || options.format;\n var datePicker = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(datePicker);\n datePicker.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDateTime = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type);\n var dateTimePicker = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(dateTimePicker);\n dateTimePicker.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.completeAction = function (e) {\n e.result = distinctStringValues(e.result);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderNumericTextBox = function (options, column, inputValue, fValue, isRtl) {\n var numericTextBox = new NumericTextBox(extend({\n format: options.format,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n value: fValue,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, options.column.filter.params));\n this.childRefs.push(numericTextBox);\n numericTextBox.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderAutoComplete = function (options, column, inputValue, fValue, isRtl) {\n var colObj = this.options.column;\n var isForeignColumn = this.isForeignColumn(colObj);\n var dataSource = isForeignColumn ? colObj.dataSource : options.dataSource;\n var fields = { value: isForeignColumn ? colObj.foreignKeyValue : column };\n var actObj = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n query: this.getQuery(),\n sortOrder: 'Ascending',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n text: fValue\n }, colObj.filter.params));\n if (dataSource && 'result' in dataSource) {\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, this.getQuery());\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n actObj.dataSource = new DataManager(e);\n });\n }\n this.childRefs.push(actObj);\n var evt = { 'actionComplete': this.acActionComplete(actObj, column), 'focus': this.acFocus(actObj, column, options, inputValue) };\n registerEventHandlers(inputValue.id, [events.actionComplete, literals.focus], evt, this);\n actObj.addEventListener(literals.focus, this.eventHandlers[inputValue.id][literals.focus]);\n actObj.addEventListener(events.actionComplete, this.eventHandlers[inputValue.id][events.actionComplete]);\n actObj.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.acActionComplete = function (actObj, column) {\n return function (e) {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObject) {\n return isComplex ? performComplexDataOperation(actObj.fields.value, mapObject)\n : mapObject[actObj.fields.value];\n }).indexOf(isComplex ? performComplexDataOperation(actObj.fields.value, obj) :\n obj[actObj.fields.value]) === index;\n });\n };\n };\n ExcelFilterBase.prototype.acFocus = function (actObj, column, options, inputValue) {\n var _this = this;\n return function () {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var columnvalue = isComplex ? complexFieldName : column;\n actObj.filterType = _this.dlgDiv.querySelector('#' + columnvalue +\n (inputValue.id === (columnvalue + '-xlfl-frstvalue') ?\n '-xlfl-frstoptr' :\n '-xlfl-secndoptr')).ej2_instances[0].value;\n actObj.ignoreCase = options.type === 'string' ?\n !_this.dlgDiv.querySelector('#' + columnvalue + '-xlflmtcase').ej2_instances[0].checked :\n true;\n actObj.filterType = !isNullOrUndefined(actObj.filterType) ? actObj.filterType :\n 'equal';\n };\n };\n return ExcelFilterBase;\n}(CheckBoxFilterBase));\nexport { ExcelFilterBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ExcelFilterBase } from '../common/excel-filter-base';\nimport { CheckBoxFilter } from './checkbox-filter';\nimport * as events from '../base/constant';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilter = /** @class */ (function (_super) {\n __extends(ExcelFilter, _super);\n /**\n * Constructor for excelbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the Filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @param {object} customFltrOperators - specifies the customFltrOperators\n * @hidden\n */\n function ExcelFilter(parent, filterSettings, serviceLocator, customFltrOperators) {\n var _this = _super.call(this, parent, filterSettings, serviceLocator) || this;\n _this.parent = parent;\n _this.isresetFocus = true;\n _this.excelFilterBase = new ExcelFilterBase(parent, customFltrOperators);\n return _this;\n }\n /**\n * To destroy the excel filter.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilter.prototype.destroy = function () {\n this.excelFilterBase.closeDialog();\n };\n ExcelFilter.prototype.openDialog = function (options) {\n this.excelFilterBase.openDialog(options);\n };\n ExcelFilter.prototype.closeDialog = function () {\n this.excelFilterBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ExcelFilter.prototype.clearCustomFilter = function (col) {\n this.excelFilterBase.clearFilter(col);\n };\n ExcelFilter.prototype.closeResponsiveDialog = function (isCustomFilter) {\n if (isCustomFilter) {\n this.excelFilterBase.removeDialog();\n }\n else {\n this.closeDialog();\n }\n };\n ExcelFilter.prototype.applyCustomFilter = function (args) {\n if (!args.isCustomFilter) {\n this.excelFilterBase.fltrBtnHandler();\n this.excelFilterBase.closeDialog();\n }\n else {\n this.excelFilterBase.filterBtnClick(args.col.field);\n }\n };\n ExcelFilter.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n this.excelFilterBase.filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue);\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n ExcelFilter.prototype.getFilterUIInfo = function () {\n return this.excelFilterBase.getFilterUIInfo();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExcelFilter.prototype.getModuleName = function () {\n return 'excelFilter';\n };\n return ExcelFilter;\n}(CheckBoxFilter));\nexport { ExcelFilter };\n","import { EventHandler, isNullOrUndefined, extend, closest, getValue } from '@syncfusion/ej2-base';\nimport { getActualPropFromColl, isActionPrevent, getColumnByForeignKeyValue } from '../base/util';\nimport { remove, matches } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { CellType, ResponsiveDialogAction } from '../base/enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport { FilterCellRenderer } from '../renderer/filter-cell-renderer';\nimport { parentsUntil } from '../base/util';\nimport { FilterMenuRenderer } from '../renderer/filter-menu-renderer';\nimport { CheckBoxFilter } from '../actions/checkbox-filter';\nimport { ExcelFilter } from '../actions/excel-filter';\nimport * as literals from '../base/string-literals';\nimport { Input } from '@syncfusion/ej2-inputs';\n/**\n *\n * The `Filter` module is used to handle filtering action.\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Grid filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filterSettings\n * @param {ServiceLocator} serviceLocator - specifes the serviceLocator\n * @hidden\n */\n function Filter(parent, filterSettings, serviceLocator) {\n this.predicate = 'and';\n this.contentRefresh = true;\n this.filterByMethod = true;\n this.refresh = true;\n this.values = {};\n this.operators = {};\n this.cellText = {};\n this.nextFlMenuOpen = '';\n this.type = { 'Menu': FilterMenuRenderer, 'CheckBox': CheckBoxFilter, 'Excel': ExcelFilter };\n /** @hidden */\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.fltrDlgDetails = { field: '', isOpen: false };\n /** @hidden */\n this.skipNumberInput = ['=', ' ', '!'];\n this.skipStringInput = ['>', '<', '='];\n this.actualPredicate = {};\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * To render filter bar when filtering enabled.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.render = function (e) {\n if (DataUtil.getObject('args.isFrozen', e) || (this.parent.getFrozenMode() === literals.leftRight &&\n DataUtil.getObject('args.renderFrozenRightContent', e))) {\n return;\n }\n var gObj = this.parent;\n this.l10n = this.serviceLocator.getService('localization');\n this.getLocalizedCustomOperators();\n if (this.parent.filterSettings.type === 'FilterBar') {\n if (gObj.columns.length) {\n var fltrElem = this.parent.element.querySelector('.e-filterbar');\n if (fltrElem) {\n remove(fltrElem);\n }\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Filter, gObj);\n var cellrender = this.serviceLocator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Filter, new FilterCellRenderer(this.parent, this.serviceLocator));\n this.valueFormatter = this.serviceLocator.getService('valueFormatter');\n rowRenderer.element = this.parent.createElement('tr', { className: 'e-filterbar' });\n var row = this.generateRow();\n row.data = this.values;\n if (gObj.getFrozenMode() === 'Right') {\n var thead = gObj.getFrozenRightHeader().querySelector('thead');\n thead.appendChild(rowRenderer.element);\n }\n else {\n this.parent.getHeaderContent().querySelector('thead:not(.e-masked-thead)').appendChild(rowRenderer.element);\n }\n var rowdrag = this.parent.element.querySelector('.e-rowdragheader');\n this.element = rowRenderer.render(row, gObj.getColumns(), null, null, rowRenderer.element);\n var detail = this.element.querySelector('.e-detailheadercell');\n if (detail) {\n detail.className = 'e-filterbarcell e-mastercell';\n }\n if (rowdrag) {\n rowdrag.className = 'e-dragheadercell e-mastercell';\n }\n var gCells = [].slice.call(this.element.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n this.wireEvents();\n this.parent.notify(events.freezeRender, { case: 'filter' });\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Filter.prototype.showCustomFilter = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog(this.column);\n };\n /**\n * To create the filter module.\n *\n * @param {Column} col - specifies the filtering column name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.setFilterModel = function (col) {\n var type = col.filter.type || this.parent.filterSettings.type;\n this.filterModule = new this.type[\"\" + type](this.parent, this.parent.filterSettings, this.serviceLocator, this.customOperators, this);\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.destroy();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowFiltering)) {\n this.filterSettings.columns = [];\n }\n this.updateFilterMsg();\n this.removeEventListener();\n this.unWireEvents();\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n var dropdownlist = [].slice.call(this.element.getElementsByClassName('e-filterbaroperator'));\n for (var i = 0; i < dropdownlist.length; i++) {\n if (dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0]) {\n dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n if (this.element) {\n if (this.element.parentElement) {\n remove(this.element);\n }\n var filterBarElement = this.parent.getHeaderContent().querySelector('.e-filterbar');\n if (this.parent.isFrozenGrid() && filterBarElement) {\n remove(filterBarElement);\n }\n }\n };\n Filter.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isFilter);\n }\n };\n Filter.prototype.generateRow = function () {\n var options = {};\n var row = new Row(options);\n row.cells = this.generateCells();\n return row;\n };\n Filter.prototype.generateCells = function () {\n //TODO: generate dummy column for group, detail, stacked row here for filtering;\n var cells = [];\n if (this.parent.allowGrouping) {\n for (var c = 0, len = this.parent.groupSettings.columns.length; c < len; c++) {\n cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n cells.push(this.generateCell({}, CellType.DetailHeader));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n for (var _i = 0, _a = this.parent.getColumns(); _i < _a.length; _i++) {\n var dummy = _a[_i];\n cells.push(this.generateCell(dummy));\n }\n if (this.parent.getFrozenMode() === 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n return cells;\n };\n Filter.prototype.generateCell = function (column, cellType) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'rowId': '',\n 'column': column,\n 'cellType': cellType ? cellType : CellType.Filter,\n 'attributes': { title: this.l10n.getConstant('FilterbarTitle') }\n };\n return new Cell(opt);\n };\n /**\n * To update filterSettings when applying filter.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.updateModel = function () {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(this.fieldName);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n var arrayVal = Array.isArray(this.value) ? this.value : [this.value];\n var moduleName = this.parent.dataSource.adaptor && this.parent.dataSource.adaptor.getModuleName ? this.parent.dataSource.adaptor.getModuleName() : undefined;\n for (var i = 0, len = arrayVal.length; i < len; i++) {\n var field = col.isForeignColumn() ? col.foreignKeyValue : this.fieldName;\n var isMenuNotEqual = this.operator === 'notequal';\n this.currentFilterObject = {\n field: field, uid: col.uid, isForeignKey: col.isForeignColumn(), operator: this.operator,\n value: arrayVal[parseInt(i.toString(), 10)], predicate: this.predicate,\n matchCase: this.matchCase, ignoreAccent: this.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n };\n var index = this.getFilteredColsIndexByField(col);\n if (index > -1 && !Array.isArray(this.value)) {\n this.filterSettings.columns[parseInt(index.toString(), 10)] = this.currentFilterObject;\n }\n else {\n this.filterSettings.columns.push(this.currentFilterObject);\n }\n if (!this.column.isForeignColumn() && isNullOrUndefined(this.value) && (this.operator === 'equal' ||\n this.operator === 'notequal') && (moduleName !== 'ODataAdaptor' && moduleName !== 'ODataV4Adaptor')) {\n for (var i_1 = 0; i_1 < this.filterSettings.columns.length; i_1++) {\n if (this.filterSettings.columns[\"\" + i_1].field === field &&\n (this.filterSettings.columns[\"\" + i_1].operator === 'equal' || this.filterSettings.columns[\"\" + i_1].operator === 'notequal')\n && isNullOrUndefined(this.filterSettings.columns[\"\" + i_1].value)) {\n this.filterSettings.columns.splice(i_1, 1);\n i_1 = i_1 - 1;\n }\n }\n if (col.type === 'string') {\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: ''\n });\n }\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: undefined\n });\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: null\n });\n }\n }\n // eslint-disable-next-line no-self-assign\n this.filterSettings.columns = this.filterSettings.columns;\n this.parent.dataBind();\n };\n Filter.prototype.getFilteredColsIndexByField = function (col) {\n var cols = this.filterSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].uid === col.uid || (col.isForeignColumn()\n && this.parent.getColumnByUid(col.uid).field === col.foreignKeyValue)) {\n return i;\n }\n }\n return -1;\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n currentFilterObject: this.currentFilterObject,\n /* tslint:disable:no-string-literal */\n currentFilteringColumn: !isNullOrUndefined(this.column) ? this.column.field : undefined,\n /* tslint:enable:no-string-literal */\n columns: this.filterSettings.columns, requestType: 'filtering', type: events.actionComplete\n } : {\n requestType: 'filtering', type: events.actionComplete\n };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.isRemove = false;\n };\n Filter.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate, this);\n };\n Filter.prototype.unWireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate);\n };\n Filter.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.parent.getHeaderTable().classList.add('e-sortfilter');\n this.render();\n }\n };\n Filter.prototype.refreshFilterValue = function () {\n this.parent.removeEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.columns.length &&\n !this.parent.getCurrentViewRecords().length) {\n this.initialEnd();\n }\n };\n Filter.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.filterSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.initialLoad = true;\n for (var _i = 0, _a = gObj.filterSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.filterByColumn(col.field, col.operator, col.value, col.predicate, col.matchCase, col.ignoreAccent, col.actualFilterValue, col.actualOperator);\n }\n this.initialLoad = false;\n this.updateFilterMsg();\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.filterComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.headerRefreshed, this.render, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.filterMenuClose, this.filterMenuClose, this);\n this.docClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.docClickHandler, this);\n EventHandler.add(this.parent.element, 'mousedown', this.refreshClearIcon, this);\n this.parent.on(events.filterOpen, this.columnMenuFilter, this);\n this.parent.on(events.click, this.filterIconClickHandler, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n this.parent.on(events.closeFilterDialog, this.clickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.refreshFilterValueFn = this.refreshFilterValue.bind(this);\n this.parent.addEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeEventListener = function () {\n EventHandler.remove(document, 'click', this.docClickHandler);\n EventHandler.remove(this.parent.element, 'mousedown', this.refreshClearIcon);\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.filterComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.keyPressed, this.keyUpHandler);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.off(events.headerRefreshed, this.render);\n this.parent.off(events.filterOpen, this.columnMenuFilter);\n this.parent.off(events.filterMenuClose, this.filterMenuClose);\n this.parent.off(events.click, this.filterIconClickHandler);\n this.parent.off(events.closeFilterDialog, this.clickHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n Filter.prototype.refreshClearIcon = function (e) {\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' &&\n e.target.closest('th') && e.target.closest('th').classList.contains('e-filterbarcell') &&\n e.target.classList.contains('e-clear-icon')) {\n var targetText = e.target.previousElementSibling;\n Input.setValue(null, targetText, 'Never', true);\n if (this.filterSettings.mode === 'Immediate') {\n this.removeFilteredColsByField(targetText.id.slice(0, -14)); //Length of _filterBarcell = 14\n }\n }\n };\n Filter.prototype.filterMenuClose = function () {\n this.fltrDlgDetails.isOpen = false;\n };\n /**\n * Filters the Grid row by fieldName, filterOperator, and filterValue.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value which is used to filter records.\n * @param {string} predicate - Defines the relationship of one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, then the filter records\n * the exact match or
      filters records that are case insensitive (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @returns {void}\n */\n Filter.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n var _this = this;\n var gObj = this.parent;\n var filterCell;\n this.column = gObj.grabColumnByFieldFromAllCols(fieldName);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator\n && isNullOrUndefined(this.column.filterBarTemplate) && isNullOrUndefined(this.column.filterTemplate)) {\n filterOperator = this.getOperatorName(fieldName);\n }\n if (filterOperator === 'like' && filterValue.indexOf('%') === -1) {\n filterValue = '%' + filterValue + '%';\n }\n if (!this.column) {\n return;\n }\n if (this.filterSettings.type === 'FilterBar') {\n filterCell = gObj.getHeaderContent().querySelector('[id=\\'' + this.column.field + '_filterBarcell\\']');\n }\n if (!isNullOrUndefined(this.column.allowFiltering) && !this.column.allowFiltering) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: this.column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: filterOperator, arg3: filterValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: actualFilterValue, arg8: actualOperator\n });\n return;\n }\n this.predicate = predicate ? predicate : Array.isArray(filterValue) ? 'or' : 'and';\n this.value = filterValue;\n this.matchCase = matchCase || false;\n this.ignoreAccent = this.ignoreAccent = !isNullOrUndefined(ignoreAccent) ? ignoreAccent : this.parent.filterSettings.ignoreAccent;\n this.fieldName = fieldName;\n this.operator = filterOperator;\n filterValue = !isNullOrUndefined(filterValue) ? filterValue.toString() : filterValue;\n if (filterValue === '') {\n filterValue = null;\n }\n if (this.column.type === 'number' || this.column.type === 'date') {\n this.matchCase = true;\n }\n gObj.getColumnHeaderByField(this.column.isForeignColumn() ? this.column.field : fieldName).setAttribute('aria-filtered', 'true');\n if (filterCell && this.filterSettings.type === 'FilterBar') {\n if ((filterValue && filterValue.length < 1) || (!this.filterByMethod &&\n this.checkForSkipInput(this.column, filterValue))) {\n this.filterStatusMsg = (filterValue && filterValue.length < 1) ? '' : this.l10n.getConstant('InvalidFilterMessage');\n this.updateFilterMsg();\n return;\n }\n if (filterCell.value !== filterValue) {\n filterCell.value = filterValue;\n }\n }\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n if (this.initialLoad && this.filterSettings.type === 'FilterBar') {\n filterCell.value = this.values[this.column.field];\n }\n }\n else {\n this.values[this.column.field] = filterValue; //this line should be above updateModel\n }\n var predObj = {\n field: this.fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: this.operator,\n value: this.value,\n type: this.column.type\n };\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === _this.fieldName);\n });\n if (filterColumn.length > 1 && !isNullOrUndefined(this.actualPredicate[this.fieldName])) {\n this.actualPredicate[this.fieldName].push(predObj);\n }\n else {\n this.actualPredicate[this.fieldName] = [predObj];\n }\n if (this.checkAlreadyColFiltered(this.column.field)) {\n return;\n }\n this.updateModel();\n };\n Filter.prototype.applyColumnFormat = function (filterValue) {\n var _this = this;\n var getFlvalue = (this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') ?\n new Date(filterValue) : parseFloat(filterValue);\n if ((this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') && filterValue &&\n Array.isArray(this.value) && filterValue.split(',').length > 1) {\n this.values[this.column.field] = ((filterValue).split(',')).map(function (val) {\n if (val === '') {\n val = null;\n }\n return _this.setFormatForFlColumn(new Date(val), _this.column);\n });\n }\n else {\n this.values[this.column.field] = this.setFormatForFlColumn(getFlvalue, this.column);\n }\n };\n // To skip the second time request to server while applying initial filtering - EJ2-44361\n Filter.prototype.skipUid = function (col) {\n var flag = true;\n var colLen = Object.keys((col));\n for (var i = 0; i < colLen.length; i++) {\n var key = Object.keys(col[colLen[parseInt(i.toString(), 10)]]);\n if (key.length === 1 && key[0] === 'uid') {\n flag = false;\n }\n }\n return flag;\n };\n Filter.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var col = 'columns';\n // eslint-disable-next-line no-case-declarations\n var args = {\n currentFilterObject: this.currentFilterObject, currentFilteringColumn: this.column ?\n this.column.field : undefined, action: 'filter', columns: this.filterSettings.columns,\n requestType: 'filtering', type: events.actionBegin, cancel: false\n };\n if (this.contentRefresh && this.skipUid(e.properties[\"\" + col])) {\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n if (isNullOrUndefined(this.prevFilterObject)) {\n this.filterSettings.columns.splice(this.filterSettings.columns.length - 1, 1);\n }\n else {\n this.filterSettings.columns[this.filterObjIndex] = this.prevFilterObject;\n }\n return;\n }\n this.updateFilterIcon();\n this.refreshFilterSettings();\n this.updateFilterMsg();\n this.updateFilter();\n }\n break;\n case 'showFilterBarStatus':\n if (e.properties[\"\" + prop]) {\n this.updateFilterMsg();\n }\n else if (this.parent.allowPaging) {\n this.parent.updateExternalMessage('');\n }\n break;\n case 'showFilterBarOperator':\n case 'type':\n this.parent.refreshHeader();\n this.refreshFilterSettings();\n break;\n }\n }\n };\n Filter.prototype.refreshFilterSettings = function () {\n if (this.filterSettings.type === 'FilterBar') {\n for (var i = 0; i < this.filterSettings.columns.length; i++) {\n this.column = this.parent.grabColumnByUidFromAllCols(this.filterSettings.columns[parseInt(i.toString(), 10)].uid);\n var filterValue = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n }\n else {\n var key = this.filterSettings.columns[parseInt(i.toString(), 10)].field;\n this.values[\"\" + key] = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n var filterElement = this.getFilterBarElement(this.column.field);\n if (filterElement) {\n if (this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field] !== ''\n && !isNullOrUndefined(this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field])) {\n filterElement.value = this.cellText[this.column.field];\n }\n else {\n filterElement.value = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n }\n }\n if (this.filterSettings.columns.length === 0) {\n var col = this.parent.getColumns();\n for (var i = 0; i < col.length; i++) {\n var filterElement = this.getFilterBarElement(col[parseInt(i.toString(), 10)].field);\n if (filterElement && filterElement.value !== '') {\n filterElement.value = '';\n delete this.values[col[parseInt(i.toString(), 10)].field];\n }\n }\n }\n }\n };\n Filter.prototype.updateFilterIcon = function () {\n if (this.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrIconElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrIconElement.length; i < len; i++) {\n fltrIconElement[parseInt(i.toString(), 10)].removeAttribute('aria-filtered');\n fltrIconElement[parseInt(i.toString(), 10)].classList.remove('e-filtered');\n }\n }\n };\n Filter.prototype.getFilterBarElement = function (col) {\n var selector = '[id=\\'' + col + '_filterBarcell\\']';\n var filterElement;\n if (selector && !isNullOrUndefined(this.element)) {\n filterElement = this.element.querySelector(selector);\n }\n return filterElement;\n };\n /**\n * @private\n * @returns {void}\n */\n Filter.prototype.refreshFilter = function () {\n this.refreshFilterSettings();\n this.updateFilterMsg();\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - returns the fields\n * @returns {void}\n */\n Filter.prototype.clearFiltering = function (fields) {\n var _this = this;\n var cols = getActualPropFromColl(this.filterSettings.columns);\n if (!isNullOrUndefined(fields)) {\n this.refresh = false;\n fields.forEach(function (field) { _this.removeFilteredColsByField(field, false); });\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n this.parent.renderModule.refresh();\n this.refresh = true;\n return;\n }\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearFiltering });\n return;\n }\n for (var i = 0; i < cols.length; i++) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredcols = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n this.refresh = false;\n for (var i = 0, len = filteredcols.length; i < len; i++) {\n this.removeFilteredColsByField(this.parent.getColumnByUid(filteredcols[parseInt(i.toString(), 10)]).field, false);\n }\n this.refresh = true;\n if (filteredcols.length) {\n this.parent.renderModule.refresh();\n }\n if (this.parent.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrElement.length; i < len; i++) {\n fltrElement[0].removeAttribute('aria-filtered');\n fltrElement[0].classList.remove('e-filtered');\n }\n }\n this.isRemove = true;\n this.filterStatusMsg = '';\n this.updateFilterMsg();\n };\n Filter.prototype.checkAlreadyColFiltered = function (field) {\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n if (col.field === field && col.value === this.value &&\n col.operator === this.operator && col.predicate === this.predicate) {\n return true;\n }\n }\n return false;\n };\n Filter.prototype.columnMenuFilter = function (args) {\n this.column = args.col;\n var ele = closest(args.target, '#' + args.id);\n if (args.isClose && !ele) {\n this.filterModule.closeDialog();\n }\n else if (ele) {\n this.filterDialogOpen(this.column, args.target);\n }\n };\n Filter.prototype.filterDialogOpen = function (col, target, left, top) {\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.setFilterModel(col);\n this.filterModule.openDialog(this.createOptions(col, target, left, top));\n };\n /**\n * Create filter dialog options\n *\n * @param {Column} col - Filtering column detail.\n * @param {Element} target - Filter dialog target.\n * @param {number} left - Filter dialog left position.\n * @param {number} top - Filter dialog top position.\n * @returns {Object} returns the created dialog options\n * @hidden\n */\n Filter.prototype.createOptions = function (col, target, left, top) {\n var gObj = this.parent;\n var dataSource = col.filter.dataSource || gObj.dataSource && 'result' in gObj.dataSource ? gObj.dataSource :\n gObj.getDataModule().dataManager;\n var type = col.filter.type || this.parent.filterSettings.type;\n var options = {\n type: col.type, field: col.field, displayName: col.headerText,\n dataSource: dataSource, format: col.format, height: 800, columns: gObj.getColumns(),\n filteredColumns: gObj.filterSettings.columns, target: target, dataManager: gObj.getDataModule().dataManager,\n formatFn: col.getFormatter(), ignoreAccent: gObj.filterSettings.ignoreAccent,\n parserFn: col.getParser(), query: gObj.query, template: col.getFilterItemTemplate(),\n hideSearchbox: isNullOrUndefined(col.filter.hideSearchbox) ? false : col.filter.hideSearchbox,\n handler: this.filterHandler.bind(this), localizedStrings: gObj.getLocaleConstants(),\n position: { X: left, Y: top }, column: col, foreignKeyValue: col.foreignKeyValue,\n actualPredicate: this.actualPredicate, localeObj: gObj.localeObj,\n isRemote: gObj.getDataModule().isRemote(), allowCaseSensitive: this.filterSettings.enableCaseSensitivity,\n isResponsiveFilter: this.parent.enableAdaptiveUI,\n operator: this.actualPredicate[col.field] && type === 'Menu' ? this.actualPredicate[col.field][0].operator : 'equal'\n };\n return options;\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n var fCell;\n var cols = this.filterSettings.columns;\n if (isActionPrevent(this.parent)) {\n var args = { instance: this, handler: this.removeFilteredColsByField, arg1: field, arg2: isClearFilterBar };\n this.parent.notify(events.preventBatch, args);\n return;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredColsUid = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n var _loop_1 = function (i, len) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this_1.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n var len_1 = cols.length;\n var column = this_1.parent.grabColumnByUidFromAllCols(filteredColsUid[parseInt(i.toString(), 10)]);\n if (column.field === field || (column.field === column.foreignKeyValue && column.isForeignColumn())) {\n var currentPred = this_1.filterSettings.columns.filter(function (e) {\n return e.uid === column.uid;\n })[0];\n if (this_1.filterSettings.type === 'FilterBar' && !isClearFilterBar) {\n var selector = '[id=\\'' + column.field + '_filterBarcell\\']';\n fCell = this_1.parent.getHeaderContent().querySelector(selector);\n if (fCell) {\n fCell.value = '';\n delete this_1.values[\"\" + field];\n }\n }\n while (len_1--) {\n if (cols[parseInt(len_1.toString(), 10)].uid === column.uid) {\n cols.splice(len_1, 1);\n }\n }\n var fltrElement = this_1.parent.getColumnHeaderByField(column.field);\n fltrElement.removeAttribute('aria-filtered');\n if (this_1.filterSettings.type !== 'FilterBar' || this_1.parent.showColumnMenu) {\n var iconClass = this_1.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n fltrElement.querySelector(iconClass).classList.remove('e-filtered');\n }\n this_1.isRemove = true;\n if (this_1.actualPredicate[\"\" + field]) {\n delete this_1.actualPredicate[\"\" + field];\n }\n if (this_1.values[\"\" + field]) {\n delete this_1.values[\"\" + field];\n }\n if (this_1.refresh) {\n this_1.parent.notify(events.modelChanged, {\n requestType: 'filtering', type: events.actionBegin, currentFilterObject: currentPred,\n currentFilterColumn: column, action: 'clearFilter'\n });\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0, len = filteredColsUid.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n this.updateFilterMsg();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n Filter.prototype.keyUpHandlerImmediate = function (e) {\n if (e.keyCode !== 13) {\n this.keyUpHandler(e);\n }\n };\n Filter.prototype.keyUpHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (target && matches(target, '.e-filterbar input')) {\n var closeHeaderEle = closest(target, 'th.e-filterbarcell');\n this.column = gObj.getColumnByUid(closeHeaderEle.getAttribute('e-mappinguid'));\n if (!this.column) {\n return;\n }\n if (e.action === 'altDownArrow' && this.parent.filterSettings.showFilterBarOperator) {\n var dropDownListInput = closest(target, 'span').querySelector('.e-filterbaroperator');\n dropDownListInput.ej2_instances[0].showPopup();\n dropDownListInput.focus();\n }\n if ((this.filterSettings.mode === 'Immediate' || (e.keyCode === 13 &&\n !e.target.classList.contains('e-filterbaroperator')))\n && e.keyCode !== 9 && !this.column.filterTemplate) {\n this.value = target.value.trim();\n this.processFilter(e);\n }\n }\n if (e.action === 'altDownArrow' && this.filterSettings.type !== 'FilterBar') {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openMenuByField(column.field);\n this.parent.focusModule.clearIndicator();\n }\n }\n if (e.action === 'escape' && this.filterSettings.type === 'Menu' && this.filterModule) {\n this.filterModule.closeDialog();\n gObj.notify(events.restoreFocus, {});\n }\n };\n Filter.prototype.updateCrossIcon = function (element) {\n if (element.value.length) {\n element.nextElementSibling.classList.remove('e-hide');\n }\n };\n Filter.prototype.updateFilterMsg = function () {\n if (this.filterSettings.type === 'FilterBar') {\n var gObj = this.parent;\n var getFormatFlValue = void 0;\n var columns = this.filterSettings.columns;\n var column = void 0;\n if (!this.filterSettings.showFilterBarStatus) {\n return;\n }\n if (columns.length > 0 && this.filterStatusMsg !== this.l10n.getConstant('InvalidFilterMessage')) {\n this.filterStatusMsg = '';\n for (var index = 0; index < columns.length; index++) {\n column = gObj.grabColumnByUidFromAllCols(columns[parseInt(index.toString(), 10)].uid)\n || gObj.grabColumnByFieldFromAllCols(columns[parseInt(index.toString(), 10)].field);\n if (index) {\n this.filterStatusMsg += ' && ';\n }\n if (!isNullOrUndefined(column.format)) {\n var flValue = (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), (column.type === 'dateonly' ? 'date' : column.type)) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly')) {\n var formater = this.serviceLocator.getService('valueFormatter');\n getFormatFlValue = formater.toView(flValue, column.getParser()).toString();\n }\n else {\n getFormatFlValue = this.setFormatForFlColumn(flValue, column);\n }\n this.filterStatusMsg += column.headerText + ': ' + getFormatFlValue;\n }\n else {\n this.filterStatusMsg += column.headerText + ': ' + this.values[column.field];\n }\n }\n }\n if (gObj.allowPaging) {\n gObj.updateExternalMessage(this.filterStatusMsg);\n }\n //TODO: virtual paging\n this.filterStatusMsg = '';\n }\n };\n Filter.prototype.setFormatForFlColumn = function (value, column) {\n var formater = this.serviceLocator.getService('valueFormatter');\n return formater.toView(value, column.getFormatter()).toString();\n };\n Filter.prototype.checkForSkipInput = function (column, value) {\n var isSkip;\n if (column.type === 'number') {\n if (DataUtil.operatorSymbols[\"\" + value] || this.skipNumberInput.indexOf(value) > -1) {\n isSkip = true;\n }\n }\n else if (column.type === 'string') {\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n if (this.skipStringInput.indexOf(val) > -1) {\n isSkip = true;\n }\n }\n }\n return isSkip;\n };\n Filter.prototype.processFilter = function (e) {\n this.stopTimer();\n this.startTimer(e);\n };\n Filter.prototype.startTimer = function (e) {\n var _this = this;\n this.timer = window.setInterval(function () { _this.onTimerTick(); }, e.keyCode === 13 ? 0 : this.filterSettings.immediateModeDelay);\n };\n Filter.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Filter.prototype.onTimerTick = function () {\n var selector = '[id=\\'' + this.column.field + '_filterBarcell\\']';\n var filterElement = this.element.querySelector(selector);\n if (!filterElement && this.parent.isFrozenGrid()) {\n filterElement = this.parent.getHeaderContent().querySelector(selector);\n }\n var filterValue;\n this.cellText[this.column.field] = filterElement.value;\n this.stopTimer();\n if (!isNullOrUndefined(this.column.filterBarTemplate)) {\n var templateRead = this.column.filterBarTemplate.read;\n if (typeof templateRead === 'string') {\n templateRead = getValue(templateRead, window);\n }\n if (!isNullOrUndefined(templateRead)) {\n this.value = templateRead.call(this, filterElement);\n }\n }\n else {\n filterValue = JSON.parse(JSON.stringify(filterElement.value));\n }\n if (isNullOrUndefined(this.value) || this.value === '') {\n this.removeFilteredColsByField(this.column.field);\n return;\n }\n this.validateFilterValue(this.value);\n this.filterByMethod = false;\n this.filterByColumn(this.column.field, this.operator, this.value, this.predicate, this.filterSettings.enableCaseSensitivity, this.ignoreAccent);\n this.filterByMethod = true;\n filterElement.value = filterValue;\n this.updateFilterMsg();\n };\n Filter.prototype.validateFilterValue = function (value) {\n var skipInput;\n var index;\n this.matchCase = this.filterSettings.enableCaseSensitivity;\n switch (this.column.type) {\n case 'number':\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n skipInput = ['>', '<', '=', '!'];\n for (var i = 0; i < value.length; i++) {\n if (skipInput.indexOf(value[parseInt(i.toString(), 10)]) > -1) {\n index = i;\n break;\n }\n }\n this.getOperator(value.substring(index));\n if (index !== 0) {\n this.value = value.substring(0, index);\n }\n if (this.value !== '' && value.length >= 1) {\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n }\n if (isNaN(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n break;\n case 'date':\n case 'datetime':\n this.operator = this.filterOperators.equal;\n if (this.value !== '' && !(this.value instanceof Date)) {\n this.getOperator(value);\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n if (isNullOrUndefined(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n }\n break;\n case 'string':\n this.matchCase = false;\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n if (value.indexOf('*') !== -1 || value.indexOf('?') !== -1 || value.indexOf('%3f') !== -1) {\n this.operator = this.filterOperators.wildCard;\n }\n else if (value.indexOf('%') !== -1) {\n this.operator = this.filterOperators.like;\n }\n else {\n this.operator = this.filterOperators.startsWith;\n }\n }\n break;\n case 'boolean':\n if (value.toLowerCase() === 'true' || value === '1') {\n this.value = true;\n }\n else if (value.toLowerCase() === 'false' || value === '0') {\n this.value = false;\n }\n else if (value.length) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n this.operator = this.filterOperators.equal;\n break;\n default:\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n }\n };\n Filter.prototype.getOperator = function (value) {\n var singleOp = value.charAt(0);\n var multipleOp = value.slice(0, 2);\n var operators = extend({ '=': this.filterOperators.equal, '!': this.filterOperators.notEqual }, DataUtil.operatorSymbols);\n // eslint-disable-next-line no-prototype-builtins\n if (operators.hasOwnProperty(singleOp) || operators.hasOwnProperty(multipleOp)) {\n this.operator = operators[\"\" + singleOp];\n this.value = value.substring(1);\n if (!this.operator) {\n this.operator = operators[\"\" + multipleOp];\n this.value = value.substring(2);\n }\n }\n if (this.operator === this.filterOperators.lessThan || this.operator === this.filterOperators.greaterThan) {\n if (this.value.charAt(0) === '=') {\n this.operator = this.operator + 'orequal';\n this.value = this.value.substring(1);\n }\n }\n };\n Filter.prototype.columnPositionChanged = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n return;\n }\n };\n Filter.prototype.getLocalizedCustomOperators = function () {\n var numOptr = [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', text: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', text: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', text: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', text: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnull', text: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', text: this.l10n.getConstant('NotNull') }\n ];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', text: this.l10n.getConstant('StartsWith') },\n { value: 'endswith', text: this.l10n.getConstant('EndsWith') },\n { value: 'contains', text: this.l10n.getConstant('Contains') },\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'isempty', text: this.l10n.getConstant('IsEmpty') },\n { value: 'doesnotstartwith', text: this.l10n.getConstant('NotStartsWith') },\n { value: 'doesnotendwith', text: this.l10n.getConstant('NotEndsWith') },\n { value: 'doesnotcontain', text: this.l10n.getConstant('NotContains') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnotempty', text: this.l10n.getConstant('IsNotEmpty') },\n { value: 'like', text: this.l10n.getConstant('Like') }\n ],\n numberOperator: numOptr,\n dateOperator: numOptr,\n datetimeOperator: numOptr,\n dateonlyOperator: numOptr,\n booleanOperator: [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ]\n };\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.openMenuByField = function (field) {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.showCustomFilter(false);\n return;\n }\n var column = gObj.getColumnByField(field);\n var header = gObj.getColumnHeaderByField(field);\n var target = header.querySelector('.e-filtermenudiv');\n if (!target) {\n return;\n }\n var gClient = gObj.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n this.filterDialogOpen(column, target, fClient.right - gClient.left, fClient.bottom - gClient.top);\n };\n Filter.prototype.filterIconClickHandler = function (e) {\n var target = e.target;\n if (target.classList.contains('e-filtermenudiv') && (this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel')) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(parentsUntil(target, 'e-headercell').firstElementChild.getAttribute('e-mappinguid'));\n this.column = col;\n if (this.fltrDlgDetails.field === col.field && this.fltrDlgDetails.isOpen) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.fltrDlgDetails = { field: col.field, isOpen: true };\n this.openMenuByField(col.field);\n }\n };\n Filter.prototype.clickHandler = function (e) {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n var filterOperatorElement = closest(e.target, 'div').\n querySelector('.e-filterbaroperator');\n if (filterOperatorElement) {\n filterOperatorElement.focus();\n }\n else {\n e.target.focus();\n }\n }\n if (e.target.classList.contains('e-list-item')) {\n var inputId = document.querySelector('.e-popup-open').getAttribute('id').replace('_popup', '');\n if (inputId.indexOf('grid-column') !== -1) {\n closest(document.getElementById(inputId), 'div').querySelector('.e-filtertext').focus();\n }\n }\n }\n if (this.filterSettings.mode === 'Immediate' || this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel') {\n var target = e.target;\n var datepickerEle = target.classList.contains('e-day'); // due to datepicker popup cause\n var dialog = parentsUntil(this.parent.element, 'e-dialog');\n var hasDialog = false;\n var popupEle = parentsUntil(target, 'e-popup');\n var hasDialogClosed = this.parent.element.classList.contains('e-device') ? document.querySelector('.e-filter-popup')\n : this.parent.element.querySelector('.e-filter-popup');\n if (dialog && popupEle) {\n hasDialog = dialog.id === popupEle.id;\n }\n if ((hasDialogClosed && (parentsUntil(target, 'e-excel-ascending') ||\n parentsUntil(target, 'e-excel-descending')))) {\n this.filterModule.closeDialog(target);\n }\n if (parentsUntil(target, 'e-filter-popup') || target.classList.contains('e-filtermenudiv')) {\n return;\n }\n else if (this.filterModule && (!parentsUntil(target, 'e-popup-wrapper')\n && (!closest(target, '.e-filter-item.e-menu-item'))) && !datepickerEle) {\n if ((hasDialog && (!parentsUntil(target, 'e-filter-popup'))\n && (!parentsUntil(target, 'e-popup-flmenu'))) || (!popupEle && hasDialogClosed)) {\n this.filterModule.isresetFocus = parentsUntil(target, 'e-grid') &&\n parentsUntil(target, 'e-grid').id === this.parent.element.id;\n this.filterModule.closeDialog(target);\n }\n }\n }\n };\n Filter.prototype.filterHandler = function (args) {\n this.actualPredicate[args.field] = args.actualPredicate;\n var dataManager = new DataManager(this.filterSettings.columns);\n var query = new Query().where('field', this.filterOperators.equal, args.field);\n var result = dataManager.executeLocal(query);\n for (var i = 0; i < result.length; i++) {\n var index = -1;\n for (var j = 0; j < this.filterSettings.columns.length; j++) {\n if (result[parseInt(i.toString(), 10)].field === this.filterSettings.columns[parseInt(j.toString(), 10)].field) {\n index = j;\n break;\n }\n }\n if (index !== -1) {\n this.filterSettings.columns.splice(index, 1);\n }\n }\n if (this.values[args.field]) {\n delete this.values[args.field];\n }\n var col = this.parent.getColumnByField(args.field);\n var iconClass = this.parent.showColumnMenu && col.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(args.field).querySelector(iconClass);\n if (args.action === 'filtering') {\n this.filterSettings.columns = this.filterSettings.columns.concat(args.filterCollection);\n if (this.filterSettings.columns.length && filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (filterIconElement) {\n filterIconElement.classList.remove('e-filtered');\n }\n args.requestType = 'filtering';\n this.parent.renderModule.refresh(args); //hot-fix onpropertychanged not working for object { array }\n }\n this.parent.dataBind();\n };\n Filter.prototype.updateFilter = function () {\n var cols = this.filterSettings.columns;\n this.actualPredicate = {};\n for (var i = 0; i < cols.length; i++) {\n this.column = this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field) ||\n getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns());\n var fieldName = cols[parseInt(i.toString(), 10)].field;\n if (!this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field)) {\n fieldName = getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns()).field;\n }\n this.refreshFilterIcon(fieldName, cols[parseInt(i.toString(), 10)].operator, cols[parseInt(i.toString(), 10)].value, cols[parseInt(i.toString(), 10)].type, cols[parseInt(i.toString(), 10)].predicate, cols[parseInt(i.toString(), 10)].matchCase, cols[parseInt(i.toString(), 10)].ignoreAccent, cols[parseInt(i.toString(), 10)].uid);\n }\n };\n Filter.prototype.refreshFilterIcon = function (fieldName, operator, value, type, predicate, matchCase, ignoreAccent, uid) {\n var obj = {\n field: fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: operator,\n value: value,\n type: type\n };\n if (this.actualPredicate[\"\" + fieldName]) {\n this.actualPredicate[\"\" + fieldName].push(obj);\n }\n else {\n this.actualPredicate[\"\" + fieldName] = [obj];\n }\n var field = uid ? this.parent.grabColumnByUidFromAllCols(uid).field : fieldName;\n this.addFilteredClass(field);\n };\n Filter.prototype.addFilteredClass = function (fieldName) {\n var filterIconElement;\n var col = this.parent.getColumnByField(fieldName);\n if (this.parent.showColumnMenu && col.showColumnMenu) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-columnmenu');\n }\n else if (col) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-icon-filter');\n }\n if (filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns the FilterUI\n */\n Filter.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {string} returns the operator name\n * @hidden\n */\n Filter.prototype.getOperatorName = function (field) {\n return document.getElementById(this.parent.getColumnByField(field).uid).ej2_instances[0].value;\n };\n /**\n * Renders checkbox items in Menu filter dialog.\n *\n * @returns {void}\n */\n Filter.prototype.renderCheckboxOnFilterMenu = function () {\n return this.filterModule.renderCheckBoxMenu();\n };\n return Filter;\n}());\nexport { Filter };\n","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement, getUniqueID } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { attributes, setValue, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate, 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.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n if (_this.popupObj) {\n document.body.appendChild(_this.popupObj.element);\n }\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n }\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.inputElement.id + '_options' });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n _this.loadTemplate();\n }\n }\n });\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', this.value[this.value.length - 1]);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n Search(this.value[this.value.length - 1], this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n var customValue = this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n 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 /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', proxy.value[i]);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value)) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n return;\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) && this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n this.initialValueUpdate();\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox') {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.filterAction) {\n if (this.targetElement() !== null) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n return filterQuery;\n }\n else {\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length == 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var field = fields ? fields : this.fields;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem = {};\n setValue(field.text, value, dataItem);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number') {\n setValue(field.value, Math.random(), dataItem);\n }\n else {\n setValue(field.value, value, dataItem);\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem);\n this.resetList(tempData, field, query);\n }\n else {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.updateDataList();\n if (this.resetMainList) {\n this.mainList = this.resetMainList;\n this.resetMainList = null;\n }\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup(eve);\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight);\n elementWidth = this.overAllWrapper.clientWidth - (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight)));\n }\n if (this.floatLabelType === 'Auto') {\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: oldVal,\n value: newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.getPagingCount = function () {\n var height = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.offsetHeight / parseInt(height, 10));\n };\n MultiSelect.prototype.pageUpSelection = function (steps) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.pageDownSelection = function (steps) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n setTimeout(function () {\n _this.calculateWidth();\n }, 150);\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup(e);\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n filterInput && filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n else if (this.mode == \"CheckBox\") {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome) {\n this.removeFocus();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n element.classList.add(dropDownBaseClasses.focus);\n this.scrollBottom(element);\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.arrowUp(e);\n break;\n case 40:\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n };\n MultiSelect.prototype.arrowDown = function (e) {\n e.preventDefault();\n this.moveByList(1);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n 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);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n if (!document.activeElement.classList.contains(FILTERINPUT)) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.value[this.value.length - 1];\n this.removeValue(temp, e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset) {\n this.list.scrollTop = nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex) {\n var nextOffset = selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n 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 e.preventDefault();\n }\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 this.onActionComplete(list, this.mainData);\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n this.removeValue(selectedElem.getAttribute('data-value'), e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.moveByList = function (position) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var temp = -1;\n 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 selectAllParent.classList.add('e-item-focus');\n }\n else if (elements.length) {\n if (this.mode === 'CheckBox' && this.showSelectAll && !isNullOrUndefined(selectAllParent)) {\n selectAllParent.classList.remove('e-item-focus');\n if (this.showSelectAll && position == -1 && !isNullOrUndefined(selectAllParent) && this.liCollections.length > 1 && (this.focusFirstListItem || this.list.getElementsByClassName('e-item-focus').length == 0)) {\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 this.addListFocus(elements[++temp]);\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n }\n }\n else {\n if (temp > 0) {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n this.updateMainList(true, value, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var element_1 = this.findListElement(this.list, 'li', 'data-value', value);\n var val_1 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (element_1 !== null) {\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', value);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(value);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, value);\n _this.removeChip(value);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value) {\n if (this.chipCollectionWrapper) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n _this.updateListSelectEventCallback(value, element, eve);\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP + '.' + 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.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 = data;\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative',\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper, collision: { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.loadTemplate();\n }\n _this.setScrollPosition();\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (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.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mouseup', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n this.resetFilteredData = true;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n this.dataUpdater(this.mainData, query, this.fields);\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n this.listData = this.mainData;\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n var valueLength = this.value.length;\n var hiddenElementContent = '';\n for (var index = 0; index < valueLength; index++) {\n var valueItem = this.value[index];\n var listValue = this.findListElement((!isNullOrUndefined(this.mainList) ? this.mainList : this.ulElement), 'li', 'data-value', valueItem);\n if (isNullOrUndefined(listValue) && !this.allowCustomValue) {\n this.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this.listData) {\n temp = this.getTextByValue(valueItem);\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 this.setProperties({ text: text.toString() }, true);\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n this.setProperties({ value: textVal }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function () {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n text = this.getTextByValue(value);\n if ((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) {\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if (value && this.allowCustomValue) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n this.addItem(newValue, indexItem);\n element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && this.value.indexOf(li.getAttribute('data-value')) > -1) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && !(this.ulElement.childElementCount < this.mainList.childElementCount) && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || this.value.indexOf(value) === -1) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value)) {\n var temp_1 = li.cloneNode(true);\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.keyCode = null;\n this.scrollFocusStatus = false;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n }\n else {\n e.preventDefault();\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = wrapperData;\n }\n else {\n wrapperType.innerText = SanitizeHtmlHelper.sanitize(wrapperData);\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n this.updateWrapperText(this.viewWrapper, data);\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(this.value[index]);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(this.value[index]);\n }\n }\n else {\n temp = this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ? closest(event.target, '.e-list-group-item') : event.target) : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n this.updateAriaActiveDescendant();\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n this.addValidInputClass();\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if (li && li.length) {\n var index_1 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.updateListSelection(li[index_1], event, length - index_1);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_1 < length && index_1 < count_1) {\n _this.updateListSelection(li[index_1], event, length - index_1);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n }, 0);\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n }\n };\n MultiSelect.prototype.updateHiddenElement = function () {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '';\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n });\n this.hiddenElement.innerHTML = hiddenValue;\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll)) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n if (this.resetFilteredData) {\n // The filtered data is not being reset in the component after the user focuses out.\n this.resetMainList = !this.resetMainList ? this.mainList : this.resetMainList;\n this.resetFilteredData = false;\n }\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n this.calculateWidth();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', this.value[i]);\n if (!checkEle) {\n valuecheck.push(this.value[i]);\n }\n }\n return valuecheck;\n };\n ;\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\n _this.updateActionList(ulElement, list, event);\n });\n };\n ;\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop == 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.initialValueUpdate();\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n _super.prototype.render.call(_this, e);\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length) && !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n 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 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-labelledby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n valueCol.push(opt.getAttribute('value'));\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate();\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n _this.initialValueUpdate();\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.mainListCollection = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'placeholder'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.popupObj = null;\n this.popupWrapper = null;\n this.liCollections = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n* The MultiSelect allows the user to pick a values from the predefined list of values.\n * ```\n * \n * ```\n */\nvar MultiSelectComponent = /** @class */ (function (_super) {\n __extends(MultiSelectComponent, _super);\n function MultiSelectComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = [\"headerTemplate\", \"valueTemplate\", \"itemTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n MultiSelectComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return MultiSelectComponent;\n}(MultiSelect));\nexport { MultiSelectComponent };\napplyMixins(MultiSelectComponent, [ComponentBase, React.Component]);\n","import { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { EventHandler, select, removeClass, addClass, detach, compile, L10n } from '@syncfusion/ej2-base';\nimport { Browser, attributes, isNullOrUndefined, append, closest, prepend } from '@syncfusion/ej2-base';\nimport { dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @class */ (function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlurHandler, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlurHandler);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n }\n else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1 &&\n !(this.parent.isDynamicDataChange)) || (this.parent.isDynamicDataChange &&\n this.parent.listData && this.parent.listData.length <= 1)) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.checkAllParent = null;\n this.clearIconElement = null;\n this.filterInput = null;\n this.filterInputObj = null;\n this.checkWrapper = null;\n this.selectAllSpan = null;\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]\n : args.li.querySelector('.e-checkbox-wrapper').childNodes[1];\n }\n else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? checkboxWrapper.childNodes[1] : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n var selectAll = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), null, e, selectAll);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (selectAll) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n else if (state === 'indeterminate' && !(frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK]);\n frameSpan.classList.add(INDETERMINATE);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n };\n CheckBoxSelection.prototype.setSearchBox = function (args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: { type: 'text' },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.keyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshPopup();\n this.parent.refreshListItems(null);\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n this.setReorder(e);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n CheckBoxSelection.prototype.setPopupFullScreen = function () {\n 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 prepend([ulEle_1], this.parent.list);\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}());\nexport { CheckBoxSelection };\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReactDOM from 'react-dom';\r\nimport shallowEqualFuzzy from 'shallow-equal-fuzzy';\r\nimport $ from 'jquery';\r\nimport 'select2';\r\n\r\nconst namespace = 'react-select2-wrapper';\r\n\r\nexport default class Select2 extends Component {\r\n static propTypes = {\r\n defaultValue: PropTypes.oneOfType([\r\n PropTypes.number,\r\n PropTypes.array,\r\n PropTypes.string,\r\n ]),\r\n value: PropTypes.oneOfType([\r\n PropTypes.number,\r\n PropTypes.array,\r\n PropTypes.string,\r\n ]),\r\n data: PropTypes.array,\r\n events: PropTypes.array,\r\n options: PropTypes.object,\r\n multiple: PropTypes.bool,\r\n onOpen: PropTypes.func,\r\n onClose: PropTypes.func,\r\n onSelect: PropTypes.func,\r\n onChange: PropTypes.func,\r\n onUnselect: PropTypes.func,\r\n };\r\n\r\n static defaultProps = {\r\n data: [],\r\n events: [\r\n [`change.${namespace}`, 'onChange'],\r\n [`select2:open.${namespace}`, 'onOpen'],\r\n [`select2:close.${namespace}`, 'onClose'],\r\n [`select2:select.${namespace}`, 'onSelect'],\r\n [`select2:unselect.${namespace}`, 'onUnselect'],\r\n ],\r\n options: {},\r\n multiple: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.el = null;\r\n this.forceUpdateValue = false;\r\n this.initialRender = true;\r\n }\r\n\r\n componentDidMount() {\r\n this.initSelect2(this.props);\r\n this.updateValue();\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.initialRender = false;\r\n this.updSelect2(nextProps);\r\n }\r\n\r\n componentDidUpdate() {\r\n this.updateValue();\r\n }\r\n\r\n componentWillUnmount() {\r\n this.destroySelect2();\r\n }\r\n\r\n initSelect2(props) {\r\n const { options } = props;\r\n\r\n this.el = $(ReactDOM.findDOMNode(this));\r\n // fix for updating selected value when data is changing\r\n if (this.forceUpdateValue) {\r\n this.updateSelect2Value(null);\r\n }\r\n this.el.select2(this.prepareOptions(options));\r\n this.attachEventHandlers(props);\r\n }\r\n\r\n updSelect2(props) {\r\n const prevProps = this.props;\r\n\r\n if (!shallowEqualFuzzy(prevProps.data, props.data)) {\r\n this.forceUpdateValue = true;\r\n this.destroySelect2(false);\r\n this.initSelect2(props);\r\n return;\r\n }\r\n\r\n const { options } = props;\r\n if (!shallowEqualFuzzy(prevProps.options, options)) {\r\n this.el.select2(this.prepareOptions(options));\r\n }\r\n\r\n const handlerChanged = e => prevProps[e[1]] !== props[e[1]];\r\n if (props.events.some(handlerChanged)) {\r\n this.detachEventHandlers();\r\n this.attachEventHandlers(props);\r\n }\r\n }\r\n\r\n updateSelect2Value(value) {\r\n this.el.off(`change.${namespace}`).val(value).trigger('change');\r\n\r\n const onChange = this.props.onChange;\r\n if (onChange) {\r\n this.el.on(`change.${namespace}`, onChange);\r\n }\r\n }\r\n\r\n updateValue() {\r\n const { value, defaultValue, multiple } = this.props;\r\n const newValue = this.prepareValue(value, defaultValue);\r\n const currentValue = multiple ? this.el.val() || [] : this.el.val();\r\n\r\n if (!this.fuzzyValuesEqual(currentValue, newValue) || this.forceUpdateValue) {\r\n this.updateSelect2Value(newValue);\r\n if (!this.initialRender) {\r\n this.el.trigger('change');\r\n }\r\n this.forceUpdateValue = false;\r\n }\r\n }\r\n\r\n fuzzyValuesEqual(currentValue, newValue) {\r\n return (currentValue === null && newValue === '') ||\r\n shallowEqualFuzzy(currentValue, newValue);\r\n }\r\n\r\n destroySelect2(withCallbacks = true) {\r\n if (withCallbacks) {\r\n this.detachEventHandlers();\r\n }\r\n\r\n this.el.select2('destroy');\r\n this.el = null;\r\n }\r\n\r\n attachEventHandlers(props) {\r\n props.events.forEach(event => {\r\n if (typeof props[event[1]] !== 'undefined') {\r\n this.el.on(event[0], props[event[1]]);\r\n }\r\n });\r\n }\r\n\r\n detachEventHandlers() {\r\n this.props.events.forEach(event => {\r\n if (typeof this.props[event[1]] !== 'undefined') {\r\n this.el.off(event[0]);\r\n }\r\n });\r\n }\r\n\r\n prepareValue(value, defaultValue) {\r\n const issetValue = typeof value !== 'undefined' && value !== null;\r\n const issetDefaultValue = typeof defaultValue !== 'undefined';\r\n\r\n if (!issetValue && issetDefaultValue) {\r\n return defaultValue;\r\n }\r\n return value;\r\n }\r\n\r\n prepareOptions(options) {\r\n const opt = options;\r\n if (typeof opt.dropdownParent === 'string') {\r\n opt.dropdownParent = $(opt.dropdownParent);\r\n }\r\n return opt;\r\n }\r\n\r\n isObject(value) {\r\n const type = typeof value;\r\n return type === 'function' || (value && type === 'object') || false;\r\n }\r\n\r\n makeOption(item) {\r\n if (this.isObject(item)) {\r\n const { id, text, ...itemParams } = item;\r\n return ();\r\n }\r\n\r\n return ();\r\n }\r\n\r\n render() {\r\n const { data, value, ...props } = this.props;\r\n\r\n delete props.options;\r\n delete props.events;\r\n delete props.onOpen;\r\n delete props.onClose;\r\n delete props.onSelect;\r\n delete props.onChange;\r\n delete props.onUnselect;\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { getAuthToken } from '../helpers/authentication';\r\nimport { Context } from '../helpers/Context';\r\nimport { getCurrentDomain } from '../helpers/Lookup';\r\n\r\nexport class PreviewCards extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n isQuickViewOpen: false,\r\n quickViewProduct: null,\r\n };\r\n }\r\n calculateSavingsPercentage(originalPrice, discountedPrice) {\r\n const savingsAmount = originalPrice - discountedPrice;\r\n const savingsPercentage = (savingsAmount / originalPrice) * 100;\r\n return savingsPercentage.toFixed(0);\r\n };\r\n\r\n render() {\r\n const { product, prevPrice, currPrice } = this.props;\r\n const productData = { ...this.props }\r\n let image = \"/assets/imgs/Trigger-Craft-Logo.png\";\r\n if (productData && productData.imageURL) {\r\n let images = productData.imageURL;\r\n if (productData.imageURL.includes(\"DynamicData\")) images = JSON.parse(productData.imageURL);\r\n\r\n if (Array.isArray(images)) {\r\n images.map((pic) => {\r\n if (pic.includes(\"DynamicData\") && pic.includes(\"[\")) {\r\n const parsedImage = JSON.parse(pic);\r\n image = getCurrentDomain() + parsedImage[0];\r\n } else {\r\n image = getCurrentDomain() + pic;\r\n }\r\n });\r\n } else if (images.includes(\"https\") && images.includes(\"[\")) {\r\n image = JSON.parse(images.split(\", \")[0])[0];\r\n } else {\r\n image = images.split(\", \")[0];\r\n }\r\n }\r\n //console.log()\r\n return (\r\n
      \r\n
      \r\n \r\n \"product\r\n \r\n {prevPrice ?
      -{this.calculateSavingsPercentage(prevPrice, currPrice)}%
      : \"\"}\r\n
      \r\n \r\n
      \r\n \r\n
      \r\n \r\n
      \r\n
      \r\n {product.stock > 0 ?\r\n \r\n :\r\n \r\n }\r\n
      \r\n
      \r\n \r\n
      {product.title}
      \r\n
      \r\n {/**/}\r\n
      \r\n \r\n
      \r\n
      \r\n {prevPrice ? R {prevPrice.toLocaleString('en-ZA')}.00 : \"\"}  R {currPrice.toLocaleString('en-ZA')}.00\r\n
      \r\n
      \r\n
      \r\n );\r\n }\r\n};","/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported XLSX */\n/*global process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */\nvar XLSX = {};\nXLSX.version = '0.19.3';\nvar current_codepage = 1200, current_ansi = 1252;\n/*:: declare var cptable:any; */\n/*global cptable:true, window */\nvar $cptable;\n\nvar VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ];\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\nvar CS2CP = ({\n\t/*::[*/0/*::]*/: 1252, /* ANSI */\n\t/*::[*/1/*::]*/: 65001, /* DEFAULT */\n\t/*::[*/2/*::]*/: 65001, /* SYMBOL */\n\t/*::[*/77/*::]*/: 10000, /* MAC */\n\t/*::[*/128/*::]*/: 932, /* SHIFTJIS */\n\t/*::[*/129/*::]*/: 949, /* HANGUL */\n\t/*::[*/130/*::]*/: 1361, /* JOHAB */\n\t/*::[*/134/*::]*/: 936, /* GB2312 */\n\t/*::[*/136/*::]*/: 950, /* CHINESEBIG5 */\n\t/*::[*/161/*::]*/: 1253, /* GREEK */\n\t/*::[*/162/*::]*/: 1254, /* TURKISH */\n\t/*::[*/163/*::]*/: 1258, /* VIETNAMESE */\n\t/*::[*/177/*::]*/: 1255, /* HEBREW */\n\t/*::[*/178/*::]*/: 1256, /* ARABIC */\n\t/*::[*/186/*::]*/: 1257, /* BALTIC */\n\t/*::[*/204/*::]*/: 1251, /* RUSSIAN */\n\t/*::[*/222/*::]*/: 874, /* THAI */\n\t/*::[*/238/*::]*/: 1250, /* EASTEUROPE */\n\t/*::[*/255/*::]*/: 1252, /* OEM */\n\t/*::[*/69/*::]*/: 6969 /* MISC */\n}/*:any*/);\n\nvar set_ansi = function(cp/*:number*/) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\nfunction reset_ansi() { set_ansi(1252); }\n\nvar set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\n\nfunction char_codes(data/*:string*/)/*:Array*/ { var o/*:Array*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16lereadu(data/*:Uint8Array*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data[2*i] + (data[2*i+1]<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data/*:string*/)/*:string*/ {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\nvar _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\n\nfunction set_cptable(cptable) {\n\t$cptable = cptable;\n\tset_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\n\tdebom = function(data/*:string*/) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x/*:number*/)/*:string*/ {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn $cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n\t_getansi = function _ga2(x/*:number*/)/*:string*/ {\n\t\treturn $cptable.utils.decode(current_ansi, [x])[0];\n\t};\n\tcpdoit();\n}\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Base64_encode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n for (var i = 0; i < input.length; ) {\n c1 = input.charCodeAt(i++);\n e1 = c1 >> 2;\n c2 = input.charCodeAt(i++);\n e2 = (c1 & 3) << 4 | c2 >> 4;\n c3 = input.charCodeAt(i++);\n e3 = (c2 & 15) << 2 | c3 >> 6;\n e4 = c3 & 63;\n if (isNaN(c2)) {\n e3 = e4 = 64;\n } else if (isNaN(c3)) {\n e4 = 64;\n }\n o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n }\n return o;\n}\nfunction Base64_encode_pass(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n for (var i = 0; i < input.length; ) {\n c1 = input.charCodeAt(i++);\n if (c1 > 255)\n c1 = 95;\n e1 = c1 >> 2;\n c2 = input.charCodeAt(i++);\n if (c2 > 255)\n c2 = 95;\n e2 = (c1 & 3) << 4 | c2 >> 4;\n c3 = input.charCodeAt(i++);\n if (c3 > 255)\n c3 = 95;\n e3 = (c2 & 15) << 2 | c3 >> 6;\n e4 = c3 & 63;\n if (isNaN(c2)) {\n e3 = e4 = 64;\n } else if (isNaN(c3)) {\n e4 = 64;\n }\n o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n }\n return o;\n}\nfunction Base64_decode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n input = input.replace(/^data:([^\\/]+\\/[^\\/]+)?;base64\\,/, \"\").replace(/[^\\w\\+\\/\\=]/g, \"\");\n for (var i = 0; i < input.length; ) {\n e1 = Base64_map.indexOf(input.charAt(i++));\n e2 = Base64_map.indexOf(input.charAt(i++));\n c1 = e1 << 2 | e2 >> 4;\n o += String.fromCharCode(c1);\n e3 = Base64_map.indexOf(input.charAt(i++));\n c2 = (e2 & 15) << 4 | e3 >> 2;\n if (e3 !== 64) {\n o += String.fromCharCode(c2);\n }\n e4 = Base64_map.indexOf(input.charAt(i++));\n c3 = (e3 & 3) << 6 | e4;\n if (e4 !== 64) {\n o += String.fromCharCode(c3);\n }\n }\n return o;\n}\nvar has_buf = /*#__PURE__*/(function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\n\nvar Buffer_from = /*#__PURE__*/(function() {\n\tif(typeof Buffer !== 'undefined') {\n\t\tvar nbfs = !Buffer.from;\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t}\n\treturn function() {};\n})();\nvar buf_utf16le = /*#__PURE__*/(function() {\n\tif(typeof Buffer === 'undefined') return false;\n\tvar x = Buffer_from([65,0]);\n\tif(!x) return false;\n\tvar o = x.toString(\"utf16le\");\n\treturn o.length == 1;\n})();\n\n\nfunction new_raw_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s/*:string*/)/*:any*/ {\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x/*:string*/)/*:number*/{ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s/*:string*/)/*:any*/ {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data/*:any*/)/*:string*/ {\n\tif(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(\"\");\n\tvar o/*:Array*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data/*:Array*/)/*:Uint8Array*/ {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array*/ {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\n\t/*:: if(data instanceof ArrayBuffer) throw new Error(\"unreachable\"); */\n\tvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) {\n\tif(typeof Uint8Array !== \"undefined\") {\n\t\tvar i = 0, maxlen = 0;\n\t\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\n\t\tvar o = new Uint8Array(maxlen);\n\t\tvar len = 0;\n\t\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) {\n\t\t\tlen = bufs[i].length;\n\t\t\tif(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);\n\t\t\telse if(typeof bufs[i] == \"string\") o.set(new Uint8Array(s2a(bufs[i])), maxlen);\n\t\t\telse o.set(new Uint8Array(bufs[i]), maxlen);\n\t\t}\n\t\treturn o;\n\t}\n\treturn [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); }));\n};\n\nfunction utf8decode(content/*:string*/) {\n\tvar out = [], widx = 0, L = content.length + 250;\n\tvar o = new_raw_buf(content.length + 255);\n\tfor(var ridx = 0; ridx < content.length; ++ridx) {\n\t\tvar c = content.charCodeAt(ridx);\n\t\tif(c < 0x80) o[widx++] = c;\n\t\telse if(c < 0x800) {\n\t\t\to[widx++] = (192|((c>>6)&31));\n\t\t\to[widx++] = (128|(c&63));\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64;\n\t\t\tvar d = content.charCodeAt(++ridx)&1023;\n\t\t\to[widx++] = (240|((c>>8)&7));\n\t\t\to[widx++] = (128|((c>>2)&63));\n\t\t\to[widx++] = (128|((d>>6)&15)|((c&3)<<4));\n\t\t\to[widx++] = (128|(d&63));\n\t\t} else {\n\t\t\to[widx++] = (224|((c>>12)&15));\n\t\t\to[widx++] = (128|((c>>6)&63));\n\t\t\to[widx++] = (128|(c&63));\n\t\t}\n\t\tif(widx > L) {\n\t\t\tout.push(o.slice(0, widx));\n\t\t\twidx = 0;\n\t\t\to = new_raw_buf(65535);\n\t\t\tL = 65530;\n\t\t}\n\t}\n\tout.push(o.slice(0, widx));\n\treturn bconcat(out);\n}\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/*::\ndeclare type Block = any;\ndeclare type BufArray = {\n\tnewblk(sz:number):Block;\n\tnext(sz:number):Block;\n\tend():any;\n\tpush(buf:Block):void;\n};\n\ntype RecordHopperCB = {(d:any, Rn:string, RT:number):?boolean;};\n\ntype EvertType = {[string]:string};\ntype EvertNumType = {[string]:number};\ntype EvertArrType = {[string]:Array};\n\ntype StringConv = {(string):string};\n\n*/\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nfunction _strrev(x/*:string*/)/*:string*/ { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = /*#__PURE__*/Math.pow(2,32);\nfunction pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\n/* yes, in 2022 this is still faster than string compare */\nfunction SSF_isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days/*:Array >*/ = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months/*:Array >*/ = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction SSF_init_table(t/*:any*/) {\n\tif(!t) t = {};\n\tt[0]= 'General';\n\tt[1]= '0';\n\tt[2]= '0.00';\n\tt[3]= '#,##0';\n\tt[4]= '#,##0.00';\n\tt[9]= '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\treturn t;\n}\n/* repeated to satiate webpack */\nvar table_fmt = {\n\t0: 'General',\n\t1: '0',\n\t2: '0.00',\n\t3: '#,##0',\n\t4: '#,##0.00',\n\t9: '0%',\n\t10: '0.00%',\n\t11: '0.00E+00',\n\t12: '# ?/?',\n\t13: '# ??/??',\n\t14: 'm/d/yy',\n\t15: 'd-mmm-yy',\n\t16: 'd-mmm',\n\t17: 'mmm-yy',\n\t18: 'h:mm AM/PM',\n\t19: 'h:mm:ss AM/PM',\n\t20: 'h:mm',\n\t21: 'h:mm:ss',\n\t22: 'm/d/yy h:mm',\n\t37: '#,##0 ;(#,##0)',\n\t38: '#,##0 ;[Red](#,##0)',\n\t39: '#,##0.00;(#,##0.00)',\n\t40: '#,##0.00;[Red](#,##0.00)',\n\t45: 'mm:ss',\n\t46: '[h]:mm:ss',\n\t47: 'mmss.0',\n\t48: '##0.0E+0',\n\t49: '@',\n\t56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"'\n};\n\n/* Defaults determined by systematically testing in Excel 2019 */\n\n/* These formats appear to default to other formats in the table */\nvar SSF_default_map = {\n\t5: 37, 6: 38, 7: 39, 8: 40, // 5 -> 37 ... 8 -> 40\n\n\t23: 0, 24: 0, 25: 0, 26: 0, // 23 -> 0 ... 26 -> 0\n\n\t27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14\n\n\t50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14\n\t55: 14, 56: 14, 57: 14, 58: 14,\n\t59: 1, 60: 2, 61: 3, 62: 4, // 59 -> 1 ... 62 -> 4\n\n\t67: 9, 68: 10, // 67 -> 9 ... 68 -> 10\n\t69: 12, 70: 13, 71: 14, // 69 -> 12 ... 71 -> 14\n\t72: 14, 73: 15, 74: 16, 75: 17, // 72 -> 14 ... 75 -> 17\n\t76: 20, 77: 21, 78: 22, // 76 -> 20 ... 78 -> 22\n\t79: 45, 80: 46, 81: 47, // 79 -> 45 ... 81 -> 47\n\t82: 0 // 82 -> 0 ... 65536 -> 0 (omitted)\n};\n\n\n/* These formats technically refer to Accounting formats with no equivalent */\nvar SSF_default_str = {\n\t// 5 -- Currency, 0 decimal, black negative\n\t5: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t63: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\n\t// 6 -- Currency, 0 decimal, red negative\n\t6: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t64: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\n\t// 7 -- Currency, 2 decimal, black negative\n\t7: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t65: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 8 -- Currency, 2 decimal, red negative\n\t8: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t66: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 41 -- Accounting, 0 decimal, No Symbol\n\t41: '_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',\n\n\t// 42 -- Accounting, 0 decimal, $ Symbol\n\t42: '_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',\n\n\t// 43 -- Accounting, 2 decimal, No Symbol\n\t43: '_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',\n\n\t// 44 -- Accounting, 2 decimal, $ Symbol\n\t44: '_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)'\n};\n\nfunction SSF_frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array*/ {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction SSF_parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = SSF_fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nvar SSFbasedate = /*#__PURE__*/new Date(1899, 11, 31, 0, 0, 0);\nvar SSFdnthresh = /*#__PURE__*/SSFbasedate.getTime();\nvar SSFbase1904 = /*#__PURE__*/new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= SSFbase1904) epoch += 24*60*60*1000;\n\treturn (epoch - (SSFdnthresh + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\n/* ECMA-376 18.8.30 numFmt*/\n/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */\n/* exponent >= -9 and <= 9 */\nfunction SSF_strip_decimal(o/*:string*/)/*:string*/ {\n\treturn (o.indexOf(\".\") == -1) ? o : o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)$/, \"$1\");\n}\n\n/* General Exponential always shows 2 digits exp and trims the mantissa */\nfunction SSF_normalize_exp(o/*:string*/)/*:string*/ {\n\tif(o.indexOf(\"E\") == -1) return o;\n\treturn o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,\"$1E\").replace(/(E[+-])(\\d)$/,\"$10$2\");\n}\n\n/* exponent >= -9 and <= 9 */\nfunction SSF_small_exp(v/*:number*/)/*:string*/ {\n\tvar w = (v<0?12:11);\n\tvar o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\n\n/* exponent >= 11 or <= -10 likely exponential */\nfunction SSF_large_exp(v/*:number*/)/*:string*/ {\n\tvar o = SSF_strip_decimal(v.toFixed(11));\n\treturn (o.length > (v<0?12:11) || o === \"0\" || o === \"-0\") ? v.toPrecision(6) : o;\n}\n\nfunction SSF_general_num(v/*:number*/)/*:string*/ {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = SSF_small_exp(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = SSF_large_exp(v);\n\n\treturn SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));\n}\n\n\n/*\n\t\"General\" rules:\n\t- text is passed through (\"@\")\n\t- booleans are rendered as TRUE/FALSE\n\t- \"up to 11 characters\" displayed for numbers\n\t- Default date format (code 14) used for Dates\n\n\tThe longest 32-bit integer text is \"-2147483648\", exactly 11 chars\n\tTODO: technically the display depends on the width of the cell\n*/\nfunction SSF_general(v/*:any*/, opts/*:any*/) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\n\nfunction SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) {\n /* TODO: properly adjust y/m/d and */\n o[0] -= 581;\n var dow = date.getDay();\n if(date < 60) dow = (dow + 6) % 7;\n return dow;\n}\n//var THAI_DIGITS = \"\\u0E50\\u0E51\\u0E52\\u0E53\\u0E54\\u0E55\\u0E56\\u0E57\\u0E58\\u0E59\".split(\"\");\nfunction SSF_write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\n\t\t\t/*::if(!ss0) ss0 = 0; */\n\t\t\tif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1; break;\n\t}\n\tvar outstr = outl > 0 ? pad0(out, outl) : \"\";\n\treturn outstr;\n}\n\n\n/*jshint -W086 */\n/*jshint +W086 */\nfunction commaify(s/*:string*/)/*:string*/ {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar pct1 = /%/g;\nfunction write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\n\nfunction write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\n\nfunction write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str/*:string*/)/*:string*/ {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val/*:number*/, d/*:number*/)/*:number*/ {\n\tvar _frac = val - Math.floor(val), dd = Math.pow(10,d);\n\tif (d < ('' + Math.round(_frac * dd)).length) return 0;\n\treturn Math.round(_frac * dd);\n}\nfunction carry(val/*:number*/, d/*:number*/)/*:number*/ {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val/*:number*/)/*:string*/ {\n\tif(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0));\n\treturn \"\"+Math.floor(val);\n}\nfunction write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(/*::(*/r/*::||[\"\"])*/[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\to = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\t\treturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri*/ {\n\tvar out/*:Array*/ = [];\n\tvar in_str = false/*, cc*/;\n\tfor(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) {\n\t\tcase 34: /* '\"' */\n\t\t\tin_str = !in_str; break;\n\t\tcase 95: case 42: case 92: /* '_' '*' '\\\\' */\n\t\t\t++i; break;\n\t\tcase 59: /* ';' */\n\t\t\tout[out.length] = fmt.substr(j,i-j);\n\t\t\tj = i+1;\n\t}\n\tout[out.length] = fmt.substr(j);\n\tif(in_str === true) throw new Error(\"Format |\" + fmt + \"| unterminated string \");\n\treturn out;\n}\n\nvar SSF_abstime = /\\[[HhMmSs\\u0E0A\\u0E19\\u0E17]*\\]/;\nfunction fmt_is_date(fmt/*:string*/)/*:boolean*/ {\n\tvar i = 0, /*cc = 0,*/ c = \"\", o = \"\";\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': if(SSF_isgeneral(fmt, i)) i+= 6; i++; break;\n\t\t\tcase '\"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break;\n\t\t\tcase '\\\\': i+=2; break;\n\t\t\tcase '_': i+=2; break;\n\t\t\tcase '@': ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") return true;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"AM/PM\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"上午/下午\") return true;\n\t\t\t\t++i; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.match(SSF_abstime)) return true;\n\t\t\t\tbreak;\n\t\t\tcase '.':\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\twhile(i < fmt.length && (\"0#?.,E+-%\".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=SSF_parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? fmt.charAt(i+2) : c; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"上午/下午\") { if(dt!=null) q.v = dt.H >= 12 ? \"下午\" : \"上午\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(SSF_abstime)) {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while(++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tcase '$': out[out.length] = {t:'t', v:'$'}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\n\t/* Scan for date/time parts */\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\t/* time rounding depends on presence of minute / second / usec fields */\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >= 60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\n\t\t\t\t/*::if(!dt) throw \"unreachable\"; */\n\t\t\t\tout[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\n\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\": if(v == thresh) return true; break;\n\t\tcase \">\": if(v > thresh) return true; break;\n\t\tcase \"<\": if(v < thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f/*:string*/, v/*:any*/) {\n\tvar fmt = SSF_split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(/\\[[=<>]/) != null || fmt[1].match(/\\[[=<>]/) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt];\n\t\t\tif(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]];\n\t\t\tif(sfmt == null) sfmt = SSF_default_str[fmt] || \"General\";\n\t\t\tbreak;\n\t}\n\tif(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(SSF_isgeneral(f[1])) return SSF_general(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction SSF_load(fmt/*:string*/, idx/*:?number*/)/*:number*/ {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tfor(var i = 0; i < 0x0188; ++i) {\n/*::if(typeof idx != 'number') return 0x188; */\n\t\t\tif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tif(idx < 0) idx = 0x187;\n\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\ttable_fmt[idx] = fmt;\n\treturn idx;\n}\nfunction SSF_load_table(tbl/*:SSFTable*/)/*:void*/ {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) SSF_load(tbl[i], i);\n}\n\nfunction make_ssf() {\n\ttable_fmt = SSF_init_table();\n}\n\nvar SSF = {\n\tformat: SSF_format,\n\tload: SSF_load,\n\t_table: table_fmt,\n\tload_table: SSF_load_table,\n\tparse_date_code: SSF_parse_date_code,\n\tis_date: fmt_is_date,\n\tget_table: function get_table() { return SSF._table = table_fmt; }\n};\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n}/*:any*/);\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF/*:string|number*/)/*:RegExp*/ {\n\tvar fmt = typeof dateNF == \"number\" ? table_fmt[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str/*:string*/, dateNF/*:string*/, match/*:Array*/)/*:string*/ {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\n/* table of bad formats written by third-party tools */\nvar bad_formats = {\n\t\"d.m\": \"d\\\\.m\" // Issue #2571 Google Sheets writes invalid format 'd.m', correct format is 'd\".\"m' or 'd\\\\.m'\n};\n\nfunction SSF__load(fmt, idx) {\n\treturn SSF_load(bad_formats[fmt] || fmt, idx);\n}\n\n/*::\ndeclare var ReadShift:any;\ndeclare var CheckField:any;\ndeclare var prep_blob:any;\ndeclare var __readUInt32LE:any;\ndeclare var __readInt32LE:any;\ndeclare var __toBuffer:any;\ndeclare var __utf16le:any;\ndeclare var bconcat:any;\ndeclare var s2a:any;\ndeclare var chr0:any;\ndeclare var chr1:any;\ndeclare var has_buf:boolean;\ndeclare var new_buf:any;\ndeclare var new_raw_buf:any;\ndeclare var new_unsafe_buf:any;\ndeclare var Buffer_from:any;\n*/\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global Uint8Array:false, Uint16Array:false */\n\n/*::\ntype SectorEntry = {\n\tname?:string;\n\tnodes?:Array;\n\tdata:RawBytes;\n};\ntype SectorList = {\n\t[k:string|number]:SectorEntry;\n\tname:?string;\n\tfat_addrs:Array;\n\tssz:number;\n}\ntype CFBFiles = {[n:string]:CFBEntry};\n*/\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32 = /*#__PURE__*/(function() {\nvar CRC32 = {};\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table()/*:any*/ {\n\tvar c = 0, table/*:Array*/ = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table/*:Array*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' && typeof table.subarray == \"function\" ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];\nvar T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B/*:Uint8Array|Array*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\nreturn CRC32;\n})();\n/* [MS-CFB] v20171201 */\nvar CFB = /*#__PURE__*/(function _CFB(){\nvar exports/*:CFBModule*/ = /*::(*/{}/*:: :any)*/;\nexports.version = '1.2.2';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l/*:string*/, r/*:string*/)/*:number*/ {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n add 1980 to stored year\n stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms/*:number*/ = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd/*:number*/ = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf/*:CFBlob*/)/*:Date*/ {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob/*:CFBlob*/)/*:any*/ {\n\tprep_blob(blob, 0);\n\tvar o = /*::(*/{}/*:: :any)*/;\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t} break;\n\t\t\t/* ZIP64 Extended Information Field */\n\t\t\tcase 0x0001: {\n\t\t\t\tvar sz1 = blob.read_shift(4), sz2 = blob.read_shift(4);\n\t\t\t\tp.usz = (sz2 * Math.pow(2,32) + sz1);\n\t\t\t\tsz1 = blob.read_shift(4); sz2 = blob.read_shift(4);\n\t\t\t\tp.csz = (sz2 * Math.pow(2,32) + sz1);\n\t\t\t\t// NOTE: volume fields are skipped\n\t\t\t} break;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs/*:: = require('fs'); */;\nfunction get_fs() { return fs || (fs = _fs); }\nfunction parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs/*:Array*/ = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/;\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header/*:RawBytes*/ = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt/*:number*/ = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors/*:Array*/ = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nif(dir_start < sector_list.length) sector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files/*:CFBFiles*/ = {}, Paths/*:Array*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver/*:number*/ = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array*/ {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors/*:Array*/ = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Array*/)/*:void*/ {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad/*:Array*/ = [], q/*:Array*/ = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0)/*:any*/);\n\treturn (bconcat(o).slice(0, entry.size)/*:any*/);\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array*/, ssz/*:number*/, fat_addrs)/*:void*/ {\n\tvar q/*:number*/ = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tif(cnt >= 1) sleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors/*:Array*/, start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/, chkd/*:?Array*/)/*:SectorEntry*/ {\n\tvar buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors/*:Array*/, dir_start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/)/*:SectorList*/ {\n\tvar sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/);\n\tvar chkd/*:Array*/ = [], buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]/*:Array*/);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tvar seen = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tseen[j] = true;\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t\tif(seen[j]) break;\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/);\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array*/, Paths/*:Array*/, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/;\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o/*:CFBEntry*/ = ({\n\t\t\tname: name,\n\t\t\ttype: blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL: blob.read_shift(4, 'i'),\n\t\t\tR: blob.read_shift(4, 'i'),\n\t\t\tC: blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/);\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename/*:string*/, options/*:CFBReadOpts*/) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) {\n\tvar type = options && options.type;\n\tif(!type) {\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\n\t}\n\tswitch(type || \"base64\") {\n\t\tcase \"file\": /*:: if(typeof blob !== 'string') throw \"Must pass a filename when type='file'\"; */return read_file(blob, options);\n\t\tcase \"base64\": /*:: if(typeof blob !== 'string') throw \"Must pass a base64-encoded binary string when type='file'\"; */return parse(s2a(Base64_decode(blob)), options);\n\t\tcase \"binary\": /*:: if(typeof blob !== 'string') throw \"Must pass a binary string when type='file'\"; */return parse(s2a(blob), options);\n\t}\n\treturn parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options);\n}\n\nfunction init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/);\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb/*:CFBContainer*/)/*:void*/ {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\t// Track which names exist\n\tvar fullPaths = Object.create ? Object.create(null) : {};\n\tvar data/*:Array<[string, CFBEntry]>*/ = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tfullPaths[cfb.FullPaths[i]] = true;\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = fullPaths[dad];\n\t\twhile(!s) {\n\t\t\twhile(dirname(dad) && !fullPaths[dirname(dad)]) dad = dirname(dad);\n\n\t\t\tdata.push([dad, ({\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\t\ttype: 1,\n\t\t\t\tclsid: HEADER_CLSID,\n\t\t\t\tct: now, mt: now,\n\t\t\t\tcontent: null\n\t\t\t}/*:any*/)]);\n\n\t\t\t// Add name to set\n\t\t\tfullPaths[dad] = true;\n\n\t\t\tdad = dirname(data[i][0]);\n\t\t\ts = fullPaths[dad];\n\t\t}\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name = filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar _opts = options || {};\n\t/* MAD is order-sensitive, skip rebuild and sort */\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\n\trebuild_cfb(cfb);\n\tswitch(_opts.fileType) {\n\t\tcase 'zip': return write_zip(cfb, _opts);\n\t\t//case 'mad': return write_mad(cfb, _opts);\n\t}\n\tvar L = (function(cfb/*:CFBContainer*/)/*:Array*/{\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\n\t\t\tvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w/*:number*/)/*:void*/ {\n\t\tfor(T += w; i> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm/*:string*/ = (i === 0 && _opts.root) || file.name;\n\t\tif(_nm.length > 32) {\n\t\t\tconsole.error(\"Name \" + _nm + \" will be truncated to \" + _nm.slice(0,32));\n\t\t\t_nm = _nm.slice(0, 32);\n\t\t}\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 511) & -512;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size > 0 && file.size < 0x1000) {\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 63) & -64;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tif (has_buf) {\n\t\to.l = o.length;\n\t} else {\n\t\t// When using Buffer, already 0-filled\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\n\t}\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ {\n\tvar UCFullPaths/*:Array*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths/*:Array*/ = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k/*:boolean*/ = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath/*:string*/ = path.toUpperCase();\n\tvar w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ {\n\tget_fs();\n\tvar o = _write(cfb, options);\n\t/*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error(\"unreachable\"); */\n\tfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o/*:RawBytes*/)/*:string*/ {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type || \"buffer\") {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o;\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\n\t\t\t/* falls through */\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ];\n\n/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */\nvar DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* helpers for unaligned bit writes */\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\n\tif(w <= 5) buf[h] |= (v & 7) << w;\n\telse {\n\t\tbuf[h] |= (v << w) & 0xFF;\n\t\tbuf[h+1] = (v&7) >> (8-w);\n\t}\n\treturn bl + 3;\n}\n\nfunction write_bits_1(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv = (v&1) << w;\n\tbuf[h] |= v;\n\treturn bl + 1;\n}\nfunction write_bits_8(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v;\n\treturn bl + 8;\n}\nfunction write_bits_16(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v & 0xFF;\n\tbuf[h+2] = v >>> 8;\n\treturn bl + 16;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz/*:number*/) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < L; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX/*:number*/)/*:number*/ {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<*/ = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens/*:Array*/ = [];\n\ti = 0;\n\tfor(; i<=143; i++) clens.push(8);\n\tfor(; i<=255; i++) clens.push(9);\n\tfor(; i<=279; i++) clens.push(7);\n\tfor(; i<=287; i++) clens.push(8);\n\tbuild_tree(clens, fix_lmap, 288);\n})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() {\n\tvar DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : [];\n\tvar j = 0, k = 0;\n\tfor(; j < DST_LN.length - 1; ++j) {\n\t\tfor(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j;\n\t}\n\tfor(;k < 32768; ++k) DST_LN_RE[k] = 29;\n\n\tvar LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : [];\n\tfor(j = 0, k = 0; j < LEN_LN.length - 1; ++j) {\n\t\tfor(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j;\n\t}\n\n\tfunction write_stored(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t}\n\n\t/* Fixed Huffman */\n\tfunction write_huff_fixed(data, out) {\n\t\tvar bl = 0;\n\t\tvar boff = 0;\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\n\t\twhile(boff < data.length) {\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\n\n\t\t\t/* write a stored block for short data */\n\t\t\tif(L < 10) {\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\n\t\t\t\tout.l = (bl / 8) | 0;\n\t\t\t\tout.write_shift(2, L);\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t\t\tbl = out.l * 8;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\n\t\t\tvar hash = 0;\n\t\t\twhile(L-- > 0) {\n\t\t\t\tvar d = data[boff];\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\n\n\t\t\t\tvar match = -1, mlen = 0;\n\n\t\t\t\tif((match = addrs[hash])) {\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\n\t\t\t\t\tif(match > boff) match -= 0x8000;\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\n\t\t\t\t}\n\n\t\t\t\tif(mlen > 2) {\n\t\t\t\t\t/* Copy Token */\n\t\t\t\t\td = LEN_LN_RE[mlen];\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\n\t\t\t\t\telse {\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\n\t\t\t\t\t\tbl += 5;\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\n\t\t\t\t\t\tbl += 3;\n\t\t\t\t\t}\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\n\t\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\n\t\t\t\t\t\tbl += len_eb;\n\t\t\t\t\t}\n\n\t\t\t\t\td = DST_LN_RE[boff - match];\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\n\t\t\t\t\tbl -= 3;\n\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\n\t\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\n\t\t\t\t\t\tbl += dst_eb;\n\t\t\t\t\t}\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\n\t\t\t\t\t\t++boff;\n\t\t\t\t\t}\n\t\t\t\t\tL-= mlen - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* Literal Token */\n\t\t\t\t\tif(d <= 143) d = d + 48;\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t++boff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\n\t\t}\n\t\tout.l = ((bl + 7)/8)|0;\n\t\treturn out.l;\n\t}\n\treturn function _deflateRaw(data, out) {\n\t\tif(data.length < 8) return write_stored(data, out);\n\t\treturn write_huff_fixed(data, out);\n\t};\n})();\n\nfunction _deflate(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n}\n/* modified inflate function also moves original read head */\n\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128);\nvar dyn_len_1 = 1, dyn_len_2 = 1;\n\n/* 5.5.3 Expanding Huffman Codes */\nfunction dyn(data, boff/*:number*/) {\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\n\tvar w = 0;\n\n\t/* grab and store code lengths */\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n\tvar maxlen = 1;\n\tvar bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar L = clens.length; /* 19 */\n\tfor(var i = 0; i < _HCLEN; ++i) {\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\n\t\tif(maxlen < w) maxlen = w;\n\t\tbl_count[w]++;\n\t\tboff += 3;\n\t}\n\n\t/* build code tree */\n\tvar ccode = 0;\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<*/ = [];\n\tmaxlen = 1;\n\tfor(; hcodes.length < _HLIT + _HDIST;) {\n\t\tccode = dyn_cmap[read_bits_7(data, boff)];\n\t\tboff += ccode & 7;\n\t\tswitch((ccode >>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz/*:number*/) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(sz > 0) {\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else if((header >> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\tif(usz) return [outbuf, (boff+7)>>>3];\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tvar blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/);\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\t/* ZIP64 lengths */\n\t\tif(EF && EF[0x0001]) {\n\t\t\tif((EF[0x0001]||{}).usz) usz = EF[0x0001].usz;\n\t\t\tif((EF[0x0001]||{}).csz) csz = EF[0x0001].csz;\n\t\t}\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/);\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif((ef[0x0001]||{}).usz) _usz = ef[0x0001].usz;\n\t\tif((ef[0x0001]||{}).csz) _csz = ef[0x0001].csz;\n\t\tif(EF) {\n\t\t\tif((EF[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t\t\tif((EF[0x0001]||{}).usz) _usz = ef[0x0001].usz;\n\t\t\tif((EF[0x0001]||{}).csz) _csz = ef[0x0001].csz;\n\t\t}\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break; // TODO: scan for magic number\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\t//var _crc32 = CRC32.buf(data, 0);\n\t//if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o/*:CFBlob*/ = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = typeof fi.content == \"string\" ? CRC32.bstr(fi.content, 0) : CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0);\n\n\t\tvar outbuf = typeof fi.content == \"string\" ? s2a(fi.content) : fi.content/*::||[]*/;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4, (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4, (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: extra fields? */\n\n\t\t/* TODO: encryption header ? */\n\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/));\n}\nvar ContentTypeMap = ({\n\t\"htm\": \"text/html\",\n\t\"xml\": \"text/xml\",\n\n\t\"gif\": \"image/gif\",\n\t\"jpg\": \"image/jpeg\",\n\t\"png\": \"image/png\",\n\n\t\"mso\": \"application/x-mso\",\n\t\"thmx\": \"application/vnd.ms-officetheme\",\n\t\"sh33tj5\": \"application/octet-stream\"\n}/*:any*/);\n\nfunction get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ {\n\tif(fi.ctype) return fi.ctype;\n\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\n\tif(fp) {\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\t}\n\n\treturn \"application/octet-stream\";\n}\n\n/* 76 character chunks TODO: intertwine encoding */\nfunction write_base64_76(bstr/*:string*/)/*:string*/ {\n\tvar data = Base64_encode(bstr);\n\tvar o = [];\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\n}\n\n/*\nRules for QP:\n\t- escape =## applies for all non-display characters and literal \"=\"\n\t- space or tab at end of line must be encoded\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\n\nTODO: Some files from word appear to write line extensions with bare equals:\n\n```\n*/ = [], split = encoded.split(\"\\r\\n\");\n\tfor(var si = 0; si < split.length; ++si) {\n\t\tvar str = split[si];\n\t\tif(str.length == 0) { o.push(\"\"); continue; }\n\t\tfor(var i = 0; i < str.length;) {\n\t\t\tvar end = 76;\n\t\t\tvar tmp = str.slice(i, i + end);\n\t\t\tif(tmp.charAt(end - 1) == \"=\") end --;\n\t\t\telse if(tmp.charAt(end - 2) == \"=\") end -= 2;\n\t\t\telse if(tmp.charAt(end - 3) == \"=\") end -= 3;\n\t\t\ttmp = str.slice(i, i + end);\n\t\t\ti += end;\n\t\t\tif(i < str.length) tmp += \"=\";\n\t\t\to.push(tmp);\n\t\t}\n\t}\n\n\treturn o.join(\"\\r\\n\");\n}\nfunction parse_quoted_printable(data/*:Array*/)/*:RawBytes*/ {\n\tvar o = [];\n\n\t/* unify long lines */\n\tfor(var di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\twhile(di <= data.length && line.charAt(line.length - 1) == \"=\") line = line.slice(0, line.length - 1) + data[++di];\n\t\to.push(line);\n\t}\n\n\t/* decode */\n\tfor(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); });\n\treturn s2a(o.join(\"\\r\\n\"));\n}\n\n\nfunction parse_mime(cfb/*:CFBContainer*/, data/*:Array*/, root/*:string*/)/*:void*/ {\n\tvar fname = \"\", cte = \"\", ctype = \"\", fdata;\n\tvar di = 0;\n\tfor(;di < 10; ++di) {\n\t\tvar line = data[di];\n\t\tif(!line || line.match(/^\\s*$/)) break;\n\t\tvar m = line.match(/^(.*?):\\s*([^\\s].*)$/);\n\t\tif(m) switch(m[1].toLowerCase()) {\n\t\t\tcase \"content-location\": fname = m[2].trim(); break;\n\t\t\tcase \"content-type\": ctype = m[2].trim(); break;\n\t\t\tcase \"content-transfer-encoding\": cte = m[2].trim(); break;\n\t\t}\n\t}\n\t++di;\n\tswitch(cte.toLowerCase()) {\n\t\tcase 'base64': fdata = s2a(Base64_decode(data.slice(di).join(\"\"))); break;\n\t\tcase 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break;\n\t\tdefault: throw new Error(\"Unsupported Content-Transfer-Encoding \" + cte);\n\t}\n\tvar file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true});\n\tif(ctype) file.ctype = ctype;\n}\n\nfunction parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tif(a2s(file.slice(0,13)).toLowerCase() != \"mime-version:\") throw new Error(\"Unsupported MAD header\");\n\tvar root = (options && options.root || \"\");\n\t// $FlowIgnore\n\tvar data = (has_buf && Buffer.isBuffer(file) ? file.toString(\"binary\") : a2s(file)).split(\"\\r\\n\");\n\tvar di = 0, row = \"\";\n\n\t/* if root is not specified, scan for the common prefix */\n\tfor(di = 0; di < data.length; ++di) {\n\t\trow = data[di];\n\t\tif(!/^Content-Location:/i.test(row)) continue;\n\t\trow = row.slice(row.indexOf(\"file\"));\n\t\tif(!root) root = row.slice(0, row.lastIndexOf(\"/\") + 1);\n\t\tif(row.slice(0, root.length) == root) continue;\n\t\twhile(root.length > 0) {\n\t\t\troot = root.slice(0, root.length - 1);\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\n\t\t\tif(row.slice(0,root.length) == root) break;\n\t\t}\n\t}\n\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o);\n\tvar start_di, fcnt = 0;\n\tfor(di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\n\t\tstart_di = di;\n\t}\n\treturn o;\n}\n\nfunction write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ {\n\tvar opts = options || {};\n\tvar boundary = opts.boundary || \"SheetJS\";\n\tboundary = '------=' + boundary;\n\n\tvar out = [\n\t\t'MIME-Version: 1.0',\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\n\t\t'',\n\t\t'',\n\t\t''\n\t];\n\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length);\n\t\tfi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\n\t\t/* Normalize filename */\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\n\t\t});\n\n\t\t/* Extract content as binary string */\n\t\tvar ca = fi.content;\n\t\t// $FlowIgnore\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\n\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\n\t\tvar qp = dispcnt >= L * 4 / 5;\n\n\t\tout.push(boundary);\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\n\t\tout.push('');\n\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\n\t}\n\tout.push(boundary + '--\\r\\n');\n\treturn out.join(\"\\r\\n\");\n}\nfunction cfb_new(opts/*:?any*/)/*:CFBContainer*/ {\n\tvar o/*:CFBContainer*/ = ({}/*:any*/);\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath/*:string*/ = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2}/*:any*/);\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\n\t/*:: if(!file) throw new Error(\"unreachable\"); */\n\tfile.content = (content/*:any*/);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nvar _fs;\nfunction set_fs(fs) { _fs = fs; }\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname/*:string*/, payload/*:any*/, enc/*:?string*/) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tif(typeof Deno !== 'undefined') {\n\t\t/* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */\n\t\tif(enc && typeof payload == \"string\") switch(enc) {\n\t\t\tcase \"utf8\": payload = new TextEncoder(enc).encode(payload); break;\n\t\t\tcase \"binary\": payload = s2ab(payload); break;\n\t\t\t/* TODO: binary equivalent */\n\t\t\tdefault: throw new Error(\"Unsupported encoding \" + enc);\n\t\t}\n\t\treturn Deno.writeFileSync(fname, payload);\n\t}\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\n\t/*:: declare var IE_SaveFile: any; */\n\tif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\n\t\t/*:: declare var navigator: any; */\n\t\tif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\n\t\t/*:: declare var saveAs: any; */\n\t\tif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\n\t\t\t/*:: declare var chrome: any; */\n\t\t\tif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */\n\t\t\t\ta.download = fname; a.href = url; document.body.appendChild(a); a.click();\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */ document.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path/*:string*/) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\tif(typeof Deno !== 'undefined') return Deno.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o/*:any*/)/*:Array*/ {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj/*:any*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj/*:any*/)/*:EvertNumType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj/*:any*/)/*:EvertArrType*/ {\n\tvar o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = /*#__PURE__*/new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nfunction datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\tvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nvar refdate = /*#__PURE__*/new Date();\nvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/refdate.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\nvar refoffset = /*#__PURE__*/refdate.getTimezoneOffset();\nfunction numdate(v/*:number*/)/*:Date*/ {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\tif (out.getTimezoneOffset() !== refoffset) {\n\t\tout.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000);\n\t}\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date_1 = /*#__PURE__*/new Date('2017-02-19T19:06:09.000Z');\nvar good_pd_date = /*#__PURE__*/isNaN(/*#__PURE__*/good_pd_date_1.getFullYear()) ? /*#__PURE__*/new Date('2/19/17') : good_pd_date_1;\nvar good_pd = /*#__PURE__*/good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str/*:string|Date*/, fixdate/*:?number*/)/*:Date*/ {\n\tvar d = new Date(str);\n\tif(good_pd) {\n\t\t/*:: if(fixdate == null) fixdate = 0; */\n\t\tif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr/*:Array*/, debomit)/*:string*/ {\n\tif(has_buf && Buffer.isBuffer(arr)) {\n\t\tif(debomit && buf_utf16le) {\n\t\t\t// TODO: temporary patch\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString(\"utf16le\"));\n\t\t\tif(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString(\"binary\")));\n\t\t}\n\t\treturn arr.toString(\"binary\");\n\t}\n\n\tif(typeof TextDecoder !== \"undefined\") try {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder(\"utf-16le\").decode(arr.slice(2)));\n\t\t\tif(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder(\"utf-16be\").decode(arr.slice(2)));\n\t\t}\n\t\tvar rev = {\n\t\t\t\"\\u20ac\": \"\\x80\", \"\\u201a\": \"\\x82\", \"\\u0192\": \"\\x83\", \"\\u201e\": \"\\x84\",\n\t\t\t\"\\u2026\": \"\\x85\", \"\\u2020\": \"\\x86\", \"\\u2021\": \"\\x87\", \"\\u02c6\": \"\\x88\",\n\t\t\t\"\\u2030\": \"\\x89\", \"\\u0160\": \"\\x8a\", \"\\u2039\": \"\\x8b\", \"\\u0152\": \"\\x8c\",\n\t\t\t\"\\u017d\": \"\\x8e\", \"\\u2018\": \"\\x91\", \"\\u2019\": \"\\x92\", \"\\u201c\": \"\\x93\",\n\t\t\t\"\\u201d\": \"\\x94\", \"\\u2022\": \"\\x95\", \"\\u2013\": \"\\x96\", \"\\u2014\": \"\\x97\",\n\t\t\t\"\\u02dc\": \"\\x98\", \"\\u2122\": \"\\x99\", \"\\u0161\": \"\\x9a\", \"\\u203a\": \"\\x9b\",\n\t\t\t\"\\u0153\": \"\\x9c\", \"\\u017e\": \"\\x9e\", \"\\u0178\": \"\\x9f\"\n\t\t};\n\t\tif(Array.isArray(arr)) arr = new Uint8Array(arr);\n\t\treturn new TextDecoder(\"latin1\").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; });\n\t} catch(e) {}\n\n\tvar o = [];\n\tfor(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));\n\treturn o.join(\"\");\n}\n\nfunction dup(o/*:any*/)/*:any*/ {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s/*:string*/)/*:number*/ {\n\tvar v/*:number*/ = Number(s);\n\tif(!isNaN(v)) return isFinite(v) ? v : NaN;\n\tif(!/\\d/.test(s)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\n\n/* NOTE: Chrome rejects bare times like 1:23 PM */\nvar FDRE1 = /^(0?\\d|1[0-2])(?:|:([0-5]?\\d)(?:|(\\.\\d+)(?:|:([0-5]?\\d))|:([0-5]?\\d)(|\\.\\d+)))\\s+([ap])m?$/;\n\nfunction fuzzytime1(M) /*:Date*/ {\n /* TODO: 1904 adjustment, keep in sync with base date */\n if(!M[2]) return new Date(1899,11,30,(+M[1]%12) + (M[7] == \"p\" ? 12 : 0), 0, 0, 0);\n if(M[3]) {\n if(M[4]) return new Date(1899,11,30,(+M[1]%12) + (M[7] == \"p\" ? 12 : 0), +M[2], +M[4], parseFloat(M[3])*1000);\n else return new Date(1899,11,30,(M[7] == \"p\" ? 12 : 0), +M[1], +M[2], parseFloat(M[3])*1000);\n }\n else if(M[5]) return new Date(1899,11,30, (+M[1]%12) + (M[7] == \"p\" ? 12 : 0), +M[2], +M[5], M[6] ? parseFloat(M[6]) * 1000 : 0);\n else return new Date(1899,11,30,(+M[1]%12) + (M[7] == \"p\" ? 12 : 0), +M[2], 0, 0);\n}\nvar lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nfunction fuzzydate(s/*:string*/)/*:Date*/ {\n\tvar lower = s.toLowerCase();\n\tvar lnos = lower.replace(/\\s+/g, \" \").trim();\n\tvar M = lnos.match(FDRE1);\n\tif(M) return fuzzytime1(M);\n\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tif(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {\n\t\tlower = lower.replace(/[^a-z]/g,\"\").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,\"\");\n\t\tif(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;\n\t} else if(lower.replace(/[ap]m?/, \"\").match(/[a-z]/)) return n;\n\tif(y < 0 || y > 8099 || s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar split_regex = /*#__PURE__*/(function() {\n\tvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\n\treturn function split_regex(str/*:string*/, re, def/*:string*/)/*:Array*/ {\n\t\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\t\tvar p = str.split(re), o = [p[0]];\n\t\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\t\treturn o;\n\t};\n})();\nfunction getdatastr(data)/*:?string*/ {\n\tif(!data) return null;\n\tif(data.content && data.type) return cc2str(data.content, true);\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\tif(data.content && data.type) return data.content;\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file/*:string*/) {\n\tvar k = zip.FullPaths || keys(zip.files);\n\tvar f = file.toLowerCase().replace(/[\\/]/g, '\\\\'), g = f.replace(/\\\\/g,'\\/');\n\tfor(var i=0; i\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex1=/<[\\/\\?]?[a-zA-Z0-9:_-]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s*[\\/\\?]?>/mg, tagregex2 = /<[^>]*>/g;\nvar tagregex = /*#__PURE__*/XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag/*:string*/, skip_root/*:?boolean*/, skip_LC/*:?boolean*/)/*:any*/ {\n\tvar z = ({}/*:any*/);\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t\tif(!skip_LC) z[q.toLowerCase()] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t\tif(!skip_LC) z[k.toLowerCase()] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x/*:string*/)/*:string*/ { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'"': '\"',\n\t''': \"'\",\n\t'>': '>',\n\t'<': '<',\n\t'&': '&'\n};\nvar rencoding = /*#__PURE__*/evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml/*:StringConv*/ = /*#__PURE__*/(function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/ig, coderegex = /_x([\\da-fA-F]{4})_/ig;\n\tfunction raw_unescapexml(text/*:string*/)/*:string*/ {\n\t\tvar s = text + '', i = s.indexOf(\"-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn raw_unescapexml(s.slice(0, i)) + s.slice(i+9,j) + raw_unescapexml(s.slice(j+3));\n\t}\n\treturn function unescapexml(text/*:string*/, xlsx/*:boolean*/) {\n\t\tvar out = raw_unescapexml(text);\n\t\treturn xlsx ? out.replace(/\\r\\n/g, \"\\n\") : out;\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f\\uFFFE-\\uFFFF]/g;\nfunction escapexml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text/*:string*/)/*:string*/{ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"
      \").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr/*:StringConv*/ = /*#__PURE__*/(function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$/*:string*/,$1/*:string*/)/*:string*/ { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str/*:string*/)/*:string*/ { return str.replace(entregex,entrepl); };\n})();\nfunction xlml_unfixstr(str/*:string*/)/*:string*/ { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\ \"); }\n\n/* note: xsd:boolean valid values: true / 1 / false / 0 */\nfunction parsexmlbool(value/*:any*/)/*:boolean*/ {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': return true;\n\t\tcase 0: case false: case '0': case 'false': return false;\n\t\t//default: throw new Error(\"Invalid xsd:boolean \" + value);\n\t}\n\treturn false;\n}\n\nfunction utf8reada(orig/*:string*/)/*:string*/ {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n}\n\nfunction utf8readb(data) {\n\tvar out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\tfor(i = 0; i < data.length; i+=j) {\n\t\tj = 1;\n\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\telse { j = 4;\n\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t}\n\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t}\n\treturn out.slice(0,k).toString('ucs2');\n}\n\nfunction utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }\n\nvar utf8corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\nvar utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada;\n\nvar utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); } : function(orig/*:string*/)/*:string*/ {\n\tvar out/*:Array*/ = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\n// matches ... extracts content\nvar matchtag = /*#__PURE__*/(function() {\n\tvar mtcache/*:{[k:string]:RegExp}*/ = ({}/*:any*/);\n\treturn function matchtag(f/*:string*/,g/*:?string*/)/*:RegExp*/ {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)',((g||\"\")/*:any*/)));\n\t};\n})();\n\nvar htmldecode/*:{(s:string):string}*/ = /*#__PURE__*/(function() {\n\tvar entities/*:Array<[RegExp, string]>*/ = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt', '>'], ['lt', '<'], ['amp', '&']\n\t].map(function(x/*:[string, string]*/) { return [new RegExp('&' + x[0] + ';', \"ig\"), x[1]]; });\n\treturn function htmldecode(str/*:string*/)/*:string*/ {\n\t\tvar o = str\n\t\t\t\t// Remove new lines and spaces from start of content\n\t\t\t\t.replace(/^[\\t\\n\\r ]+/, \"\")\n\t\t\t\t// Remove new lines and spaces from end of content\n\t\t\t\t.replace(/[\\t\\n\\r ]+$/,\"\")\n\t\t\t\t// Added line which removes any white space characters after and before html tags\n\t\t\t\t.replace(/>\\s+/g,\">\").replace(/\\s+ tags with new lines\n\t\t\t\t.replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\")\n\t\t\t\t// Strip HTML elements\n\t\t\t\t.replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = /*#__PURE__*/(function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)*/ {\n\tvar h = parsexmltag(data);\n\n\tvar matches/*:Array*/ = data.match(vtregex(h.baseType))||[];\n\tvar res/*:Array*/ = [];\n\tif(matches.length != h.size) {\n\t\tif(opts.WTF) throw new Error(\"unexpected vector length \" + matches.length + \" != \" + h.size);\n\t\treturn res;\n\t}\n\tmatches.forEach(function(x/*:string*/) {\n\t\tvar v = x.replace(vtvregex,\"\").match(vtmregex);\n\t\tif(v) res.push({v:utf8read(v[2]), t:v[1]});\n\t});\n\treturn res;\n}\n\nvar wtregex = /(^\\s|\\s$|\\n)/;\nfunction writetag(f/*:string*/,g/*:string*/)/*:string*/ { return '<' + f + (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + ''; }\n\nfunction wxt_helper(h)/*:string*/ { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f/*:string*/,g/*:?string*/,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '';}\n\nfunction write_w3cdtf(d/*:Date*/, t/*:?boolean*/)/*:string*/ { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s, xlsx/*:?boolean*/)/*:string*/ {\n\tswitch(typeof s) {\n\t\tcase 'string':\n\t\t\tvar o = writextag('vt:lpwstr', escapexml(s));\n\t\t\tif(xlsx) o = o.replace(/"/g, \"_x0022_\");\n\t\t\treturn o;\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s)));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nfunction xlml_normalize(d)/*:string*/ {\n\tif(has_buf &&/*::typeof Buffer !== \"undefined\" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?>:\\/]+)(?:[\\s?:\\/](?:[^>=]|=\"[^\"]*?\")*)?>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\n\nvar XMLNS = ({\n\tCORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\n\tCUST_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\n\tEXT_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\n\tCT: 'http://schemas.openxmlformats.org/package/2006/content-types',\n\tRELS: 'http://schemas.openxmlformats.org/package/2006/relationships',\n\tTCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments',\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n}/*:any*/);\n\nvar XMLNS_main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o': 'urn:schemas-microsoft-com:office:office',\n\t'x': 'urn:schemas-microsoft-com:office:excel',\n\t'ss': 'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt': 'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv': 'http://macVmlSchemaUri',\n\t'v': 'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n}/*:any*/);\nfunction read_double_le(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b/*:RawBytes|CFBlob*/, v/*:number*/, idx/*:number*/) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar ___toBuffer = function(bufs/*:Array >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer;\n\nvar ___utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { var ss/*:Array*/=[]; for(var i=s; i*/=[]; for(var i=s; i 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpstr = ___lpstr;\n\nvar ___cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __cpstr = ___cpstr;\n\nvar ___lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpwstr = ___lpwstr;\n\nvar ___lpp4 = function lpp4_(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __lpp4 = ___lpp4;\n\nvar ___8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = ___8lpp4;\n\nvar ___double = function(b/*:RawBytes|CFBlob*/, idx/*:number*/) { return read_double_le(b, idx);};\nvar __double = ___double;\n\nvar is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n\nif(has_buf/*:: && typeof Buffer !== 'undefined'*/) {\n\t__lpstr = function lpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/ || !buf_utf16le) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/ || !buf_utf16le) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__double = function double_(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(Buffer.isBuffer(b)/*::&& b instanceof Buffer*/) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n}\n\n/* from js-xls */\nfunction cpdoit() {\n\t__utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\nif(typeof $cptable !== 'undefined') cpdoit();\n\nvar __readUInt8 = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx]; };\nvar __readUInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size/*:number*/, t/*:?string*/)/*:number|string*/ {\n\tvar o=\"\", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this) && buf_utf16le) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof $cptable !== 'undefined') {\n\t\t\t\to = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t/*:number*/, val/*:string|number*/, f/*:?string*/)/*:any*/ {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\n\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\tfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs' || f == 'cpstr') {\n\t\tif(typeof $cptable !== 'undefined' && current_ansi == 874) {\n\t\t\t/* TODO: use tables directly, don't encode */\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) {\n\t\t\t\tvar cpp = $cptable.utils.encode(current_ansi, val.charAt(i));\n\t\t\t\tthis[this.l + i] = cpp[0];\n\t\t\t}\n\t\t\tsize = val.length;\n\t\t} else if(typeof $cptable !== 'undefined' && f == 'cpstr') {\n\t\t\tcpp = $cptable.utils.encode(current_codepage, val);\n\t\t\t/* replace null bytes with _ when relevant */\n if(cpp.length == val.length) for(i = 0; i < val.length; ++i) if(cpp[i] == 0 && val.charCodeAt(i) != 0) cpp[i] = 0x5F;\n if(cpp.length == 2 * val.length) for(i = 0; i < val.length; ++i) if(cpp[2*i] == 0 && cpp[2*i+1] == 0 && val.charCodeAt(i) != 0) cpp[2*i] = 0x5F;\n\t\t\tfor(i = 0; i < cpp.length; ++i) this[this.l + i] = cpp[i];\n\t\t\tsize = cpp.length;\n\t\t} else {\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\t\tsize = val.length;\n\t\t}\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tvar end/*:number*/ = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else /*:: if(typeof val === 'number') */ switch(t) {\n\t\tcase 1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase 4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr/*:string*/, fld/*:string*/)/*:void*/ {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos/*:number*/)/*:void*/ {\n\tblob.l = pos;\n\tblob.read_shift = /*::(*/ReadShift/*:: :any)*/;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length/*:: :number, opts?:any */) { blob.l += length; }\n\nfunction new_buf(sz/*:number*/)/*:Block*/ {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb/*:RecordHopperCB*/, opts/*:?any*/) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = R.f && R.f(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array()/*:BufArray*/ {\n\tvar bufs/*:Array*/ = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz/*:number*/)/*:Block*/ {\n\t\tvar o/*:Block*/ = (new_buf(sz)/*:any*/);\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf/*:Block*/ = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\t// workaround for new Buffer(3).slice(0,0) bug in bun 0.1.3\n\t\tif(curbuf.l) {\n\t\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\t}\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz/*:number*/)/*:Block*/ {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn bconcat(bufs);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs }/*:any*/);\n}\n\nfunction write_record(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/) {\n\tvar t/*:number*/ = +type, l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(/*:: length != null &&*/length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell/*:CellAddress*/, tgt/*:any*/, opts/*:?any*/)/*:CellAddress*/ {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c/*:CellAddress*/, biff/*:number*/)/*:string*/ {\n\tif(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(!c.cRel && c.cRel != null) s = fix_col(s);\n\tif(!c.rRel && c.rRel != null) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts)/*:string*/ {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nfunction decode_row(rowstr/*:string*/)/*:number*/ { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row/*:number*/)/*:string*/ { return \"\" + (row + 1); }\nfunction fix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr/*:string*/)/*:number*/ { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col/*:number*/)/*:string*/ { if(col < 0) throw new Error(\"invalid column \" + col); var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr/*:string*/)/*:Array*/ { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\nfunction decode_cell(cstr/*:string*/)/*:CellAddress*/ {\n\tvar R = 0, C = 0;\n\tfor(var i = 0; i < cstr.length; ++i) {\n\t\tvar cc = cstr.charCodeAt(i);\n\t\tif(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48);\n\t\telse if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64);\n\t}\n\treturn { c: C - 1, r:R - 1 };\n}\nfunction encode_cell(cell/*:CellAddress*/)/*:string*/ {\n\tvar col = cell.c + 1;\n\tvar s=\"\";\n\tfor(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s;\n\treturn s + (cell.r + 1);\n}\nfunction decode_range(range/*:string*/)/*:Range*/ {\n\tvar idx = range.indexOf(\":\");\n\tif(idx == -1) return { s: decode_cell(range), e: decode_cell(range) };\n\treturn { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) };\n}\n/*# if only one arg, it is assumed to be a Range. If 2 args, both are cell addresses */\nfunction encode_range(cs/*:CellAddrSpec|Range*/,ce/*:?CellAddrSpec*/)/*:string*/ {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\n/*:: if(!(cs instanceof Range)) throw \"unreachable\"; */\n\t\treturn encode_range(cs.s, cs.e);\n\t}\n/*:: if((cs instanceof Range)) throw \"unreachable\"; */\n\tif(typeof cs !== 'string') cs = encode_cell((cs/*:any*/));\n\tif(typeof ce !== 'string') ce = encode_cell((ce/*:any*/));\n/*:: if(typeof cs !== 'string') throw \"unreachable\"; */\n/*:: if(typeof ce !== 'string') throw \"unreachable\"; */\n\treturn cs == ce ? cs : cs + \":\" + ce;\n}\nfunction fix_range(a1/*:string*/)/*:string*/ {\n\tvar s = decode_range(a1);\n\treturn \"$\" + encode_col(s.s.c) + \"$\" + encode_row(s.s.r) + \":$\" + encode_col(s.e.c) + \"$\" + encode_row(s.e.r);\n}\n\n// List of invalid characters needs to be tested further\nfunction formula_quote_sheet_name(sname/*:string*/, opts)/*:string*/ {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif (/[^\\w\\u4E00-\\u9FFF\\u3040-\\u30FF]/.test(sname)) return \"'\" + sname.replace(/'/g, \"''\") + \"'\";\n\treturn sname;\n}\n\nfunction safe_decode_range(range/*:string*/)/*:Range*/ {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\t++i;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell/*:Cell*/, v/*:any*/) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(cell.t == \"e\") return BErr[cell.v] || cell.v;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? (_ws[\"!data\"] != null) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws/*:Worksheet*/ = _ws || ({}/*:any*/);\n\tif(dense && !ws[\"!data\"]) ws[\"!data\"] = [];\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t\tif(!ws[\"!ref\"]) ws[\"!ref\"] = \"A1:A1\";\n\t}\n\tvar range/*:Range*/ = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tvar row = [];\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tif(!data[R]) continue;\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\n\t\tvar __R = _R + R, __Rstr = \"\" + (__R + 1);\n\t\tif(dense) {\n\t\t\tif(!ws[\"!data\"][__R]) ws[\"!data\"][__R] = [];\n\t\t\trow = ws[\"!data\"][__R];\n\t\t}\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell/*:Cell*/ = ({v: data[R][C] }/*:any*/);\n\t\t\tvar __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\n\t\t\telse {\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\t\tif(cell.v === null) {\n\t\t\t\t\tif(cell.f) cell.t = 'n';\n\t\t\t\t\telse if(o.nullError) { cell.t = 'e'; cell.v = 0; }\n\t\t\t\t\telse if(!o.sheetStubs) continue;\n\t\t\t\t\telse cell.t = 'z';\n\t\t\t\t}\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v, o.date1904)); }\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v, o.date1904); cell.w = SSF_format(cell.z, cell.v); }\n\t\t\t\t}\n\t\t\t\telse cell.t = 's';\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tif(row[__C] && row[__C].z) cell.z = row[__C].z;\n\t\t\t\trow[__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_col(__C) + __Rstr/*:any*/;\n\t\t\t\tif(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z;\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { return sheet_add_aoa(null, data, opts); }\n\nfunction parse_Int32LE(data) {\n\treturn data.read_shift(4, 'i');\n}\nfunction write_UInt32LE(x/*:number*/, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }\n\to.write_shift(4, data.length);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.91 */\n//function parse_LPWideString(data/*::, length*/)/*:string*/ {\n//\tvar cchCharacters = data.read_shift(2);\n//\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, \"utf16le\");\n//}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length/*:number*/)/*:XLString*/ {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str }/*:any*/);\n\tif ((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ ich: 0, ifnt: 0 }];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }\n\to.write_shift(1, 0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }\n\to.write_shift(1, 1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4, 1);\n\twrite_StrRun({ ich: 0, ifnt: 0 }, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data)/*:any*/ {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) << 16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c: col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell/*:any*/, o/*:?Block*/) {\n\tif (o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* Short XLSB Cell does not include column */\nfunction parse_XLSBShortCell(data)/*:any*/ {\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:-1, iStyleRef: iStyleRef };\n}\nfunction write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data)/*:number*/ {\n\tvar b = data.slice(data.l, data.l + 4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l += 4;\n\tvar RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2;\n\treturn fX100 ? (RK / 100) : RK;\n}\nfunction write_RkNumber(data/*:number*/, o) {\n\tif (o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data /*::, length*/)/*:Range*/ {\n\tvar cell/*:Range*/ = ({ s: {}, e: {} }/*:any*/);\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r/*:Range*/, o) {\n\tif (!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLSB] 2.5.155 UncheckedSqRfX */\n//function parse_UncheckedSqRfX(data) {\n//\tvar cnt = data.read_shift(4);\n//\tvar out = [];\n//\tfor(var i = 0; i < cnt; ++i) {\n//\t\tvar rng = parse_UncheckedRfX(data);\n//\t\tout.push(encode_range(rng));\n//\t}\n//\treturn out.join(\",\");\n//}\n//function write_UncheckedSqRfX(sqrfx/*:string*/) {\n//\tvar parts = sqrfx.split(/\\s*,\\s*/);\n//\tvar o = new_buf(4); o.write_shift(4, parts.length);\n//\tvar out = [o];\n//\tparts.forEach(function(rng) {\n//\t\tout.push(write_UncheckedRfX(safe_decode_range(rng)));\n//\t});\n//\treturn bconcat(out);\n//}\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data/*::, length*/) {\n\tif(data.length - data.l < 8) throw \"XLS Xnum Buffer underflow\";\n\treturn data.read_shift(8, 'f');\n}\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data/*::, length*/) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch (xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif (icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif (!o) o = new_buf(8);\n\tif (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif (color.index != null) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if (color.theme != null) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif (nTS > 0) nTS *= 32767;\n\telse if (nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif (!color.rgb || color.theme != null) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\tif (typeof rgb == 'number') rgb = (\"000000\" + rgb.toString(16)).slice(-6);\n\t\to.write_shift(1, parseInt(rgb.slice(0, 2), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(2, 4), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(4, 6), 16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data/*::, length, opts*/) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\tfBold: d & 0x01,\n\t\tfItalic: d & 0x02,\n\t\tfUnderline: d & 0x04,\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif (!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ {\n\t// $FlowIgnore\n\tvar ClipFmt = { 2: \"BITMAP\", 3: \"METAFILEPICT\", 8: \"DIB\", 14: \"ENHMETAFILE\" };\n\tvar m/*:number*/ = o.read_shift(4);\n\tswitch (m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || \"\";\n\t}\n\tif (m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars\n//var VT_EMPTY = 0x0000;\n//var VT_NULL = 0x0001;\nvar VT_I2 = 0x0002;\nvar VT_I4 = 0x0003;\n//var VT_R4 = 0x0004;\n//var VT_R8 = 0x0005;\n//var VT_CY = 0x0006;\n//var VT_DATE = 0x0007;\n//var VT_BSTR = 0x0008;\n//var VT_ERROR = 0x000A;\nvar VT_BOOL = 0x000B;\nvar VT_VARIANT = 0x000C;\n//var VT_DECIMAL = 0x000E;\n//var VT_I1 = 0x0010;\n//var VT_UI1 = 0x0011;\n//var VT_UI2 = 0x0012;\nvar VT_UI4 = 0x0013;\n//var VT_I8 = 0x0014;\n//var VT_UI8 = 0x0015;\n//var VT_INT = 0x0016;\n//var VT_UINT = 0x0017;\n//var VT_LPSTR = 0x001E;\n//var VT_LPWSTR = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB = 0x0041;\n//var VT_STREAM = 0x0042;\n//var VT_STORAGE = 0x0043;\n//var VT_STREAMED_Object = 0x0044;\n//var VT_STORED_Object = 0x0045;\n//var VT_BLOB_Object = 0x0046;\nvar VT_CF = 0x0047;\n//var VT_CLSID = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\n//var VT_VECTOR = 0x1000;\nvar VT_VECTOR_VARIANT = 0x100C;\nvar VT_VECTOR_LPSTR = 0x101E;\n//var VT_ARRAY = 0x2000;\n\nvar VT_STRING = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Category', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'PresentationFormat', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'ByteCount', t: VT_I4 },\n\t/*::[*/0x05/*::]*/: { n: 'LineCount', t: VT_I4 },\n\t/*::[*/0x06/*::]*/: { n: 'ParagraphCount', t: VT_I4 },\n\t/*::[*/0x07/*::]*/: { n: 'SlideCount', t: VT_I4 },\n\t/*::[*/0x08/*::]*/: { n: 'NoteCount', t: VT_I4 },\n\t/*::[*/0x09/*::]*/: { n: 'HiddenCount', t: VT_I4 },\n\t/*::[*/0x0a/*::]*/: { n: 'MultimediaClipCount', t: VT_I4 },\n\t/*::[*/0x0b/*::]*/: { n: 'ScaleCrop', t: VT_BOOL },\n\t/*::[*/0x0c/*::]*/: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ },\n\t/*::[*/0x0d/*::]*/: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ },\n\t/*::[*/0x0e/*::]*/: { n: 'Manager', t: VT_STRING },\n\t/*::[*/0x0f/*::]*/: { n: 'Company', t: VT_STRING },\n\t/*::[*/0x10/*::]*/: { n: 'LinksUpToDate', t: VT_BOOL },\n\t/*::[*/0x11/*::]*/: { n: 'CharacterCount', t: VT_I4 },\n\t/*::[*/0x13/*::]*/: { n: 'SharedDoc', t: VT_BOOL },\n\t/*::[*/0x16/*::]*/: { n: 'HyperlinksChanged', t: VT_BOOL },\n\t/*::[*/0x17/*::]*/: { n: 'AppVersion', t: VT_I4, p: 'version' },\n\t/*::[*/0x18/*::]*/: { n: 'DigSig', t: VT_BLOB },\n\t/*::[*/0x1A/*::]*/: { n: 'ContentType', t: VT_STRING },\n\t/*::[*/0x1B/*::]*/: { n: 'ContentStatus', t: VT_STRING },\n\t/*::[*/0x1C/*::]*/: { n: 'Language', t: VT_STRING },\n\t/*::[*/0x1D/*::]*/: { n: 'Version', t: VT_STRING },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Title', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'Subject', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'Author', t: VT_STRING },\n\t/*::[*/0x05/*::]*/: { n: 'Keywords', t: VT_STRING },\n\t/*::[*/0x06/*::]*/: { n: 'Comments', t: VT_STRING },\n\t/*::[*/0x07/*::]*/: { n: 'Template', t: VT_STRING },\n\t/*::[*/0x08/*::]*/: { n: 'LastAuthor', t: VT_STRING },\n\t/*::[*/0x09/*::]*/: { n: 'RevNumber', t: VT_STRING },\n\t/*::[*/0x0A/*::]*/: { n: 'EditTime', t: VT_FILETIME },\n\t/*::[*/0x0B/*::]*/: { n: 'LastPrinted', t: VT_FILETIME },\n\t/*::[*/0x0C/*::]*/: { n: 'CreatedDate', t: VT_FILETIME },\n\t/*::[*/0x0D/*::]*/: { n: 'ModifiedDate', t: VT_FILETIME },\n\t/*::[*/0x0E/*::]*/: { n: 'PageCount', t: VT_I4 },\n\t/*::[*/0x0F/*::]*/: { n: 'WordCount', t: VT_I4 },\n\t/*::[*/0x10/*::]*/: { n: 'CharCount', t: VT_I4 },\n\t/*::[*/0x11/*::]*/: { n: 'Thumbnail', t: VT_CF },\n\t/*::[*/0x12/*::]*/: { n: 'Application', t: VT_STRING },\n\t/*::[*/0x13/*::]*/: { n: 'DocSecurity', t: VT_I4 },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n\t/*::[*/0x0001/*::]*/: \"US\", // United States\n\t/*::[*/0x0002/*::]*/: \"CA\", // Canada\n\t/*::[*/0x0003/*::]*/: \"\", // Latin America (except Brazil)\n\t/*::[*/0x0007/*::]*/: \"RU\", // Russia\n\t/*::[*/0x0014/*::]*/: \"EG\", // Egypt\n\t/*::[*/0x001E/*::]*/: \"GR\", // Greece\n\t/*::[*/0x001F/*::]*/: \"NL\", // Netherlands\n\t/*::[*/0x0020/*::]*/: \"BE\", // Belgium\n\t/*::[*/0x0021/*::]*/: \"FR\", // France\n\t/*::[*/0x0022/*::]*/: \"ES\", // Spain\n\t/*::[*/0x0024/*::]*/: \"HU\", // Hungary\n\t/*::[*/0x0027/*::]*/: \"IT\", // Italy\n\t/*::[*/0x0029/*::]*/: \"CH\", // Switzerland\n\t/*::[*/0x002B/*::]*/: \"AT\", // Austria\n\t/*::[*/0x002C/*::]*/: \"GB\", // United Kingdom\n\t/*::[*/0x002D/*::]*/: \"DK\", // Denmark\n\t/*::[*/0x002E/*::]*/: \"SE\", // Sweden\n\t/*::[*/0x002F/*::]*/: \"NO\", // Norway\n\t/*::[*/0x0030/*::]*/: \"PL\", // Poland\n\t/*::[*/0x0031/*::]*/: \"DE\", // Germany\n\t/*::[*/0x0034/*::]*/: \"MX\", // Mexico\n\t/*::[*/0x0037/*::]*/: \"BR\", // Brazil\n\t/*::[*/0x003d/*::]*/: \"AU\", // Australia\n\t/*::[*/0x0040/*::]*/: \"NZ\", // New Zealand\n\t/*::[*/0x0042/*::]*/: \"TH\", // Thailand\n\t/*::[*/0x0051/*::]*/: \"JP\", // Japan\n\t/*::[*/0x0052/*::]*/: \"KR\", // Korea\n\t/*::[*/0x0054/*::]*/: \"VN\", // Viet Nam\n\t/*::[*/0x0056/*::]*/: \"CN\", // China\n\t/*::[*/0x005A/*::]*/: \"TR\", // Turkey\n\t/*::[*/0x0069/*::]*/: \"JS\", // Ramastan\n\t/*::[*/0x00D5/*::]*/: \"DZ\", // Algeria\n\t/*::[*/0x00D8/*::]*/: \"MA\", // Morocco\n\t/*::[*/0x00DA/*::]*/: \"LY\", // Libya\n\t/*::[*/0x015F/*::]*/: \"PT\", // Portugal\n\t/*::[*/0x0162/*::]*/: \"IS\", // Iceland\n\t/*::[*/0x0166/*::]*/: \"FI\", // Finland\n\t/*::[*/0x01A4/*::]*/: \"CZ\", // Czech Republic\n\t/*::[*/0x0376/*::]*/: \"TW\", // Taiwan\n\t/*::[*/0x03C1/*::]*/: \"LB\", // Lebanon\n\t/*::[*/0x03C2/*::]*/: \"JO\", // Jordan\n\t/*::[*/0x03C3/*::]*/: \"SY\", // Syria\n\t/*::[*/0x03C4/*::]*/: \"IQ\", // Iraq\n\t/*::[*/0x03C5/*::]*/: \"KW\", // Kuwait\n\t/*::[*/0x03C6/*::]*/: \"SA\", // Saudi Arabia\n\t/*::[*/0x03CB/*::]*/: \"AE\", // United Arab Emirates\n\t/*::[*/0x03CC/*::]*/: \"IL\", // Israel\n\t/*::[*/0x03CE/*::]*/: \"QA\", // Qatar\n\t/*::[*/0x03D5/*::]*/: \"IR\", // Iran\n\t/*::[*/0xFFFF/*::]*/: \"US\" // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr/*:Array*/)/*:Array<[number, number, number]>*/ { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar _XLSIcv = /*#__PURE__*/ rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0x000000, /* 0x40 icvForeground ?? */\n\t0xFFFFFF, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\nvar XLSIcv = /*#__PURE__*/dup(_XLSIcv);\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n\t/*::[*/0x00/*::]*/: \"#NULL!\",\n\t/*::[*/0x07/*::]*/: \"#DIV/0!\",\n\t/*::[*/0x0F/*::]*/: \"#VALUE!\",\n\t/*::[*/0x17/*::]*/: \"#REF!\",\n\t/*::[*/0x1D/*::]*/: \"#NAME?\",\n\t/*::[*/0x24/*::]*/: \"#NUM!\",\n\t/*::[*/0x2A/*::]*/: \"#N/A\",\n\t/*::[*/0x2B/*::]*/: \"#GETTING_DATA\",\n\t/*::[*/0xFF/*::]*/: \"#WTF?\"\n};\n//var RBErr = evert_num(BErr);\nvar RBErr = {\n\t\"#NULL!\": 0x00,\n\t\"#DIV/0!\": 0x07,\n\t\"#VALUE!\": 0x0F,\n\t\"#REF!\": 0x17,\n\t\"#NAME?\": 0x1D,\n\t\"#NUM!\": 0x24,\n\t\"#N/A\": 0x2A,\n\t\"#GETTING_DATA\": 0x2B,\n\t\"#WTF?\": 0xFF\n};\n\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary */\n/* 14.2 Part Summary */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.binary.macroEnabled.main\": \"workbooks\",\n\t\"application/vnd.ms-excel.addin.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": \"sheets\",\n\t\"application/vnd.ms-excel.worksheet\": \"sheets\",\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Chartsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": \"charts\",\n\t\"application/vnd.ms-excel.chartsheet\": \"charts\",\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.macrosheet+xml\": \"macros\",\n\t\"application/vnd.ms-excel.macrosheet\": \"macros\",\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* Dialogsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": \"dialogs\",\n\t\"application/vnd.ms-excel.dialogsheet\": \"dialogs\",\n\n\t/* Shared Strings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\": \"strs\",\n\t\"application/vnd.ms-excel.sharedStrings\": \"strs\",\n\n\t/* Styles */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": \"styles\",\n\t\"application/vnd.ms-excel.styles\": \"styles\",\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* Comments */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": \"comments\",\n\t\"application/vnd.ms-excel.comments\": \"comments\",\n\t\"application/vnd.ms-excel.threadedcomments+xml\": \"threadedcomments\",\n\t\"application/vnd.ms-excel.person+xml\": \"people\",\n\n\t/* Metadata (Stock/Geography and Dynamic Array) */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"metadata\",\n\t\"application/vnd.ms-excel.sheetMetadata\": \"metadata\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Objects */\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Chart Advanced */\n\t\"application/vnd.ms-office.chartex+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"TODO\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n}/*:any*/);\n\nvar CT_LIST = {\n\tworkbooks: {\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t},\n\tstrs: { /* Shared Strings */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t},\n\tcomments: { /* Comments */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t},\n\tsheets: { /* Worksheet */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t},\n\tcharts: { /* Chartsheet */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t},\n\tdialogs: { /* Dialogsheet */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t},\n\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t},\n\tmetadata: { /* Metadata (Stock/Geography and Dynamic Array) */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\",\n\t\txlsb: \"application/vnd.ms-excel.sheetMetadata\"\n\t},\n\tstyles: { /* Styles */\n\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t}\n};\n\nfunction new_ct()/*:any*/ {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], threadedcomments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [], metadata: [], people:[],\n\t\tTODO:[], xmlns: \"\" }/*:any*/);\n}\n\nfunction parse_ct(data/*:?string*/) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase ' 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nfunction write_ct(ct, opts, raw)/*:string*/ {\n\tvar type2ct/*{[string]:Array}*/ = evert_arr(ct2type);\n\n\tvar o/*:Array*/ = [], v;\n\n\tif(!raw) {\n\t\to[o.length] = (XML_HEADER);\n\t\to[o.length] = writextag('Types', null, {\n\t\t\t'xmlns': XMLNS.CT,\n\t\t\t'xmlns:xsd': XMLNS.xsd,\n\t\t\t'xmlns:xsi': XMLNS.xsi\n\t\t});\n\t\to = o.concat([\n\t\t\t['xml', 'application/xml'],\n\t\t\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t\t\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t\t\t['data', 'application/vnd.openxmlformats-officedocument.model+data'],\n\t\t\t/* from test files */\n\t\t\t['bmp', 'image/bmp'],\n\t\t\t['png', 'image/png'],\n\t\t\t['gif', 'image/gif'],\n\t\t\t['emf', 'image/x-emf'],\n\t\t\t['wmf', 'image/x-wmf'],\n\t\t\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t\t\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t\t\t['pdf', 'application/pdf'],\n\t\t\t['rels', 'application/vnd.openxmlformats-package.relationships+xml']\n\t\t].map(function(x) {\n\t\t\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n\t\t}));\n\t}\n\n\t/* only write first instance */\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\n\t/* book type-specific */\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\n\t/* standard type */\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('threadedcomments');\n\tf3('drawings');\n\tf2('metadata');\n\tf3('people');\n\tif(!raw && o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tXPATH: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\n\tXMISS: \"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing\",\n\tXLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\n\tCXML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml\",\n\tCXMLP: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps\",\n\tCMNT: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n\tCORE_PROPS: \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\n\tEXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\n\tCUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',\n\tSST: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n\tSTY: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n\tTHEME: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n\tCHART: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n\tCHARTEX: \"http://schemas.microsoft.com/office/2014/relationships/chartEx\",\n\tCS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\n\tWS: [\n\t\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n\t],\n\tDS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\",\n\tMS: \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\",\n\tIMG: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n\tDRAW: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n\tXLMETA: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata\",\n\tTCMNT: \"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment\",\n\tPEOPLE: \"http://schemas.microsoft.com/office/2017/10/relationships/person\",\n\tCONN: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/connections\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n}/*:any*/);\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file/*:string*/)/*:string*/ {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data/*:?string*/, currentFilePath/*:string*/) {\n\tvar rels = {\"!id\":{}};\n\tif (!data) return rels;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId/*:number*/, f, type, relobj, targetmode/*:?string*/)/*:number*/ {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(!rels['!idx']) rels['!idx'] = 1;\n\tif(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trels['!idx'] = rId + 1;\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(targetmode) relobj.TargetMode = targetmode;\n\telse if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n var str = xlml_normalize(d);\n var Rn;\n var FEtag;\n while (Rn = xlmlregex.exec(str))\n switch (Rn[3]) {\n case \"manifest\":\n break;\n case \"file-entry\":\n FEtag = parsexmltag(Rn[0], false);\n if (FEtag.path == \"/\" && FEtag.type !== CT_ODS)\n throw new Error(\"This OpenDocument is not a spreadsheet\");\n break;\n case \"encryption-data\":\n case \"algorithm\":\n case \"start-key-generation\":\n case \"key-derivation\":\n throw new Error(\"Unsupported ODS Encryption\");\n default:\n if (opts && opts.WTF)\n throw Rn;\n }\n}\nfunction write_manifest(manifest) {\n var o = [XML_HEADER];\n o.push('\\n');\n o.push(' \\n');\n for (var i = 0; i < manifest.length; ++i)\n o.push(' \\n');\n o.push(\"\");\n return o.join(\"\");\n}\nfunction write_rdf_type(file, res, tag) {\n return [\n ' \\n',\n ' \\n',\n \" \\n\"\n ].join(\"\");\n}\nfunction write_rdf_has(base, file) {\n return [\n ' \\n',\n ' \\n',\n \" \\n\"\n ].join(\"\");\n}\nfunction write_rdf(rdf) {\n var o = [XML_HEADER];\n o.push('\\n');\n for (var i = 0; i != rdf.length; ++i) {\n o.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n o.push(write_rdf_has(\"\", rdf[i][0]));\n }\n o.push(write_rdf_type(\"\", \"Document\", \"pkg\"));\n o.push(\"\");\n return o.join(\"\");\n}\nfunction write_meta_ods(wb, opts) {\n return 'SheetJS ' + XLSX.version + \"\";\n}\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS/*:Array >*/ = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nvar CORE_PROPS_REGEX/*:Array*/ = /*#__PURE__*/(function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]);\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\tg = escapexml(g);\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, writextag('cp:coreProperties', null, {\n\t\t//'xmlns': XMLNS.CORE_PROPS,\n\t\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t\t'xmlns:dc': XMLNS.dc,\n\t\t'xmlns:dcterms': XMLNS.dcterms,\n\t\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t})], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS/*:Array >*/ = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\", \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP/*:string|Array>*/, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Hojas de cálculo\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"Rangos con nombre\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tvar xml = (data.match(matchtag(f[0]))||[])[1];\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": if(xml) p[f[1]] = unescapexml(xml); break;\n\t\t\tcase \"bool\": p[f[1]] = xml === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nfunction write_ext_props(cp/*::, opts*/)/*:string*/ {\n\tvar o/*:Array*/ = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (writextag('Properties', null, {\n\t\t'xmlns': XMLNS.EXT_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t}));\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = escapexml(String(cp[f[1]])); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"\" + escapexml(s) + \"\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data/*:string*/, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': name = null; break;\n\t\t\tdefault: if (x.indexOf('');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM;\n\nfunction xlml_set_prop(Props, tag/*:string*/, val) {\n\tif(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap);\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o/*:Array*/ = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops/*::, opts*/) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o/*:Array*/ = [];\n\tif(Props) keys(Props).forEach(function(k) {\n\t\t/*:: if(!Props) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\n\t\t/*:: if(!Custprops) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Custprops, k)) return;\n\t\tif(Props && Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time/*:string|Date*/) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad/*:?number*/) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t/*:number*/, pad/*:?boolean*/) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t/*:number*/) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */\nfunction parse_VtVecLpwstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) {\n\t\tvar start = blob.l;\n\t\tret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,'');\n\t\tif((blob.l - start) & 0x02) blob.l += 2;\n\t}\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar start = blob.l;\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tif(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2;\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type/*:number*/, _opts)/*:any*/ {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob);\n\t\tcase 0x101E /*VT_VECTOR|VT_LPSTR*/:\n\t\tcase 0x101F /*VT_VECTOR|VT_LPWSTR*/:\n\t\t\treturn t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type/*:number*/, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: /*:: if(typeof value !== \"string\" && !(value instanceof Date)) throw \"unreachable\"; */ p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\n\t\t\t/*:: if(typeof value !== \"string\") throw \"unreachable\"; */\n\t\t\tp = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tif(Props[i][0] == 0 && Props.length > i+1 && Props[i][1] == Props[i+1][1]) continue; // R9\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)/*:number*/);\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ];\nfunction guess_property_type(val/*:any*/)/*:number*/ {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI/*:: || {}*/)[idx]/*:: || {} */;\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\n\t\t\t\t/*:: if(typeof val !== \"string\") throw \"unreachable\"; */\n\t\t\t\tvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({}/*:any*/);\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier }/*:any*/);\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI/*:{[key:string|number]:any}*/, entries2/*:?any*/, clsid2/*:?any*/) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"\" + z.t + \"\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\nfunction write_XLUnicodeRichExtendedString(xlstr/*:: :XLString, opts*/) {\n\tvar str = (xlstr.t||\"\"), nfmts = 1;\n\n\tvar hdr = new_buf(3 + (nfmts > 1 ? 2 : 0));\n\thdr.write_shift(2, str.length);\n\thdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01);\n\tif(nfmts > 1) hdr.write_shift(2, nfmts);\n\n\tvar otext = new_buf(2 * str.length);\n\totext.write_shift(2 * str.length, str, 'utf16le');\n\n\tvar out = [hdr, otext];\n\n\treturn bconcat(out);\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob/*::, length, opts*/) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob/*::, length, opts*/) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob/*::, length*/) {\n\tvar cAnti = blob.read_shift(2);\n\tvar preamble = \"\"; while(cAnti-- > 0) preamble += \"../\";\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return preamble + ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn preamble + unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob/*::, length*/) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\nfunction write_HyperlinkString(str/*:string*/, o) {\n\tif(!o) o = new_buf(6 + str.length * 2);\n\to.write_shift(4, 1 + str.length);\n\tfor(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length)/*:Hyperlink*/ {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tif((flags & 0x0002) && target.charAt(0) == \"/\" && target.charAt(1) != \"/\") target = \"file://\" + target;\n\tvar out = ({Target:target}/*:any*/);\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tif(Target.slice(0,7) == \"file://\") Target = Target.slice(7);\n\tvar hashidx = Target.indexOf(\"#\");\n\tvar F = hashidx > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\twrite_HyperlinkString(Target, out);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;\n\t\tout.write_shift(4, 2*(Pretarget.length + 1));\n\t\tfor(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t\tif(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): \"\", out);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length - 3 * P + 1);\n\t\tfor(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob/*::, length*/) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob/*::, length*/)/*:Cell*/ {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe}/*:any*/);\n}\nfunction write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r/*:Range*/, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob/*::, length*/) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n\t/*::[*/0x00/*::]*/: parse_FtSkip, /* FtEnd */\n\t/*::[*/0x04/*::]*/: parse_FtSkip, /* FtMacro */\n\t/*::[*/0x05/*::]*/: parse_FtSkip, /* FtButton */\n\t/*::[*/0x06/*::]*/: parse_FtSkip, /* FtGmo */\n\t/*::[*/0x07/*::]*/: parse_FtCf, /* FtCf */\n\t/*::[*/0x08/*::]*/: parse_FtSkip, /* FtPioGrbit */\n\t/*::[*/0x09/*::]*/: parse_FtSkip, /* FtPictFmla */\n\t/*::[*/0x0A/*::]*/: parse_FtSkip, /* FtCbls */\n\t/*::[*/0x0B/*::]*/: parse_FtSkip, /* FtRbo */\n\t/*::[*/0x0C/*::]*/: parse_FtSkip, /* FtSbs */\n\t/*::[*/0x0D/*::]*/: parse_FtNts, /* FtNts */\n\t/*::[*/0x0E/*::]*/: parse_FtSkip, /* FtSbsFmla */\n\t/*::[*/0x0F/*::]*/: parse_FtSkip, /* FtGboData */\n\t/*::[*/0x10/*::]*/: parse_FtSkip, /* FtEdoData */\n\t/*::[*/0x11/*::]*/: parse_FtSkip, /* FtRboData */\n\t/*::[*/0x12/*::]*/: parse_FtSkip, /* FtCblsData */\n\t/*::[*/0x13/*::]*/: parse_FtSkip, /* FtLbsData */\n\t/*::[*/0x14/*::]*/: parse_FtSkip, /* FtCblsFmla */\n\t/*::[*/0x15/*::]*/: parse_FtCmo\n};\nfunction parse_FtArray(blob, length/*::, ot*/) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts[ft] = FtTab[ft](blob, tgt - blob.l);\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb/*:Workbook*/, t/*:number*/, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s/*:string*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length)/*:SST*/ {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs/*:SST*/ = ([]/*:any*/);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\nfunction write_SST(sst, opts) {\n\tvar header = new_buf(8);\n\theader.write_shift(4, sst.Count);\n\theader.write_shift(4, sst.Unique);\n\tvar strs = [];\n\tfor(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts);\n\tvar o = bconcat([header].concat(strs));\n\t/*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; }));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({}/*:any*/);\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1(/*::opts*/) {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 5) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.189 TODO */\nfunction parse_Pane(/*blob, length, opts*/) {\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o/*:any*/ = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\nfunction write_LabelSst(R/*:number*/, C/*:number*/, v/*:number*/, os/*:number*/ /*::, opts*/) {\n\tvar o = new_buf(10);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(4, v);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R/*:number*/, C/*:number*/, v/*:string*/, os/*:number*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i/*:number*/, f/*:string*/, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\tvar f = 0;\n\tif(data.numFmtId > 0 && b5) f |= 0x0400;\n\to.write_shift(4, f);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts/*:Array*/) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2 || length == 9) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R/*:number*/, C/*:number*/, v, os/*:number*/, opts, t/*:string*/) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R/*:number*/, C/*:number*/, v, os/*:: :number, opts*/) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t}/*:any*/);\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\t/*jshint -W018 */\n\tvar rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\t/*jshint +W018 */\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: legacy record filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\t/* see issue 2907 */\n\tif(!(opts.biff > 8) && (length == blob[blob.l] + (blob[blob.l+1] == 0x03 ? 1 : 0) + 1)) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length)/*:Array*/ {\n\tvar merges/*:Array*/ = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges/*:Array*/) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = {\n0x08: function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n}\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob)/*:[string|number, string|number]*/ {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\tvar o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/);\n\tif(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;\n\treturn o;\n}\nfunction write_ColInfo(col, idx) {\n\tvar o = new_buf(12);\n\to.write_shift(2, idx);\n\to.write_shift(2, idx);\n\to.write_shift(2, col.width * 256);\n\to.write_shift(2, 0);\n\tvar f = 0;\n\tif(col.hidden) f |= 1;\n\to.write_shift(1, f);\n\tf = col.level || 0;\n\to.write_shift(1, f);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n/*:number*/) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 5) opts.biff = 2;\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob/*::, length*/) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\nvar DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5];\nvar DBF = /*#__PURE__*/(function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\n\t/* shapefile DBF extension */\n\t/*::[*/0x00/*::]*/: 20127, /*::[*/0x08/*::]*/: 865,\n\t/*::[*/0x09/*::]*/: 437, /*::[*/0x0A/*::]*/: 850,\n\t/*::[*/0x0B/*::]*/: 437, /*::[*/0x0D/*::]*/: 437,\n\t/*::[*/0x0E/*::]*/: 850, /*::[*/0x0F/*::]*/: 437,\n\t/*::[*/0x10/*::]*/: 850, /*::[*/0x11/*::]*/: 437,\n\t/*::[*/0x12/*::]*/: 850, /*::[*/0x13/*::]*/: 932,\n\t/*::[*/0x14/*::]*/: 850, /*::[*/0x15/*::]*/: 437,\n\t/*::[*/0x16/*::]*/: 850, /*::[*/0x17/*::]*/: 865,\n\t/*::[*/0x18/*::]*/: 437, /*::[*/0x19/*::]*/: 437,\n\t/*::[*/0x1A/*::]*/: 850, /*::[*/0x1B/*::]*/: 437,\n\t/*::[*/0x1C/*::]*/: 863, /*::[*/0x1D/*::]*/: 850,\n\t/*::[*/0x1F/*::]*/: 852, /*::[*/0x22/*::]*/: 852,\n\t/*::[*/0x23/*::]*/: 852, /*::[*/0x24/*::]*/: 860,\n\t/*::[*/0x25/*::]*/: 850, /*::[*/0x26/*::]*/: 866,\n\t/*::[*/0x37/*::]*/: 850, /*::[*/0x40/*::]*/: 852,\n\t/*::[*/0x4D/*::]*/: 936, /*::[*/0x4E/*::]*/: 949,\n\t/*::[*/0x4F/*::]*/: 950, /*::[*/0x50/*::]*/: 874,\n\t/*::[*/0x57/*::]*/: 1252, /*::[*/0x58/*::]*/: 1252,\n\t/*::[*/0x59/*::]*/: 1252, /*::[*/0x6C/*::]*/: 863,\n\t/*::[*/0x86/*::]*/: 737, /*::[*/0x87/*::]*/: 852,\n\t/*::[*/0x88/*::]*/: 857, /*::[*/0xCC/*::]*/: 1257,\n\n\t/*::[*/0xFF/*::]*/: 16969\n};\nvar dbf_reverse_map = evert({\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\t/*::[*/0x00/*::]*/: 20127\n});\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts)/*:AOA*/ {\n\tvar out/*:AOA*/ = [];\n\tvar d/*:Block*/ = (new_raw_buf(1)/*:any*/);\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64_decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = !!(ft & 0x88);\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: break; // dBASE II\n\t\tcase 0x03: break; // dBASE III\n\t\tcase 0x30: vfp = true; memo = true; break; // VFP\n\t\tcase 0x31: vfp = true; memo = true; break; // VFP with autoincrement\n\t\t// 0x43 dBASE IV SQL table files\n\t\t// 0x63 dBASE IV SQL system files\n\t\tcase 0x83: break; // dBASE III with memo\n\t\tcase 0x8B: break; // dBASE IV with memo\n\t\tcase 0x8C: l7 = true; break; // dBASE Level 7 with memo\n\t\t// case 0xCB dBASE IV SQL table files with memo\n\t\tcase 0xF5: break; // FoxPro 2.x with memo\n\t\t// case 0xFB FoxBASE\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\n\tvar nrow = 0, fpos = 0x0209;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\td.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(nrow > 1048576) nrow = 1e6;\n\n\tif(ft != 0x02) fpos = d.read_shift(2); // header length\n\tvar rlen = d.read_shift(2); // record length\n\n\tvar /*flags = 0,*/ current_cp = opts.codepage || 1252;\n\tif(ft != 0x02) { // 20 reserved bytes\n\t\td.l+=16;\n\t\t/*flags = */d.read_shift(1);\n\t\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t\t/* codepage present in FoxPro and dBASE Level 7 */\n\t\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\t\td.l+=1;\n\n\t\td.l+=2;\n\t}\n\tif(l7) d.l += 36; // Level 7: 32 byte \"Language driver name\", 4 byte reserved\n\n/*:: type DBFField = { name:string; len:number; type:string; } */\n\tvar fields/*:Array*/ = [], field/*:DBFField*/ = ({}/*:any*/);\n\tvar hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0))));\n\tvar ww = l7 ? 32 : 11;\n\twhile(d.l < hend && d[d.l] != 0x0d) {\n\t\tfield = ({}/*:any*/);\n\t\tfield.name = (typeof $cptable !== \"undefined\" ? $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)) : a2s(d.slice(d.l, d.l + ww))).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // Double (VFP) / Binary (dBASE L7)\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General (FoxPro and dBASE L7)\n\t\t\tcase 'P': // Picture (FoxPro and dBASE L7)\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase '+': // Autoincrement (dBASE L7 only)\n\t\t\tcase '0': // _NullFlags (VFP only)\n\t\t\tcase '@': // Timestamp (dBASE L7 only)\n\t\t\tcase 'C': // Character (dBASE II)\n\t\t\tcase 'D': // Date (dBASE III)\n\t\t\tcase 'F': // Float (dBASE IV)\n\t\t\tcase 'I': // Long (VFP and dBASE L7)\n\t\t\tcase 'L': // Logical (dBASE II)\n\t\t\tcase 'M': // Memo (dBASE III)\n\t\t\tcase 'N': // Number (dBASE II)\n\t\t\tcase 'O': // Double (dBASE L7 only)\n\t\t\tcase 'T': // Datetime (VFP only)\n\t\t\tcase 'Y': // Currency (VFP only)\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\td.l = fpos;\n\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) {\n\t\t\t// TODO: record marked as deleted -- create a hidden row?\n\t\t\td.l+=rlen;\n\t\t\tcontinue;\n\t\t}\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = typeof $cptable !== \"undefined\" ? $cptable.utils.decode(current_cp, dd) : a2s(dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\t// NOTE: it is conventional to write ' / / ' for empty dates\n\t\t\t\t\tif(s.trim().length) out[R][C] = s.replace(/\\s+$/,\"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.trim().toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase '': case '?': break;\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N':\n\t\t\t\t\ts = s.replace(/\\u0000/g,\"\").trim();\n\t\t\t\t\t// NOTE: dBASE II interprets \" . \" as 0\n\t\t\t\t\tif(s && s != \".\") out[R][C] = +s || 0; break;\n\t\t\t\tcase '@':\n\t\t\t\t\t// NOTE: dBASE specs appear to be incorrect\n\t\t\t\t\tout[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\topts.DBF = fields;\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\tvar ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);\n\tws[\"!cols\"] = o.DBF.map(function(field) { return {\n\t\twch: field.len,\n\t\tDBF: field\n\t};});\n\tdelete o.DBF;\n\treturn ws;\n}\n\nfunction dbf_to_workbook(buf, opts)/*:Workbook*/ {\n\ttry {\n\t\tvar o = sheet_to_workbook(dbf_to_sheet(buf, opts), opts);\n\t\to.bookType = \"dbf\";\n\t\treturn o;\n\t} catch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar old_cp = current_codepage;\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa/*:AOA*/ = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1), cols = ws[\"!cols\"] || [];\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; }\n\t\tif(headers[i] == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes/*:Array*/ = [];\n\tvar colwidths/*:Array*/ = [];\n\tvar coldecimals/*:Array*/ = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar guess = '', _guess = '', maxlen = 0;\n\t\tvar col/*:Array*/ = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\t/* TODO: cache the values instead of encoding twice */\n\t\t\tmaxlen = Math.max(maxlen, (typeof $cptable !== \"undefined\" && typeof col[j] == \"string\" ? $cptable.utils.encode(current_ansi, col[j]): String(col[j])).length);\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\t//if(guess == 'C') break;\n\t\t}\n\t\tif(maxlen > 250) maxlen = 250;\n\t\t_guess = ((cols[i]||{}).DBF||{}).type;\n\t\t/* TODO: more fine grained control over DBF type resolution */\n\t\tif(_guess == 'C') {\n\t\t\tif(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len;\n\t\t}\n\t\tif(guess == 'B' && _guess == 'N') {\n\t\t\tguess = 'N';\n\t\t\tcoldecimals[i] = cols[i].DBF.dec;\n\t\t\tmaxlen = cols[i].DBF.len;\n\t\t}\n\t\tcolwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0);\n\t\trlen += colwidths[i];\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\tvar cp = +dbf_reverse_map[/*::String(*/current_codepage/*::)*/] || 0x03;\n\th.write_shift(4, 0x00000000 | (cp<<8));\n\tif(dbf_codepage_map[cp] != +o.codepage) {\n\t\tif(o.codepage) console.error(\"DBF Unsupported codepage \" + current_codepage + \", using 1252\");\n\t\tcurrent_codepage = 1252;\n\t}\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\t/* TODO: test how applications handle non-ASCII field names */\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, coldecimals[i] || 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += (colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j colwidths[j]) _n = _n.slice(0, colwidths[j]); // addresses decimal > width\n\t\t\t\t\tfor(hcnt=0; hcnt < colwidths[j]-_n.length; ++hcnt) rout.write_shift(1, 0x20);\n\t\t\t\t\trout.write_shift(1, _n, \"sbcs\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(!data[i][j]) rout.write_shift(8, \"00000000\", \"sbcs\");\n\t\t\t\t\telse {\n\t\t\t\t\t\trout.write_shift(4, (\"0000\"+data[i][j].getFullYear()).slice(-4), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+(data[i][j].getMonth()+1)).slice(-2), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+data[i][j].getDate()).slice(-2), \"sbcs\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'C':\n\t\t\t\t\tvar _l = rout.l;\n\t\t\t\t\tvar _s = String(data[i][j] != null ? data[i][j] : \"\").slice(0, colwidths[j]);\n\t\t\t\t\trout.write_shift(1, _s, \"cpstr\");\n\t\t\t\t\t_l += colwidths[j] - rout.l;\n\t\t\t\t\tfor(hcnt=0; hcnt < _l; ++hcnt) rout.write_shift(1, 0x20); break;\n\t\t\t}\n\t\t}\n\t\t// data\n\t}\n\tcurrent_codepage = old_cp;\n\tba.next(1).write_shift(1, 0x1A);\n\treturn ba.end();\n}\n\treturn {\n\t\tto_workbook: dbf_to_workbook,\n\t\tto_sheet: dbf_to_sheet,\n\t\tfrom_sheet: sheet_to_dbf\n\t};\n})();\n\nvar SYLK = /*#__PURE__*/(function() {\n\t/* TODO: stress test sequences */\n\tvar sylk_escapes = ({\n\t\tAA:'À', BA:'Á', CA:'Â', DA:195, HA:'Ä', JA:197,\n\t\tAE:'È', BE:'É', CE:'Ê', HE:'Ë',\n\t\tAI:'Ì', BI:'Í', CI:'Î', HI:'Ï',\n\t\tAO:'Ò', BO:'Ó', CO:'Ô', DO:213, HO:'Ö',\n\t\tAU:'Ù', BU:'Ú', CU:'Û', HU:'Ü',\n\t\tAa:'à', Ba:'á', Ca:'â', Da:227, Ha:'ä', Ja:229,\n\t\tAe:'è', Be:'é', Ce:'ê', He:'ë',\n\t\tAi:'ì', Bi:'í', Ci:'î', Hi:'ï',\n\t\tAo:'ò', Bo:'ó', Co:'ô', Do:245, Ho:'ö',\n\t\tAu:'ù', Bu:'ú', Cu:'û', Hu:'ü',\n\t\tKC:'Ç', Kc:'ç', q:'æ', z:'œ', a:'Æ', j:'Œ',\n\t\tDN:209, Dn:241, Hy:255,\n\t\tS:169, c:170, R:174, \"B \":180,\n\t\t/*::[*/0/*::]*/:176, /*::[*/1/*::]*/:177, /*::[*/2/*::]*/:178,\n\t\t/*::[*/3/*::]*/:179, /*::[*/5/*::]*/:181, /*::[*/6/*::]*/:182,\n\t\t/*::[*/7/*::]*/:183, Q:185, k:186, b:208, i:216, l:222, s:240, y:248,\n\t\t\"!\":161, '\"':162, \"#\":163, \"(\":164, \"%\":165, \"'\":167, \"H \":168,\n\t\t\"+\":171, \";\":187, \"<\":188, \"=\":189, \">\":190, \"?\":191, \"{\":223\n\t}/*:any*/);\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\n\tsylk_escapes[\"|\"] = 254;\n\t/* https://oss.sheetjs.com/notes/sylk/ for more details */\n\tfunction sylk_to_aoa(d/*:RawData*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction sylk_to_aoa_str(str/*:string*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr/*:AOA*/ = [];\n\t\tvar formats/*:Array*/ = [];\n\t\tvar next_cell_format/*:string|null*/ = null;\n\t\tvar sht = {}, rowinfo/*:Array*/ = [], colinfo/*:Array*/ = [], cw/*:Array*/ = [];\n\t\tvar Mval = 0, j;\n\t\tvar wb = { Workbook: { WBProps: {}, Names: [] } };\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tMval = 0;\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\n\t\t\tvar RT=record[0], val;\n\t\t\tif(rstr.length > 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': /* workbook options */\n\t\t\tfor(rj=1; rj= 5 or < 0\n\t\t\t\t\tif(d1904 >= 1 && d1904 <= 4) wb.Workbook.WBProps.date1904 = true;\n\t\t\t\t} break;\n\t\t\t} break;\n\t\t\tcase 'W': break; /* window */\n\t\t\tcase 'P':\n\t\t\t\tswitch(record[1].charAt(0)){\n\t\t\t\t\tcase 'P': formats.push(rstr.slice(3).replace(/;;/g, \";\")); break;\n\t\t\t\t} break;\n\t\t\tcase 'NN': { /* defined name */\n\t\t\t\tvar nn = {Sheet: 0};\n\t\t\t\tfor(rj=1; rj -1 && arr[_R][_C];\n\t\t\t\tif(!shrbase || !shrbase[1]) throw new Error(\"SYLK shared formula cannot find base\");\n\t\t\t\tformula = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C});\n\t\t\t}\n\t\t\tif(formula) {\n\t\t\t\tif(!arr[R][C]) arr[R][C] = { t: 'n', f: formula };\n\t\t\t\telse arr[R][C].f = formula;\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 'F': /* Format */\n\t\t\tvar F_seen = 0;\n\t\t\tfor(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\t// case 'K': // ??\n\t\t\t\t// case 'E': // ??\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tcolinfo.forEach(function(col) { process_col(col); });\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht, wb];\n\t}\n\n\tfunction sylk_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1], wb = aoasht[2];\n\t\tvar _opts = dup(opts); _opts.date1904 = (((wb||{}).Workbook || {}).WBProps || {}).date1904;\n\t\tvar o = aoa_to_sheet(aoa, _opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\tvar outwb = sheet_to_workbook(o, opts);\n\t\tkeys(wb).forEach(function(k) { outwb[k] = wb[k]; });\n\t\toutwb.bookType = \"sylk\";\n\t\treturn outwb;\n\t}\n\n\tfunction write_ws_cell_sylk(cell/*:Cell*/, ws/*:Worksheet*/, R/*:number*/, C/*:number*//*::, opts*/)/*:string*/ {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + (cell.v == null ? \"\" : String(cell.v)).replace(/\"/g,\"\").replace(/;/g, \";;\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out/*:Array*/, rows/*:Array*/) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws/*:Worksheet*/, opts/*:?any*/, wb/*:?WorkBook*/)/*:string*/ {\n\t\t/* TODO: codepage */\n\t\tvar preamble/*:Array*/ = [\"ID;PSheetJS;N;E\"], o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tvar RS = \"\\r\\n\";\n\t\tvar d1904 = (((wb||{}).Workbook||{}).WBProps||{}).date1904;\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tpreamble.push(\"O;L;D;B\" + (d1904 ? \";V4\" : \"\") + \";K47;G100 0.001\");\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tif(dense && !ws[\"!data\"][R]) continue;\n\t\t\tvar p = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcell = dense ? ws[\"!data\"][R][C] : ws[encode_col(C) + encode_row(R)];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\tp.push(write_ws_cell_sylk(cell, ws, R, C, opts)); // TODO: pass date1904 info\n\t\t\t}\n\t\t\to.push(p.join(RS));\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = /*#__PURE__*/(function() {\n\tfunction dif_to_aoa(d/*:RawData*/, opts)/*:AOA*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri] || \"\";\n\t\t\twhile(((data.match(/[\"]/g)||[]).length & 1) && ri < records.length - 1) data += \"\\n\" + records[++ri];\n\t\t\tdata = data.trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tdata = data.replace(/\"\"/g, '\"');\n\t\t\t\t\tif(DIF_XL && data && data.match(/^=\".*\"$/)) data = data.slice(2, -1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\t\tvar o = sheet_to_workbook(dif_to_sheet(str, opts), opts);\n\t\to.bookType = \"dif\";\n\t\treturn o;\n\t}\n\n\tfunction make_value(v/*:number*/, s/*:string*/)/*:string*/ { return \"0,\" + String(v) + \"\\r\\n\" + s; }\n\tfunction make_value_str(s/*:string*/)/*:string*/ { return \"1,0\\r\\n\\\"\" + s.replace(/\"/g,'\"\"') + '\"'; }\n\tfunction sheet_to_dif(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar _DIF_XL = DIF_XL;\n\t\tvar r = safe_decode_range(ws['!ref']);\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tvar o/*:Array*/ = [\n\t\t\t\"TABLE\\r\\n0,1\\r\\n\\\"sheetjs\\\"\\r\\n\",\n\t\t\t\"VECTORS\\r\\n0,\" + (r.e.r - r.s.r + 1) + \"\\r\\n\\\"\\\"\\r\\n\",\n\t\t\t\"TUPLES\\r\\n0,\" + (r.e.c - r.s.c + 1) + \"\\r\\n\\\"\\\"\\r\\n\",\n\t\t\t\"DATA\\r\\n0,0\\r\\n\\\"\\\"\\r\\n\"\n\t\t];\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar row = dense ? ws[\"!data\"][R] : [];\n\t\t\tvar p = \"-1,0\\r\\nBOT\\r\\n\";\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar cell/*:Cell*/ = dense ? (row && row[C]) : ws[encode_cell({r:R,c:C})];\n\t\t\t\tif(cell == null) { p +=(\"1,0\\r\\n\\\"\\\"\\r\\n\"); continue;}\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(_DIF_XL) {\n\t\t\t\t\t\t\tif(cell.w != null) p +=(\"0,\" + cell.w + \"\\r\\nV\");\n\t\t\t\t\t\t\telse if(cell.v != null) p +=(make_value(cell.v, \"V\")); // TODO: should this call SSF_format?\n\t\t\t\t\t\t\telse if(cell.f != null && !cell.F) p +=(make_value_str(\"=\" + cell.f));\n\t\t\t\t\t\t\telse p +=(\"1,0\\r\\n\\\"\\\"\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif(cell.v == null) p +=(\"1,0\\r\\n\\\"\\\"\");\n\t\t\t\t\t\t\telse p +=(make_value(cell.v, \"V\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\tp +=(cell.v ? make_value(1, \"TRUE\") : make_value(0, \"FALSE\"));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's':\n\t\t\t\t\t\tp +=(make_value_str((!_DIF_XL || isNaN(+cell.v)) ? cell.v : '=\"' + cell.v + '\"'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tif(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\tif(_DIF_XL) p +=(make_value(cell.w, \"V\"));\n\t\t\t\t\t\telse p +=(make_value_str(cell.w));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: p +=(\"1,0\\r\\n\\\"\\\"\");\n\t\t\t\t}\n\t\t\t\tp += \"\\r\\n\";\n\t\t\t}\n\t\t\to.push(p);\n\t\t}\n\t\treturn o.join(\"\") + \"-1,0\\r\\nEOD\";\n\t}\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = /*#__PURE__*/(function() {\n\tfunction decode(s/*:string*/)/*:string*/ { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s/*:string*/)/*:string*/ { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws/*:Worksheet*/)/*:string*/ {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o/*:Array*/ = [], oo/*:Array*/ = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[\"!data\"][R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF_format(cell.z || table_fmt[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = /*#__PURE__*/(function() {\n\tfunction set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f/*:string*/, opts)/*:AOA*/ {\n\t\tvar o = opts || {};\n\t\tvar arr/*:AOA*/ = ([]/*:any*/);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n\t\t/*::[*/0x2C/*::]*/: ',',\n\t\t/*::[*/0x09/*::]*/: \"\\t\",\n\t\t/*::[*/0x3B/*::]*/: ';',\n\t\t/*::[*/0x7C/*::]*/: '|'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n\t\t/*::[*/0x2C/*::]*/: 3,\n\t\t/*::[*/0x09/*::]*/: 2,\n\t\t/*::[*/0x3B/*::]*/: 1,\n\t\t/*::[*/0x7C/*::]*/: 0\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]] || 0x2C;\n\t}\n\n\tfunction dsv_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws/*:Worksheet*/ = ({}/*:any*/);\n\t\tif(o.dense) ws[\"!data\"] = [];\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:0}}/*:any*/);\n\n\t\tif(str.slice(0,4) == \"sep=\") {\n\t\t\t// If the line ends in \\r\\n\n\t\t\tif(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(7);\n\t\t\t}\n\t\t\t// If line ends in \\r OR \\n\n\t\t\telse if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(6);\n\t\t\t}\n\t\t\telse sep = guess_sep(str.slice(0,1024));\n\t\t}\n\t\telse if(o && o.FS) sep = o.FS;\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0);\n\t\tvar _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end); if(s.slice(-1) == \"\\r\") s = s.slice(0, -1);\n\t\t\tvar cell = ({}/*:any*/);\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN((v = fuzzydate(s)).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; v = parseDate(s, k); }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = v; }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(v); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[\"!data\"][R]) ws[\"!data\"][R] = []; ws[\"!data\"][R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1; startcc = str.charCodeAt(start);\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: if(startcc === 0x22) instr = !instr; break;\n\t\t\tcase 0x0d:\n\t\t\t\tif(instr) break;\n\t\t\t\tif(str.charCodeAt(end+1) == 0x0a) ++end;\n\t\t\t\t/* falls through */\n\t\t\tcase sepcc: case 0x0a: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tif(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts);\n\t\tif(opts.FS) return dsv_to_sheet_str(str, opts);\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64_decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer':\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf\n\t\t\t\telse if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d);\n\t\t\t\telse str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d);\n\t\t\t\tbreak;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str);\n\t\telse if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage) str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo/*:Array*/ = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[\"!data\"][R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\" \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = /*#__PURE__*/(function() {\n\tfunction lotushopper(data, cb/*:RecordHopperCB*/, opts/*:any*/) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFFFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = R.f && R.f(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d/*:RawData*/, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ({}/*:any*/), n = \"Sheet1\", next_n = \"\", sidx = 0;\n\t\tvar sheets = {}, snames = [], realnames = [], sdata = [];\n\t\tif(o.dense) sdata = s[\"!data\"] = [];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[4] == 0x51 && d[5] == 0x50 && d[6] == 0x57) return qpw_to_workbook_buf(d, opts);\n\t\tif(d[2] == 0x00) {\n\t\t\tif(d[3] == 0x08 || d[3] == 0x09) {\n\t\t\t\tif(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error(\"Unsupported Works 3 for Mac file\");\n\t\t\t}\n\t\t}\n\n\t\tif(d[2] == 0x02) {\n\t\t\to.Enum = WK1Enum;\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0x00: /* BOF */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0xFF: /* BOF (works 3+) */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\to.works = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0xDE: next_n = val; break; /* SHEETNAMELP */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\tif((!o.qpro && !o.works || RT == 0x33) && val[1].v.charCodeAt(0) < 0x30) val[1].v = val[1].v.slice(1);\n\t\t\t\t\tif(o.works || o.works2) val[1].v = val[1].v.replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || table_fmt[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\n\t\t\t\t\tif(o.qpro) {\n\t\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\t\ts = ({}/*:any*/); if(o.dense) sdata = s[\"!data\"] = [];\n\t\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\t\tsidx = val[3]; n = next_n || \"Sheet\" + (sidx + 1); next_n = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tmpcell = o.dense ? (sdata[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];\n\t\t\t\t\tif(tmpcell) {\n\t\t\t\t\t\ttmpcell.t = val[1].t; tmpcell.v = val[1].v;\n\t\t\t\t\t\tif(val[1].z != null) tmpcell.z = val[1].z;\n\t\t\t\t\t\tif(val[1].f != null) tmpcell.f = val[1].f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!sdata[val[0].r]) sdata[val[0].r] = [];\n\t\t\t\t\t\tsdata[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x5405: o.works2 = true; break;\n\t\t\t\tdefault:\n\t\t\t}}, o);\n\t\t} else if(d[2] == 0x1A || d[2] == 0x0E) {\n\t\t\to.Enum = WK3Enum;\n\t\t\tif(d[2] == 0x0E) { o.qpro = true; d.l = 0; }\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0xCC: n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tif(val[1].v.charCodeAt(0) < 0x30) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t// TODO: R9 appears to encode control codes this way -- verify against other versions\n\t\t\t\t\tval[1].v = val[1].v.replace(/\\x0F./g, function($$) { return String.fromCharCode($$.charCodeAt(1) - 0x20); }).replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\ts = ({}/*:any*/); if(o.dense) sdata = s[\"!data\"] = [];\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!sdata[val[0].r]) sdata[val[0].r] = [];\n\t\t\t\t\t\tsdata[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x1B: /* XFORMAT */\n\t\t\t\t\tif(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0601: /* SHEETINFOQP */\n\t\t\t\t\trealnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break;\n\t\t\t\tdefault: break;\n\t\t\t}}, o);\n\t\t} else throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[next_n || n] = s;\n\t\tsnames.push(next_n || n);\n\t\tif(!realnames.length) return { SheetNames: snames, Sheets: sheets };\n\t\tvar osheets = {}, rnames = [];\n\t\t/* TODO: verify no collisions */\n\t\tfor(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) {\n\t\t\trnames.push(realnames[i] || snames[i]);\n\t\t\tosheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]];\n\t\t} else {\n\t\t\trnames.push(realnames[i]);\n\t\t\tosheets[realnames[i]] = ({ \"!ref\": \"A1\" });\n\t\t}\n\t\treturn { SheetNames: rnames, Sheets: osheets };\n\t}\n\n\tfunction sheet_to_wk1(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK1 to JS string\");\n\t\tvar ba = buf_array();\n\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tvar cols = [];\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK1(0x0406));\n\t\twrite_biff_rec(ba, 0x06, write_RANGE(range));\n\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\tvar rr = encode_row(R);\n\t\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\tvar cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[cols[C] + rr];\n\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t/* TODO: formula records */\n\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\tif((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v));\n\t\t\t\t\telse write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v));\n\t\t\t\t} else {\n\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\twrite_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\tfunction book_to_wk3(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK3 to JS string\");\n\t\tvar ba = buf_array();\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK3(wb));\n\n\t\tfor(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})[\"!ref\"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++));\n\n\t\tvar wsidx = 0;\n\t\tfor(i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\t\tvar dense = ws[\"!data\"] != null;\n\t\t\tvar cols = [];\n\t\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\t\tvar rr = encode_row(R);\n\t\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\t\tvar cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[ref];\n\t\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t\t/* TODO: FORMULA19 NUMBER18 records */\n\t\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\t\twrite_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\t\t/* TODO: max len? */\n\t\t\t\t\t\twrite_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t++wsidx;\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\n\tfunction write_BOF_WK1(v/*:number*/) {\n\t\tvar out = new_buf(2);\n\t\tout.write_shift(2, v);\n\t\treturn out;\n\t}\n\n\tfunction write_BOF_WK3(wb/*:Workbook*/) {\n\t\tvar out = new_buf(26);\n\t\tout.write_shift(2, 0x1000);\n\t\tout.write_shift(2, 0x0004);\n\t\tout.write_shift(4, 0x0000);\n\t\tvar rows = 0, cols = 0, wscnt = 0;\n\t\tfor(var i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar name = wb.SheetNames[i];\n\t\t\tvar ws = wb.Sheets[name];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\t++wscnt;\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tif(rows < range.e.r) rows = range.e.r;\n\t\t\tif(cols < range.e.c) cols = range.e.c;\n\t\t}\n\t\tif(rows > 8191) rows = 8191;\n\t\tout.write_shift(2, rows);\n\t\tout.write_shift(1, wscnt);\n\t\tout.write_shift(1, cols);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(1, 0x01);\n\t\tout.write_shift(1, 0x02);\n\t\tout.write_shift(4, 0);\n\t\tout.write_shift(4, 0);\n\t\treturn out;\n\t}\n\n\tfunction parse_RANGE(blob, length, opts) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\tif(length == 8 && opts.qpro) {\n\t\t\to.s.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.s.r = blob.read_shift(2);\n\t\t\to.e.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.e.r = blob.read_shift(2);\n\t\t\treturn o;\n\t\t}\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\tfunction write_RANGE(range) {\n\t\tvar out = new_buf(8);\n\t\tout.write_shift(2, range.s.c);\n\t\tout.write_shift(2, range.s.r);\n\t\tout.write_shift(2, range.e.c);\n\t\tout.write_shift(2, range.e.r);\n\t\treturn out;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\to[3] = blob.read_shift(1);\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else if(opts.works) { // TODO: verify with more complex works3-4 examples\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t\to[2] = blob.read_shift(2);\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL(R, C, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(7 + s.length);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, 0x27); // ??\n\t\tfor(var i = 0; i < o.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\tfunction parse_STRING(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\tfunction write_INTEGER(R, C, v) {\n\t\tvar o = new_buf(7);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(2, v, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\tfunction write_NUMBER(R, C, v) {\n\t\tvar o = new_buf(13);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(8, v, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\twk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction wk1_parse_rc(B, V, col) {\n\t\tvar rel = V & 0x8000;\n\t\tV &= ~0x8000;\n\t\tV = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V);\n\t\treturn (rel ? \"\" : \"$\") + (col ? encode_col(V) : encode_row(V));\n\t}\n\t/* var oprec = [\n\t\t8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3,\n\t\t3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8\n\t]; */\n\t/* TODO: flesh out */\n\tvar FuncTab = {\n\t\t0x1F: [\"NA\", 0],\n\t\t// 0x20: [\"ERR\", 0],\n\t\t0x21: [\"ABS\", 1],\n\t\t0x22: [\"TRUNC\", 1],\n\t\t0x23: [\"SQRT\", 1],\n\t\t0x24: [\"LOG\", 1],\n\t\t0x25: [\"LN\", 1],\n\t\t0x26: [\"PI\", 0],\n\t\t0x27: [\"SIN\", 1],\n\t\t0x28: [\"COS\", 1],\n\t\t0x29: [\"TAN\", 1],\n\t\t0x2A: [\"ATAN2\", 2],\n\t\t0x2B: [\"ATAN\", 1],\n\t\t0x2C: [\"ASIN\", 1],\n\t\t0x2D: [\"ACOS\", 1],\n\t\t0x2E: [\"EXP\", 1],\n\t\t0x2F: [\"MOD\", 2],\n\t\t// 0x30\n\t\t0x31: [\"ISNA\", 1],\n\t\t0x32: [\"ISERR\", 1],\n\t\t0x33: [\"FALSE\", 0],\n\t\t0x34: [\"TRUE\", 0],\n\t\t0x35: [\"RAND\", 0],\n\t\t// 0x36 DATE\n\t\t// 0x37 NOW\n\t\t// 0x38 PMT\n\t\t// 0x39 PV\n\t\t// 0x3A FV\n\t\t// 0x3B IF\n\t\t// 0x3C DAY\n\t\t// 0x3D MONTH\n\t\t// 0x3E YEAR\n\t\t0x3F: [\"ROUND\", 2],\n\t\t// 0x40 TIME\n\t\t// 0x41 HOUR\n\t\t// 0x42 MINUTE\n\t\t// 0x43 SECOND\n\t\t0x44: [\"ISNUMBER\", 1],\n\t\t0x45: [\"ISTEXT\", 1],\n\t\t0x46: [\"LEN\", 1],\n\t\t0x47: [\"VALUE\", 1],\n\t\t// 0x48: [\"FIXED\", ?? 1],\n\t\t0x49: [\"MID\", 3],\n\t\t0x4A: [\"CHAR\", 1],\n\t\t// 0x4B\n\t\t// 0x4C FIND\n\t\t// 0x4D DATEVALUE\n\t\t// 0x4E TIMEVALUE\n\t\t// 0x4F CELL\n\t\t0x50: [\"SUM\", 69],\n\t\t0x51: [\"AVERAGEA\", 69],\n\t\t0x52: [\"COUNTA\", 69],\n\t\t0x53: [\"MINA\", 69],\n\t\t0x54: [\"MAXA\", 69],\n\t\t// 0x55 VLOOKUP\n\t\t// 0x56 NPV\n\t\t// 0x57 VAR\n\t\t// 0x58 STD\n\t\t// 0x59 IRR\n\t\t// 0x5A HLOOKUP\n\t\t// 0x5B DSUM\n\t\t// 0x5C DAVERAGE\n\t\t// 0x5D DCOUNTA\n\t\t// 0x5E DMIN\n\t\t// 0x5F DMAX\n\t\t// 0x60 DVARP\n\t\t// 0x61 DSTDEVP\n\t\t// 0x62 INDEX\n\t\t// 0x63 COLS\n\t\t// 0x64 ROWS\n\t\t// 0x65 REPEAT\n\t\t0x66: [\"UPPER\", 1],\n\t\t0x67: [\"LOWER\", 1],\n\t\t// 0x68 LEFT\n\t\t// 0x69 RIGHT\n\t\t// 0x6A REPLACE\n\t\t0x6B: [\"PROPER\", 1],\n\t\t// 0x6C CELL\n\t\t0x6D: [\"TRIM\", 1],\n\t\t// 0x6E CLEAN\n\t\t0x6F: [\"T\", 1]\n\t\t// 0x70 V\n\t};\n\tvar BinOpTab = [\n\t\t \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"\", \"+\", \"-\", \"*\", \"/\", \"^\", \"=\", \"<>\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t\"<=\", \">=\", \"<\", \">\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"&\", \"\", \"\", \"\", \"\", \"\", \"\", \"\" // eslint-disable-line no-mixed-spaces-and-tabs\n\t];\n\n\tfunction wk1_fmla_to_csf(blob, o) {\n\t\tprep_blob(blob, 0);\n\t\tvar out = [], argc = 0, R = \"\", C = \"\", argL = \"\", argR = \"\";\n\t\twhile(blob.l < blob.length) {\n\t\t\tvar cc = blob[blob.l++];\n\t\t\tswitch(cc) {\n\t\t\t\tcase 0x00: out.push(blob.read_shift(8, 'f')); break;\n\t\t\t\tcase 0x01: {\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x02: {\n\t\t\t\t\tvar c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tvar r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(c + r + \":\" + C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tif(blob.l < blob.length) { console.error(\"WK1 premature formula end\"); return; }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x04: out.push(\"(\" + out.pop() + \")\"); break;\n\t\t\t\tcase 0x05: out.push(blob.read_shift(2)); break;\n\t\t\t\tcase 0x06: {\n\t\t\t\t\t/* TODO: text encoding */\n\t\t\t\t\tvar Z = \"\"; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc);\n\t\t\t\t\tout.push('\"' + Z.replace(/\"/g, '\"\"') + '\"');\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x08: out.push(\"-\" + out.pop()); break;\n\t\t\t\tcase 0x17: out.push(\"+\" + out.pop()); break;\n\t\t\t\tcase 0x16: out.push(\"NOT(\" + out.pop() + \")\"); break;\n\n\t\t\t\tcase 0x14: case 0x15: {\n\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\tout.push([\"AND\", \"OR\"][cc - 0x14] + \"(\" + argL + \",\" + argR + \")\");\n\t\t\t\t} break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif(cc < 0x20 && BinOpTab[cc]) {\n\t\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\t\tout.push(argL + BinOpTab[cc] + argR);\n\t\t\t\t\t} else if(FuncTab[cc]) {\n\t\t\t\t\t\targc = FuncTab[cc][1];\n\t\t\t\t\t\tif(argc == 69) argc = blob[blob.l++];\n\t\t\t\t\t\tif(argc > out.length) { console.error(\"WK1 bad formula parse 0x\" + cc.toString(16) + \":|\" + out.join(\"|\") + \"|\"); return; }\n\t\t\t\t\t\tvar args = out.slice(-argc);\n\t\t\t\t\t\tout.length -= argc;\n\t\t\t\t\t\tout.push(FuncTab[cc][0] + \"(\" + args.join(\",\") + \")\");\n\t\t\t\t\t}\n\t\t\t\t\telse if(cc <= 0x07) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x18) return console.error(\"WK1 unsupported op \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x1E) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x73) return console.error(\"WK1 unsupported function opcode \" + cc.toString(16));\n\t\t\t\t\t// possible future functions ??\n\t\t\t\t\telse return console.error(\"WK1 unrecognized opcode \" + cc.toString(16));\n\t\t\t}\n\t\t}\n\t\tif(out.length == 1) o[1].f = \"\" + out[0];\n\t\telse console.error(\"WK1 bad formula parse |\" + out.join(\"|\") + \"|\");\n\t}\n\n\n\tfunction parse_cell_3(blob/*::, length*/) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL_16(R, C, wsidx, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(6 + s.length);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\to.write_shift(1, 0x27);\n\t\tfor(var i = 0; i < s.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 0: v = (v >> 3) * 5000; break;\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 3: v = (v >> 3) / 200; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 5: v = (v >> 3) / 20000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) {\n\t\t\tif(v1 === 0 && v2 === 0xC0000000) { o[1].t = \"e\"; o[1].v = 0x0F; } // ERR -> #VALUE!\n\t\t\telse if(v1 === 0 && v2 === 0xD0000000) { o[1].t = \"e\"; o[1].v = 0x2A; } // NA -> #N/A\n\t\t\telse o[1].v = 0;\n\t\t\treturn o;\n\t\t}\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));\n\t\treturn o;\n\t}\n\tfunction write_NUMBER_17(R, C, wsidx, v) {\n\t\tvar o = new_buf(14);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\tif(v == 0) {\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(2, 0xFFFF);\n\t\t\treturn o;\n\t\t}\n\t\tvar s = 0, e = 0, v1 = 0, v2 = 0;\n\t\tif(v < 0) { s = 1; v = -v; }\n\t\te = Math.log2(v) | 0;\n\t\tv /= Math.pow(2, e-31);\n\t\tv2 = (v)>>>0;\n\t\tif((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; }\n\t\tv -= v2;\n\t\tv2 |= 0x80000000;\n\t\tv2 >>>= 0;\n\t\tv *= Math.pow(2, 32);\n\t\tv1 = v>>>0;\n\t\to.write_shift(4, v1);\n\t\to.write_shift(4, v2);\n\t\te += 0x3FFF + (s ? 0x8000 : 0);\n\t\to.write_shift(2, e);\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: WK3 formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 12);\n\t\tblob.l += length - 12; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETNAMECS(blob, length) {\n\t\treturn blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : \"\";\n\t}\n\n\tfunction parse_SHEETNAMELP(blob, length) {\n\t\tvar len = blob[blob.l++];\n\t\tif(len > length - 1) len = length - 1;\n\t\tvar o = \"\"; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETINFOQP(blob, length, opts) {\n\t\tif(!opts.qpro || length < 21) return;\n\t\tvar id = blob.read_shift(1);\n\t\tblob.l += 17;\n\t\tblob.l += 1; //var len = blob.read_shift(1);\n\t\tblob.l += 2;\n\t\tvar nm = blob.read_shift(length - 21, 'cstr');\n\t\treturn [id, nm];\n\t}\n\n\tfunction parse_XFORMAT(blob, length) {\n\t\tvar o = {}, tgt = blob.l + length;\n\t\twhile(blob.l < tgt) {\n\t\t\tvar dt = blob.read_shift(2);\n\t\t\tif(dt == 0x36b0) {\n\t\t\t\to[dt] = [0, \"\"];\n\t\t\t\to[dt][0] = blob.read_shift(2);\n\t\t\t\twhile(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;\n\t\t\t}\n\t\t\t// TODO: 0x3a99 ??\n\t\t}\n\t\treturn o;\n\t}\n\tfunction write_XFORMAT_SHEETNAME(name, wsidx) {\n\t\tvar out = new_buf(5 + name.length);\n\t\tout.write_shift(2, 0x36b0);\n\t\tout.write_shift(2, wsidx);\n\t\tfor(var i = 0; i < name.length; ++i) {\n\t\t\tvar cc = name.charCodeAt(i);\n\t\t\tout[out.l++] = cc > 0x7F ? 0x5F : cc;\n\t\t}\n\t\tout[out.l++] = 0;\n\t\treturn out;\n\t}\n\n\tvar WK1Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"CALCMODE\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCORDER\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"SPLIT\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SYNC\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"RANGE\", f:parse_RANGE },\n\t\t/*::[*/0x0007/*::]*/: { n:\"WINDOW1\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"COLW1\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"WINTWO\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"COLW2\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"NAME\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"BLANK\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"INTEGER\", f:parse_INTEGER },\n\t\t/*::[*/0x000E/*::]*/: { n:\"NUMBER\", f:parse_NUMBER },\n\t\t/*::[*/0x000F/*::]*/: { n:\"LABEL\", f:parse_LABEL },\n\t\t/*::[*/0x0010/*::]*/: { n:\"FORMULA\", f:parse_FORMULA },\n\t\t/*::[*/0x0018/*::]*/: { n:\"TABLE\" },\n\t\t/*::[*/0x0019/*::]*/: { n:\"ORANGE\" },\n\t\t/*::[*/0x001A/*::]*/: { n:\"PRANGE\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"SRANGE\" },\n\t\t/*::[*/0x001C/*::]*/: { n:\"FRANGE\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"KRANGE1\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"HRANGE\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"KRANGE2\" },\n\t\t/*::[*/0x0024/*::]*/: { n:\"PROTEC\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"FOOTER\" },\n\t\t/*::[*/0x0026/*::]*/: { n:\"HEADER\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"SETUP\" },\n\t\t/*::[*/0x0028/*::]*/: { n:\"MARGINS\" },\n\t\t/*::[*/0x0029/*::]*/: { n:\"LABELFMT\" },\n\t\t/*::[*/0x002A/*::]*/: { n:\"TITLES\" },\n\t\t/*::[*/0x002B/*::]*/: { n:\"SHEETJS\" },\n\t\t/*::[*/0x002D/*::]*/: { n:\"GRAPH\" },\n\t\t/*::[*/0x002E/*::]*/: { n:\"NGRAPH\" },\n\t\t/*::[*/0x002F/*::]*/: { n:\"CALCCOUNT\" },\n\t\t/*::[*/0x0030/*::]*/: { n:\"UNFORMATTED\" },\n\t\t/*::[*/0x0031/*::]*/: { n:\"CURSORW12\" },\n\t\t/*::[*/0x0032/*::]*/: { n:\"WINDOW\" },\n\t\t/*::[*/0x0033/*::]*/: { n:\"STRING\", f:parse_STRING },\n\t\t/*::[*/0x0037/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0038/*::]*/: { n:\"LOCKED\" },\n\t\t/*::[*/0x003C/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x003D/*::]*/: { n:\"QUERYNAME\" },\n\t\t/*::[*/0x003E/*::]*/: { n:\"PRINT\" },\n\t\t/*::[*/0x003F/*::]*/: { n:\"PRINTNAME\" },\n\t\t/*::[*/0x0040/*::]*/: { n:\"GRAPH2\" },\n\t\t/*::[*/0x0041/*::]*/: { n:\"GRAPHNAME\" },\n\t\t/*::[*/0x0042/*::]*/: { n:\"ZOOM\" },\n\t\t/*::[*/0x0043/*::]*/: { n:\"SYMSPLIT\" },\n\t\t/*::[*/0x0044/*::]*/: { n:\"NSROWS\" },\n\t\t/*::[*/0x0045/*::]*/: { n:\"NSCOLS\" },\n\t\t/*::[*/0x0046/*::]*/: { n:\"RULER\" },\n\t\t/*::[*/0x0047/*::]*/: { n:\"NNAME\" },\n\t\t/*::[*/0x0048/*::]*/: { n:\"ACOMM\" },\n\t\t/*::[*/0x0049/*::]*/: { n:\"AMACRO\" },\n\t\t/*::[*/0x004A/*::]*/: { n:\"PARSE\" },\n\t\t/*::[*/0x0066/*::]*/: { n:\"PRANGES??\" },\n\t\t/*::[*/0x0067/*::]*/: { n:\"RRANGES??\" },\n\t\t/*::[*/0x0068/*::]*/: { n:\"FNAME??\" },\n\t\t/*::[*/0x0069/*::]*/: { n:\"MRANGES??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00DE/*::]*/: { n:\"SHEETNAMELP\", f:parse_SHEETNAMELP },\n\t\t/*::[*/0x00FF/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\tvar WK3Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\" },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCSET\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"WINDOWSET\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SHEETCELLPTR\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"SHEETLAYOUT\" },\n\t\t/*::[*/0x0007/*::]*/: { n:\"COLUMNWIDTH\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"HIDDENCOLUMN\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"USERRANGE\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"SYSTEMRANGE\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"ZEROFORCE\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"SORTKEYDIR\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"FILESEAL\" },\n\t\t/*::[*/0x000E/*::]*/: { n:\"DATAFILLNUMS\" },\n\t\t/*::[*/0x000F/*::]*/: { n:\"PRINTMAIN\" },\n\t\t/*::[*/0x0010/*::]*/: { n:\"PRINTSTRING\" },\n\t\t/*::[*/0x0011/*::]*/: { n:\"GRAPHMAIN\" },\n\t\t/*::[*/0x0012/*::]*/: { n:\"GRAPHSTRING\" },\n\t\t/*::[*/0x0013/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0014/*::]*/: { n:\"ERRCELL\" },\n\t\t/*::[*/0x0015/*::]*/: { n:\"NACELL\" },\n\t\t/*::[*/0x0016/*::]*/: { n:\"LABEL16\", f:parse_LABEL_16},\n\t\t/*::[*/0x0017/*::]*/: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n\t\t/*::[*/0x0018/*::]*/: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n\t\t/*::[*/0x0019/*::]*/: { n:\"FORMULA19\", f:parse_FORMULA_19},\n\t\t/*::[*/0x001A/*::]*/: { n:\"FORMULA1A\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"XFORMAT\", f:parse_XFORMAT },\n\t\t/*::[*/0x001C/*::]*/: { n:\"DTLABELMISC\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"DTLABELCELL\" },\n\t\t/*::[*/0x001E/*::]*/: { n:\"GRAPHWINDOW\" },\n\t\t/*::[*/0x001F/*::]*/: { n:\"CPA\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"LPLAUTO\" },\n\t\t/*::[*/0x0021/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x0022/*::]*/: { n:\"HIDDENSHEET\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n\t\t/*::[*/0x0026/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n\t\t/*::[*/0x0028/*::]*/: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n\t\t/*::[*/0x008E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0093/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0096/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0097/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0098/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0099/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00A3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B1/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B8/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BA/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BB/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BC/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00CD/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00D0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0100/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0103/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0104/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0105/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0106/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0107/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0109/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010F/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0180/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0185/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0186/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0189/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x018C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0200/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0202/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0201/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0204/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0205/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0280/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0281/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0282/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0283/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0284/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0285/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0286/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0287/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0288/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0292/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0293/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0294/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0295/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0296/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0299/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x029A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0300/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0304/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0601/*::]*/: { n:\"SHEETINFOQP\", f:parse_SHEETINFOQP },\n\t\t/*::[*/0x0640/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0642/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0701/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0702/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0703/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0704/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0780/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0800/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0801/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0804/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0A80/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x2AF6/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x3231/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6E49/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6F44/*::]*/: { n:\"??\" },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\t/* QPW uses a different set of record types */\n\tfunction qpw_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tprep_blob(d, 0);\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ({}/*:any*/); if(o.dense) s[\"!data\"] = [];\n\t\tvar SST = [], sname = \"\", formulae = [];\n\t\tvar range = {s:{r:-1,c:-1}, e:{r:-1,c:-1}};\n\t\tvar cnt = 0, type = 0, C = 0, R = 0;\n\t\tvar wb = { SheetNames: [], Sheets: {} };\n\t\touter: while(d.l < d.length) {\n\t\t\tvar RT = d.read_shift(2), length = d.read_shift(2);\n\t\t\tvar p = d.slice(d.l, d.l + length);\n\t\t\tprep_blob(p, 0);\n\t\t\tswitch(RT) {\n\t\t\t\tcase 0x01: /* BOF */\n\t\t\t\t\tif(p.read_shift(4) != 0x39575051) throw \"Bad QPW9 BOF!\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x02: /* EOF */ break outer;\n\n\t\t\t\t/* TODO: The behavior here should be consistent with Numbers: QP Notebook ~ .TN.SheetArchive, QP Sheet ~ .TST.TableModelArchive */\n\t\t\t\tcase 0x0401: /* BON */ break;\n\t\t\t\tcase 0x0402: /* EON */ /* TODO: backfill missing sheets based on BON cnt */ break;\n\n\t\t\t\tcase 0x0407: { /* SST */\n\t\t\t\t\tp.l += 12;\n\t\t\t\t\twhile(p.l < p.length) {\n\t\t\t\t\t\tcnt = p.read_shift(2);\n\t\t\t\t\t\ttype = p.read_shift(1);\n\t\t\t\t\t\tSST.push(p.read_shift(cnt, 'cstr'));\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0408: { /* FORMULAE */\n\t\t\t\t\t//p.l += 12;\n\t\t\t\t\t//while(p.l < p.length) {\n\t\t\t\t\t//\tcnt = p.read_shift(2);\n\t\t\t\t\t//\tformulae.push(p.slice(p.l, p.l + cnt + 1)); p.l += cnt + 1;\n\t\t\t\t\t//}\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x0601: { /* BOS */\n\t\t\t\t\tvar sidx = p.read_shift(2);\n\t\t\t\t\ts = ({}/*:any*/); if(o.dense) s[\"!data\"] = [];\n\t\t\t\t\trange.s.c = p.read_shift(2);\n\t\t\t\t\trange.e.c = p.read_shift(2);\n\t\t\t\t\trange.s.r = p.read_shift(4);\n\t\t\t\t\trange.e.r = p.read_shift(4);\n\t\t\t\t\tp.l += 4;\n\t\t\t\t\tif(p.l + 2 < p.length) {\n\t\t\t\t\t\tcnt = p.read_shift(2);\n\t\t\t\t\t\ttype = p.read_shift(1);\n\t\t\t\t\t\tsname = cnt == 0 ? \"\" : p.read_shift(cnt, 'cstr');\n\t\t\t\t\t}\n\t\t\t\t\tif(!sname) sname = encode_col(sidx);\n\t\t\t\t\t/* TODO: backfill empty sheets */\n\t\t\t\t} break;\n\t\t\t\tcase 0x0602: { /* EOS */\n\t\t\t\t\t/* NOTE: QP valid range A1:IV1000000 */\n\t\t\t\t\tif(range.s.c > 0xFF || range.s.r > 999999) break;\n\t\t\t\t\tif(range.e.c < range.s.c) range.e.c = range.s.c;\n\t\t\t\t\tif(range.e.r < range.s.r) range.e.r = range.s.r;\n\t\t\t\t\ts[\"!ref\"] = encode_range(range);\n\t\t\t\t\tbook_append_sheet(wb, s, sname); // TODO: a barrel roll\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x0A01: { /* COL (like XLS Row, modulo the layout transposition) */\n\t\t\t\t\tC = p.read_shift(2);\n\t\t\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\t\t\tif(range.s.c > C) range.s.c = C;\n\t\t\t\t\tR = p.read_shift(4);\n\t\t\t\t\tif(range.s.r > R) range.s.r = R;\n\t\t\t\t\tR = p.read_shift(4);\n\t\t\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x0C01: { /* MulCells (like XLS MulRK, but takes advantage of common column data patterns) */\n\t\t\t\t\tR = p.read_shift(4), cnt = p.read_shift(4);\n\t\t\t\t\tif(range.s.r > R) range.s.r = R;\n\t\t\t\t\tif(range.e.r < R + cnt - 1) range.e.r = R + cnt - 1;\n\t\t\t\t\tvar CC = encode_col(C);\n\t\t\t\t\twhile(p.l < p.length) {\n\t\t\t\t\t\tvar cell = { t: \"z\" };\n\t\t\t\t\t\tvar flags = p.read_shift(1);\n\t\t\t\t\t\tif(flags & 0x80) p.l += 2;\n\t\t\t\t\t\tvar mul = (flags & 0x40) ? p.read_shift(2) - 1: 0;\n\t\t\t\t\t\tswitch(flags & 0x1F) {\n\t\t\t\t\t\t\tcase 1: break;\n\t\t\t\t\t\t\tcase 2: cell = { t: \"n\", v: p.read_shift(2) }; break;\n\t\t\t\t\t\t\tcase 3: cell = { t: \"n\", v: p.read_shift(2, 'i') }; break;\n\t\t\t\t\t\t\tcase 5: cell = { t: \"n\", v: p.read_shift(8, 'f') }; break;\n\t\t\t\t\t\t\tcase 7: cell = { t: \"s\", v: SST[type = p.read_shift(4) - 1] }; break;\n\t\t\t\t\t\t\tcase 8: cell = { t: \"n\", v: p.read_shift(8, 'f') }; p.l += 2; /* cell.f = formulae[p.read_shift(4)]; */ p.l += 4; break;\n\t\t\t\t\t\t\tdefault: throw \"Unrecognized QPW cell type \" + (flags & 0x1F);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar delta = 0;\n\t\t\t\t\t\tif(flags & 0x20) switch(flags & 0x1F) {\n\t\t\t\t\t\t\tcase 2: delta = p.read_shift(2); break;\n\t\t\t\t\t\t\tcase 3: delta = p.read_shift(2, 'i'); break;\n\t\t\t\t\t\t\tcase 7: delta = p.read_shift(2); break;\n\t\t\t\t\t\t\tdefault: throw \"Unsupported delta for QPW cell type \" + (flags & 0x1F);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(!(!o.sheetStubs && cell.t == \"z\")) {\n\t\t\t\t\t\t\tif(s[\"!data\"] != null) {\n\t\t\t\t\t\t\t\tif(!s[\"!data\"][R]) s[\"!data\"][R] = [];\n\t\t\t\t\t\t\t\ts[\"!data\"][R][C] = cell;\n\t\t\t\t\t\t\t} else s[CC + encode_row(R)] = cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t++R; --cnt;\n\t\t\t\t\t\twhile(mul-- > 0 && cnt >= 0) {\n\t\t\t\t\t\t\tif(flags & 0x20) switch(flags & 0x1F) {\n\t\t\t\t\t\t\t\tcase 2: cell = { t: \"n\", v: (cell.v + delta) & 0xFFFF }; break;\n\t\t\t\t\t\t\t\tcase 3: cell = { t: \"n\", v: (cell.v + delta) & 0xFFFF }; if(cell.v > 0x7FFF) cell.v -= 0x10000; break;\n\t\t\t\t\t\t\t\tcase 7: cell = { t: \"s\", v: SST[type = (type + delta) >>> 0] }; break;\n\t\t\t\t\t\t\t\tdefault: throw \"Cannot apply delta for QPW cell type \" + (flags & 0x1F);\n\t\t\t\t\t\t\t} else switch(flags & 0x1F) {\n\t\t\t\t\t\t\t\tcase 1: cell = { t: \"z\" }; break;\n\t\t\t\t\t\t\t\tcase 2: cell = { t: \"n\", v: p.read_shift(2) }; break;\n\t\t\t\t\t\t\t\tcase 7: cell = { t: \"s\", v: SST[type = p.read_shift(4) - 1] }; break;\n\t\t\t\t\t\t\t\tdefault: throw \"Cannot apply repeat for QPW cell type \" + (flags & 0x1F);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!(!o.sheetStubs && cell.t == \"z\")) {\n\t\t\t\t\t\t\t\tif(s[\"!data\"] != null) {\n\t\t\t\t\t\t\t\t\tif(!s[\"!data\"][R]) s[\"!data\"][R] = [];\n\t\t\t\t\t\t\t\t\ts[\"!data\"][R][C] = cell;\n\t\t\t\t\t\t\t\t} else s[CC + encode_row(R)] = cell;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t++R; --cnt;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t\tdefault: break;\n\t\t\t}\n\t\t\td.l += length;\n\t\t}\n\t\treturn wb;\n\t}\n\n\treturn {\n\t\tsheet_to_wk1: sheet_to_wk1,\n\t\tbook_to_wk3: book_to_wk3,\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* 18.4.7 rPr CT_RPrElt */\nfunction parse_rpr(rpr) {\n\tvar font = {}, m = rpr.match(tagregex), i = 0;\n\tvar pass = false;\n\tif(m) for(;i!=m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '':\n\t\t\tcase '': font.shadow = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\tcase '':\n\t\t\tcase '': font.outline = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\tcase '':\n\t\t\tcase '': font.strike = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '':\n\t\t\tcase '': font.u = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.2 b */\n\t\t\tcase '':\n\t\t\tcase '': font.b = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.26 i */\n\t\t\tcase '':\n\t\t\tcase '': font.i = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.18 family ST_FontFamily */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault:\n\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t}\n\t}\n\treturn font;\n}\n\nvar parse_rs = /*#__PURE__*/(function() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\");\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return {t:\"s\", v:\"\"};\n\n\t\tvar o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/);\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) o.s = parse_rpr(rpr[1]);\n\t\treturn o;\n\t}\n\tvar rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/;\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).filter(function(r) { return r.v; });\n\t};\n})();\n\n\n/* Parse a list of tags */\nvar rs_to_html = /*#__PURE__*/(function parse_rs_factory() {\n\tvar nlregex = /(\\r\\n|\\n)/g;\n\tfunction parse_rpr2(font, intro, outro) {\n\t\tvar style/*:Array*/ = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('');\n\n\t\tif(font.b) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.i) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.strike) { intro.push(\"\"); outro.push(\"\"); }\n\n\t\tvar align = font.valign || \"\";\n\t\tif(align == \"superscript\" || align == \"super\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"\"); }\n\n\t\toutro.push(\"\");\n\t\treturn font;\n\t}\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction r_to_html(r) {\n\t\tvar terms/*:[Array, string, Array]*/ = [[],r.v,[]];\n\t\tif(!r.v) return \"\";\n\n\t\tif(r.s) parse_rpr2(r.s, terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'
      ') + terms[2].join(\"\");\n\t}\n\n\treturn function parse_rs(rs) {\n\t\treturn rs.map(r_to_html).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r\\b[^>]*>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return { t: \"\" };\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"), true);\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")), true);\n\t\tif(html) z.h = rs_to_html(parse_rs(z.r));\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data/*:string*/, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst/*:SST*/, opts)/*:string*/ {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS_main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s/*:XLString*/ = sst[i];\n\t\tvar sitag = \"\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"\" + escapexml(s.t) + \"\";\n\t\t}\n\t\tsitag += \"\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* BrtBeginSst */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* BrtSSTItem */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* BrtEndSst */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst/*::, opts*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, 0x00A0 /* BrtEndSst */);\n\treturn ba.end();\n}\nfunction _JS2ANSI(str/*:string*/)/*:Array*/ {\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\n\tvar o/*:Array*/ = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length/*:?number*/) {\n\tvar o/*:any*/ = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\n\t/*:: if(length == null) return o; */\n\tif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps/*:Array<{t:number, v:string}>*/ = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob)/*:Array*/ {\n\tvar o/*:Array*/ = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length/*:number*/) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length/*:number*/) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob/*::, vers*/) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt(/*::blob, vers*/) { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob/*::, vers*/) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\t\t\tcase '': case '': break;\n\n\t\t\tcase '': break;\n\t\t\tcase ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob/*::, length*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password/*:string*/) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = /*#__PURE__*/(function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password/*:string*/) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password/*:string*/, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password/*:string*/) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/);\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length/*:number*/, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length/*:number*/, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nfunction rtf_to_sheet(d, opts) {\n switch (opts.type) {\n case \"base64\":\n return rtf_to_sheet_str(Base64_decode(d), opts);\n case \"binary\":\n return rtf_to_sheet_str(d, opts);\n case \"buffer\":\n return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString(\"binary\") : a2s(d), opts);\n case \"array\":\n return rtf_to_sheet_str(cc2str(d), opts);\n }\n throw new Error(\"Unrecognized type \" + opts.type);\n}\nfunction rtf_to_sheet_str(str, opts) {\n var o = opts || {};\n var ws = {};\n var dense = o.dense;\n if (dense)\n ws[\"!data\"] = [];\n var rows = str.match(/\\\\trowd[\\s\\S]*?\\\\row\\b/g);\n if (!rows)\n throw new Error(\"RTF missing table\");\n var range = { s: { c: 0, r: 0 }, e: { c: 0, r: rows.length - 1 } };\n var row = [];\n rows.forEach(function(rowtf, R) {\n if (dense)\n row = ws[\"!data\"][R] = [];\n var rtfre = /\\\\[\\w\\-]+\\b/g;\n var last_index = 0;\n var res;\n var C = -1;\n var payload = [];\n while ((res = rtfre.exec(rowtf)) != null) {\n var data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);\n if (data.charCodeAt(0) == 32)\n data = data.slice(1);\n if (data.length)\n payload.push(data);\n switch (res[0]) {\n case \"\\\\cell\":\n ++C;\n if (payload.length) {\n var cell = { v: payload.join(\"\"), t: \"s\" };\n if (cell.v == \"TRUE\" || cell.v == \"FALSE\") {\n cell.v = cell.v == \"TRUE\";\n cell.t = \"b\";\n } else if (!isNaN(fuzzynum(cell.v))) {\n cell.t = \"n\";\n if (o.cellText !== false)\n cell.w = cell.v;\n cell.v = fuzzynum(cell.v);\n }\n if (dense)\n row[C] = cell;\n else\n ws[encode_cell({ r: R, c: C })] = cell;\n }\n payload = [];\n break;\n case \"\\\\par\":\n payload.push(\"\\n\");\n break;\n }\n last_index = rtfre.lastIndex;\n }\n if (C > range.e.c)\n range.e.c = C;\n });\n ws[\"!ref\"] = encode_range(range);\n return ws;\n}\nfunction rtf_to_workbook(d, opts) {\n var wb = sheet_to_workbook(rtf_to_sheet(d, opts), opts);\n wb.bookType = \"rtf\";\n return wb;\n}\nfunction sheet_to_rtf(ws, opts) {\n var o = [\"{\\\\rtf1\\\\ansi\"];\n if (!ws[\"!ref\"])\n return o[0] + \"}\";\n var r = safe_decode_range(ws[\"!ref\"]), cell;\n var dense = ws[\"!data\"] != null, row = [];\n for (var R = r.s.r; R <= r.e.r; ++R) {\n o.push(\"\\\\trowd\\\\trautofit1\");\n for (var C = r.s.c; C <= r.e.c; ++C)\n o.push(\"\\\\cellx\" + (C + 1));\n o.push(\"\\\\pard\\\\intbl\");\n if (dense)\n row = ws[\"!data\"][R] || [];\n for (C = r.s.c; C <= r.e.c; ++C) {\n var coord = encode_cell({ r: R, c: C });\n cell = dense ? row[C] : ws[coord];\n if (!cell || cell.v == null && (!cell.f || cell.F)) {\n o.push(\" \\\\cell\");\n continue;\n }\n o.push(\" \" + (cell.w || (format_cell(cell), cell.w) || \"\").replace(/[\\r\\n]/g, \"\\\\par \"));\n o.push(\"\\\\cell\");\n }\n o.push(\"\\\\pard\\\\intbl\\\\row\");\n }\n return o.join(\"\") + \"}\";\n}\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll/*:ColInfo*/) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '': case '':\n\t\t\t\tborder = /*::(*/{}/*:: :any)*/;\n\t\t\t\tif(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp);\n\t\t\t\tif(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown);\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '':\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '': case '':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '': break;\n\t\t\tcase '': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '': break;\n\t\t\tcase '': case '':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.2 b CT_BooleanProperty */\n\t\t\tcase '': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '': font.strike = 1; break;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty */\n\t\t\tcase '': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array*/ = (keys(table_fmt)/*:any*/);\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\t\t\tcase '0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF__load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF/*:{[n:number|string]:string}*//*::, opts*/) {\n\tvar o = [\"\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(styles.NumberFmt && xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText);\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) {\n\t\to[o.length] = (writextag('xf', null, c));\n\t});\n\to[o.length] = (\"\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= /*#__PURE__*/(function make_pstyx() {\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(//mg,\"\").replace(//gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5 borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */\n\t/* 18.8.8 cellStyles CT_CellStyles ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nfunction write_sty_xml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('styleSheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:vt': XMLNS.vt\n\t})], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length/*:number*/) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i/*:number*/, f/*:string*/, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length/*:number*/, opts) {\n\tvar out = ({}/*:any*/);\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fItalic) out.italic = 1;\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font/*:any*/, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames/*:EvertNumType*/;\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tif(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)/*:any*/);\n\tvar fls/*:number*/ = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length/*:number*/) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\tvar flow = 0;\n\to.write_shift(1, flow); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]/*:any*/);\n\tfor(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* BrtFmt */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF__load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* BrtFont */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* BrtKnownFonts */ break;\n\t\t\tcase 0x002D: /* BrtFill */\n\t\t\t\tbreak;\n\t\t\tcase 0x002E: /* BrtBorder */\n\t\t\t\tbreak;\n\t\t\tcase 0x002F: /* BrtXF */\n\t\t\t\tif(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* BrtStyle */\n\t\t\tcase 0x01FB: /* BrtDXF */\n\t\t\tcase 0x023C: /* BrtMRUColor */\n\t\t\tcase 0x01DB: /* BrtIndexedColor */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* BrtDXF14 */\n\t\t\tcase 0x0836: /* BrtDXF15 */\n\t\t\tcase 0x046A: /* BrtSlicerStyleElement */\n\t\t\tcase 0x0200: /* BrtTableStyleElement */\n\t\t\tcase 0x082F: /* BrtTimelineStyleElement */\n\t\t\tcase 0x0C00: /* BrtUid */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* BrtACBegin */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* BrtACEnd */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF/*:?SSFTable*/) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, 0x0268 /* BrtEndFmts */);\n}\n\nfunction write_FONTS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002B /* BrtFont */, write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, 0x0264 /* BrtEndFonts */);\n}\n\nfunction write_FILLS_bin(ba/*::, data*/) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, 0x025C /* BrtEndFills */);\n}\n\nfunction write_BORDERS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, 0x0266 /* BrtEndBorders */);\n}\n\nfunction write_CELLSTYLEXFS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\twrite_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002F /* BrtXF */, write_BrtXF({\n\t\tnumFmtId: 0,\n\t\tfontId: 0,\n\t\tfillId: 0,\n\t\tborderId: 0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x0273 /* BrtEndCellStyleXFs */);\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x026A /* BrtEndCellXFs */);\n}\n\nfunction write_STYLES_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\twrite_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, 0x026C /* BrtEndStyles */);\n}\n\nfunction write_DXFS_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, 0x01FA /* BrtEndDXFs */);\n}\n\nfunction write_TABLESTYLES_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, 0x01FD /* BrtEndTableStyles */);\n}\n\nfunction write_COLORPALETTE_bin(/*::ba, data*/) {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0116 /* BrtBeginStyleSheet */);\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, 0x0117 /* BrtEndStyleSheet */);\n\treturn ba.end();\n}\n/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */\nvar XLSXThemeClrScheme = [\n\t'', '', '', '',\n\t'', '', '',\n\t'', '', '',\n\t'', ''\n];\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color;\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme(/*::t, themes, opts*/) { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme(/*::t, themes, opts*/) { }\n\nvar clrsregex = /]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data/*:string*/, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) data = write_theme();\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\tthemes.raw = data;\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts)/*:string*/ {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tif(Themes && typeof Themes.raw == \"string\") return Themes.raw;\n\tvar o = [XML_HEADER];\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = zip_read(data, {type: \"array\"}); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob/*::, length*/) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob/*::, length*/) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob/*::, length*/)/*:Array*/ {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext/*:AOA*/ = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: /* text color */\n\t\t\t\tbreak;\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\nfunction parse_BrtMdtinfo(data, length) {\n return {\n flags: data.read_shift(4),\n version: data.read_shift(4),\n name: parse_XLWideString(data, length - 8)\n };\n}\nfunction write_BrtMdtinfo(data) {\n var o = new_buf(12 + 2 * data.name.length);\n o.write_shift(4, data.flags);\n o.write_shift(4, data.version);\n write_XLWideString(data.name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtMdb(data) {\n var out = [];\n var cnt = data.read_shift(4);\n while (cnt-- > 0)\n out.push([data.read_shift(4), data.read_shift(4)]);\n return out;\n}\nfunction write_BrtMdb(mdb) {\n var o = new_buf(4 + 8 * mdb.length);\n o.write_shift(4, mdb.length);\n for (var i = 0; i < mdb.length; ++i) {\n o.write_shift(4, mdb[i][0]);\n o.write_shift(4, mdb[i][1]);\n }\n return o;\n}\nfunction write_BrtBeginEsfmd(cnt, name) {\n var o = new_buf(8 + 2 * name.length);\n o.write_shift(4, cnt);\n write_XLWideString(name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtBeginEsmdb(data) {\n data.l += 4;\n return data.read_shift(4) != 0;\n}\nfunction write_BrtBeginEsmdb(cnt, cm) {\n var o = new_buf(8);\n o.write_shift(4, cnt);\n o.write_shift(4, cm ? 1 : 0);\n return o;\n}\nfunction parse_xlmeta_bin(data, name, _opts) {\n var out = { Types: [], Cell: [], Value: [] };\n var opts = _opts || {};\n var state = [];\n var pass = false;\n var metatype = 2;\n recordhopper(data, function(val, R, RT) {\n switch (RT) {\n case 335:\n out.Types.push({ name: val.name });\n break;\n case 51:\n val.forEach(function(r) {\n if (metatype == 1)\n out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n else if (metatype == 0)\n out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n });\n break;\n case 337:\n metatype = val ? 1 : 0;\n break;\n case 338:\n metatype = 2;\n break;\n case 35:\n state.push(RT);\n pass = true;\n break;\n case 36:\n state.pop();\n pass = false;\n break;\n default:\n if (R.T) {\n } else if (!pass || opts.WTF && state[state.length - 1] != 35)\n throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n }\n });\n return out;\n}\nfunction write_xlmeta_bin() {\n var ba = buf_array();\n write_record(ba, 332);\n write_record(ba, 334, write_UInt32LE(1));\n write_record(ba, 335, write_BrtMdtinfo({\n name: \"XLDAPR\",\n version: 12e4,\n flags: 3496657072\n }));\n write_record(ba, 336);\n write_record(ba, 339, write_BrtBeginEsfmd(1, \"XLDAPR\"));\n write_record(ba, 52);\n write_record(ba, 35, write_UInt32LE(514));\n write_record(ba, 4096, write_UInt32LE(0));\n write_record(ba, 4097, writeuint16(1));\n write_record(ba, 36);\n write_record(ba, 53);\n write_record(ba, 340);\n write_record(ba, 337, write_BrtBeginEsmdb(1, true));\n write_record(ba, 51, write_BrtMdb([[1, 0]]));\n write_record(ba, 338);\n write_record(ba, 333);\n return ba.end();\n}\nfunction parse_xlmeta_xml(data, name, opts) {\n var out = { Types: [], Cell: [], Value: [] };\n if (!data)\n return out;\n var pass = false;\n var metatype = 2;\n var lastmeta;\n data.replace(tagregex, function(x) {\n var y = parsexmltag(x);\n switch (strip_ns(y[0])) {\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n case \"\":\n case \"\":\n break;\n case \"\":\n pass = false;\n break;\n case \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n');\n return o.join(\"\");\n}\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data/*::, name, opts*/)/*:Array*/ {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.6.1 c CT_CalcCell 1 */\n\t\t\tcase ']*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nfunction write_vml(rId/*:number*/, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"})\n\t];\n\n\tvar _shapeid = 65536 * rId;\n\n\tvar _comments = comments || [];\n\tif(_comments.length > 0) o.push(writextag(\"v:shapetype\", [\n\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t].join(\"\"), {id:\"_x0000_t202\", coordsize:csize.join(\",\"), 'o:spt':202, path:bbox}));\n\n\t_comments.forEach(function(x) { ++_shapeid; o.push(write_vml_comment(x, _shapeid)); });\n\to.push('');\n\treturn o.join(\"\");\n}\n\nfunction write_vml_comment(x, _shapeid)/*:string*/ {\n\tvar c = decode_cell(x[0]);\n\tvar fillopts = /*::(*/{'color2':\"#BEFF82\", 'type':\"gradient\"}/*:: :any)*/;\n\tif(fillopts.type == \"gradient\") fillopts.angle = \"-180\";\n\tvar fillparm = fillopts.type == \"gradient\" ? writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}) : null;\n\tvar fillxml = writextag('v:fill', fillparm, fillopts);\n\n\tvar shadata = ({on:\"t\", 'obscured':\"t\"}/*:any*/);\n\n\treturn [\n\t'',\n\t\tfillxml,\n\t\twritextag(\"v:shadow\", null, shadata),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'
      ',\n\t\t'',\n\t\t\t'',\n\t\t\t'',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\tx[1].hidden ? '' : '',\n\t\t'',\n\t''\n\t].join(\"\");\n}\nfunction sheet_insert_comments(sheet/*:WorkSheet*/, comments/*:Array*/, threaded/*:boolean*/, people/*:?Array*/) {\n\tvar dense = sheet[\"!data\"] != null;\n\tvar cell/*:Cell*/;\n\tcomments.forEach(function(comment) {\n\t\tvar r = decode_cell(comment.ref);\n\t\tif(r.r < 0 || r.c < 0) return;\n\t\tif(dense) {\n\t\t\tif(!sheet[\"!data\"][r.r]) sheet[\"!data\"][r.r] = [];\n\t\t\tcell = sheet[\"!data\"][r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = ({t:\"z\"}/*:any*/);\n\t\t\tif(dense) sheet[\"!data\"][r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tsheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});\n\t\tif(comment.h) o.h = comment.h;\n\n\t\t/* threaded comments always override */\n\t\tfor(var i = cell.c.length - 1; i >= 0; --i) {\n\t\t\tif(!threaded && cell.c[i].T) return;\n\t\t\tif(threaded && !cell.c[i].T) cell.c.splice(i, 1);\n\t\t}\n\t\tif(threaded && people) for(i = 0; i < people.length; ++i) {\n\t\t\tif(o.a == people[i].id) { o.a = people[i].name || o.a; break; }\n\t\t}\n\t\tcell.c.push(o);\n\t});\n}\n/* 18.7 Comments */\nfunction parse_comments_xml(data/*:string*/, opts)/*:Array*/ {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors/*:Array*/ = [];\n\tvar commentList/*:Array*/ = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment/*:RawComment*/ = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid }/*:any*/);\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"\") rt.t = rt.h = \"\";\n\t\tcomment.t = (rt.t||\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nfunction write_comments_xml(data/*::, opts*/) {\n\tvar o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];\n\n\tvar iauthor/*:Array*/ = [];\n\to.push(\"\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) == -1) {\n\t\t\tiauthor.push(a);\n\t\t\to.push(\"\" + a + \"\");\n\t\t}\n\t\tif(w.T && w.ID && iauthor.indexOf(\"tc=\" + w.ID) == -1) {\n\t\t\tiauthor.push(\"tc=\" + w.ID);\n\t\t\to.push(\"\" + \"tc=\" + w.ID + \"\");\n\t\t}\n\t}); });\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"SheetJ5\"); }\n\to.push(\"\");\n\to.push(\"\");\n\tdata.forEach(function(d) {\n\t\t/* 18.7.3 CT_Comment */\n\t\tvar lastauthor = 0, ts = [], tcnt = 0;\n\t\tif(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf(\"tc=\" + d[1][0].ID);\n\t\td[1].forEach(function(c) {\n\t\t\tif(c.a) lastauthor = iauthor.indexOf(escapexml(c.a));\n\t\t\tif(c.T) ++tcnt;\n\t\t\tts.push(c.t == null ? \"\" : escapexml(c.t));\n\t\t});\n\t\tif(tcnt === 0) {\n\t\t\td[1].forEach(function(c) {\n\t\t\t\to.push('');\n\t\t\t\to.push(writetag(\"t\", c.t == null ? \"\" : escapexml(c.t)));\n\t\t\t\to.push('');\n\t\t\t});\n\t\t} else {\n\t\t\t/* based on Threaded Comments -> Comments projection */\n\t\t\to.push('');\n\t\t\tvar t = \"Comment:\\n \" + (ts[0]) + \"\\n\";\n\t\t\tfor(var i = 1; i < ts.length; ++i) t += \"Reply:\\n \" + ts[i] + \"\\n\";\n\t\t\to.push(writetag(\"t\", escapexml(t)));\n\t\t\to.push('');\n\t\t}\n\t});\n\to.push(\"\");\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.17 */\nfunction parse_tcmnt_xml(data/*:string*/, opts)/*:Array*/ {\n\tvar out = [];\n\tvar pass = false, comment = {}, tidx = 0;\n\tdata.replace(tagregex, function xml_tcmnt(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\n\t\t\tcase '': if(comment.t != null) out.push(comment); break;\n\n\t\t\tcase '': case '': comment.t = data.slice(tidx, idx).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\"); break;\n\n\t\t\t/* 2.6.206 mentions CT_ThreadedCommentMentions TODO */\n\t\t\tcase '': pass = true; break;\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 2.6.202 mention CT_Mention TODO */\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '
      ': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\n\nfunction write_tcmnt_xml(comments, people, opts) {\n\tvar o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\\/]>/, \">\")];\n\tcomments.forEach(function(carr) {\n\t\tvar rootid = \"\";\n\t\t(carr[1] || []).forEach(function(c, idx) {\n\t\t\tif(!c.T) { delete c.ID; return; }\n\t\t\tif(c.a && people.indexOf(c.a) == -1) people.push(c.a);\n\t\t\tvar tcopts = {\n\t\t\t\tref: carr[0],\n\t\t\t\tid: \"{54EE7951-7262-4200-6969-\" + (\"000000000000\" + opts.tcid++).slice(-12) + \"}\"\n\t\t\t};\n\t\t\tif(idx == 0) rootid = tcopts.id;\n\t\t\telse tcopts.parentId = rootid;\n\t\t\tc.ID = tcopts.id;\n\t\t\tif(c.a) tcopts.personId = \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + people.indexOf(c.a)).slice(-12) + \"}\";\n\t\t\to.push(writextag('threadedComment', writetag('text', c.t||\"\"), tcopts));\n\t\t});\n\t});\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.18 */\nfunction parse_people_xml(data/*:string*/, opts) {\n\tvar out = [];\n\tvar pass = false;\n\tdata.replace(tagregex, function xml_tcmnt(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\nfunction write_people_xml(people/*, opts*/) {\n\tvar o = [XML_HEADER, writextag('personList', null, {\n\t\t'xmlns': XMLNS.TCMNT,\n\t\t'xmlns:x': XMLNS_main[0]\n\t}).replace(/[\\/]>/, \">\")];\n\tpeople.forEach(function(person, idx) {\n\t\to.push(writextag('person', null, {\n\t\t\tdisplayName: person,\n\t\t\tid: \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + idx).slice(-12) + \"}\",\n\t\t\tuserId: person,\n\t\t\tproviderId: \"None\"\n\t\t}));\n\t});\n\to.push(\"\");\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]/*:any*/), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts)/*:Array*/ {\n\tvar out/*:Array*/ = [];\n\tvar authors/*:Array*/ = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete (c/*:any*/).iauthor;\n\t\t\t\tif(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data/*::, opts*/) {\n\tvar ba = buf_array();\n\tvar iauthor/*:Array*/ = [];\n\twrite_record(ba, 0x0274 /* BrtBeginComments */);\n\n\twrite_record(ba, 0x0276 /* BrtBeginCommentAuthors */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, 0x0277 /* BrtEndCommentAuthors */);\n\n\twrite_record(ba, 0x0279 /* BrtBeginCommentList */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c));\n\t\t\twrite_record(ba, 0x027C /* BrtEndComment */);\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, 0x027A /* BrtEndCommentList */);\n\n\twrite_record(ba, 0x0275 /* BrtEndComments */);\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n var newcfb = CFB.utils.cfb_new({ root: \"R\" });\n cfb.FullPaths.forEach(function(p, i) {\n if (p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/))\n return;\n var newpath = p.replace(/^[^\\/]*/, \"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n });\n return CFB.write(newcfb);\n}\nfunction fill_vba_xls(cfb, vba) {\n vba.FullPaths.forEach(function(p, i) {\n if (i == 0)\n return;\n var newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n if (newpath.slice(-1) !== \"/\")\n CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n });\n}\nvar VBAFMTS = [\"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\"];\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ds_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ms_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\nfunction parse_ms_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = /*#__PURE__*/(function(){\n\tvar rcregex = /(^|[^A-Za-z_])R(\\[?-?\\d+\\]|[1-9]\\d*|)C(\\[?-?\\d+\\]|[1-9]\\d*|)(?![A-Za-z0-9_])/g;\n\tvar rcbase/*:Cell*/ = ({r:0,c:0}/*:any*/);\n\tfunction rcfunc($$,$1,$2,$3) {\n\t\tvar cRel = false, rRel = false;\n\n\t\tif($2.length == 0) rRel = true;\n\t\telse if($2.charAt(0) == \"[\") { rRel = true; $2 = $2.slice(1, -1); }\n\n\t\tif($3.length == 0) cRel = true;\n\t\telse if($3.charAt(0) == \"[\") { cRel = true; $3 = $3.slice(1, -1); }\n\n\t\tvar R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0;\n\n\t\tif(cRel) C += rcbase.c; else --C;\n\t\tif(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr/*:string*/, base/*:Cell*/)/*:string*/ {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc = /*#__PURE__*/(function(){\n\treturn function a1_to_rc(fstr/*:string*/, base/*:CellAddress*/) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = $4 == \"$\" ? (r+1) : (r == 0 ? \"\" : \"[\" + r + \"]\");\n\t\t\tvar C = $2 == \"$\" ? (c+1) : (c == 0 ? \"\" : \"[\" + c + \"]\");\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f/*:string*/, delta/*:Cell*/)/*:string*/ {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f/*:string*/, range/*:string*/, cell/*:string*/)/*:string*/ {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f/*:string*/)/*:boolean*/ {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f/*:string*/)/*:string*/ {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob/*::, length, opts*/) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob/*::, length, opts*/) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob/*::, length, opts*/) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob/*::, length:number, opts*/) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts)/*:Array*/ {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o/*:Array*/ = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob/*::, length*/) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff/*:number*/) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o/*:Array>*/ = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob/*::, length, opts*/) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob/*::, length, opts*/) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n\t/*::[*/0x01/*::]*/: { n:'PtgExp', f:parse_PtgExp },\n\t/*::[*/0x02/*::]*/: { n:'PtgTbl', f:parse_PtgTbl },\n\t/*::[*/0x03/*::]*/: { n:'PtgAdd', f:parseread1 },\n\t/*::[*/0x04/*::]*/: { n:'PtgSub', f:parseread1 },\n\t/*::[*/0x05/*::]*/: { n:'PtgMul', f:parseread1 },\n\t/*::[*/0x06/*::]*/: { n:'PtgDiv', f:parseread1 },\n\t/*::[*/0x07/*::]*/: { n:'PtgPower', f:parseread1 },\n\t/*::[*/0x08/*::]*/: { n:'PtgConcat', f:parseread1 },\n\t/*::[*/0x09/*::]*/: { n:'PtgLt', f:parseread1 },\n\t/*::[*/0x0A/*::]*/: { n:'PtgLe', f:parseread1 },\n\t/*::[*/0x0B/*::]*/: { n:'PtgEq', f:parseread1 },\n\t/*::[*/0x0C/*::]*/: { n:'PtgGe', f:parseread1 },\n\t/*::[*/0x0D/*::]*/: { n:'PtgGt', f:parseread1 },\n\t/*::[*/0x0E/*::]*/: { n:'PtgNe', f:parseread1 },\n\t/*::[*/0x0F/*::]*/: { n:'PtgIsect', f:parseread1 },\n\t/*::[*/0x10/*::]*/: { n:'PtgUnion', f:parseread1 },\n\t/*::[*/0x11/*::]*/: { n:'PtgRange', f:parseread1 },\n\t/*::[*/0x12/*::]*/: { n:'PtgUplus', f:parseread1 },\n\t/*::[*/0x13/*::]*/: { n:'PtgUminus', f:parseread1 },\n\t/*::[*/0x14/*::]*/: { n:'PtgPercent', f:parseread1 },\n\t/*::[*/0x15/*::]*/: { n:'PtgParen', f:parseread1 },\n\t/*::[*/0x16/*::]*/: { n:'PtgMissArg', f:parseread1 },\n\t/*::[*/0x17/*::]*/: { n:'PtgStr', f:parse_PtgStr },\n\t/*::[*/0x1A/*::]*/: { n:'PtgSheet', f:parse_PtgSheet },\n\t/*::[*/0x1B/*::]*/: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n\t/*::[*/0x1C/*::]*/: { n:'PtgErr', f:parse_PtgErr },\n\t/*::[*/0x1D/*::]*/: { n:'PtgBool', f:parse_PtgBool },\n\t/*::[*/0x1E/*::]*/: { n:'PtgInt', f:parse_PtgInt },\n\t/*::[*/0x1F/*::]*/: { n:'PtgNum', f:parse_PtgNum },\n\t/*::[*/0x20/*::]*/: { n:'PtgArray', f:parse_PtgArray },\n\t/*::[*/0x21/*::]*/: { n:'PtgFunc', f:parse_PtgFunc },\n\t/*::[*/0x22/*::]*/: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n\t/*::[*/0x23/*::]*/: { n:'PtgName', f:parse_PtgName },\n\t/*::[*/0x24/*::]*/: { n:'PtgRef', f:parse_PtgRef },\n\t/*::[*/0x25/*::]*/: { n:'PtgArea', f:parse_PtgArea },\n\t/*::[*/0x26/*::]*/: { n:'PtgMemArea', f:parse_PtgMemArea },\n\t/*::[*/0x27/*::]*/: { n:'PtgMemErr', f:parse_PtgMemErr },\n\t/*::[*/0x28/*::]*/: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n\t/*::[*/0x29/*::]*/: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n\t/*::[*/0x2A/*::]*/: { n:'PtgRefErr', f:parse_PtgRefErr },\n\t/*::[*/0x2B/*::]*/: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n\t/*::[*/0x2C/*::]*/: { n:'PtgRefN', f:parse_PtgRefN },\n\t/*::[*/0x2D/*::]*/: { n:'PtgAreaN', f:parse_PtgAreaN },\n\t/*::[*/0x2E/*::]*/: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n\t/*::[*/0x2F/*::]*/: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n\t/*::[*/0x39/*::]*/: { n:'PtgNameX', f:parse_PtgNameX },\n\t/*::[*/0x3A/*::]*/: { n:'PtgRef3d', f:parse_PtgRef3d },\n\t/*::[*/0x3B/*::]*/: { n:'PtgArea3d', f:parse_PtgArea3d },\n\t/*::[*/0x3C/*::]*/: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n\t/*::[*/0x3D/*::]*/: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n\t/*::[*/0xFF/*::]*/: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n\t/*::[*/0x40/*::]*/: 0x20, /*::[*/0x60/*::]*/: 0x20,\n\t/*::[*/0x41/*::]*/: 0x21, /*::[*/0x61/*::]*/: 0x21,\n\t/*::[*/0x42/*::]*/: 0x22, /*::[*/0x62/*::]*/: 0x22,\n\t/*::[*/0x43/*::]*/: 0x23, /*::[*/0x63/*::]*/: 0x23,\n\t/*::[*/0x44/*::]*/: 0x24, /*::[*/0x64/*::]*/: 0x24,\n\t/*::[*/0x45/*::]*/: 0x25, /*::[*/0x65/*::]*/: 0x25,\n\t/*::[*/0x46/*::]*/: 0x26, /*::[*/0x66/*::]*/: 0x26,\n\t/*::[*/0x47/*::]*/: 0x27, /*::[*/0x67/*::]*/: 0x27,\n\t/*::[*/0x48/*::]*/: 0x28, /*::[*/0x68/*::]*/: 0x28,\n\t/*::[*/0x49/*::]*/: 0x29, /*::[*/0x69/*::]*/: 0x29,\n\t/*::[*/0x4A/*::]*/: 0x2A, /*::[*/0x6A/*::]*/: 0x2A,\n\t/*::[*/0x4B/*::]*/: 0x2B, /*::[*/0x6B/*::]*/: 0x2B,\n\t/*::[*/0x4C/*::]*/: 0x2C, /*::[*/0x6C/*::]*/: 0x2C,\n\t/*::[*/0x4D/*::]*/: 0x2D, /*::[*/0x6D/*::]*/: 0x2D,\n\t/*::[*/0x4E/*::]*/: 0x2E, /*::[*/0x6E/*::]*/: 0x2E,\n\t/*::[*/0x4F/*::]*/: 0x2F, /*::[*/0x6F/*::]*/: 0x2F,\n\t/*::[*/0x58/*::]*/: 0x22, /*::[*/0x78/*::]*/: 0x22,\n\t/*::[*/0x59/*::]*/: 0x39, /*::[*/0x79/*::]*/: 0x39,\n\t/*::[*/0x5A/*::]*/: 0x3A, /*::[*/0x7A/*::]*/: 0x3A,\n\t/*::[*/0x5B/*::]*/: 0x3B, /*::[*/0x7B/*::]*/: 0x3B,\n\t/*::[*/0x5C/*::]*/: 0x3C, /*::[*/0x7C/*::]*/: 0x3C,\n\t/*::[*/0x5D/*::]*/: 0x3D, /*::[*/0x7D/*::]*/: 0x3D\n};\n\nvar Ptg18 = {\n\t/*::[*/0x01/*::]*/: { n:'PtgElfLel', f:parse_PtgElfLel },\n\t/*::[*/0x02/*::]*/: { n:'PtgElfRw', f:parse_PtgElfRw },\n\t/*::[*/0x03/*::]*/: { n:'PtgElfCol', f:parse_PtgElfCol },\n\t/*::[*/0x06/*::]*/: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n\t/*::[*/0x07/*::]*/: { n:'PtgElfColV', f:parse_PtgElfColV },\n\t/*::[*/0x0A/*::]*/: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n\t/*::[*/0x0B/*::]*/: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n\t/*::[*/0x0D/*::]*/: { n:'PtgElfColS', f:parse_PtgElfColS },\n\t/*::[*/0x0F/*::]*/: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n\t/*::[*/0x10/*::]*/: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n\t/*::[*/0x19/*::]*/: { n:'PtgList', f:parse_PtgList },\n\t/*::[*/0x1D/*::]*/: { n:'PtgSxName', f:parse_PtgSxName },\n\t/*::[*/0xFF/*::]*/: {}\n};\nvar Ptg19 = {\n\t/*::[*/0x00/*::]*/: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n\t/*::[*/0x01/*::]*/: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n\t/*::[*/0x02/*::]*/: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n\t/*::[*/0x04/*::]*/: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n\t/*::[*/0x08/*::]*/: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n\t/*::[*/0x10/*::]*/: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n\t/*::[*/0x20/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x21/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x40/*::]*/: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n\t/*::[*/0x41/*::]*/: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n\t/*::[*/0x80/*::]*/: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n\t/*::[*/0xFF/*::]*/: {}\n};\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id] || PtgTypes[PtgDupes[id]];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f/*:Array>*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r/*:Array*/ = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\n\t\t\t\t\t/*:: if(typeof y[1] != 'string') throw \"unreachable\"; */\n\t\t\t\t\tr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\n\n// TODO: explore space\nfunction make_3d_range(start, end) {\n\tvar s = start.lastIndexOf(\"!\"), e = end.lastIndexOf(\"!\");\n\tif(s == -1 && e == -1) return start + \":\" + end;\n\tif(s > 0 && e > 0 && start.slice(0, s).toLowerCase() == end.slice(0, e).toLowerCase()) return start + \":\" + end.slice(e+1);\n\tconsole.error(\"Cannot hydrate range\", start, end);\n\treturn start + \":\" + end;\n}\n\nfunction get_ixti_raw(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tvar ixtiraw = get_ixti_raw(supbooks, ixti, opts);\n\treturn ixtiraw == \"#REF\" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);\n}\nfunction stringify_formula(formula/*Array*/, range, cell/*:any*/, supbooks, opts)/*:string*/ {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack/*:Array*/ = [], e1, e2, /*::type,*/ c/*:CellAddress*/, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd': /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv': /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq': /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe': /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt': /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe': /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt': /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul': /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe': /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower': /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub': /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(make_3d_range(e2,e1));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\n\t\t\t\t/*::type = f[1][0]; */c = shift_cell_xls((f[1][1]/*:any*/), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\n\t\t\t\t/*::type = f[1][0]; */c = cell ? shift_cell_xls((f[1][1]/*:any*/), cell, opts) : (f[1][1]/*:any*/);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; c = shift_cell_xls((f[1][2]/*:any*/), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc/*:number*/ = (f[1][0]/*:any*/), func/*:string*/ = (f[1][1]/*:any*/);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]/*:any*/);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\t/* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */\n\t\t\t\tif(name && name.slice(0,6) == \"_xlfn.\" && !opts.xlfn) name = name.slice(6);\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx/*:number*/ = (f[1][1]/*:any*/); nameidx = (f[1][2]/*:any*/); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||\"\").split(\";;\");\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\t}\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]/*:any*/),r:(f[1][0]/*:any*/)};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r}/*:any*/);\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t} else {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(/*::String(*/f[1]/*::)*/);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(/*::(*/f[1]/*:: :any)*/) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\tif(stack[0] == \"TRUE\") return true; if(stack[0] == \"FALSE\") return false;\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts/*::, ref*/) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob/*::, length*/) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\nfunction write_FormulaValue(value) {\n\tif(value == null) {\n\t\t// Blank String Value\n\t\tvar o = new_buf(8);\n\t\to.write_shift(1, 0x03);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0xFFFF);\n\t\treturn o;\n\t} else if(typeof value == \"number\") return write_Xnum(value);\n\treturn write_Xnum(0);\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\nfunction write_Formula(cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, os/*:number*/) {\n\t// Cell\n\tvar o1 = write_XLSCell(R, C, os);\n\n\t// FormulaValue\n\tvar o2 = write_FormulaValue(cell.v);\n\n\t// flags + cache\n\tvar o3 = new_buf(6);\n\tvar flags = 0x01 | 0x20;\n\to3.write_shift(2, flags);\n\to3.write_shift(4, 0);\n\n\t// CellParsedFormula\n\tvar bf = new_buf(cell.bf.length);\n\tfor(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i];\n\n\tvar out = bconcat([o1, o2, o3, bf]);\n\treturn out;\n}\n\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.8 DVParsedFormula */\n//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */\n//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\n\n/* Writes a PtgNum or PtgInt */\nfunction write_XLSBFormulaNum(val/*:number*/) {\n\tif((val | 0) == val && val < Math.pow(2,16) && val >= 0) {\n\t\tvar oint = new_buf(11);\n\t\toint.write_shift(4, 3);\n\t\toint.write_shift(1, 0x1e);\n\t\toint.write_shift(2, val);\n\t\toint.write_shift(4, 0);\n\t\treturn oint;\n\t}\n\n\tvar num = new_buf(17);\n\tnum.write_shift(4, 11);\n\tnum.write_shift(1, 0x1f);\n\tnum.write_shift(8, val);\n\tnum.write_shift(4, 0);\n\treturn num;\n}\n/* Writes a PtgErr */\nfunction write_XLSBFormulaErr(val/*:number*/) {\n\tvar oint = new_buf(10);\n\toint.write_shift(4, 2);\n\toint.write_shift(1, 0x1C);\n\toint.write_shift(1, val);\n\toint.write_shift(4, 0);\n\treturn oint;\n}\n/* Writes a PtgBool */\nfunction write_XLSBFormulaBool(val/*:boolean*/) {\n\tvar oint = new_buf(10);\n\toint.write_shift(4, 2);\n\toint.write_shift(1, 0x1D);\n\toint.write_shift(1, val?1:0);\n\toint.write_shift(4, 0);\n\treturn oint;\n}\n\n/* Writes a PtgStr */\nfunction write_XLSBFormulaStr(val/*:string*/) {\n\tvar preamble = new_buf(7);\n\tpreamble.write_shift(4, 3 + 2 * val.length);\n\tpreamble.write_shift(1, 0x17);\n\tpreamble.write_shift(2, val.length);\n\n\tvar body = new_buf(2 * val.length);\n\tbody.write_shift(2 * val.length, val, \"utf16le\");\n\n\tvar postamble = new_buf(4);\n\tpostamble.write_shift(4, 0);\n\n\treturn bconcat([preamble, body, postamble]);\n}\n\n/* Writes a PtgRef */\nfunction write_XLSBFormulaRef(str) {\n\tvar cell = decode_cell(str);\n\tvar out = new_buf(15);\n\tout.write_shift(4, 7);\n\tout.write_shift(1, 0x04 | ((1)<<5));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a PtgRef3d */\nfunction write_XLSBFormulaRef3D(str, wb) {\n\tvar lastbang = str.lastIndexOf(\"!\");\n\tvar sname = str.slice(0, lastbang);\n\tstr = str.slice(lastbang+1);\n\tvar cell = decode_cell(str);\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\n\n\tvar out = new_buf(17);\n\tout.write_shift(4, 9);\n\tout.write_shift(1, 0x1A | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a PtgRefErr3d */\nfunction write_XLSBFormulaRefErr3D(str, wb) {\n\tvar lastbang = str.lastIndexOf(\"!\");\n\tvar sname = str.slice(0, lastbang);\n\tstr = str.slice(lastbang+1);\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\n\n\tvar out = new_buf(17);\n\tout.write_shift(4, 9);\n\tout.write_shift(1, 0x1C | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, 0);\n\tout.write_shift(2, 0); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a single sheet range [PtgRef PtgRef PtgRange] */\nfunction write_XLSBFormulaRange(_str) {\n\tvar parts = _str.split(\":\"), str = parts[0];\n\n\tvar out = new_buf(23);\n\tout.write_shift(4, 15);\n\n\t/* start cell */\n\tstr = parts[0]; var cell = decode_cell(str);\n\tout.write_shift(1, 0x04 | ((1)<<5));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\t/* end cell */\n\tstr = parts[1]; cell = decode_cell(str);\n\tout.write_shift(1, 0x04 | ((1)<<5));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\tout.write_shift(4, 0);\n\n\t/* PtgRange */\n\tout.write_shift(1, 0x11);\n\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a range with explicit sheet name [PtgRef3D PtgRef3D PtgRange] */\nfunction write_XLSBFormulaRangeWS(_str, wb) {\n\tvar lastbang = _str.lastIndexOf(\"!\");\n\tvar sname = _str.slice(0, lastbang);\n\t_str = _str.slice(lastbang+1);\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\n\tvar parts = _str.split(\":\"); str = parts[0];\n\n\tvar out = new_buf(27);\n\tout.write_shift(4, 19);\n\n\t/* start cell */\n\tvar str = parts[0], cell = decode_cell(str);\n\tout.write_shift(1, 0x1A | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\n\t/* end cell */\n\tstr = parts[1]; cell = decode_cell(str);\n\tout.write_shift(1, 0x1A | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, cell.r);\n\tout.write_shift(2, cell.c | ((str.charAt(0) == \"$\" ? 0 : 1)<<14) | ((str.match(/\\$\\d/) ? 0 : 1)<<15)); // <== ColRelShort\n\n\t/* PtgRange */\n\tout.write_shift(1, 0x11);\n\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n/* Writes a range with explicit sheet name [PtgArea3d] */\nfunction write_XLSBFormulaArea3D(_str, wb) {\n\tvar lastbang = _str.lastIndexOf(\"!\");\n\tvar sname = _str.slice(0, lastbang);\n\t_str = _str.slice(lastbang+1);\n\tif(sname.charAt(0) == \"'\") sname = sname.slice(1, -1).replace(/''/g, \"'\");\n\tvar range = decode_range(_str);\n\n\tvar out = new_buf(23);\n\tout.write_shift(4, 15);\n\n\tout.write_shift(1, 0x1B | ((1)<<5));\n\tout.write_shift(2, 2 + wb.SheetNames.map(function(n) { return n.toLowerCase(); }).indexOf(sname.toLowerCase()));\n\tout.write_shift(4, range.s.r);\n\tout.write_shift(4, range.e.r);\n\tout.write_shift(2, range.s.c);\n\tout.write_shift(2, range.e.c);\n\n\tout.write_shift(4, 0);\n\n\treturn out;\n}\n\n\n/* General Formula */\nfunction write_XLSBFormula(val/*:string|number*/, wb) {\n\tif(typeof val == \"number\") return write_XLSBFormulaNum(val);\n\tif(typeof val == \"boolean\") return write_XLSBFormulaBool(val);\n\tif(/^#(DIV\\/0!|GETTING_DATA|N\\/A|NAME\\?|NULL!|NUM!|REF!|VALUE!)$/.test(val)) return write_XLSBFormulaErr(+RBErr[val]);\n\tif(val.match(/^\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRef(val);\n\tif(val.match(/^\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5}):\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRange(val);\n\tif(val.match(/^#REF!\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5}):\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaArea3D(val, wb);\n\tif(val.match(/^(?:'[^\\\\\\/?*\\[\\]:]*'|[^'][^\\\\\\/?*\\[\\]:'`~!@#$%^()\\-=+{}|;,<.>]*)!\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRef3D(val, wb);\n\tif(val.match(/^(?:'[^\\\\\\/?*\\[\\]:]*'|[^'][^\\\\\\/?*\\[\\]:'`~!@#$%^()\\-=+{}|;,<.>]*)!\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5}):\\$?(?:[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D]|[A-Z]{1,2})\\$?(?:10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})$/)) return write_XLSBFormulaRangeWS(val, wb);\n\tif(/^(?:'[^\\\\\\/?*\\[\\]:]*'|[^'][^\\\\\\/?*\\[\\]:'`~!@#$%^()\\-=+{}|;,<.>]*)!#REF!$/.test(val)) return write_XLSBFormulaRefErr3D(val, wb);\n\tif(/^\".*\"$/.test(val)) return write_XLSBFormulaStr(val);\n\tif(/^[+-]\\d+$/.test(val)) return write_XLSBFormulaNum(parseInt(val, 10));\n\tthrow \"Formula |\" + val + \"| not supported for XLSB\";\n}\nvar write_XLSBNameParsedFormula = write_XLSBFormula;\nvar Cetab = {\n 0: \"BEEP\",\n 1: \"OPEN\",\n 2: \"OPEN.LINKS\",\n 3: \"CLOSE.ALL\",\n 4: \"SAVE\",\n 5: \"SAVE.AS\",\n 6: \"FILE.DELETE\",\n 7: \"PAGE.SETUP\",\n 8: \"PRINT\",\n 9: \"PRINTER.SETUP\",\n 10: \"QUIT\",\n 11: \"NEW.WINDOW\",\n 12: \"ARRANGE.ALL\",\n 13: \"WINDOW.SIZE\",\n 14: \"WINDOW.MOVE\",\n 15: \"FULL\",\n 16: \"CLOSE\",\n 17: \"RUN\",\n 22: \"SET.PRINT.AREA\",\n 23: \"SET.PRINT.TITLES\",\n 24: \"SET.PAGE.BREAK\",\n 25: \"REMOVE.PAGE.BREAK\",\n 26: \"FONT\",\n 27: \"DISPLAY\",\n 28: \"PROTECT.DOCUMENT\",\n 29: \"PRECISION\",\n 30: \"A1.R1C1\",\n 31: \"CALCULATE.NOW\",\n 32: \"CALCULATION\",\n 34: \"DATA.FIND\",\n 35: \"EXTRACT\",\n 36: \"DATA.DELETE\",\n 37: \"SET.DATABASE\",\n 38: \"SET.CRITERIA\",\n 39: \"SORT\",\n 40: \"DATA.SERIES\",\n 41: \"TABLE\",\n 42: \"FORMAT.NUMBER\",\n 43: \"ALIGNMENT\",\n 44: \"STYLE\",\n 45: \"BORDER\",\n 46: \"CELL.PROTECTION\",\n 47: \"COLUMN.WIDTH\",\n 48: \"UNDO\",\n 49: \"CUT\",\n 50: \"COPY\",\n 51: \"PASTE\",\n 52: \"CLEAR\",\n 53: \"PASTE.SPECIAL\",\n 54: \"EDIT.DELETE\",\n 55: \"INSERT\",\n 56: \"FILL.RIGHT\",\n 57: \"FILL.DOWN\",\n 61: \"DEFINE.NAME\",\n 62: \"CREATE.NAMES\",\n 63: \"FORMULA.GOTO\",\n 64: \"FORMULA.FIND\",\n 65: \"SELECT.LAST.CELL\",\n 66: \"SHOW.ACTIVE.CELL\",\n 67: \"GALLERY.AREA\",\n 68: \"GALLERY.BAR\",\n 69: \"GALLERY.COLUMN\",\n 70: \"GALLERY.LINE\",\n 71: \"GALLERY.PIE\",\n 72: \"GALLERY.SCATTER\",\n 73: \"COMBINATION\",\n 74: \"PREFERRED\",\n 75: \"ADD.OVERLAY\",\n 76: \"GRIDLINES\",\n 77: \"SET.PREFERRED\",\n 78: \"AXES\",\n 79: \"LEGEND\",\n 80: \"ATTACH.TEXT\",\n 81: \"ADD.ARROW\",\n 82: \"SELECT.CHART\",\n 83: \"SELECT.PLOT.AREA\",\n 84: \"PATTERNS\",\n 85: \"MAIN.CHART\",\n 86: \"OVERLAY\",\n 87: \"SCALE\",\n 88: \"FORMAT.LEGEND\",\n 89: \"FORMAT.TEXT\",\n 90: \"EDIT.REPEAT\",\n 91: \"PARSE\",\n 92: \"JUSTIFY\",\n 93: \"HIDE\",\n 94: \"UNHIDE\",\n 95: \"WORKSPACE\",\n 96: \"FORMULA\",\n 97: \"FORMULA.FILL\",\n 98: \"FORMULA.ARRAY\",\n 99: \"DATA.FIND.NEXT\",\n 100: \"DATA.FIND.PREV\",\n 101: \"FORMULA.FIND.NEXT\",\n 102: \"FORMULA.FIND.PREV\",\n 103: \"ACTIVATE\",\n 104: \"ACTIVATE.NEXT\",\n 105: \"ACTIVATE.PREV\",\n 106: \"UNLOCKED.NEXT\",\n 107: \"UNLOCKED.PREV\",\n 108: \"COPY.PICTURE\",\n 109: \"SELECT\",\n 110: \"DELETE.NAME\",\n 111: \"DELETE.FORMAT\",\n 112: \"VLINE\",\n 113: \"HLINE\",\n 114: \"VPAGE\",\n 115: \"HPAGE\",\n 116: \"VSCROLL\",\n 117: \"HSCROLL\",\n 118: \"ALERT\",\n 119: \"NEW\",\n 120: \"CANCEL.COPY\",\n 121: \"SHOW.CLIPBOARD\",\n 122: \"MESSAGE\",\n 124: \"PASTE.LINK\",\n 125: \"APP.ACTIVATE\",\n 126: \"DELETE.ARROW\",\n 127: \"ROW.HEIGHT\",\n 128: \"FORMAT.MOVE\",\n 129: \"FORMAT.SIZE\",\n 130: \"FORMULA.REPLACE\",\n 131: \"SEND.KEYS\",\n 132: \"SELECT.SPECIAL\",\n 133: \"APPLY.NAMES\",\n 134: \"REPLACE.FONT\",\n 135: \"FREEZE.PANES\",\n 136: \"SHOW.INFO\",\n 137: \"SPLIT\",\n 138: \"ON.WINDOW\",\n 139: \"ON.DATA\",\n 140: \"DISABLE.INPUT\",\n 142: \"OUTLINE\",\n 143: \"LIST.NAMES\",\n 144: \"FILE.CLOSE\",\n 145: \"SAVE.WORKBOOK\",\n 146: \"DATA.FORM\",\n 147: \"COPY.CHART\",\n 148: \"ON.TIME\",\n 149: \"WAIT\",\n 150: \"FORMAT.FONT\",\n 151: \"FILL.UP\",\n 152: \"FILL.LEFT\",\n 153: \"DELETE.OVERLAY\",\n 155: \"SHORT.MENUS\",\n 159: \"SET.UPDATE.STATUS\",\n 161: \"COLOR.PALETTE\",\n 162: \"DELETE.STYLE\",\n 163: \"WINDOW.RESTORE\",\n 164: \"WINDOW.MAXIMIZE\",\n 166: \"CHANGE.LINK\",\n 167: \"CALCULATE.DOCUMENT\",\n 168: \"ON.KEY\",\n 169: \"APP.RESTORE\",\n 170: \"APP.MOVE\",\n 171: \"APP.SIZE\",\n 172: \"APP.MINIMIZE\",\n 173: \"APP.MAXIMIZE\",\n 174: \"BRING.TO.FRONT\",\n 175: \"SEND.TO.BACK\",\n 185: \"MAIN.CHART.TYPE\",\n 186: \"OVERLAY.CHART.TYPE\",\n 187: \"SELECT.END\",\n 188: \"OPEN.MAIL\",\n 189: \"SEND.MAIL\",\n 190: \"STANDARD.FONT\",\n 191: \"CONSOLIDATE\",\n 192: \"SORT.SPECIAL\",\n 193: \"GALLERY.3D.AREA\",\n 194: \"GALLERY.3D.COLUMN\",\n 195: \"GALLERY.3D.LINE\",\n 196: \"GALLERY.3D.PIE\",\n 197: \"VIEW.3D\",\n 198: \"GOAL.SEEK\",\n 199: \"WORKGROUP\",\n 200: \"FILL.GROUP\",\n 201: \"UPDATE.LINK\",\n 202: \"PROMOTE\",\n 203: \"DEMOTE\",\n 204: \"SHOW.DETAIL\",\n 206: \"UNGROUP\",\n 207: \"OBJECT.PROPERTIES\",\n 208: \"SAVE.NEW.OBJECT\",\n 209: \"SHARE\",\n 210: \"SHARE.NAME\",\n 211: \"DUPLICATE\",\n 212: \"APPLY.STYLE\",\n 213: \"ASSIGN.TO.OBJECT\",\n 214: \"OBJECT.PROTECTION\",\n 215: \"HIDE.OBJECT\",\n 216: \"SET.EXTRACT\",\n 217: \"CREATE.PUBLISHER\",\n 218: \"SUBSCRIBE.TO\",\n 219: \"ATTRIBUTES\",\n 220: \"SHOW.TOOLBAR\",\n 222: \"PRINT.PREVIEW\",\n 223: \"EDIT.COLOR\",\n 224: \"SHOW.LEVELS\",\n 225: \"FORMAT.MAIN\",\n 226: \"FORMAT.OVERLAY\",\n 227: \"ON.RECALC\",\n 228: \"EDIT.SERIES\",\n 229: \"DEFINE.STYLE\",\n 240: \"LINE.PRINT\",\n 243: \"ENTER.DATA\",\n 249: \"GALLERY.RADAR\",\n 250: \"MERGE.STYLES\",\n 251: \"EDITION.OPTIONS\",\n 252: \"PASTE.PICTURE\",\n 253: \"PASTE.PICTURE.LINK\",\n 254: \"SPELLING\",\n 256: \"ZOOM\",\n 259: \"INSERT.OBJECT\",\n 260: \"WINDOW.MINIMIZE\",\n 265: \"SOUND.NOTE\",\n 266: \"SOUND.PLAY\",\n 267: \"FORMAT.SHAPE\",\n 268: \"EXTEND.POLYGON\",\n 269: \"FORMAT.AUTO\",\n 272: \"GALLERY.3D.BAR\",\n 273: \"GALLERY.3D.SURFACE\",\n 274: \"FILL.AUTO\",\n 276: \"CUSTOMIZE.TOOLBAR\",\n 277: \"ADD.TOOL\",\n 278: \"EDIT.OBJECT\",\n 279: \"ON.DOUBLECLICK\",\n 280: \"ON.ENTRY\",\n 281: \"WORKBOOK.ADD\",\n 282: \"WORKBOOK.MOVE\",\n 283: \"WORKBOOK.COPY\",\n 284: \"WORKBOOK.OPTIONS\",\n 285: \"SAVE.WORKSPACE\",\n 288: \"CHART.WIZARD\",\n 289: \"DELETE.TOOL\",\n 290: \"MOVE.TOOL\",\n 291: \"WORKBOOK.SELECT\",\n 292: \"WORKBOOK.ACTIVATE\",\n 293: \"ASSIGN.TO.TOOL\",\n 295: \"COPY.TOOL\",\n 296: \"RESET.TOOL\",\n 297: \"CONSTRAIN.NUMERIC\",\n 298: \"PASTE.TOOL\",\n 302: \"WORKBOOK.NEW\",\n 305: \"SCENARIO.CELLS\",\n 306: \"SCENARIO.DELETE\",\n 307: \"SCENARIO.ADD\",\n 308: \"SCENARIO.EDIT\",\n 309: \"SCENARIO.SHOW\",\n 310: \"SCENARIO.SHOW.NEXT\",\n 311: \"SCENARIO.SUMMARY\",\n 312: \"PIVOT.TABLE.WIZARD\",\n 313: \"PIVOT.FIELD.PROPERTIES\",\n 314: \"PIVOT.FIELD\",\n 315: \"PIVOT.ITEM\",\n 316: \"PIVOT.ADD.FIELDS\",\n 318: \"OPTIONS.CALCULATION\",\n 319: \"OPTIONS.EDIT\",\n 320: \"OPTIONS.VIEW\",\n 321: \"ADDIN.MANAGER\",\n 322: \"MENU.EDITOR\",\n 323: \"ATTACH.TOOLBARS\",\n 324: \"VBAActivate\",\n 325: \"OPTIONS.CHART\",\n 328: \"VBA.INSERT.FILE\",\n 330: \"VBA.PROCEDURE.DEFINITION\",\n 336: \"ROUTING.SLIP\",\n 338: \"ROUTE.DOCUMENT\",\n 339: \"MAIL.LOGON\",\n 342: \"INSERT.PICTURE\",\n 343: \"EDIT.TOOL\",\n 344: \"GALLERY.DOUGHNUT\",\n 350: \"CHART.TREND\",\n 352: \"PIVOT.ITEM.PROPERTIES\",\n 354: \"WORKBOOK.INSERT\",\n 355: \"OPTIONS.TRANSITION\",\n 356: \"OPTIONS.GENERAL\",\n 370: \"FILTER.ADVANCED\",\n 373: \"MAIL.ADD.MAILER\",\n 374: \"MAIL.DELETE.MAILER\",\n 375: \"MAIL.REPLY\",\n 376: \"MAIL.REPLY.ALL\",\n 377: \"MAIL.FORWARD\",\n 378: \"MAIL.NEXT.LETTER\",\n 379: \"DATA.LABEL\",\n 380: \"INSERT.TITLE\",\n 381: \"FONT.PROPERTIES\",\n 382: \"MACRO.OPTIONS\",\n 383: \"WORKBOOK.HIDE\",\n 384: \"WORKBOOK.UNHIDE\",\n 385: \"WORKBOOK.DELETE\",\n 386: \"WORKBOOK.NAME\",\n 388: \"GALLERY.CUSTOM\",\n 390: \"ADD.CHART.AUTOFORMAT\",\n 391: \"DELETE.CHART.AUTOFORMAT\",\n 392: \"CHART.ADD.DATA\",\n 393: \"AUTO.OUTLINE\",\n 394: \"TAB.ORDER\",\n 395: \"SHOW.DIALOG\",\n 396: \"SELECT.ALL\",\n 397: \"UNGROUP.SHEETS\",\n 398: \"SUBTOTAL.CREATE\",\n 399: \"SUBTOTAL.REMOVE\",\n 400: \"RENAME.OBJECT\",\n 412: \"WORKBOOK.SCROLL\",\n 413: \"WORKBOOK.NEXT\",\n 414: \"WORKBOOK.PREV\",\n 415: \"WORKBOOK.TAB.SPLIT\",\n 416: \"FULL.SCREEN\",\n 417: \"WORKBOOK.PROTECT\",\n 420: \"SCROLLBAR.PROPERTIES\",\n 421: \"PIVOT.SHOW.PAGES\",\n 422: \"TEXT.TO.COLUMNS\",\n 423: \"FORMAT.CHARTTYPE\",\n 424: \"LINK.FORMAT\",\n 425: \"TRACER.DISPLAY\",\n 430: \"TRACER.NAVIGATE\",\n 431: \"TRACER.CLEAR\",\n 432: \"TRACER.ERROR\",\n 433: \"PIVOT.FIELD.GROUP\",\n 434: \"PIVOT.FIELD.UNGROUP\",\n 435: \"CHECKBOX.PROPERTIES\",\n 436: \"LABEL.PROPERTIES\",\n 437: \"LISTBOX.PROPERTIES\",\n 438: \"EDITBOX.PROPERTIES\",\n 439: \"PIVOT.REFRESH\",\n 440: \"LINK.COMBO\",\n 441: \"OPEN.TEXT\",\n 442: \"HIDE.DIALOG\",\n 443: \"SET.DIALOG.FOCUS\",\n 444: \"ENABLE.OBJECT\",\n 445: \"PUSHBUTTON.PROPERTIES\",\n 446: \"SET.DIALOG.DEFAULT\",\n 447: \"FILTER\",\n 448: \"FILTER.SHOW.ALL\",\n 449: \"CLEAR.OUTLINE\",\n 450: \"FUNCTION.WIZARD\",\n 451: \"ADD.LIST.ITEM\",\n 452: \"SET.LIST.ITEM\",\n 453: \"REMOVE.LIST.ITEM\",\n 454: \"SELECT.LIST.ITEM\",\n 455: \"SET.CONTROL.VALUE\",\n 456: \"SAVE.COPY.AS\",\n 458: \"OPTIONS.LISTS.ADD\",\n 459: \"OPTIONS.LISTS.DELETE\",\n 460: \"SERIES.AXES\",\n 461: \"SERIES.X\",\n 462: \"SERIES.Y\",\n 463: \"ERRORBAR.X\",\n 464: \"ERRORBAR.Y\",\n 465: \"FORMAT.CHART\",\n 466: \"SERIES.ORDER\",\n 467: \"MAIL.LOGOFF\",\n 468: \"CLEAR.ROUTING.SLIP\",\n 469: \"APP.ACTIVATE.MICROSOFT\",\n 470: \"MAIL.EDIT.MAILER\",\n 471: \"ON.SHEET\",\n 472: \"STANDARD.WIDTH\",\n 473: \"SCENARIO.MERGE\",\n 474: \"SUMMARY.INFO\",\n 475: \"FIND.FILE\",\n 476: \"ACTIVE.CELL.FONT\",\n 477: \"ENABLE.TIPWIZARD\",\n 478: \"VBA.MAKE.ADDIN\",\n 480: \"INSERTDATATABLE\",\n 481: \"WORKGROUP.OPTIONS\",\n 482: \"MAIL.SEND.MAILER\",\n 485: \"AUTOCORRECT\",\n 489: \"POST.DOCUMENT\",\n 491: \"PICKLIST\",\n 493: \"VIEW.SHOW\",\n 494: \"VIEW.DEFINE\",\n 495: \"VIEW.DELETE\",\n 509: \"SHEET.BACKGROUND\",\n 510: \"INSERT.MAP.OBJECT\",\n 511: \"OPTIONS.MENONO\",\n 517: \"MSOCHECKS\",\n 518: \"NORMAL\",\n 519: \"LAYOUT\",\n 520: \"RM.PRINT.AREA\",\n 521: \"CLEAR.PRINT.AREA\",\n 522: \"ADD.PRINT.AREA\",\n 523: \"MOVE.BRK\",\n 545: \"HIDECURR.NOTE\",\n 546: \"HIDEALL.NOTES\",\n 547: \"DELETE.NOTE\",\n 548: \"TRAVERSE.NOTES\",\n 549: \"ACTIVATE.NOTES\",\n 620: \"PROTECT.REVISIONS\",\n 621: \"UNPROTECT.REVISIONS\",\n 647: \"OPTIONS.ME\",\n 653: \"WEB.PUBLISH\",\n 667: \"NEWWEBQUERY\",\n 673: \"PIVOT.TABLE.CHART\",\n 753: \"OPTIONS.SAVE\",\n 755: \"OPTIONS.SPELL\",\n 808: \"HIDEALL.INKANNOTS\"\n};\nvar Ftab = {\n 0: \"COUNT\",\n 1: \"IF\",\n 2: \"ISNA\",\n 3: \"ISERROR\",\n 4: \"SUM\",\n 5: \"AVERAGE\",\n 6: \"MIN\",\n 7: \"MAX\",\n 8: \"ROW\",\n 9: \"COLUMN\",\n 10: \"NA\",\n 11: \"NPV\",\n 12: \"STDEV\",\n 13: \"DOLLAR\",\n 14: \"FIXED\",\n 15: \"SIN\",\n 16: \"COS\",\n 17: \"TAN\",\n 18: \"ATAN\",\n 19: \"PI\",\n 20: \"SQRT\",\n 21: \"EXP\",\n 22: \"LN\",\n 23: \"LOG10\",\n 24: \"ABS\",\n 25: \"INT\",\n 26: \"SIGN\",\n 27: \"ROUND\",\n 28: \"LOOKUP\",\n 29: \"INDEX\",\n 30: \"REPT\",\n 31: \"MID\",\n 32: \"LEN\",\n 33: \"VALUE\",\n 34: \"TRUE\",\n 35: \"FALSE\",\n 36: \"AND\",\n 37: \"OR\",\n 38: \"NOT\",\n 39: \"MOD\",\n 40: \"DCOUNT\",\n 41: \"DSUM\",\n 42: \"DAVERAGE\",\n 43: \"DMIN\",\n 44: \"DMAX\",\n 45: \"DSTDEV\",\n 46: \"VAR\",\n 47: \"DVAR\",\n 48: \"TEXT\",\n 49: \"LINEST\",\n 50: \"TREND\",\n 51: \"LOGEST\",\n 52: \"GROWTH\",\n 53: \"GOTO\",\n 54: \"HALT\",\n 55: \"RETURN\",\n 56: \"PV\",\n 57: \"FV\",\n 58: \"NPER\",\n 59: \"PMT\",\n 60: \"RATE\",\n 61: \"MIRR\",\n 62: \"IRR\",\n 63: \"RAND\",\n 64: \"MATCH\",\n 65: \"DATE\",\n 66: \"TIME\",\n 67: \"DAY\",\n 68: \"MONTH\",\n 69: \"YEAR\",\n 70: \"WEEKDAY\",\n 71: \"HOUR\",\n 72: \"MINUTE\",\n 73: \"SECOND\",\n 74: \"NOW\",\n 75: \"AREAS\",\n 76: \"ROWS\",\n 77: \"COLUMNS\",\n 78: \"OFFSET\",\n 79: \"ABSREF\",\n 80: \"RELREF\",\n 81: \"ARGUMENT\",\n 82: \"SEARCH\",\n 83: \"TRANSPOSE\",\n 84: \"ERROR\",\n 85: \"STEP\",\n 86: \"TYPE\",\n 87: \"ECHO\",\n 88: \"SET.NAME\",\n 89: \"CALLER\",\n 90: \"DEREF\",\n 91: \"WINDOWS\",\n 92: \"SERIES\",\n 93: \"DOCUMENTS\",\n 94: \"ACTIVE.CELL\",\n 95: \"SELECTION\",\n 96: \"RESULT\",\n 97: \"ATAN2\",\n 98: \"ASIN\",\n 99: \"ACOS\",\n 100: \"CHOOSE\",\n 101: \"HLOOKUP\",\n 102: \"VLOOKUP\",\n 103: \"LINKS\",\n 104: \"INPUT\",\n 105: \"ISREF\",\n 106: \"GET.FORMULA\",\n 107: \"GET.NAME\",\n 108: \"SET.VALUE\",\n 109: \"LOG\",\n 110: \"EXEC\",\n 111: \"CHAR\",\n 112: \"LOWER\",\n 113: \"UPPER\",\n 114: \"PROPER\",\n 115: \"LEFT\",\n 116: \"RIGHT\",\n 117: \"EXACT\",\n 118: \"TRIM\",\n 119: \"REPLACE\",\n 120: \"SUBSTITUTE\",\n 121: \"CODE\",\n 122: \"NAMES\",\n 123: \"DIRECTORY\",\n 124: \"FIND\",\n 125: \"CELL\",\n 126: \"ISERR\",\n 127: \"ISTEXT\",\n 128: \"ISNUMBER\",\n 129: \"ISBLANK\",\n 130: \"T\",\n 131: \"N\",\n 132: \"FOPEN\",\n 133: \"FCLOSE\",\n 134: \"FSIZE\",\n 135: \"FREADLN\",\n 136: \"FREAD\",\n 137: \"FWRITELN\",\n 138: \"FWRITE\",\n 139: \"FPOS\",\n 140: \"DATEVALUE\",\n 141: \"TIMEVALUE\",\n 142: \"SLN\",\n 143: \"SYD\",\n 144: \"DDB\",\n 145: \"GET.DEF\",\n 146: \"REFTEXT\",\n 147: \"TEXTREF\",\n 148: \"INDIRECT\",\n 149: \"REGISTER\",\n 150: \"CALL\",\n 151: \"ADD.BAR\",\n 152: \"ADD.MENU\",\n 153: \"ADD.COMMAND\",\n 154: \"ENABLE.COMMAND\",\n 155: \"CHECK.COMMAND\",\n 156: \"RENAME.COMMAND\",\n 157: \"SHOW.BAR\",\n 158: \"DELETE.MENU\",\n 159: \"DELETE.COMMAND\",\n 160: \"GET.CHART.ITEM\",\n 161: \"DIALOG.BOX\",\n 162: \"CLEAN\",\n 163: \"MDETERM\",\n 164: \"MINVERSE\",\n 165: \"MMULT\",\n 166: \"FILES\",\n 167: \"IPMT\",\n 168: \"PPMT\",\n 169: \"COUNTA\",\n 170: \"CANCEL.KEY\",\n 171: \"FOR\",\n 172: \"WHILE\",\n 173: \"BREAK\",\n 174: \"NEXT\",\n 175: \"INITIATE\",\n 176: \"REQUEST\",\n 177: \"POKE\",\n 178: \"EXECUTE\",\n 179: \"TERMINATE\",\n 180: \"RESTART\",\n 181: \"HELP\",\n 182: \"GET.BAR\",\n 183: \"PRODUCT\",\n 184: \"FACT\",\n 185: \"GET.CELL\",\n 186: \"GET.WORKSPACE\",\n 187: \"GET.WINDOW\",\n 188: \"GET.DOCUMENT\",\n 189: \"DPRODUCT\",\n 190: \"ISNONTEXT\",\n 191: \"GET.NOTE\",\n 192: \"NOTE\",\n 193: \"STDEVP\",\n 194: \"VARP\",\n 195: \"DSTDEVP\",\n 196: \"DVARP\",\n 197: \"TRUNC\",\n 198: \"ISLOGICAL\",\n 199: \"DCOUNTA\",\n 200: \"DELETE.BAR\",\n 201: \"UNREGISTER\",\n 204: \"USDOLLAR\",\n 205: \"FINDB\",\n 206: \"SEARCHB\",\n 207: \"REPLACEB\",\n 208: \"LEFTB\",\n 209: \"RIGHTB\",\n 210: \"MIDB\",\n 211: \"LENB\",\n 212: \"ROUNDUP\",\n 213: \"ROUNDDOWN\",\n 214: \"ASC\",\n 215: \"DBCS\",\n 216: \"RANK\",\n 219: \"ADDRESS\",\n 220: \"DAYS360\",\n 221: \"TODAY\",\n 222: \"VDB\",\n 223: \"ELSE\",\n 224: \"ELSE.IF\",\n 225: \"END.IF\",\n 226: \"FOR.CELL\",\n 227: \"MEDIAN\",\n 228: \"SUMPRODUCT\",\n 229: \"SINH\",\n 230: \"COSH\",\n 231: \"TANH\",\n 232: \"ASINH\",\n 233: \"ACOSH\",\n 234: \"ATANH\",\n 235: \"DGET\",\n 236: \"CREATE.OBJECT\",\n 237: \"VOLATILE\",\n 238: \"LAST.ERROR\",\n 239: \"CUSTOM.UNDO\",\n 240: \"CUSTOM.REPEAT\",\n 241: \"FORMULA.CONVERT\",\n 242: \"GET.LINK.INFO\",\n 243: \"TEXT.BOX\",\n 244: \"INFO\",\n 245: \"GROUP\",\n 246: \"GET.OBJECT\",\n 247: \"DB\",\n 248: \"PAUSE\",\n 251: \"RESUME\",\n 252: \"FREQUENCY\",\n 253: \"ADD.TOOLBAR\",\n 254: \"DELETE.TOOLBAR\",\n 255: \"User\",\n 256: \"RESET.TOOLBAR\",\n 257: \"EVALUATE\",\n 258: \"GET.TOOLBAR\",\n 259: \"GET.TOOL\",\n 260: \"SPELLING.CHECK\",\n 261: \"ERROR.TYPE\",\n 262: \"APP.TITLE\",\n 263: \"WINDOW.TITLE\",\n 264: \"SAVE.TOOLBAR\",\n 265: \"ENABLE.TOOL\",\n 266: \"PRESS.TOOL\",\n 267: \"REGISTER.ID\",\n 268: \"GET.WORKBOOK\",\n 269: \"AVEDEV\",\n 270: \"BETADIST\",\n 271: \"GAMMALN\",\n 272: \"BETAINV\",\n 273: \"BINOMDIST\",\n 274: \"CHIDIST\",\n 275: \"CHIINV\",\n 276: \"COMBIN\",\n 277: \"CONFIDENCE\",\n 278: \"CRITBINOM\",\n 279: \"EVEN\",\n 280: \"EXPONDIST\",\n 281: \"FDIST\",\n 282: \"FINV\",\n 283: \"FISHER\",\n 284: \"FISHERINV\",\n 285: \"FLOOR\",\n 286: \"GAMMADIST\",\n 287: \"GAMMAINV\",\n 288: \"CEILING\",\n 289: \"HYPGEOMDIST\",\n 290: \"LOGNORMDIST\",\n 291: \"LOGINV\",\n 292: \"NEGBINOMDIST\",\n 293: \"NORMDIST\",\n 294: \"NORMSDIST\",\n 295: \"NORMINV\",\n 296: \"NORMSINV\",\n 297: \"STANDARDIZE\",\n 298: \"ODD\",\n 299: \"PERMUT\",\n 300: \"POISSON\",\n 301: \"TDIST\",\n 302: \"WEIBULL\",\n 303: \"SUMXMY2\",\n 304: \"SUMX2MY2\",\n 305: \"SUMX2PY2\",\n 306: \"CHITEST\",\n 307: \"CORREL\",\n 308: \"COVAR\",\n 309: \"FORECAST\",\n 310: \"FTEST\",\n 311: \"INTERCEPT\",\n 312: \"PEARSON\",\n 313: \"RSQ\",\n 314: \"STEYX\",\n 315: \"SLOPE\",\n 316: \"TTEST\",\n 317: \"PROB\",\n 318: \"DEVSQ\",\n 319: \"GEOMEAN\",\n 320: \"HARMEAN\",\n 321: \"SUMSQ\",\n 322: \"KURT\",\n 323: \"SKEW\",\n 324: \"ZTEST\",\n 325: \"LARGE\",\n 326: \"SMALL\",\n 327: \"QUARTILE\",\n 328: \"PERCENTILE\",\n 329: \"PERCENTRANK\",\n 330: \"MODE\",\n 331: \"TRIMMEAN\",\n 332: \"TINV\",\n 334: \"MOVIE.COMMAND\",\n 335: \"GET.MOVIE\",\n 336: \"CONCATENATE\",\n 337: \"POWER\",\n 338: \"PIVOT.ADD.DATA\",\n 339: \"GET.PIVOT.TABLE\",\n 340: \"GET.PIVOT.FIELD\",\n 341: \"GET.PIVOT.ITEM\",\n 342: \"RADIANS\",\n 343: \"DEGREES\",\n 344: \"SUBTOTAL\",\n 345: \"SUMIF\",\n 346: \"COUNTIF\",\n 347: \"COUNTBLANK\",\n 348: \"SCENARIO.GET\",\n 349: \"OPTIONS.LISTS.GET\",\n 350: \"ISPMT\",\n 351: \"DATEDIF\",\n 352: \"DATESTRING\",\n 353: \"NUMBERSTRING\",\n 354: \"ROMAN\",\n 355: \"OPEN.DIALOG\",\n 356: \"SAVE.DIALOG\",\n 357: \"VIEW.GET\",\n 358: \"GETPIVOTDATA\",\n 359: \"HYPERLINK\",\n 360: \"PHONETIC\",\n 361: \"AVERAGEA\",\n 362: \"MAXA\",\n 363: \"MINA\",\n 364: \"STDEVPA\",\n 365: \"VARPA\",\n 366: \"STDEVA\",\n 367: \"VARA\",\n 368: \"BAHTTEXT\",\n 369: \"THAIDAYOFWEEK\",\n 370: \"THAIDIGIT\",\n 371: \"THAIMONTHOFYEAR\",\n 372: \"THAINUMSOUND\",\n 373: \"THAINUMSTRING\",\n 374: \"THAISTRINGLENGTH\",\n 375: \"ISTHAIDIGIT\",\n 376: \"ROUNDBAHTDOWN\",\n 377: \"ROUNDBAHTUP\",\n 378: \"THAIYEAR\",\n 379: \"RTD\",\n 380: \"CUBEVALUE\",\n 381: \"CUBEMEMBER\",\n 382: \"CUBEMEMBERPROPERTY\",\n 383: \"CUBERANKEDMEMBER\",\n 384: \"HEX2BIN\",\n 385: \"HEX2DEC\",\n 386: \"HEX2OCT\",\n 387: \"DEC2BIN\",\n 388: \"DEC2HEX\",\n 389: \"DEC2OCT\",\n 390: \"OCT2BIN\",\n 391: \"OCT2HEX\",\n 392: \"OCT2DEC\",\n 393: \"BIN2DEC\",\n 394: \"BIN2OCT\",\n 395: \"BIN2HEX\",\n 396: \"IMSUB\",\n 397: \"IMDIV\",\n 398: \"IMPOWER\",\n 399: \"IMABS\",\n 400: \"IMSQRT\",\n 401: \"IMLN\",\n 402: \"IMLOG2\",\n 403: \"IMLOG10\",\n 404: \"IMSIN\",\n 405: \"IMCOS\",\n 406: \"IMEXP\",\n 407: \"IMARGUMENT\",\n 408: \"IMCONJUGATE\",\n 409: \"IMAGINARY\",\n 410: \"IMREAL\",\n 411: \"COMPLEX\",\n 412: \"IMSUM\",\n 413: \"IMPRODUCT\",\n 414: \"SERIESSUM\",\n 415: \"FACTDOUBLE\",\n 416: \"SQRTPI\",\n 417: \"QUOTIENT\",\n 418: \"DELTA\",\n 419: \"GESTEP\",\n 420: \"ISEVEN\",\n 421: \"ISODD\",\n 422: \"MROUND\",\n 423: \"ERF\",\n 424: \"ERFC\",\n 425: \"BESSELJ\",\n 426: \"BESSELK\",\n 427: \"BESSELY\",\n 428: \"BESSELI\",\n 429: \"XIRR\",\n 430: \"XNPV\",\n 431: \"PRICEMAT\",\n 432: \"YIELDMAT\",\n 433: \"INTRATE\",\n 434: \"RECEIVED\",\n 435: \"DISC\",\n 436: \"PRICEDISC\",\n 437: \"YIELDDISC\",\n 438: \"TBILLEQ\",\n 439: \"TBILLPRICE\",\n 440: \"TBILLYIELD\",\n 441: \"PRICE\",\n 442: \"YIELD\",\n 443: \"DOLLARDE\",\n 444: \"DOLLARFR\",\n 445: \"NOMINAL\",\n 446: \"EFFECT\",\n 447: \"CUMPRINC\",\n 448: \"CUMIPMT\",\n 449: \"EDATE\",\n 450: \"EOMONTH\",\n 451: \"YEARFRAC\",\n 452: \"COUPDAYBS\",\n 453: \"COUPDAYS\",\n 454: \"COUPDAYSNC\",\n 455: \"COUPNCD\",\n 456: \"COUPNUM\",\n 457: \"COUPPCD\",\n 458: \"DURATION\",\n 459: \"MDURATION\",\n 460: \"ODDLPRICE\",\n 461: \"ODDLYIELD\",\n 462: \"ODDFPRICE\",\n 463: \"ODDFYIELD\",\n 464: \"RANDBETWEEN\",\n 465: \"WEEKNUM\",\n 466: \"AMORDEGRC\",\n 467: \"AMORLINC\",\n 468: \"CONVERT\",\n 724: \"SHEETJS\",\n 469: \"ACCRINT\",\n 470: \"ACCRINTM\",\n 471: \"WORKDAY\",\n 472: \"NETWORKDAYS\",\n 473: \"GCD\",\n 474: \"MULTINOMIAL\",\n 475: \"LCM\",\n 476: \"FVSCHEDULE\",\n 477: \"CUBEKPIMEMBER\",\n 478: \"CUBESET\",\n 479: \"CUBESETCOUNT\",\n 480: \"IFERROR\",\n 481: \"COUNTIFS\",\n 482: \"SUMIFS\",\n 483: \"AVERAGEIF\",\n 484: \"AVERAGEIFS\"\n};\nvar FtabArgc = {\n 2: 1,\n 3: 1,\n 10: 0,\n 15: 1,\n 16: 1,\n 17: 1,\n 18: 1,\n 19: 0,\n 20: 1,\n 21: 1,\n 22: 1,\n 23: 1,\n 24: 1,\n 25: 1,\n 26: 1,\n 27: 2,\n 30: 2,\n 31: 3,\n 32: 1,\n 33: 1,\n 34: 0,\n 35: 0,\n 38: 1,\n 39: 2,\n 40: 3,\n 41: 3,\n 42: 3,\n 43: 3,\n 44: 3,\n 45: 3,\n 47: 3,\n 48: 2,\n 53: 1,\n 61: 3,\n 63: 0,\n 65: 3,\n 66: 3,\n 67: 1,\n 68: 1,\n 69: 1,\n 70: 1,\n 71: 1,\n 72: 1,\n 73: 1,\n 74: 0,\n 75: 1,\n 76: 1,\n 77: 1,\n 79: 2,\n 80: 2,\n 83: 1,\n 85: 0,\n 86: 1,\n 89: 0,\n 90: 1,\n 94: 0,\n 95: 0,\n 97: 2,\n 98: 1,\n 99: 1,\n 101: 3,\n 102: 3,\n 105: 1,\n 106: 1,\n 108: 2,\n 111: 1,\n 112: 1,\n 113: 1,\n 114: 1,\n 117: 2,\n 118: 1,\n 119: 4,\n 121: 1,\n 126: 1,\n 127: 1,\n 128: 1,\n 129: 1,\n 130: 1,\n 131: 1,\n 133: 1,\n 134: 1,\n 135: 1,\n 136: 2,\n 137: 2,\n 138: 2,\n 140: 1,\n 141: 1,\n 142: 3,\n 143: 4,\n 144: 4,\n 161: 1,\n 162: 1,\n 163: 1,\n 164: 1,\n 165: 2,\n 172: 1,\n 175: 2,\n 176: 2,\n 177: 3,\n 178: 2,\n 179: 1,\n 184: 1,\n 186: 1,\n 189: 3,\n 190: 1,\n 195: 3,\n 196: 3,\n 197: 1,\n 198: 1,\n 199: 3,\n 201: 1,\n 207: 4,\n 210: 3,\n 211: 1,\n 212: 2,\n 213: 2,\n 214: 1,\n 215: 1,\n 225: 0,\n 229: 1,\n 230: 1,\n 231: 1,\n 232: 1,\n 233: 1,\n 234: 1,\n 235: 3,\n 244: 1,\n 247: 4,\n 252: 2,\n 257: 1,\n 261: 1,\n 271: 1,\n 273: 4,\n 274: 2,\n 275: 2,\n 276: 2,\n 277: 3,\n 278: 3,\n 279: 1,\n 280: 3,\n 281: 3,\n 282: 3,\n 283: 1,\n 284: 1,\n 285: 2,\n 286: 4,\n 287: 3,\n 288: 2,\n 289: 4,\n 290: 3,\n 291: 3,\n 292: 3,\n 293: 4,\n 294: 1,\n 295: 3,\n 296: 1,\n 297: 3,\n 298: 1,\n 299: 2,\n 300: 3,\n 301: 3,\n 302: 4,\n 303: 2,\n 304: 2,\n 305: 2,\n 306: 2,\n 307: 2,\n 308: 2,\n 309: 3,\n 310: 2,\n 311: 2,\n 312: 2,\n 313: 2,\n 314: 2,\n 315: 2,\n 316: 4,\n 325: 2,\n 326: 2,\n 327: 2,\n 328: 2,\n 331: 2,\n 332: 2,\n 337: 2,\n 342: 1,\n 343: 1,\n 346: 2,\n 347: 1,\n 350: 4,\n 351: 3,\n 352: 1,\n 353: 2,\n 360: 1,\n 368: 1,\n 369: 1,\n 370: 1,\n 371: 1,\n 372: 1,\n 373: 1,\n 374: 1,\n 375: 1,\n 376: 1,\n 377: 1,\n 378: 1,\n 382: 3,\n 385: 1,\n 392: 1,\n 393: 1,\n 396: 2,\n 397: 2,\n 398: 2,\n 399: 1,\n 400: 1,\n 401: 1,\n 402: 1,\n 403: 1,\n 404: 1,\n 405: 1,\n 406: 1,\n 407: 1,\n 408: 1,\n 409: 1,\n 410: 1,\n 414: 4,\n 415: 1,\n 416: 1,\n 417: 2,\n 420: 1,\n 421: 1,\n 422: 2,\n 424: 1,\n 425: 2,\n 426: 2,\n 427: 2,\n 428: 2,\n 430: 3,\n 438: 3,\n 439: 3,\n 440: 3,\n 443: 2,\n 444: 2,\n 445: 2,\n 446: 2,\n 447: 6,\n 448: 6,\n 449: 2,\n 450: 2,\n 464: 2,\n 468: 3,\n 476: 2,\n 479: 1,\n 480: 2,\n 65535: 0\n};\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f/*:string*/)/*:string*/ {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\tf = f.replace(/\\$'([^']|'')+'/g, function($$) { return $$.slice(1); });\n\tf = f.replace(/\\$([^\\]\\. #$]+)/g, function($$, $1) { return ($1).match(/^([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])?(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})?$/) ? $$ : $1; });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f/*:string*/)/*:string*/ {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r/*:string*/)/*:[string, string]*/ {\n\tr = r.replace(/\\$'([^']|'')+'/g, function($$) { return $$.slice(1); });\n\tr = r.replace(/\\$([^\\]\\. #$]+)/g, function($$, $1) { return ($1).match(/^([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])?(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})?$/) ? $$ : $1; });\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r/*:string*/)/*:string*/ {\n\treturn r.replace(/!/,\".\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\n\n/*global Map */\nvar browser_has_Map = typeof Map !== 'undefined';\n\nfunction get_sst_id(sst/*:SST*/, str/*:string*/, rev)/*:number*/ {\n\tvar i = 0, len = sst.length;\n\tif(rev) {\n\t\tif(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) {\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\n\t\t\tfor(; i < revarr.length; ++i) {\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\n\t\t\t}\n\t\t}\n\t} else for(; i < len; ++i) {\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\n\t}\n\tsst[len] = ({t:str}/*:any*/); sst.Count ++; sst.Unique ++;\n\tif(rev) {\n\t\tif(browser_has_Map) {\n\t\t\tif(!rev.has(str)) rev.set(str, []);\n\t\t\trev.get(str).push(len);\n\t\t} else {\n\t\t\tif(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = [];\n\t\t\trev[str].push(len);\n\t\t}\n\t}\n\treturn len;\n}\n\nfunction col_obj_w(C/*:number*/, col) {\n\tvar p = ({min:C+1,max:C+1}/*:any*/);\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\tif(col.level != null) { p.outlineLevel = p.level = col.level; }\n\treturn p;\n}\n\nfunction default_margins(margins/*:Margins*/, mode/*:?string*/) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left == null) margins.left = defs[0];\n\tif(margins.right == null) margins.right = defs[1];\n\tif(margins.top == null) margins.top = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles/*:Array*/, cell/*:Cell*/, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF__load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p/*:Cell*/, fmtid/*:number*/, fillid/*:?number*/, opts, themes, styles) {\n\ttry {\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(p.t === 'z' && !opts.cellStyles) return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\tif((!opts || opts.cellText !== false) && p.t !== 'z') try {\n\t\tif(table_fmt[fmtid] == null) SSF__load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = dd.toString(10);\n\t\t\t\telse p.w = SSF_general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF_general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF_format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws/*:Worksheet*/, sname/*:string*/, i/*:number*/) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws/*:Worksheet*/, s/*:string*/) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData[^>]*>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\nvar sheetprregex2= /<(?:\\w:)?sheetPr[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetPr)>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = ({}/*:any*/); if(opts.dense) s[\"!data\"] = [];\n\tvar refguess/*:Range*/ = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }/*:any*/);\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch/*:?any*/ = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\telse if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||\"\", s, wb, idx, styles, themes);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref && !(opts && opts.nodim)) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns/*:Array*/ = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2 autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges/*:Array*/ = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(opts && opts.nodim) refguess.s.c = refguess.s.r = 0;\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges/*:Array*/)/*:string*/ {\n\tif(merges.length === 0) return \"\";\n\tvar o = '';\n\tfor(var i = 0; i != merges.length; ++i) o += '';\n\treturn o + '';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));\n}\nfunction parse_ws_xml_sheetpr2(sheetPr/*:string*/, body/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tparse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(\">\")), s, wb, idx);\n}\nfunction write_ws_xml_sheetpr(ws, wb, idx, opts, o) {\n\tvar needed = false;\n\tvar props = {}, payload = null;\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\tneeded = true;\n\t\tprops.codeName = utf8write(escapexml(cname));\n\t}\n\n\tif(ws && ws[\"!outline\"]) {\n\t\tvar outlineprops = {summaryBelow:1, summaryRight:1};\n\t\tif(ws[\"!outline\"].above) outlineprops.summaryBelow = 0;\n\t\tif(ws[\"!outline\"].left) outlineprops.summaryRight = 0;\n\t\tpayload = (payload||\"\") + writextag('outlinePr', null, outlineprops);\n\t}\n\n\tif(!needed && !payload) return;\n\to[o.length] = (writextag('sheetPr', payload, props));\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nvar sheetprot_deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\nvar sheetprot_deftrue = [\n\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\"deleteColumns\", \"deleteRows\",\n\t\"sort\", \"autoFilter\", \"pivotTables\"\n];\nfunction write_ws_xml_protection(sp)/*:string*/ {\n\t// algorithmName, hashValue, saltValue, spinCount\n\tvar o = ({sheet:1}/*:any*/);\n\tsheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tsheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data/*:Array*/, rels) {\n\tvar dense = s[\"!data\"] != null;\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+unescapexml(val.location);\n\t\t} else {\n\t\t\tval.Target = \"#\" + unescapexml(val.location);\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_col(C) + encode_row(R);\n\t\t\tif(dense) {\n\t\t\t\tif(!s[\"!data\"][R]) s[\"!data\"][R] = [];\n\t\t\t\tif(!s[\"!data\"][R][C]) s[\"!data\"][R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[\"!data\"][R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin)/*:string*/ {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tif(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0);\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\nfunction write_ws_xml_cols(ws, cols)/*:string*/ {\n\tvar o = [\"\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data/*:string*/) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data, ws, wb, idx)/*:string*/ {\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = formula_quote_sheet_name(wb.SheetNames[idx]) + \"!\" + fix_range(ref); break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\treturn writextag(\"autoFilter\", null, {ref:ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/?>/g;\nfunction parse_ws_xml_sheetviews(data, wb/*:WBWBProps*/) {\n\tif(!wb.Views) wb.Views = [{}];\n\t(data.match(sviewregex)||[]).forEach(function(r/*:string*/, i/*:number*/) {\n\t\tvar tag = parsexmltag(r);\n\t\t// $FlowIgnore\n\t\tif(!wb.Views[i]) wb.Views[i] = {};\n\t\t// $FlowIgnore\n\t\tif(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale;\n\t\t// $FlowIgnore\n\t\tif(tag.rightToLeft && parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true;\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb)/*:string*/ {\n\tvar sview = ({workbookViewId:\"0\"}/*:any*/);\n\t// $FlowIgnore\n\tif((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string*/ {\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\tif((cell.v === undefined || cell.t === \"z\" && !(opts||{}).sheetStubs) && typeof cell.f !== \"string\" && typeof cell.z == \"undefined\") return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tif(cell.t !== \"z\") switch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = table_fmt[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = (cell.t == \"z\" || cell.v == null)? \"\" : writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/);\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tcase 'z': break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(cell.v.length > 32767) throw new Error(\"Text length must not exceed 32767 characters\");\n\t\t\tif(opts && opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\telse o.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(typeof cell.f == \"string\" && cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) {\n\t\tcell.l.display = escapexml(vv);\n\t\tws['!links'].push([ref, cell.l]);\n\t}\n\tif(cell.D) o.cm = 1;\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = /*#__PURE__*/(function() {\n\tvar cellregex = /<(?:\\w+:)?c[ \\/>]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata/*:string*/, s, opts, guess/*:Range*/, themes, styles) {\n\tvar ri = 0, x = \"\", cells/*:Array*/ = [], cref/*:?Array*/ = [], idx=0, i=0, cc=0, d=\"\", p/*:any*/;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = [];\n\tvar dense = s[\"!data\"] != null;\n\tvar rows/*:Array*/ = [], rowobj = {}, rowrite = false;\n\tvar sheetStubs = !!opts.sheetStubs;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tvar rstarti = 0;\n\t\touta: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) {\n\t\t\tcase \">\" /*62*/:\n\t\t\t\tif(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != \"/\") { ++ri; break outa; }\n\t\t\t\tif(opts && opts.cellStyles) {\n\t\t\t\t\t// TODO: avoid duplication\n\t\t\t\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\t\t\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\t\t\t\trowobj = {}; rowrite = false;\n\t\t\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\t\t\tif(tag.hidden && parsexmlbool(tag.hidden)) { rowrite = true; rowobj.hidden = true; }\n\t\t\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"<\" /*60*/: rstarti = ri; break;\n\t\t}\n\t\tif(rstarti >= ri) break;\n\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(!opts.nodim) {\n\t\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\t\t}\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden && parsexmlbool(tag.hidden)) { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != \"<\") break;\n\t\tcells = cells.slice(rslice);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"}/*:any*/);\n\n\t\t\tif((cref=d.match(match_v))!= null && /*::cref != null && */cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && /*::cref != null && */cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=unescapexml(utf8read(cref[1]), true);\n\t\t\t\t\tif(!opts.xlfn) p.f = _xlfn(p.f);\n\t\t\t\t\tif(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tvar ___f = unescapexml(utf8read(cref[1]));\n\t\t\t\t\t\tif(!opts.xlfn) ___f = _xlfn(___f);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? unescapexml(utf8read(p.v), true) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) {\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t} else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tcf = null;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(tag.cm && opts.xlmeta) {\n\t\t\t\tvar cm = (opts.xlmeta.Cell||[])[+tag.cm-1];\n\t\t\t\tif(cm && cm.type == 'XLDAPR') p.D = true;\n\t\t\t}\n\t\t\tvar _r;\n\t\t\tif(opts.nodim) {\n\t\t\t\t_r = decode_cell(tag.r);\n\t\t\t\tif(guess.s.r > _r.r) guess.s.r = _r.r;\n\t\t\t\tif(guess.e.r < _r.r) guess.e.r = _r.r;\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\t_r = decode_cell(tag.r);\n\t\t\t\tif(!s[\"!data\"][_r.r]) s[\"!data\"][_r.r] = [];\n\t\t\t\ts[\"!data\"][_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*//*::, rels*/)/*:string*/ {\n\tvar o/*:Array*/ = [], r/*:Array*/ = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols/*:Array*/ = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = ws[\"!data\"] != null;\n\tvar params = ({r:rr}/*:any*/), row/*:RowInfo*/, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[\"!data\"][R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr}/*:any*/);\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if(row.hpt) height = row.hpt;\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1}/*:any*/);\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nfunction write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('worksheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tvar _drawing = [];\n\n\twrite_ws_xml_sheetpr(ws, wb, idx, opts, o);\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(/*::(*/ws['!links']/*::||[])*/.length > 0) {\n\t\to[o.length] = \"\";\n\t\t/*::(*/ws['!links']/*::||[])*/.forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]}/*:any*/);\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\trel.display = l[1].display;\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\n\tif(ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']);\n\n\t/* pageSetup */\n\t/* headerFooter */\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(_drawing.length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!drawing'] = _drawing;\n\t}\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* legacyDrawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extLst */\n\n\tif(o.length>1) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({}/*:any*/);\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R/*:number*/, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tvar dense = ws[\"!data\"] != null;\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = dense ? (ws[\"!data\"][caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo(/*::data, length*/) {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\tvar f = data[data.l]; ++data.l;\n\tz.above = !(f & 0x40);\n\tz.left = !(f & 0x80);\n\t/* TODO: pull flags */\n\tdata.l += 18;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, outl, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tvar f = 0xC0;\n\tif(outl) {\n\t\tif(outl.above) f &= ~0x40;\n\t\tif(outl.left) f &= ~0x80;\n\t}\n\to.write_shift(1, f);\n\tfor(var i = 1; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\nfunction parse_BrtShortBlank(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\treturn [cell];\n}\nfunction write_BrtShortBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(4);\n\treturn write_XLSBShortCell(ncell, o);\n}\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\nfunction parse_BrtShortBool(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtShortBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(5);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtCellError(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v);\n\treturn o;\n}\nfunction parse_BrtShortError(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtShortError(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v);\n\to.write_shift(2, 0);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\nfunction parse_BrtShortIsst(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtShortIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortReal(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortRk(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtCellRString */\nfunction parse_BrtCellRString(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RichStr(data);\n\treturn [cell, value, 'is'];\n}\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tvar data = cell.v == null ? \"\" : String(cell.v);\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(data, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction parse_BrtShortSt(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtShortSt(cell, ncell, o) {\n\tvar data = cell.v == null ? \"\" : String(cell.v);\n\tif(o == null) o = new_buf(8 + 4 * data.length);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_XLWideString(data, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length/*::, opts*/) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/);\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.692 BrtPane */\nfunction parse_BrtPane(/*data, length, opts*/) {\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C/*:number*/, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\tif(col.level) flags |= (col.level << 8);\n\to.write_shift(2, flags); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data/*::, length, opts*/)/*:Margins*/ {\n\tvar margins = ({}/*:any*/);\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins/*:Margins*/, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data/*::, length, opts*/) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\", false], // fObjects\n\t\t[\"scenarios\", false], // fScenarios\n\t\t[\"formatCells\", true], // fFormatCells\n\t\t[\"formatColumns\", true], // fFormatColumns\n\t\t[\"formatRows\", true], // fFormatRows\n\t\t[\"insertColumns\", true], // fInsertColumns\n\t\t[\"insertRows\", true], // fInsertRows\n\t\t[\"insertHyperlinks\", true], // fInsertHyperlinks\n\t\t[\"deleteColumns\", true], // fDeleteColumns\n\t\t[\"deleteRows\", true], // fDeleteRows\n\t\t[\"selectLockedCells\", false], // fSelLockedCells\n\t\t[\"sort\", true], // fSort\n\t\t[\"autoFilter\", true], // fAutoFilter\n\t\t[\"pivotTables\", true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false] // fSelUnlockedCells\n\t].forEach(function(n) {\n\t\t/*:: if(o == null) throw \"unreachable\"; */\n\t\tif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\nfunction parse_BrtDVal(/*data, length, opts*/) {\n}\nfunction parse_BrtDVal14(/*data, length, opts*/) {\n}\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s/*:Worksheet*/ = ({}); if(opts.dense) s[\"!data\"] = [];\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar state/*:Array*/ = [];\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/;\n\tvar merges/*:Array*/ = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || /*::(*/wb/*:: :any)*/.supbooks || ([[]]/*:any*/);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtShortReal\", f:parse_BrtShortReal };\n\n\tvar cm, vm;\n\n\trecordhopper(data, function ws_parse(val, RR, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\tcase 0x000D: /* 'BrtShortRk' */\n\t\t\tcase 0x000E: /* 'BrtShortError' */\n\t\t\tcase 0x000F: /* 'BrtShortBool' */\n\t\t\tcase 0x0010: /* 'BrtShortReal' */\n\t\t\tcase 0x0011: /* 'BrtShortSt' */\n\t\t\tcase 0x0012: /* 'BrtShortIsst' */\n\t\t\tcase 0x003E: /* 'BrtCellRString' */\n\t\t\t\tp = ({t:val[2]}/*:any*/);\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t\tcase 'is': p.t = 's'; p.v = val[1].t; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[\"!data\"][R]) s[\"!data\"][R] = []; s[\"!data\"][R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\tcase 0x000C: /* 'BrtShortBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:void 0}/*:any*/);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[\"!data\"][R]) s[\"!data\"][R] = []; s[\"!data\"][R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x0031: { /* 'BrtCellMeta' */\n\t\t\t\tcm = ((opts.xlmeta||{}).Cell||[])[val-1];\n\t\t\t} break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[\"!data\"][R]) s[\"!data\"][R] = [];\n\t\t\t\t\t\tif(!s[\"!data\"][R][C]) s[\"!data\"][R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[\"!data\"][R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_col(C) + encode_row(R);\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[\"!data\"][R][C] : s[encode_col(C) + rr])/*:any*/);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[\"!data\"][R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tif(val.above || val.left) s['!outline'] = { above: val.above, left: val.left };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\t\tbreak;\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(RR.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, ws/*:Worksheet*/, last_seen/*:boolean*/)/*:boolean*/ {\n\tvar o/*:any*/ = ({r:R, c:C}/*:any*/);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tif(cell.v === undefined) return false;\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || table_fmt[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v == null ? \"\" : String(cell.v)/*:any*/), opts.revStrings);\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\tif(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));\n\t\t\t\telse write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\tif(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));\n\t\t\t\telse write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn true;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) {\n\t\t\t\tif(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));\n\t\t\t\telse write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));\n\t\t\t} else {\n\t\t\t\tif(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));\n\t\t\t\telse write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));\n\t\t\t} return true;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\tif(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));\n\t\t\telse write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));\n\t\t\treturn true;\n\t\tcase 'e':\n\t\t\to.t = \"e\";\n\t\t\tif(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));\n\t\t\telse write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));\n\t\t\treturn true;\n\t}\n\tif(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));\n\telse write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));\n\treturn true;\n}\n\nfunction write_CELLTABLE(ba, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols/*:Array*/ = [];\n\twrite_record(ba, 0x0091 /* BrtBeginSheetData */);\n\tvar dense = ws[\"!data\"] != null;\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tvar last_seen = false;\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[ref];\n\t\t\tif(!cell) { last_seen = false; continue; }\n\t\t\t/* write cell */\n\t\t\tlast_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);\n\t\t}\n\t}\n\twrite_record(ba, 0x0092 /* BrtEndSheetData */);\n}\n\nfunction write_MERGECELLS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); });\n\twrite_record(ba, 0x00B2 /* BrtEndMergeCells */);\n}\n\nfunction write_COLINFOS(ba, ws/*:Worksheet*//*::, idx:number, opts, wb:Workbook*/) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 0x0186 /* BrtBeginColInfos */);\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); });\n\twrite_record(ba, 0x0187 /* BrtEndColInfos */);\n}\n\nfunction write_IGNOREECS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */);\n\twrite_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 0x028A /* BrtEndCellIgnoreECs */);\n}\n\nfunction write_HLINKS(ba, ws/*:Worksheet*/, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws/*:Worksheet*/, idx/*:number*/, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws, wb, idx) {\n\tif(!ws['!autofilter']) return;\n\tvar data = ws['!autofilter'];\n\tvar ref = typeof data.ref === \"string\" ? data.ref : encode_range(data.ref);\n\n\t/* Update FilterDatabase defined name for the worksheet */\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = formula_quote_sheet_name(wb.SheetNames[idx]) + \"!\" + fix_range(ref); break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: formula_quote_sheet_name(wb.SheetNames[idx]) + \"!\" + fix_range(ref) });\n\n\twrite_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, 0x00A2 /* BrtEndAFilter */);\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, 0x0085 /* BrtBeginWsViews */);\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, 0x008A /* BrtEndWsView */);\n\t}\n\t/* *FRT */\n\twrite_record(ba, 0x0086 /* BrtEndWsViews */);\n}\n\nfunction write_WSFMTINFO(/*::ba, ws*/) {\n\t/* [ACWSFMTINFO] */\n\t// write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx/*:number*/, opts, wb/*:Workbook*/, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c/*:string*/ = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\tif(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline']));\n\twrite_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws, wb, idx);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\nfunction parse_Cache(data/*:string*/)/*:[Array, string, ?string]*/ {\n\tvar col/*:Array*/ = [];\n\tvar num = data.match(/^/);\n\tvar f;\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = num ? +q[2] : q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\t(data.match(/(.*?)<\\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,\"\"); });\n\n\treturn [col, nf, f];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data/*:?string*/, name/*:string*/, opts, rels, wb, csheet) {\n\tvar cs/*:Worksheet*/ = ((csheet || {\"!type\":\"chart\"})/*:any*/);\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_Cache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tif(cs[\"!data\"]) {\n\t\t\t\tif(!cs[\"!data\"][i]) cs[\"!data\"][i] = [];\n\t\t\t\tcs[\"!data\"][i][C] = {t:'n', v:n, z:cache[1] };\n\t\t\t} else cs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = ({'!type':\"chart\", '!drawel':null, '!rel':\"\"}/*:any*/);\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\n//function write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n//\tvar o = [XML_HEADER, writextag('chartsheet', null, {\n//\t\t'xmlns': XMLNS_main[0],\n//\t\t'xmlns:r': XMLNS.r\n//\t})];\n//\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n//\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n//\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n//\treturn o.join(\"\");\n//}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length/*:number*/) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!drawel':null, '!rel':\"\"};\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\n//function write_cs_bin(/*::idx:number, opts, wb:Workbook, rels*/) {\n//\tvar ba = buf_array();\n//\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n//\t/* [BrtCsProp] */\n//\t/* CSVIEWS */\n//\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n//\t/* [USERCSVIEWS] */\n//\t/* [BrtMargins] */\n//\t/* [BrtCsPageSetup] */\n//\t/* [HEADERFOOTER] */\n//\t/* BrtDrawing */\n//\t/* [BrtLegacyDrawing] */\n//\t/* [BrtLegacyDrawingHF] */\n//\t/* [BrtBkHim] */\n//\t/* [WEBPUBITEMS] */\n//\t/* FRTCHARTSHEET */\n//\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n//\treturn ba.end();\n//}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery', false, \"bool\"],\n\t['autoCompressPictures', true, \"bool\"],\n\t['backupFile', false, \"bool\"],\n\t['checkCompatibility', false, \"bool\"],\n\t['CodeName', ''],\n\t['date1904', false, \"bool\"],\n\t['defaultThemeVersion', 0, \"int\"],\n\t['filterPrivacy', false, \"bool\"],\n\t['hidePivotFieldList', false, \"bool\"],\n\t['promptedSolutions', false, \"bool\"],\n\t['publishItems', false, \"bool\"],\n\t['refreshAllConnections', false, \"bool\"],\n\t['saveExternalLinkValues', true, \"bool\"],\n\t['showBorderUnselectedTables', true, \"bool\"],\n\t['showInkAnnotation', true, \"bool\"],\n\t['showObjects', 'all'],\n\t['showPivotChartFilter', false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab', 0, \"int\"],\n\t['autoFilterDateGrouping', true, \"bool\"],\n\t['firstSheet', 0, \"int\"],\n\t['minimized', false, \"bool\"],\n\t['showHorizontalScroll', true, \"bool\"],\n\t['showSheetTabs', true, \"bool\"],\n\t['showVerticalScroll', true, \"bool\"],\n\t['tabRatio', 600, \"int\"],\n\t['visibility', 'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2 (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb/*:Workbook*/)/*:string*/ {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = /*#__PURE__*/\":][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n/*:string*/, safe/*:?boolean*/)/*:boolean*/ {\n\ttry {\n\t\tif(n == \"\") throw new Error(\"Sheet name cannot be blank\");\n\t\tif(n.length > 31) throw new Error(\"Sheet name cannot exceed 31 chars\");\n\t\tif(n.charCodeAt(0) == 0x27 || n.charCodeAt(n.length - 1) == 0x27) throw new Error(\"Sheet name cannot start or end with apostrophe (')\");\n\t\tif(n.toLowerCase() == \"history\") throw new Error(\"Sheet name cannot be 'History'\");\n\t\tbadchars.forEach(function(c) {\n\t\t\tif(n.indexOf(c) == -1) return;\n\t\t\tthrow new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t});\n\t} catch(e) { if(safe) return false; throw e; }\n\treturn true;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\twb.SheetNames.forEach(function(n, i) {\n\t\tvar ws = wb.Sheets[n];\n\t\tif(!ws || !ws[\"!autofilter\"]) return;\n\t\tvar DN;\n\t\tif(!wb.Workbook) wb.Workbook = {};\n\t\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\t\twb.Workbook.Names.forEach(function(dn) { if(dn.Name == \"_xlnm._FilterDatabase\" && dn.Sheet == i) DN = dn; });\n\t\tvar nn = formula_quote_sheet_name(n) + \"!\" + fix_range(ws[\"!autofilter\"].ref);\n\t\tif(DN) DN.Ref = nn;\n\t\telse wb.Workbook.Names.push({Name: \"_xlnm._FilterDatabase\", Sheet: i, Ref: nn});\n\t});\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts)/*:WorkbookFile*/ {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = /*::(*/{ AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" }/*::)*/;\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.1 bookViews CT_BookViews ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.30 workbookView CT_BookView + */\n\t\t\tcase '': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '': case '': break; // aggregate sheet\n\t\t\t/* 18.2.19 sheet CT_Sheet + */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '': break;\n\t\t\t/* 18.2.14 functionGroup CT_FunctionGroup + */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.8 externalReference CT_ExternalReference + */\n\t\t\tcase '': break;\n\t\t\tcase '': case '': pass=false; break;\n\t\t\t/* 18.2.5 definedName CT_DefinedName + */\n\t\t\tcase '': {\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.2 calcPr CT_CalcPr ? */\n\t\t\tcase '': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '': pass=true; break;\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase ' 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr/*:any*/ = ({codeName:\"ThisWorkbook\"}/*:any*/);\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\n\t\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]/*:any*/);\n\t\t});\n\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\tif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tvar i = 0;\n\n\t/* bookViews only written if first worksheet is hidden */\n\tif(sheets && sheets[0] && !!sheets[0].Hidden) {\n\t\to[o.length] = \"\";\n\t\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\t\tif(!sheets[i]) break;\n\t\t\tif(!sheets[i].Hidden) break;\n\t\t}\n\t\tif(i == wb.SheetNames.length) i = 0;\n\t\to[o.length] = '';\n\t\to[o.length] = \"\";\n\t}\n\n\to[o.length] = \"\";\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}/*:any*/);\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d/*:any*/ = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(n.Hidden) d.hidden = \"1\";\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', escapexml(n.Ref), d);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length/*:number*/) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length)/*:WBProps*/ {\n\tvar o/*:WBProps*/ = ({}/*:any*/);\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data/*:?WBProps*/, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.date1904) flags |= 0x01;\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tvar flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\tif(flags & 0x20) name = \"_xlnm.\" + name;\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula, Flags: flags}/*:any*/);\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\nfunction write_BrtName(name, wb) {\n\tvar o = new_buf(9);\n\tvar flags = 0;\n\tvar dname = name.Name;\n\tif(XLSLblBuiltIn.indexOf(dname) > -1) { flags |= 0x20; dname = dname.slice(6); }\n\to.write_shift(4, flags); // flags\n\to.write_shift(1, 0); // chKey\n\to.write_shift(4, name.Sheet == null ? 0xFFFFFFFF : name.Sheet);\n\n\tvar arr = [\n\t\to,\n\t\twrite_XLWideString(dname),\n\t\twrite_XLSBNameParsedFormula(name.Ref, wb)\n\t];\n\tif(name.Comment) arr.push(write_XLNullableWideString(name.Comment));\n\telse {\n\t\tvar x = new_buf(4);\n\t\tx.write_shift(4, 0xFFFFFFFF);\n\t\tarr.push(x);\n\t}\n\n\t// if macro (flags & 0x0F):\n\t// write_shift(4, 0xFFFFFFFF);\n\t// write_XLNullableWideString(description)\n\t// write_XLNullableWideString(helpTopic)\n\t// write_shift(4, 0xFFFFFFFF);\n\n\treturn bconcat(arr);\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts)/*:WorkbookFile*/ {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]/*:any*/);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ };\n\n\trecordhopper(data, function hopper_wb(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x008F: /* 'BrtBeginBundleShs' */\n\t\t\tcase 0x0298: /* 'BrtBeginFnGroup' */\n\t\t\tcase 0x0161: /* 'BrtBeginExternals' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb/*:any*/).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb/*::, opts*/) {\n\twrite_record(ba, 0x008F /* BrtBeginBundleShs */);\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, 0x0090 /* BrtEndBundleShs */);\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4, 28800);\n\to.write_shift(4, 17600);\n\to.write_shift(4, 500);\n\to.write_shift(4, idx);\n\to.write_shift(4, idx);\n\tvar flags = 0x78;\n\to.write_shift(1, flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb/*::, opts*/) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, 0x0087 /* BrtBeginBookViews */);\n\twrite_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, 0x0088 /* BrtEndBookViews */);\n}\n\nfunction write_BRTNAMES(ba, wb) {\n\tif(!wb.Workbook || !wb.Workbook.Names) return;\n\twb.Workbook.Names.forEach(function(name) { try {\n\t\tif(name.Flags & 0x0e) return; // TODO: macro name write\n\t\twrite_record(ba, 0x0027 /* BrtName */, write_BrtName(name, wb));\n\t} catch(e) {\n\t\tconsole.error(\"Could not serialize defined name \" + JSON.stringify(name));\n\t} });\n}\n\nfunction write_SELF_EXTERNS_xlsb(wb) {\n\tvar L = wb.SheetNames.length;\n\tvar o = new_buf(12 * L + 28);\n\to.write_shift(4, L + 2);\n\to.write_shift(4, 0); o.write_shift(4, -2); o.write_shift(4, -2); // workbook-level reference\n\to.write_shift(4, 0); o.write_shift(4, -1); o.write_shift(4, -1); // #REF!...\n\tfor(var i = 0; i < L; ++i) {\n\t\to.write_shift(4, 0); o.write_shift(4, i); o.write_shift(4, i);\n\t}\n\treturn o;\n}\nfunction write_EXTERNALS_xlsb(ba, wb) {\n\twrite_record(ba, 0x0161 /* BrtBeginExternals */);\n\twrite_record(ba, 0x0165 /* BrtSupSelf */);\n\twrite_record(ba, 0x016A /* BrtExternSheet */, write_SELF_EXTERNS_xlsb(wb, 0));\n\twrite_record(ba, 0x0162 /* BrtEndExternals */);\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0083 /* BrtBeginBook */);\n\twrite_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\twrite_EXTERNALS_xlsb(ba, wb);\n\tif((wb.Workbook||{}).Names) write_BRTNAMES(ba, wb);\n\t/* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, 0x0084 /* BrtEndBook */);\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name/*:string*/, opts)/*:WorkbookFile*/ {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data/*:any*/), opts);\n\treturn parse_wb_xml((data/*:any*/), opts);\n}\n\nfunction parse_ws(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name/*:string*/, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data/*:any*/), themes, opts);\n\treturn parse_sty_xml((data/*:any*/), themes, opts);\n}\n\nfunction parse_sst(data, name/*:string*/, opts)/*:SST*/ {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data/*:any*/), opts);\n\treturn parse_sst_xml((data/*:any*/), opts);\n}\n\nfunction parse_cmnt(data, name/*:string*/, opts)/*:Array*/ {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data/*:any*/), opts);\n\treturn parse_comments_xml((data/*:any*/), opts);\n}\n\nfunction parse_cc(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data/*:any*/), name, opts);\n\treturn parse_cc_xml((data/*:any*/), name, opts);\n}\n\nfunction parse_xlink(data, rel, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data/*:any*/), rel, name, opts);\n\treturn parse_xlink_xml((data/*:any*/), rel, name, opts);\n}\n\nfunction parse_xlmeta(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlmeta_bin((data/*:any*/), name, opts);\n\treturn parse_xlmeta_xml((data/*:any*/), name, opts);\n}\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nfunction xlml_parsexmltag(tag/*:string*/, skip_root/*:?boolean*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z/*:any*/ = ([]/*:any*/); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag/*:string*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*: {[string]:string}*/;\n\nfunction xlml_format(format, value)/*:string*/ {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF_general(value);\n\treturn SSF_format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val/*:string*/) {\n\tvar oval/*:any*/ = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell/*:Cell*/, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = cell.v.toString(10);\n\t\t\t\telse cell.w = SSF_general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF_general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {\n\t\t\tvar _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = (xml.indexOf(\"<\") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, \"\") : cell.r); // todo: BR etc\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault:\n\t\t\tif(xml == \"\" && ss == \"\") { cell.t = 'z'; }\n\t\t\telse { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); }\n\t\t\tbreak;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_prefix_dname(dname) {\n\treturn XLSLblBuiltIn.indexOf(\"_xlnm.\" + dname) > -1 ? \"_xlnm.\" + dname : dname;\n}\n\nfunction xlml_clean_comment(comment/*:any*/) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\n/* TODO: Everything */\nfunction parse_xlml_xml(d, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tmake_ssf();\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\topening = opening.replace(/\".*?\"/g, \"\");\n\tif((opening.indexOf(\">\") & 1023) > Math.min((opening.indexOf(\",\") & 1023), (opening.indexOf(\";\")&1023))) { var _o = dup(opts); _o.type = \"string\"; return PRN.to_workbook(str, _o); }\n\tif(opening.indexOf(\"= 0) ishtml = true; });\n\tif(ishtml) return html_to_workbook(str, opts);\n\n\tXLMLFormatMap = ({\n\t\t\"General Number\": \"General\",\n\t\t\"General Date\": table_fmt[22],\n\t\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\t\"Medium Date\": table_fmt[15],\n\t\t\"Short Date\": table_fmt[14],\n\t\t\"Long Time\": table_fmt[19],\n\t\t\"Medium Time\": table_fmt[18],\n\t\t\"Short Time\": table_fmt[20],\n\t\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\t\"Fixed\": table_fmt[2],\n\t\t\"Standard\": table_fmt[4],\n\t\t\"Percent\": table_fmt[10],\n\t\t\"Scientific\": table_fmt[11],\n\t\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n\t}/*:any*/);\n\n\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames/*:Array*/ = [], cursheet/*:Worksheet*/ = ({}), sheetname = \"\"; if(opts.dense) cursheet[\"!data\"] = [];\n\tvar cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag(''), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess/*:Range*/ = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges/*:Array*/ = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar rowinfo/*:Array*/ = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(//mg,\"\");\n\tvar raw_Rn3 = \"\";\n\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) {\n\t\tcase 'data' /*case 'Data'*/:\n\t\t\tif(raw_Rn3 == \"data\") {\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*\"Comment\"*/\"comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'cell' /*case 'Cell'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== void 0) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[\"!data\"][r]) cursheet[\"!data\"][r] = [];\n\t\t\t\t\t\tcursheet[\"!data\"][r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:unescapexml(cell.HRef)}/*:any*/);\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tif(cc > c || rr > r) merges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\t/*:: if(!cc) cc = 0; if(!rr) rr = 0; */\n\t\t\t\t\tfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[\"!data\"][cmd]) cursheet[\"!data\"][cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[\"!data\"][cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'row' /*case 'Row'*/:\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = ({}); if(opts.dense) cursheet[\"!data\"] = [];\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'table' /*case 'Table'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'style' /*case 'Style'*/:\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'numberformat' /*case 'NumberFormat'*/:\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF__load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'column' /*case 'Column'*/:\n\t\t\tif(state[state.length-1][0] !== /*'Table'*/'table') break;\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'namedrange' /*case 'NamedRange'*/:\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName/*:DefinedName*/ = ({\n\t\t\t\tName: xlml_prefix_dname(_NamedRange.Name),\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t}/*:any*/);\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\n\t\t\t/*:: if(Workbook.Names) */Workbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'namedcell' /*case 'NamedCell'*/: break;\n\t\tcase 'b' /*case 'B'*/: break;\n\t\tcase 'i' /*case 'I'*/: break;\n\t\tcase 'u' /*case 'U'*/: break;\n\t\tcase 's' /*case 'S'*/: break;\n\t\tcase 'em' /*case 'EM'*/: break;\n\t\tcase 'h2' /*case 'H2'*/: break;\n\t\tcase 'h3' /*case 'H3'*/: break;\n\t\tcase 'sub' /*case 'Sub'*/: break;\n\t\tcase 'sup' /*case 'Sup'*/: break;\n\t\tcase 'span' /*case 'Span'*/: break;\n\t\tcase 'alignment' /*case 'Alignment'*/:\n\t\t\tbreak;\n\t\tcase 'borders' /*case 'Borders'*/: break;\n\t\tcase 'border' /*case 'Border'*/: break;\n\t\tcase 'font' /*case 'Font'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'interior' /*case 'Interior'*/:\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'protection' /*case 'Protection'*/: break;\n\n\t\tcase 'author' /*case 'Author'*/:\n\t\tcase 'title' /*case 'Title'*/:\n\t\tcase 'description' /*case 'Description'*/:\n\t\tcase 'created' /*case 'Created'*/:\n\t\tcase 'keywords' /*case 'Keywords'*/:\n\t\tcase 'subject' /*case 'Subject'*/:\n\t\tcase 'category' /*case 'Category'*/:\n\t\tcase 'company' /*case 'Company'*/:\n\t\tcase 'lastauthor' /*case 'LastAuthor'*/:\n\t\tcase 'lastsaved' /*case 'LastSaved'*/:\n\t\tcase 'lastprinted' /*case 'LastPrinted'*/:\n\t\tcase 'version' /*case 'Version'*/:\n\t\tcase 'revision' /*case 'Revision'*/:\n\t\tcase 'totaltime' /*case 'TotalTime'*/:\n\t\tcase 'hyperlinkbase' /*case 'HyperlinkBase'*/:\n\t\tcase 'manager' /*case 'Manager'*/:\n\t\tcase 'contentstatus' /*case 'ContentStatus'*/:\n\t\tcase 'identifier' /*case 'Identifier'*/:\n\t\tcase 'language' /*case 'Language'*/:\n\t\tcase 'appname' /*case 'AppName'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'paragraphs' /*case 'Paragraphs'*/: break;\n\n\t\tcase 'styles' /*case 'Styles'*/:\n\t\tcase 'workbook' /*case 'Workbook'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'comment' /*case 'Comment'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author}/*:any*/);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'autofilter' /*case 'AutoFilter'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'name' /*case 'Name'*/: break;\n\n\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t} else {\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'pixelsperinch' /*case 'PixelsPerInch'*/:\n\t\t\tbreak;\n\t\tcase 'componentoptions' /*case 'ComponentOptions'*/:\n\t\tcase 'documentproperties' /*case 'DocumentProperties'*/:\n\t\tcase 'customdocumentproperties' /*case 'CustomDocumentProperties'*/:\n\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/:\n\t\tcase 'pivottable' /*case 'PivotTable'*/:\n\t\tcase 'pivotcache' /*case 'PivotCache'*/:\n\t\tcase 'names' /*case 'Names'*/:\n\t\tcase 'mapinfo' /*case 'MapInfo'*/:\n\t\tcase 'pagebreaks' /*case 'PageBreaks'*/:\n\t\tcase 'querytable' /*case 'QueryTable'*/:\n\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\tcase 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/:\n\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\tcase 'smarttagtype' /*case 'SmartTagType'*/:\n\t\tcase 'smarttags' /*case 'SmartTags'*/:\n\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/:\n\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/:\n\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tcase 'null' /*case 'Null'*/: break;\n\n\t\tdefault:\n\t\t\t/* FODS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"uof\"/*\"UOF\"*/) return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'allowpng' /*case 'AllowPNG'*/: break;\n\t\t\t\t\tcase 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break;\n\t\t\t\t\tcase 'downloadcomponents' /*case 'DownloadComponents'*/: break;\n\t\t\t\t\tcase 'locationofcomponents' /*case 'LocationOfComponents'*/: break;\n\t\t\t\t\tcase 'colors' /*case 'Colors'*/: break;\n\t\t\t\t\tcase 'color' /*case 'Color'*/: break;\n\t\t\t\t\tcase 'index' /*case 'Index'*/: break;\n\t\t\t\t\tcase 'rgb' /*case 'RGB'*/: break;\n\t\t\t\t\tcase 'targetscreensize' /*case 'TargetScreenSize'*/: break;\n\t\t\t\t\tcase 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'toolbar' /*case 'Toolbar'*/: break;\n\t\t\t\t\tcase 'hideofficelogo' /*case 'HideOfficeLogo'*/: break;\n\t\t\t\t\tcase 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break;\n\t\t\t\t\tcase 'label' /*case 'Label'*/: break;\n\t\t\t\t\tcase 'caption' /*case 'Caption'*/: break;\n\t\t\t\t\tcase 'maxheight' /*case 'MaxHeight'*/: break;\n\t\t\t\t\tcase 'maxwidth' /*case 'MaxWidth'*/: break;\n\t\t\t\t\tcase 'nextsheetnumber' /*case 'NextSheetNumber'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'date1904' /*case 'Date1904'*/:\n\t\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\t\tWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'windowheight' /*case 'WindowHeight'*/: break;\n\t\t\t\t\tcase 'windowwidth' /*case 'WindowWidth'*/: break;\n\t\t\t\t\tcase 'windowtopx' /*case 'WindowTopX'*/: break;\n\t\t\t\t\tcase 'windowtopy' /*case 'WindowTopY'*/: break;\n\t\t\t\t\tcase 'tabratio' /*case 'TabRatio'*/: break;\n\t\t\t\t\tcase 'protectstructure' /*case 'ProtectStructure'*/: break;\n\t\t\t\t\tcase 'protectwindow' /*case 'ProtectWindow'*/: break;\n\t\t\t\t\tcase 'protectwindows' /*case 'ProtectWindows'*/: break;\n\t\t\t\t\tcase 'activesheet' /*case 'ActiveSheet'*/: break;\n\t\t\t\t\tcase 'displayinknotes' /*case 'DisplayInkNotes'*/: break;\n\t\t\t\t\tcase 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break;\n\t\t\t\t\tcase 'supbook' /*case 'SupBook'*/: break;\n\t\t\t\t\tcase 'sheetname' /*case 'SheetName'*/: break;\n\t\t\t\t\tcase 'sheetindex' /*case 'SheetIndex'*/: break;\n\t\t\t\t\tcase 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break;\n\t\t\t\t\tcase 'sheetindexlast' /*case 'SheetIndexLast'*/: break;\n\t\t\t\t\tcase 'dll' /*case 'Dll'*/: break;\n\t\t\t\t\tcase 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break;\n\t\t\t\t\tcase 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break;\n\t\t\t\t\tcase 'iteration' /*case 'Iteration'*/: break;\n\t\t\t\t\tcase 'maxiterations' /*case 'MaxIterations'*/: break;\n\t\t\t\t\tcase 'maxchange' /*case 'MaxChange'*/: break;\n\t\t\t\t\tcase 'path' /*case 'Path'*/: break;\n\t\t\t\t\tcase 'xct' /*case 'Xct'*/: break;\n\t\t\t\t\tcase 'count' /*case 'Count'*/: break;\n\t\t\t\t\tcase 'selectedsheets' /*case 'SelectedSheets'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tcase 'uncalced' /*case 'Uncalced'*/: break;\n\t\t\t\t\tcase 'startupprompt' /*case 'StartupPrompt'*/: break;\n\t\t\t\t\tcase 'crn' /*case 'Crn'*/: break;\n\t\t\t\t\tcase 'externname' /*case 'ExternName'*/: break;\n\t\t\t\t\tcase 'formula' /*case 'Formula'*/: break;\n\t\t\t\t\tcase 'colfirst' /*case 'ColFirst'*/: break;\n\t\t\t\t\tcase 'collast' /*case 'ColLast'*/: break;\n\t\t\t\t\tcase 'wantadvise' /*case 'WantAdvise'*/: break;\n\t\t\t\t\tcase 'boolean' /*case 'Boolean'*/: break;\n\t\t\t\t\tcase 'error' /*case 'Error'*/: break;\n\t\t\t\t\tcase 'text' /*case 'Text'*/: break;\n\t\t\t\t\tcase 'ole' /*case 'OLE'*/: break;\n\t\t\t\t\tcase 'noautorecover' /*case 'NoAutoRecover'*/: break;\n\t\t\t\t\tcase 'publishobjects' /*case 'PublishObjects'*/: break;\n\t\t\t\t\tcase 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'refmoder1c1' /*case 'RefModeR1C1'*/: break;\n\t\t\t\t\tcase 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'owcversion' /*case 'OWCVersion'*/: break;\n\t\t\t\t\tcase 'height' /*case 'Height'*/: break;\n\t\t\t\t\tcase 'width' /*case 'Width'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'visible' /*case 'Visible'*/:\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'header' /*case 'Header'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'footer' /*case 'Footer'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'pagemargins' /*case 'PageMargins'*/:\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'displayrighttoleft' /*case 'DisplayRightToLeft'*/:\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'freezepanes' /*case 'FreezePanes'*/: break;\n\t\t\t\t\tcase 'frozennosplit' /*case 'FrozenNoSplit'*/: break;\n\n\t\t\t\t\tcase 'splithorizontal' /*case 'SplitHorizontal'*/:\n\t\t\t\t\tcase 'splitvertical' /*case 'SplitVertical'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'activerow' /*case 'ActiveRow'*/: break;\n\t\t\t\t\tcase 'activecol' /*case 'ActiveCol'*/: break;\n\t\t\t\t\tcase 'toprowbottompane' /*case 'TopRowBottomPane'*/: break;\n\t\t\t\t\tcase 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break;\n\n\t\t\t\t\tcase 'unsynced' /*case 'Unsynced'*/: break;\n\t\t\t\t\tcase 'print' /*case 'Print'*/: break;\n\t\t\t\t\tcase 'printerrors' /*case 'PrintErrors'*/: break;\n\t\t\t\t\tcase 'panes' /*case 'Panes'*/: break;\n\t\t\t\t\tcase 'scale' /*case 'Scale'*/: break;\n\t\t\t\t\tcase 'pane' /*case 'Pane'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'layout' /*case 'Layout'*/: break;\n\t\t\t\t\tcase 'pagesetup' /*case 'PageSetup'*/: break;\n\t\t\t\t\tcase 'selected' /*case 'Selected'*/: break;\n\t\t\t\t\tcase 'protectobjects' /*case 'ProtectObjects'*/: break;\n\t\t\t\t\tcase 'enableselection' /*case 'EnableSelection'*/: break;\n\t\t\t\t\tcase 'protectscenarios' /*case 'ProtectScenarios'*/: break;\n\t\t\t\t\tcase 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break;\n\t\t\t\t\tcase 'horizontalresolution' /*case 'HorizontalResolution'*/: break;\n\t\t\t\t\tcase 'verticalresolution' /*case 'VerticalResolution'*/: break;\n\t\t\t\t\tcase 'numberofcopies' /*case 'NumberofCopies'*/: break;\n\t\t\t\t\tcase 'activepane' /*case 'ActivePane'*/: break;\n\t\t\t\t\tcase 'toprowvisible' /*case 'TopRowVisible'*/: break;\n\t\t\t\t\tcase 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break;\n\t\t\t\t\tcase 'fittopage' /*case 'FitToPage'*/: break;\n\t\t\t\t\tcase 'rangeselection' /*case 'RangeSelection'*/: break;\n\t\t\t\t\tcase 'papersizeindex' /*case 'PaperSizeIndex'*/: break;\n\t\t\t\t\tcase 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'pagebreakzoom' /*case 'PageBreakZoom'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'fitwidth' /*case 'FitWidth'*/: break;\n\t\t\t\t\tcase 'fitheight' /*case 'FitHeight'*/: break;\n\t\t\t\t\tcase 'commentslayout' /*case 'CommentsLayout'*/: break;\n\t\t\t\t\tcase 'zoom' /*case 'Zoom'*/: break;\n\t\t\t\t\tcase 'lefttoright' /*case 'LeftToRight'*/: break;\n\t\t\t\t\tcase 'gridlines' /*case 'Gridlines'*/: break;\n\t\t\t\t\tcase 'allowsort' /*case 'AllowSort'*/: break;\n\t\t\t\t\tcase 'allowfilter' /*case 'AllowFilter'*/: break;\n\t\t\t\t\tcase 'allowinsertrows' /*case 'AllowInsertRows'*/: break;\n\t\t\t\t\tcase 'allowdeleterows' /*case 'AllowDeleteRows'*/: break;\n\t\t\t\t\tcase 'allowinsertcols' /*case 'AllowInsertCols'*/: break;\n\t\t\t\t\tcase 'allowdeletecols' /*case 'AllowDeleteCols'*/: break;\n\t\t\t\t\tcase 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break;\n\t\t\t\t\tcase 'allowformatcells' /*case 'AllowFormatCells'*/: break;\n\t\t\t\t\tcase 'allowsizecols' /*case 'AllowSizeCols'*/: break;\n\t\t\t\t\tcase 'allowsizerows' /*case 'AllowSizeRows'*/: break;\n\t\t\t\t\tcase 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].above = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'tabcolorindex' /*case 'TabColorIndex'*/: break;\n\t\t\t\t\tcase 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break;\n\t\t\t\t\tcase 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].left = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blackandwhite' /*case 'BlackAndWhite'*/: break;\n\t\t\t\t\tcase 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break;\n\t\t\t\t\tcase 'displaypagebreak' /*case 'DisplayPageBreak'*/: break;\n\t\t\t\t\tcase 'rowcolheadings' /*case 'RowColHeadings'*/: break;\n\t\t\t\t\tcase 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break;\n\t\t\t\t\tcase 'noorientation' /*case 'NoOrientation'*/: break;\n\t\t\t\t\tcase 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break;\n\t\t\t\t\tcase 'zeroheight' /*case 'ZeroHeight'*/: break;\n\t\t\t\t\tcase 'viewablerange' /*case 'ViewableRange'*/: break;\n\t\t\t\t\tcase 'selection' /*case 'Selection'*/: break;\n\t\t\t\t\tcase 'protectcontents' /*case 'ProtectContents'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break;\n\t\t\t\t\tcase 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break;\n\t\t\t\t\tcase 'compactrowindent' /*case 'CompactRowIndent'*/: break;\n\t\t\t\t\tcase 'location' /*case 'Location'*/: break;\n\t\t\t\t\tcase 'pivotfield' /*case 'PivotField'*/: break;\n\t\t\t\t\tcase 'orientation' /*case 'Orientation'*/: break;\n\t\t\t\t\tcase 'layoutform' /*case 'LayoutForm'*/: break;\n\t\t\t\t\tcase 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break;\n\t\t\t\t\tcase 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break;\n\t\t\t\t\tcase 'position' /*case 'Position'*/: break;\n\t\t\t\t\tcase 'pivotitem' /*case 'PivotItem'*/: break;\n\t\t\t\t\tcase 'datatype' /*case 'DataType'*/: break;\n\t\t\t\t\tcase 'datafield' /*case 'DataField'*/: break;\n\t\t\t\t\tcase 'sourcename' /*case 'SourceName'*/: break;\n\t\t\t\t\tcase 'parentfield' /*case 'ParentField'*/: break;\n\t\t\t\t\tcase 'ptlineitems' /*case 'PTLineItems'*/: break;\n\t\t\t\t\tcase 'ptlineitem' /*case 'PTLineItem'*/: break;\n\t\t\t\t\tcase 'countofsameitems' /*case 'CountOfSameItems'*/: break;\n\t\t\t\t\tcase 'item' /*case 'Item'*/: break;\n\t\t\t\t\tcase 'itemtype' /*case 'ItemType'*/: break;\n\t\t\t\t\tcase 'ptsource' /*case 'PTSource'*/: break;\n\t\t\t\t\tcase 'cacheindex' /*case 'CacheIndex'*/: break;\n\t\t\t\t\tcase 'consolidationreference' /*case 'ConsolidationReference'*/: break;\n\t\t\t\t\tcase 'filename' /*case 'FileName'*/: break;\n\t\t\t\t\tcase 'reference' /*case 'Reference'*/: break;\n\t\t\t\t\tcase 'nocolumngrand' /*case 'NoColumnGrand'*/: break;\n\t\t\t\t\tcase 'norowgrand' /*case 'NoRowGrand'*/: break;\n\t\t\t\t\tcase 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break;\n\t\t\t\t\tcase 'hidden' /*case 'Hidden'*/: break;\n\t\t\t\t\tcase 'subtotal' /*case 'Subtotal'*/: break;\n\t\t\t\t\tcase 'basefield' /*case 'BaseField'*/: break;\n\t\t\t\t\tcase 'mapchilditems' /*case 'MapChildItems'*/: break;\n\t\t\t\t\tcase 'function' /*case 'Function'*/: break;\n\t\t\t\t\tcase 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break;\n\t\t\t\t\tcase 'printsettitles' /*case 'PrintSetTitles'*/: break;\n\t\t\t\t\tcase 'mergelabels' /*case 'MergeLabels'*/: break;\n\t\t\t\t\tcase 'defaultversion' /*case 'DefaultVersion'*/: break;\n\t\t\t\t\tcase 'refreshname' /*case 'RefreshName'*/: break;\n\t\t\t\t\tcase 'refreshdate' /*case 'RefreshDate'*/: break;\n\t\t\t\t\tcase 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tcase 'versionlastupdate' /*case 'VersionLastUpdate'*/: break;\n\t\t\t\t\tcase 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break;\n\t\t\t\t\tcase 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'colbreaks' /*case 'ColBreaks'*/: break;\n\t\t\t\t\tcase 'colbreak' /*case 'ColBreak'*/: break;\n\t\t\t\t\tcase 'rowbreaks' /*case 'RowBreaks'*/: break;\n\t\t\t\t\tcase 'rowbreak' /*case 'RowBreak'*/: break;\n\t\t\t\t\tcase 'colstart' /*case 'ColStart'*/: break;\n\t\t\t\t\tcase 'colend' /*case 'ColEnd'*/: break;\n\t\t\t\t\tcase 'rowend' /*case 'RowEnd'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break;\n\t\t\t\t\tcase 'autofiltercondition' /*case 'AutoFilterCondition'*/: break;\n\t\t\t\t\tcase 'autofilterand' /*case 'AutoFilterAnd'*/: break;\n\t\t\t\t\tcase 'autofilteror' /*case 'AutoFilterOr'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'id' /*case 'Id'*/: break;\n\t\t\t\t\tcase 'autoformatfont' /*case 'AutoFormatFont'*/: break;\n\t\t\t\t\tcase 'autoformatpattern' /*case 'AutoFormatPattern'*/: break;\n\t\t\t\t\tcase 'querysource' /*case 'QuerySource'*/: break;\n\t\t\t\t\tcase 'querytype' /*case 'QueryType'*/: break;\n\t\t\t\t\tcase 'enableredirections' /*case 'EnableRedirections'*/: break;\n\t\t\t\t\tcase 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break;\n\t\t\t\t\tcase 'urlstring' /*case 'URLString'*/: break;\n\t\t\t\t\tcase 'htmltables' /*case 'HTMLTables'*/: break;\n\t\t\t\t\tcase 'connection' /*case 'Connection'*/: break;\n\t\t\t\t\tcase 'commandtext' /*case 'CommandText'*/: break;\n\t\t\t\t\tcase 'refreshinfo' /*case 'RefreshInfo'*/: break;\n\t\t\t\t\tcase 'notitles' /*case 'NoTitles'*/: break;\n\t\t\t\t\tcase 'nextid' /*case 'NextId'*/: break;\n\t\t\t\t\tcase 'columninfo' /*case 'ColumnInfo'*/: break;\n\t\t\t\t\tcase 'overwritecells' /*case 'OverwriteCells'*/: break;\n\t\t\t\t\tcase 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break;\n\t\t\t\t\tcase 'textwizardsettings' /*case 'TextWizardSettings'*/: break;\n\t\t\t\t\tcase 'source' /*case 'Source'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'decimal' /*case 'Decimal'*/: break;\n\t\t\t\t\tcase 'thousandseparator' /*case 'ThousandSeparator'*/: break;\n\t\t\t\t\tcase 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break;\n\t\t\t\t\tcase 'formatsettings' /*case 'FormatSettings'*/: break;\n\t\t\t\t\tcase 'fieldtype' /*case 'FieldType'*/: break;\n\t\t\t\t\tcase 'delimiters' /*case 'Delimiters'*/: break;\n\t\t\t\t\tcase 'tab' /*case 'Tab'*/: break;\n\t\t\t\t\tcase 'comma' /*case 'Comma'*/: break;\n\t\t\t\t\tcase 'autoformatname' /*case 'AutoFormatName'*/: break;\n\t\t\t\t\tcase 'versionlastedit' /*case 'VersionLastEdit'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\t\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'map' /*case 'Map'*/: break;\n\t\t\t\t\tcase 'entry' /*case 'Entry'*/: break;\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'xpath' /*case 'XPath'*/: break;\n\t\t\t\t\tcase 'field' /*case 'Field'*/: break;\n\t\t\t\t\tcase 'xsdtype' /*case 'XSDType'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'aggregate' /*case 'Aggregate'*/: break;\n\t\t\t\t\tcase 'elementtype' /*case 'ElementType'*/: break;\n\t\t\t\t\tcase 'attributetype' /*case 'AttributeType'*/: break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema' /*case 'schema'*/:\n\t\t\t\t\tcase 'element' /*case 'element'*/:\n\t\t\t\t\tcase 'complextype' /*case 'complexType'*/:\n\t\t\t\t\tcase 'datatype' /*case 'datatype'*/:\n\t\t\t\t\tcase 'all' /*case 'all'*/:\n\t\t\t\t\tcase 'attribute' /*case 'attribute'*/:\n\t\t\t\t\tcase 'extends' /*case 'extends'*/: break;\n\n\t\t\t\t\tcase 'row' /*case 'row'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'smarttags' /*case 'SmartTags'*/: break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(Rn[3].match(/!\\[CDATA/)) break;\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = dup(table_fmt);\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\tout.bookType = \"xlml\";\n\treturn out;\n}\n\nfunction parse_xlml(data/*:RawBytes|string*/, opts)/*:Workbook*/ {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64_decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n\t/*:: throw new Error(\"unsupported type \" + opts.type); */\n}\n\n/* TODO */\nfunction write_props_xlml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml(wb/*::, opts*/)/*:string*/ {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\tif((((wb||{}).Workbook||{}).WBProps||{}).date1904) return '';\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts)/*:string*/ {\n\t/* Styles */\n\tvar styles/*:Array*/ = [''];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload/*:Array*/ = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(table_fmt[xf.numFmtId])}));\n\n\t\tvar o = /*::(*/{\"ss:ID\": \"s\" + (21+id)}/*:: :any)*/;\n\t\tstyles.push(writextag('Style', payload.join(\"\"), o));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name.slice(0,6) == \"_xlnm.\" ? n.Name.slice(6) : n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb/*::, opts*/)/*:string*/ {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tvar o/*:Array*/ = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments/*:Array*/)/*:string*/ {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref/*:string*/, ws, opts, idx/*:number*/, wb, addr)/*:string*/{\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': if(!opts.sheetStubs) return \"\"; break;\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = cell.t == 'z' ? \"\" : ('' + _v + '');\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R/*:number*/, row)/*:string*/ {\n\tvar o = '';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws['!ref']) return \"\";\n\tvar range/*:Range*/ = safe_decode_range(ws['!ref']);\n\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\tvar o/*:Array*/ = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k/*:any*/ = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = ws[\"!data\"] != null;\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_col(C) + encode_row(R), cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx/*:number*/, opts, wb/*:Workbook*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t/*:string*/ = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"\" + t + \"\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"
      \" + t + \"
      \");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\tif(ws[\"!autofilter\"]) o.push('');\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts)/*:string*/ {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = dup(table_fmt);\n\tif(wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d/*:Array*/ = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns': XLMLNS.ss,\n\t\t'xmlns:o': XLMLNS.o,\n\t\t'xmlns:x': XLMLNS.x,\n\t\t'xmlns:ss': XLMLNS.ss,\n\t\t'xmlns:dt': XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj/*:CFBEntry*/) {\n\tvar v = {};\n\tvar o = obj.content;\n\t/*:: if(o == null) return; */\n\n\t/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m/*:number*/ = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue 0x003c\n\t- 2.4.59 ContinueBigName 0x043c\n\t- 2.4.60 ContinueFrt 0x0812\n\t- 2.4.61 ContinueFrt11 0x0875\n\t- 2.4.62 ContinueFrt12 0x087f\n*/\nvar CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ];\nfunction slurp(RecordType, R, blob, length/*:number*/, opts)/*:any*/ {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) {\n\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002F /* FilePass */: case 0x0195 /* FileLock */: case 0x00E1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */:\n\t\tbreak;\n\tcase 0x0085 /* BoundSheet8 */:\n\t\tbreak;\n\tdefault:\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt];\n\tvar start = 0;\n\twhile(next != null && CONTINUE_RT.indexOf(nextrt) > -1) {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(nextrt == 0x0812 /* ContinueFrt */) start += 4;\n\t\telse if(nextrt == 0x0875 || nextrt == 0x087f) {\n\t\t\tstart += 12;\n\t\t}\n\t\td = blob.slice(start,blob.l+4+l);\n\t\tbufs.push(d);\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs)/*:any*/);\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\tif(b.length < length) throw \"XLS Record 0x\" + RecordType.toString(16) + \" Truncated: \" + b.length + \" < \" + length;\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p/*:any*/, opts/*:ParseOpts*/, date1904/*:?boolean*/) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF_general(p.v);\n\t\t}\n\t\telse p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t)/*:Cell*/ {\n\treturn ({v:val, ixfe:ixfe, t:t}/*:any*/);\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options/*:ParseOpts*/)/*:Workbook*/ {\n\tvar wb = ({opts:{}}/*:any*/);\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out/*:Worksheet*/ = ({}/*:any*/); if(options.dense) out[\"!data\"] = [];\n\tvar Directory = {};\n\tvar range/*:Range*/ = ({}/*:any*/);\n\tvar last_formula = null;\n\tvar sst/*:SST*/ = ([]/*:any*/);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc/*:Cell*/, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar temp_val/*:Cell*/;\n\tvar country;\n\tvar XFs = []; /* XF records */\n\tvar palette/*:Array<[number, number, number]>*/ = [];\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }/*:any*/), wsprops = {};\n\tvar get_rgb = function getrgb(icv/*:number*/)/*:[number, number, number]*/ {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line/*:any*/, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({}/*:any*/);\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell/*:any*/, line/*:any*/, options/*:any*/) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[\"!data\"][cell.r]) out[\"!data\"][cell.r] = [];\n\t\t\t\tout[\"!data\"][cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t}/*:any*/);\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges/*:Array*/ = [];\n\tvar objects = [];\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\tvar supbooks = ([]/*:any*/); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_RT = 0;\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable/*:Array*/ = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl/*:?DefinedName*/;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_RT === 0x000a /* EOF */) break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(RecordType) == -1 /* BOF */) break;\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break;\n\t\t\t}\n\t\t\tlast_RT = RecordType;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){\n\t\t\t\t\tblob.l += 10; length -= 10;\n\t\t\t\t} // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val/*:any*/ = ({}/*:any*/);\n\t\t\tif(RecordType === 0x000a /* EOF */) val = /*::(*/R.f(blob, length, opts)/*:: :any)*/;\n\t\t\telse val = /*::(*/slurp(RecordType, R, blob, length, opts)/*:: :any)*/;\n\t\t\t/*:: val = (val:any); */\n\t\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* BOF */) continue;\n\t\t\tswitch(RecordType) {\n\t\t\t\tcase 0x0022 /* Date1904 */:\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\twb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 0x002f /* FilePass */:\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x005c /* WriteAccess */: opts.lastuser = val; break;\n\t\t\t\tcase 0x0042 /* CodePage */:\n\t\t\t\t\tvar cpval = Number(val);\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(cpval) {\n\t\t\t\t\t\tcase 0x5212: cpval = 1200; break;\n\t\t\t\t\t\tcase 0x8000: cpval = 10000; break;\n\t\t\t\t\t\tcase 0x8001: cpval = 1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = cpval);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x013d /* RRTabId */: opts.rrtabid = val; break;\n\t\t\t\tcase 0x0019 /* WinProtect */: opts.winlocked = val; break;\n\t\t\t\tcase 0x01b7 /* RefreshAll */: wb.opts[\"RefreshAll\"] = val; break;\n\t\t\t\tcase 0x000c /* CalcCount */: wb.opts[\"CalcCount\"] = val; break;\n\t\t\t\tcase 0x0010 /* CalcDelta */: wb.opts[\"CalcDelta\"] = val; break;\n\t\t\t\tcase 0x0011 /* CalcIter */: wb.opts[\"CalcIter\"] = val; break;\n\t\t\t\tcase 0x000d /* CalcMode */: wb.opts[\"CalcMode\"] = val; break;\n\t\t\t\tcase 0x000e /* CalcPrecision */: wb.opts[\"CalcPrecision\"] = val; break;\n\t\t\t\tcase 0x005f /* CalcSaveRecalc */: wb.opts[\"CalcSaveRecalc\"] = val; break;\n\t\t\t\tcase 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break;\n\t\t\t\tcase 0x0081 /* WsBool */:\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tif(!val.fBelow) (out[\"!outline\"] || (out[\"!outline\"] = {})).above = true;\n\t\t\t\t\tif(!val.fRight) (out[\"!outline\"] || (out[\"!outline\"] = {})).left = true;\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 0x00e0 /* XF */:\n\t\t\t\t\tXFs.push(val); break;\n\t\t\t\tcase 0x01ae /* SupBook */:\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0023: case 0x0223 /* ExternName */:\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0018: case 0x0218 /* Lbl */:\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t}/*:DefinedName*/);\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0016 /* ExternCount */: opts.ExternCount = val; break;\n\t\t\t\tcase 0x0017 /* ExternSheet */:\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 0x0894 /* NameCmt */:\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0012 /* Protect */: out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 0x0085 /* BoundSheet8 */: {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 0x000a /* EOF */: {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ({}/*:any*/); if(options.dense) out[\"!data\"] = [];\n\t\t\t\t} break;\n\t\t\t\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n\t\t\t\t\t\t/*::[*/0x0009/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0209/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0409/*::]*/:4\n\t\t\t\t\t}[RecordType] || {\n\t\t\t\t\t\t/*::[*/0x0200/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0300/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0400/*::]*/:4,\n\t\t\t\t\t\t/*::[*/0x0500/*::]*/:5,\n\t\t\t\t\t\t/*::[*/0x0600/*::]*/:8,\n\t\t\t\t\t\t/*::[*/0x0002/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0007/*::]*/:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\topts.biffguess = val.BIFFVer == 0;\n\t\t\t\t\tif(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); }\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tout = ({}/*:any*/); if(options.dense) out[\"!data\"] = [];\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\n\t\t\t\t\tif(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\t\t\t\tcase 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[\"!data\"][val.r]||[])[val.c]: out[encode_col(val.c) + encode_row(val.r)]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0005: case 0x0205 /* BoolErr */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x027e /* RK */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00bd /* MulRk */: {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0006: case 0x0206: case 0x0406 /* Formula */: {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[\"!data\"][_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x0007: case 0x0207 /* String */: {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 0x0021: case 0x0221 /* Array */: {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[\"!data\"][val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x04bc /* ShrFmla */: {\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[\"!data\"][last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fd /* LabelSst */:\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\tif(sst[val.isst].h) temp_val.h = sst[val.isst].h;\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0201 /* Blank */: if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00be /* MulBlank */: if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00d6 /* RString */:\n\t\t\t\tcase 0x0204 /* Label */: case 0x0004 /* BIFF2STR */:\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 0x0000: case 0x0200 /* Dimensions */: {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fc /* SST */: {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x041e /* Format */: { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF__load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF__load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 0x001e /* BIFF2FORMAT */: {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF__load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x00e5 /* MergeCells */: merges = merges.concat(val); break;\n\n\t\t\t\tcase 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 0x01b6 /* TxO */: opts.lastobj.TxO = val; break;\n\t\t\t\tcase 0x007f /* ImData */: opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 0x01b8 /* HLink */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[\"!data\"][rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0800 /* HLinkTooltip */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[\"!data\"][rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x001c /* Note */: {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[\"!data\"][val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) {\n\t\t\t\t\t\tif(options.dense) {\n\t\t\t\t\t\t\tif(!out[\"!data\"][val[0].r]) out[\"!data\"][val[0].r] = [];\n\t\t\t\t\t\t\tcc = out[\"!data\"][val[0].r][val[0].c] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\n\t\t\t\t\t}\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\t\t\t\tcase 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break;\n\t\t\t\tcase 0x007d /* ColInfo */: {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0208 /* Row */: {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0026 /* LeftMargin */:\n\t\t\t\tcase 0x0027 /* RightMargin */:\n\t\t\t\tcase 0x0028 /* TopMargin */:\n\t\t\t\tcase 0x0029 /* BottomMargin */:\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][({0x26: \"left\", 0x27:\"right\", 0x28:\"top\", 0x29:\"bottom\"})[RecordType]] = val;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00a1 /* Setup */: // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x023e /* Window2 */: // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0092 /* Palette */: palette = val; break;\n\t\t\t\tcase 0x0896 /* Theme */: themes = val; break;\n\t\t\t\tcase 0x008c /* Country */: country = val; break;\n\t\t\t\tcase 0x01ba /* CodeName */: {\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\tif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t}\n\t\t} else {\n\t\t\tif(!R) console.error(\"Missing Info for XLS Record 0x\" + RecordType.toString(16));\n\t\t\tblob.l += length;\n\t\t}\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(!wb.SheetNames.length && Preamble[\"!ref\"]) {\n\t\twb.SheetNames.push(\"Sheet1\");\n\t\t/*jshint -W069 */\n\t\tif(wb.Sheets) wb.Sheets[\"Sheet1\"] = Preamble;\n\t\t/*jshint +W069 */\n\t} else wb.Preamble=Preamble;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Strings = sst;\n\twb.SSF = dup(table_fmt);\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb/*:CFBContainer*/, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '/!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '/!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb/*:Workbook*/, cfb/*:CFBContainer*/) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tvar DocSummaryRE/*:{[key:string]:string}*/ = evert_key(DocSummaryPIDDSI, \"n\");\n\tvar SummaryRE/*:{[key:string]:string}*/ = evert_key(SummaryPIDSI, \"n\");\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb/*:any*/, options/*:?ParseOpts*/)/*:Workbook*/ {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj/*:?CFBEntry*/, WB/*:?any*/;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64_decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb}/*:any*/);\n}\nvar /*::CompObjP, */WorkbookP/*:: :Workbook = XLSX.utils.book_new(); */;\n\nvar _data/*:?any*/;\nif(CompObj) /*::CompObjP = */parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({}/*:any*/);\nelse/*:: if(cfb instanceof CFBContainer) */ {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Works 4 for Mac */\n\telse if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error(\"Unsupported Works 4 for Mac file\");\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(/*::((*/cfb/*:: :any):CFBContainer)*/, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:CFBContainer*/ {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n\t/*::[*/0x0000/*::]*/: { /* n:\"BrtRowHdr\", */ f:parse_BrtRowHdr },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BrtCellBlank\", */ f:parse_BrtCellBlank },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BrtCellRk\", */ f:parse_BrtCellRk },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BrtCellError\", */ f:parse_BrtCellError },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BrtCellBool\", */ f:parse_BrtCellBool },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BrtCellReal\", */ f:parse_BrtCellReal },\n\t/*::[*/0x0006/*::]*/: { /* n:\"BrtCellSt\", */ f:parse_BrtCellSt },\n\t/*::[*/0x0007/*::]*/: { /* n:\"BrtCellIsst\", */ f:parse_BrtCellIsst },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BrtFmlaString\", */ f:parse_BrtFmlaString },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BrtFmlaNum\", */ f:parse_BrtFmlaNum },\n\t/*::[*/0x000A/*::]*/: { /* n:\"BrtFmlaBool\", */ f:parse_BrtFmlaBool },\n\t/*::[*/0x000B/*::]*/: { /* n:\"BrtFmlaError\", */ f:parse_BrtFmlaError },\n\t/*::[*/0x000C/*::]*/: { /* n:\"BrtShortBlank\", */ f:parse_BrtShortBlank },\n\t/*::[*/0x000D/*::]*/: { /* n:\"BrtShortRk\", */ f:parse_BrtShortRk },\n\t/*::[*/0x000E/*::]*/: { /* n:\"BrtShortError\", */ f:parse_BrtShortError },\n\t/*::[*/0x000F/*::]*/: { /* n:\"BrtShortBool\", */ f:parse_BrtShortBool },\n\t/*::[*/0x0010/*::]*/: { /* n:\"BrtShortReal\", */ f:parse_BrtShortReal },\n\t/*::[*/0x0011/*::]*/: { /* n:\"BrtShortSt\", */ f:parse_BrtShortSt },\n\t/*::[*/0x0012/*::]*/: { /* n:\"BrtShortIsst\", */ f:parse_BrtShortIsst },\n\t/*::[*/0x0013/*::]*/: { /* n:\"BrtSSTItem\", */ f:parse_RichStr },\n\t/*::[*/0x0014/*::]*/: { /* n:\"BrtPCDIMissing\" */ },\n\t/*::[*/0x0015/*::]*/: { /* n:\"BrtPCDINumber\" */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"BrtPCDIBoolean\" */ },\n\t/*::[*/0x0017/*::]*/: { /* n:\"BrtPCDIError\" */ },\n\t/*::[*/0x0018/*::]*/: { /* n:\"BrtPCDIString\" */ },\n\t/*::[*/0x0019/*::]*/: { /* n:\"BrtPCDIDatetime\" */ },\n\t/*::[*/0x001A/*::]*/: { /* n:\"BrtPCDIIndex\" */ },\n\t/*::[*/0x001B/*::]*/: { /* n:\"BrtPCDIAMissing\" */ },\n\t/*::[*/0x001C/*::]*/: { /* n:\"BrtPCDIANumber\" */ },\n\t/*::[*/0x001D/*::]*/: { /* n:\"BrtPCDIABoolean\" */ },\n\t/*::[*/0x001E/*::]*/: { /* n:\"BrtPCDIAError\" */ },\n\t/*::[*/0x001F/*::]*/: { /* n:\"BrtPCDIAString\" */ },\n\t/*::[*/0x0020/*::]*/: { /* n:\"BrtPCDIADatetime\" */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"BrtPCRRecord\" */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"BrtPCRRecordDt\" */ },\n\t/*::[*/0x0023/*::]*/: { /* n:\"BrtFRTBegin\", */ T:1 },\n\t/*::[*/0x0024/*::]*/: { /* n:\"BrtFRTEnd\", */ T:-1 },\n\t/*::[*/0x0025/*::]*/: { /* n:\"BrtACBegin\", */ T:1 },\n\t/*::[*/0x0026/*::]*/: { /* n:\"BrtACEnd\", */ T:-1 },\n\t/*::[*/0x0027/*::]*/: { /* n:\"BrtName\", */ f:parse_BrtName },\n\t/*::[*/0x0028/*::]*/: { /* n:\"BrtIndexRowBlock\" */ },\n\t/*::[*/0x002A/*::]*/: { /* n:\"BrtIndexBlock\" */ },\n\t/*::[*/0x002B/*::]*/: { /* n:\"BrtFont\", */ f:parse_BrtFont },\n\t/*::[*/0x002C/*::]*/: { /* n:\"BrtFmt\", */ f:parse_BrtFmt },\n\t/*::[*/0x002D/*::]*/: { /* n:\"BrtFill\", */ f:parse_BrtFill },\n\t/*::[*/0x002E/*::]*/: { /* n:\"BrtBorder\", */ f:parse_BrtBorder },\n\t/*::[*/0x002F/*::]*/: { /* n:\"BrtXF\", */ f:parse_BrtXF },\n\t/*::[*/0x0030/*::]*/: { /* n:\"BrtStyle\" */ },\n\t/*::[*/0x0031/*::]*/: { /* n:\"BrtCellMeta\", */ f:parse_Int32LE },\n\t/*::[*/0x0032/*::]*/: { /* n:\"BrtValueMeta\" */ },\n\t/*::[*/0x0033/*::]*/: { /* n:\"BrtMdb\" */ f:parse_BrtMdb },\n\t/*::[*/0x0034/*::]*/: { /* n:\"BrtBeginFmd\", */ T:1 },\n\t/*::[*/0x0035/*::]*/: { /* n:\"BrtEndFmd\", */ T:-1 },\n\t/*::[*/0x0036/*::]*/: { /* n:\"BrtBeginMdx\", */ T:1 },\n\t/*::[*/0x0037/*::]*/: { /* n:\"BrtEndMdx\", */ T:-1 },\n\t/*::[*/0x0038/*::]*/: { /* n:\"BrtBeginMdxTuple\", */ T:1 },\n\t/*::[*/0x0039/*::]*/: { /* n:\"BrtEndMdxTuple\", */ T:-1 },\n\t/*::[*/0x003A/*::]*/: { /* n:\"BrtMdxMbrIstr\" */ },\n\t/*::[*/0x003B/*::]*/: { /* n:\"BrtStr\" */ },\n\t/*::[*/0x003C/*::]*/: { /* n:\"BrtColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x003E/*::]*/: { /* n:\"BrtCellRString\", */ f:parse_BrtCellRString },\n\t/*::[*/0x003F/*::]*/: { /* n:\"BrtCalcChainItem$\", */ f:parse_BrtCalcChainItem$ },\n\t/*::[*/0x0040/*::]*/: { /* n:\"BrtDVal\", */ f:parse_BrtDVal },\n\t/*::[*/0x0041/*::]*/: { /* n:\"BrtSxvcellNum\" */ },\n\t/*::[*/0x0042/*::]*/: { /* n:\"BrtSxvcellStr\" */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BrtSxvcellBool\" */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BrtSxvcellErr\" */ },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BrtSxvcellDate\" */ },\n\t/*::[*/0x0046/*::]*/: { /* n:\"BrtSxvcellNil\" */ },\n\t/*::[*/0x0080/*::]*/: { /* n:\"BrtFileVersion\" */ },\n\t/*::[*/0x0081/*::]*/: { /* n:\"BrtBeginSheet\", */ T:1 },\n\t/*::[*/0x0082/*::]*/: { /* n:\"BrtEndSheet\", */ T:-1 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"BrtBeginBook\", */ T:1, f:parsenoop, p:0 },\n\t/*::[*/0x0084/*::]*/: { /* n:\"BrtEndBook\", */ T:-1 },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BrtBeginWsViews\", */ T:1 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"BrtEndWsViews\", */ T:-1 },\n\t/*::[*/0x0087/*::]*/: { /* n:\"BrtBeginBookViews\", */ T:1 },\n\t/*::[*/0x0088/*::]*/: { /* n:\"BrtEndBookViews\", */ T:-1 },\n\t/*::[*/0x0089/*::]*/: { /* n:\"BrtBeginWsView\", */ T:1, f:parse_BrtBeginWsView },\n\t/*::[*/0x008A/*::]*/: { /* n:\"BrtEndWsView\", */ T:-1 },\n\t/*::[*/0x008B/*::]*/: { /* n:\"BrtBeginCsViews\", */ T:1 },\n\t/*::[*/0x008C/*::]*/: { /* n:\"BrtEndCsViews\", */ T:-1 },\n\t/*::[*/0x008D/*::]*/: { /* n:\"BrtBeginCsView\", */ T:1 },\n\t/*::[*/0x008E/*::]*/: { /* n:\"BrtEndCsView\", */ T:-1 },\n\t/*::[*/0x008F/*::]*/: { /* n:\"BrtBeginBundleShs\", */ T:1 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"BrtEndBundleShs\", */ T:-1 },\n\t/*::[*/0x0091/*::]*/: { /* n:\"BrtBeginSheetData\", */ T:1 },\n\t/*::[*/0x0092/*::]*/: { /* n:\"BrtEndSheetData\", */ T:-1 },\n\t/*::[*/0x0093/*::]*/: { /* n:\"BrtWsProp\", */ f:parse_BrtWsProp },\n\t/*::[*/0x0094/*::]*/: { /* n:\"BrtWsDim\", */ f:parse_BrtWsDim, p:16 },\n\t/*::[*/0x0097/*::]*/: { /* n:\"BrtPane\", */ f:parse_BrtPane },\n\t/*::[*/0x0098/*::]*/: { /* n:\"BrtSel\" */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"BrtWbProp\", */ f:parse_BrtWbProp },\n\t/*::[*/0x009A/*::]*/: { /* n:\"BrtWbFactoid\" */ },\n\t/*::[*/0x009B/*::]*/: { /* n:\"BrtFileRecover\" */ },\n\t/*::[*/0x009C/*::]*/: { /* n:\"BrtBundleSh\", */ f:parse_BrtBundleSh },\n\t/*::[*/0x009D/*::]*/: { /* n:\"BrtCalcProp\" */ },\n\t/*::[*/0x009E/*::]*/: { /* n:\"BrtBookView\" */ },\n\t/*::[*/0x009F/*::]*/: { /* n:\"BrtBeginSst\", */ T:1, f:parse_BrtBeginSst },\n\t/*::[*/0x00A0/*::]*/: { /* n:\"BrtEndSst\", */ T:-1 },\n\t/*::[*/0x00A1/*::]*/: { /* n:\"BrtBeginAFilter\", */ T:1, f:parse_UncheckedRfX },\n\t/*::[*/0x00A2/*::]*/: { /* n:\"BrtEndAFilter\", */ T:-1 },\n\t/*::[*/0x00A3/*::]*/: { /* n:\"BrtBeginFilterColumn\", */ T:1 },\n\t/*::[*/0x00A4/*::]*/: { /* n:\"BrtEndFilterColumn\", */ T:-1 },\n\t/*::[*/0x00A5/*::]*/: { /* n:\"BrtBeginFilters\", */ T:1 },\n\t/*::[*/0x00A6/*::]*/: { /* n:\"BrtEndFilters\", */ T:-1 },\n\t/*::[*/0x00A7/*::]*/: { /* n:\"BrtFilter\" */ },\n\t/*::[*/0x00A8/*::]*/: { /* n:\"BrtColorFilter\" */ },\n\t/*::[*/0x00A9/*::]*/: { /* n:\"BrtIconFilter\" */ },\n\t/*::[*/0x00AA/*::]*/: { /* n:\"BrtTop10Filter\" */ },\n\t/*::[*/0x00AB/*::]*/: { /* n:\"BrtDynamicFilter\" */ },\n\t/*::[*/0x00AC/*::]*/: { /* n:\"BrtBeginCustomFilters\", */ T:1 },\n\t/*::[*/0x00AD/*::]*/: { /* n:\"BrtEndCustomFilters\", */ T:-1 },\n\t/*::[*/0x00AE/*::]*/: { /* n:\"BrtCustomFilter\" */ },\n\t/*::[*/0x00AF/*::]*/: { /* n:\"BrtAFilterDateGroupItem\" */ },\n\t/*::[*/0x00B0/*::]*/: { /* n:\"BrtMergeCell\", */ f:parse_BrtMergeCell },\n\t/*::[*/0x00B1/*::]*/: { /* n:\"BrtBeginMergeCells\", */ T:1 },\n\t/*::[*/0x00B2/*::]*/: { /* n:\"BrtEndMergeCells\", */ T:-1 },\n\t/*::[*/0x00B3/*::]*/: { /* n:\"BrtBeginPivotCacheDef\", */ T:1 },\n\t/*::[*/0x00B4/*::]*/: { /* n:\"BrtEndPivotCacheDef\", */ T:-1 },\n\t/*::[*/0x00B5/*::]*/: { /* n:\"BrtBeginPCDFields\", */ T:1 },\n\t/*::[*/0x00B6/*::]*/: { /* n:\"BrtEndPCDFields\", */ T:-1 },\n\t/*::[*/0x00B7/*::]*/: { /* n:\"BrtBeginPCDField\", */ T:1 },\n\t/*::[*/0x00B8/*::]*/: { /* n:\"BrtEndPCDField\", */ T:-1 },\n\t/*::[*/0x00B9/*::]*/: { /* n:\"BrtBeginPCDSource\", */ T:1 },\n\t/*::[*/0x00BA/*::]*/: { /* n:\"BrtEndPCDSource\", */ T:-1 },\n\t/*::[*/0x00BB/*::]*/: { /* n:\"BrtBeginPCDSRange\", */ T:1 },\n\t/*::[*/0x00BC/*::]*/: { /* n:\"BrtEndPCDSRange\", */ T:-1 },\n\t/*::[*/0x00BD/*::]*/: { /* n:\"BrtBeginPCDFAtbl\", */ T:1 },\n\t/*::[*/0x00BE/*::]*/: { /* n:\"BrtEndPCDFAtbl\", */ T:-1 },\n\t/*::[*/0x00BF/*::]*/: { /* n:\"BrtBeginPCDIRun\", */ T:1 },\n\t/*::[*/0x00C0/*::]*/: { /* n:\"BrtEndPCDIRun\", */ T:-1 },\n\t/*::[*/0x00C1/*::]*/: { /* n:\"BrtBeginPivotCacheRecords\", */ T:1 },\n\t/*::[*/0x00C2/*::]*/: { /* n:\"BrtEndPivotCacheRecords\", */ T:-1 },\n\t/*::[*/0x00C3/*::]*/: { /* n:\"BrtBeginPCDHierarchies\", */ T:1 },\n\t/*::[*/0x00C4/*::]*/: { /* n:\"BrtEndPCDHierarchies\", */ T:-1 },\n\t/*::[*/0x00C5/*::]*/: { /* n:\"BrtBeginPCDHierarchy\", */ T:1 },\n\t/*::[*/0x00C6/*::]*/: { /* n:\"BrtEndPCDHierarchy\", */ T:-1 },\n\t/*::[*/0x00C7/*::]*/: { /* n:\"BrtBeginPCDHFieldsUsage\", */ T:1 },\n\t/*::[*/0x00C8/*::]*/: { /* n:\"BrtEndPCDHFieldsUsage\", */ T:-1 },\n\t/*::[*/0x00C9/*::]*/: { /* n:\"BrtBeginExtConnection\", */ T:1 },\n\t/*::[*/0x00CA/*::]*/: { /* n:\"BrtEndExtConnection\", */ T:-1 },\n\t/*::[*/0x00CB/*::]*/: { /* n:\"BrtBeginECDbProps\", */ T:1 },\n\t/*::[*/0x00CC/*::]*/: { /* n:\"BrtEndECDbProps\", */ T:-1 },\n\t/*::[*/0x00CD/*::]*/: { /* n:\"BrtBeginECOlapProps\", */ T:1 },\n\t/*::[*/0x00CE/*::]*/: { /* n:\"BrtEndECOlapProps\", */ T:-1 },\n\t/*::[*/0x00CF/*::]*/: { /* n:\"BrtBeginPCDSConsol\", */ T:1 },\n\t/*::[*/0x00D0/*::]*/: { /* n:\"BrtEndPCDSConsol\", */ T:-1 },\n\t/*::[*/0x00D1/*::]*/: { /* n:\"BrtBeginPCDSCPages\", */ T:1 },\n\t/*::[*/0x00D2/*::]*/: { /* n:\"BrtEndPCDSCPages\", */ T:-1 },\n\t/*::[*/0x00D3/*::]*/: { /* n:\"BrtBeginPCDSCPage\", */ T:1 },\n\t/*::[*/0x00D4/*::]*/: { /* n:\"BrtEndPCDSCPage\", */ T:-1 },\n\t/*::[*/0x00D5/*::]*/: { /* n:\"BrtBeginPCDSCPItem\", */ T:1 },\n\t/*::[*/0x00D6/*::]*/: { /* n:\"BrtEndPCDSCPItem\", */ T:-1 },\n\t/*::[*/0x00D7/*::]*/: { /* n:\"BrtBeginPCDSCSets\", */ T:1 },\n\t/*::[*/0x00D8/*::]*/: { /* n:\"BrtEndPCDSCSets\", */ T:-1 },\n\t/*::[*/0x00D9/*::]*/: { /* n:\"BrtBeginPCDSCSet\", */ T:1 },\n\t/*::[*/0x00DA/*::]*/: { /* n:\"BrtEndPCDSCSet\", */ T:-1 },\n\t/*::[*/0x00DB/*::]*/: { /* n:\"BrtBeginPCDFGroup\", */ T:1 },\n\t/*::[*/0x00DC/*::]*/: { /* n:\"BrtEndPCDFGroup\", */ T:-1 },\n\t/*::[*/0x00DD/*::]*/: { /* n:\"BrtBeginPCDFGItems\", */ T:1 },\n\t/*::[*/0x00DE/*::]*/: { /* n:\"BrtEndPCDFGItems\", */ T:-1 },\n\t/*::[*/0x00DF/*::]*/: { /* n:\"BrtBeginPCDFGRange\", */ T:1 },\n\t/*::[*/0x00E0/*::]*/: { /* n:\"BrtEndPCDFGRange\", */ T:-1 },\n\t/*::[*/0x00E1/*::]*/: { /* n:\"BrtBeginPCDFGDiscrete\", */ T:1 },\n\t/*::[*/0x00E2/*::]*/: { /* n:\"BrtEndPCDFGDiscrete\", */ T:-1 },\n\t/*::[*/0x00E3/*::]*/: { /* n:\"BrtBeginPCDSDTupleCache\", */ T:1 },\n\t/*::[*/0x00E4/*::]*/: { /* n:\"BrtEndPCDSDTupleCache\", */ T:-1 },\n\t/*::[*/0x00E5/*::]*/: { /* n:\"BrtBeginPCDSDTCEntries\", */ T:1 },\n\t/*::[*/0x00E6/*::]*/: { /* n:\"BrtEndPCDSDTCEntries\", */ T:-1 },\n\t/*::[*/0x00E7/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembers\", */ T:1 },\n\t/*::[*/0x00E8/*::]*/: { /* n:\"BrtEndPCDSDTCEMembers\", */ T:-1 },\n\t/*::[*/0x00E9/*::]*/: { /* n:\"BrtBeginPCDSDTCEMember\", */ T:1 },\n\t/*::[*/0x00EA/*::]*/: { /* n:\"BrtEndPCDSDTCEMember\", */ T:-1 },\n\t/*::[*/0x00EB/*::]*/: { /* n:\"BrtBeginPCDSDTCQueries\", */ T:1 },\n\t/*::[*/0x00EC/*::]*/: { /* n:\"BrtEndPCDSDTCQueries\", */ T:-1 },\n\t/*::[*/0x00ED/*::]*/: { /* n:\"BrtBeginPCDSDTCQuery\", */ T:1 },\n\t/*::[*/0x00EE/*::]*/: { /* n:\"BrtEndPCDSDTCQuery\", */ T:-1 },\n\t/*::[*/0x00EF/*::]*/: { /* n:\"BrtBeginPCDSDTCSets\", */ T:1 },\n\t/*::[*/0x00F0/*::]*/: { /* n:\"BrtEndPCDSDTCSets\", */ T:-1 },\n\t/*::[*/0x00F1/*::]*/: { /* n:\"BrtBeginPCDSDTCSet\", */ T:1 },\n\t/*::[*/0x00F2/*::]*/: { /* n:\"BrtEndPCDSDTCSet\", */ T:-1 },\n\t/*::[*/0x00F3/*::]*/: { /* n:\"BrtBeginPCDCalcItems\", */ T:1 },\n\t/*::[*/0x00F4/*::]*/: { /* n:\"BrtEndPCDCalcItems\", */ T:-1 },\n\t/*::[*/0x00F5/*::]*/: { /* n:\"BrtBeginPCDCalcItem\", */ T:1 },\n\t/*::[*/0x00F6/*::]*/: { /* n:\"BrtEndPCDCalcItem\", */ T:-1 },\n\t/*::[*/0x00F7/*::]*/: { /* n:\"BrtBeginPRule\", */ T:1 },\n\t/*::[*/0x00F8/*::]*/: { /* n:\"BrtEndPRule\", */ T:-1 },\n\t/*::[*/0x00F9/*::]*/: { /* n:\"BrtBeginPRFilters\", */ T:1 },\n\t/*::[*/0x00FA/*::]*/: { /* n:\"BrtEndPRFilters\", */ T:-1 },\n\t/*::[*/0x00FB/*::]*/: { /* n:\"BrtBeginPRFilter\", */ T:1 },\n\t/*::[*/0x00FC/*::]*/: { /* n:\"BrtEndPRFilter\", */ T:-1 },\n\t/*::[*/0x00FD/*::]*/: { /* n:\"BrtBeginPNames\", */ T:1 },\n\t/*::[*/0x00FE/*::]*/: { /* n:\"BrtEndPNames\", */ T:-1 },\n\t/*::[*/0x00FF/*::]*/: { /* n:\"BrtBeginPName\", */ T:1 },\n\t/*::[*/0x0100/*::]*/: { /* n:\"BrtEndPName\", */ T:-1 },\n\t/*::[*/0x0101/*::]*/: { /* n:\"BrtBeginPNPairs\", */ T:1 },\n\t/*::[*/0x0102/*::]*/: { /* n:\"BrtEndPNPairs\", */ T:-1 },\n\t/*::[*/0x0103/*::]*/: { /* n:\"BrtBeginPNPair\", */ T:1 },\n\t/*::[*/0x0104/*::]*/: { /* n:\"BrtEndPNPair\", */ T:-1 },\n\t/*::[*/0x0105/*::]*/: { /* n:\"BrtBeginECWebProps\", */ T:1 },\n\t/*::[*/0x0106/*::]*/: { /* n:\"BrtEndECWebProps\", */ T:-1 },\n\t/*::[*/0x0107/*::]*/: { /* n:\"BrtBeginEcWpTables\", */ T:1 },\n\t/*::[*/0x0108/*::]*/: { /* n:\"BrtEndECWPTables\", */ T:-1 },\n\t/*::[*/0x0109/*::]*/: { /* n:\"BrtBeginECParams\", */ T:1 },\n\t/*::[*/0x010A/*::]*/: { /* n:\"BrtEndECParams\", */ T:-1 },\n\t/*::[*/0x010B/*::]*/: { /* n:\"BrtBeginECParam\", */ T:1 },\n\t/*::[*/0x010C/*::]*/: { /* n:\"BrtEndECParam\", */ T:-1 },\n\t/*::[*/0x010D/*::]*/: { /* n:\"BrtBeginPCDKPIs\", */ T:1 },\n\t/*::[*/0x010E/*::]*/: { /* n:\"BrtEndPCDKPIs\", */ T:-1 },\n\t/*::[*/0x010F/*::]*/: { /* n:\"BrtBeginPCDKPI\", */ T:1 },\n\t/*::[*/0x0110/*::]*/: { /* n:\"BrtEndPCDKPI\", */ T:-1 },\n\t/*::[*/0x0111/*::]*/: { /* n:\"BrtBeginDims\", */ T:1 },\n\t/*::[*/0x0112/*::]*/: { /* n:\"BrtEndDims\", */ T:-1 },\n\t/*::[*/0x0113/*::]*/: { /* n:\"BrtBeginDim\", */ T:1 },\n\t/*::[*/0x0114/*::]*/: { /* n:\"BrtEndDim\", */ T:-1 },\n\t/*::[*/0x0115/*::]*/: { /* n:\"BrtIndexPartEnd\" */ },\n\t/*::[*/0x0116/*::]*/: { /* n:\"BrtBeginStyleSheet\", */ T:1 },\n\t/*::[*/0x0117/*::]*/: { /* n:\"BrtEndStyleSheet\", */ T:-1 },\n\t/*::[*/0x0118/*::]*/: { /* n:\"BrtBeginSXView\", */ T:1 },\n\t/*::[*/0x0119/*::]*/: { /* n:\"BrtEndSXVI\", */ T:-1 },\n\t/*::[*/0x011A/*::]*/: { /* n:\"BrtBeginSXVI\", */ T:1 },\n\t/*::[*/0x011B/*::]*/: { /* n:\"BrtBeginSXVIs\", */ T:1 },\n\t/*::[*/0x011C/*::]*/: { /* n:\"BrtEndSXVIs\", */ T:-1 },\n\t/*::[*/0x011D/*::]*/: { /* n:\"BrtBeginSXVD\", */ T:1 },\n\t/*::[*/0x011E/*::]*/: { /* n:\"BrtEndSXVD\", */ T:-1 },\n\t/*::[*/0x011F/*::]*/: { /* n:\"BrtBeginSXVDs\", */ T:1 },\n\t/*::[*/0x0120/*::]*/: { /* n:\"BrtEndSXVDs\", */ T:-1 },\n\t/*::[*/0x0121/*::]*/: { /* n:\"BrtBeginSXPI\", */ T:1 },\n\t/*::[*/0x0122/*::]*/: { /* n:\"BrtEndSXPI\", */ T:-1 },\n\t/*::[*/0x0123/*::]*/: { /* n:\"BrtBeginSXPIs\", */ T:1 },\n\t/*::[*/0x0124/*::]*/: { /* n:\"BrtEndSXPIs\", */ T:-1 },\n\t/*::[*/0x0125/*::]*/: { /* n:\"BrtBeginSXDI\", */ T:1 },\n\t/*::[*/0x0126/*::]*/: { /* n:\"BrtEndSXDI\", */ T:-1 },\n\t/*::[*/0x0127/*::]*/: { /* n:\"BrtBeginSXDIs\", */ T:1 },\n\t/*::[*/0x0128/*::]*/: { /* n:\"BrtEndSXDIs\", */ T:-1 },\n\t/*::[*/0x0129/*::]*/: { /* n:\"BrtBeginSXLI\", */ T:1 },\n\t/*::[*/0x012A/*::]*/: { /* n:\"BrtEndSXLI\", */ T:-1 },\n\t/*::[*/0x012B/*::]*/: { /* n:\"BrtBeginSXLIRws\", */ T:1 },\n\t/*::[*/0x012C/*::]*/: { /* n:\"BrtEndSXLIRws\", */ T:-1 },\n\t/*::[*/0x012D/*::]*/: { /* n:\"BrtBeginSXLICols\", */ T:1 },\n\t/*::[*/0x012E/*::]*/: { /* n:\"BrtEndSXLICols\", */ T:-1 },\n\t/*::[*/0x012F/*::]*/: { /* n:\"BrtBeginSXFormat\", */ T:1 },\n\t/*::[*/0x0130/*::]*/: { /* n:\"BrtEndSXFormat\", */ T:-1 },\n\t/*::[*/0x0131/*::]*/: { /* n:\"BrtBeginSXFormats\", */ T:1 },\n\t/*::[*/0x0132/*::]*/: { /* n:\"BrtEndSxFormats\", */ T:-1 },\n\t/*::[*/0x0133/*::]*/: { /* n:\"BrtBeginSxSelect\", */ T:1 },\n\t/*::[*/0x0134/*::]*/: { /* n:\"BrtEndSxSelect\", */ T:-1 },\n\t/*::[*/0x0135/*::]*/: { /* n:\"BrtBeginISXVDRws\", */ T:1 },\n\t/*::[*/0x0136/*::]*/: { /* n:\"BrtEndISXVDRws\", */ T:-1 },\n\t/*::[*/0x0137/*::]*/: { /* n:\"BrtBeginISXVDCols\", */ T:1 },\n\t/*::[*/0x0138/*::]*/: { /* n:\"BrtEndISXVDCols\", */ T:-1 },\n\t/*::[*/0x0139/*::]*/: { /* n:\"BrtEndSXLocation\", */ T:-1 },\n\t/*::[*/0x013A/*::]*/: { /* n:\"BrtBeginSXLocation\", */ T:1 },\n\t/*::[*/0x013B/*::]*/: { /* n:\"BrtEndSXView\", */ T:-1 },\n\t/*::[*/0x013C/*::]*/: { /* n:\"BrtBeginSXTHs\", */ T:1 },\n\t/*::[*/0x013D/*::]*/: { /* n:\"BrtEndSXTHs\", */ T:-1 },\n\t/*::[*/0x013E/*::]*/: { /* n:\"BrtBeginSXTH\", */ T:1 },\n\t/*::[*/0x013F/*::]*/: { /* n:\"BrtEndSXTH\", */ T:-1 },\n\t/*::[*/0x0140/*::]*/: { /* n:\"BrtBeginISXTHRws\", */ T:1 },\n\t/*::[*/0x0141/*::]*/: { /* n:\"BrtEndISXTHRws\", */ T:-1 },\n\t/*::[*/0x0142/*::]*/: { /* n:\"BrtBeginISXTHCols\", */ T:1 },\n\t/*::[*/0x0143/*::]*/: { /* n:\"BrtEndISXTHCols\", */ T:-1 },\n\t/*::[*/0x0144/*::]*/: { /* n:\"BrtBeginSXTDMPS\", */ T:1 },\n\t/*::[*/0x0145/*::]*/: { /* n:\"BrtEndSXTDMPs\", */ T:-1 },\n\t/*::[*/0x0146/*::]*/: { /* n:\"BrtBeginSXTDMP\", */ T:1 },\n\t/*::[*/0x0147/*::]*/: { /* n:\"BrtEndSXTDMP\", */ T:-1 },\n\t/*::[*/0x0148/*::]*/: { /* n:\"BrtBeginSXTHItems\", */ T:1 },\n\t/*::[*/0x0149/*::]*/: { /* n:\"BrtEndSXTHItems\", */ T:-1 },\n\t/*::[*/0x014A/*::]*/: { /* n:\"BrtBeginSXTHItem\", */ T:1 },\n\t/*::[*/0x014B/*::]*/: { /* n:\"BrtEndSXTHItem\", */ T:-1 },\n\t/*::[*/0x014C/*::]*/: { /* n:\"BrtBeginMetadata\", */ T:1 },\n\t/*::[*/0x014D/*::]*/: { /* n:\"BrtEndMetadata\", */ T:-1 },\n\t/*::[*/0x014E/*::]*/: { /* n:\"BrtBeginEsmdtinfo\", */ T:1 },\n\t/*::[*/0x014F/*::]*/: { /* n:\"BrtMdtinfo\", */ f:parse_BrtMdtinfo },\n\t/*::[*/0x0150/*::]*/: { /* n:\"BrtEndEsmdtinfo\", */ T:-1 },\n\t/*::[*/0x0151/*::]*/: { /* n:\"BrtBeginEsmdb\", */ f:parse_BrtBeginEsmdb, T:1 },\n\t/*::[*/0x0152/*::]*/: { /* n:\"BrtEndEsmdb\", */ T:-1 },\n\t/*::[*/0x0153/*::]*/: { /* n:\"BrtBeginEsfmd\", */ T:1 },\n\t/*::[*/0x0154/*::]*/: { /* n:\"BrtEndEsfmd\", */ T:-1 },\n\t/*::[*/0x0155/*::]*/: { /* n:\"BrtBeginSingleCells\", */ T:1 },\n\t/*::[*/0x0156/*::]*/: { /* n:\"BrtEndSingleCells\", */ T:-1 },\n\t/*::[*/0x0157/*::]*/: { /* n:\"BrtBeginList\", */ T:1 },\n\t/*::[*/0x0158/*::]*/: { /* n:\"BrtEndList\", */ T:-1 },\n\t/*::[*/0x0159/*::]*/: { /* n:\"BrtBeginListCols\", */ T:1 },\n\t/*::[*/0x015A/*::]*/: { /* n:\"BrtEndListCols\", */ T:-1 },\n\t/*::[*/0x015B/*::]*/: { /* n:\"BrtBeginListCol\", */ T:1 },\n\t/*::[*/0x015C/*::]*/: { /* n:\"BrtEndListCol\", */ T:-1 },\n\t/*::[*/0x015D/*::]*/: { /* n:\"BrtBeginListXmlCPr\", */ T:1 },\n\t/*::[*/0x015E/*::]*/: { /* n:\"BrtEndListXmlCPr\", */ T:-1 },\n\t/*::[*/0x015F/*::]*/: { /* n:\"BrtListCCFmla\" */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"BrtListTrFmla\" */ },\n\t/*::[*/0x0161/*::]*/: { /* n:\"BrtBeginExternals\", */ T:1 },\n\t/*::[*/0x0162/*::]*/: { /* n:\"BrtEndExternals\", */ T:-1 },\n\t/*::[*/0x0163/*::]*/: { /* n:\"BrtSupBookSrc\", */ f:parse_RelID},\n\t/*::[*/0x0165/*::]*/: { /* n:\"BrtSupSelf\" */ },\n\t/*::[*/0x0166/*::]*/: { /* n:\"BrtSupSame\" */ },\n\t/*::[*/0x0167/*::]*/: { /* n:\"BrtSupTabs\" */ },\n\t/*::[*/0x0168/*::]*/: { /* n:\"BrtBeginSupBook\", */ T:1 },\n\t/*::[*/0x0169/*::]*/: { /* n:\"BrtPlaceholderName\" */ },\n\t/*::[*/0x016A/*::]*/: { /* n:\"BrtExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x016B/*::]*/: { /* n:\"BrtExternTableStart\" */ },\n\t/*::[*/0x016C/*::]*/: { /* n:\"BrtExternTableEnd\" */ },\n\t/*::[*/0x016E/*::]*/: { /* n:\"BrtExternRowHdr\" */ },\n\t/*::[*/0x016F/*::]*/: { /* n:\"BrtExternCellBlank\" */ },\n\t/*::[*/0x0170/*::]*/: { /* n:\"BrtExternCellReal\" */ },\n\t/*::[*/0x0171/*::]*/: { /* n:\"BrtExternCellBool\" */ },\n\t/*::[*/0x0172/*::]*/: { /* n:\"BrtExternCellError\" */ },\n\t/*::[*/0x0173/*::]*/: { /* n:\"BrtExternCellString\" */ },\n\t/*::[*/0x0174/*::]*/: { /* n:\"BrtBeginEsmdx\", */ T:1 },\n\t/*::[*/0x0175/*::]*/: { /* n:\"BrtEndEsmdx\", */ T:-1 },\n\t/*::[*/0x0176/*::]*/: { /* n:\"BrtBeginMdxSet\", */ T:1 },\n\t/*::[*/0x0177/*::]*/: { /* n:\"BrtEndMdxSet\", */ T:-1 },\n\t/*::[*/0x0178/*::]*/: { /* n:\"BrtBeginMdxMbrProp\", */ T:1 },\n\t/*::[*/0x0179/*::]*/: { /* n:\"BrtEndMdxMbrProp\", */ T:-1 },\n\t/*::[*/0x017A/*::]*/: { /* n:\"BrtBeginMdxKPI\", */ T:1 },\n\t/*::[*/0x017B/*::]*/: { /* n:\"BrtEndMdxKPI\", */ T:-1 },\n\t/*::[*/0x017C/*::]*/: { /* n:\"BrtBeginEsstr\", */ T:1 },\n\t/*::[*/0x017D/*::]*/: { /* n:\"BrtEndEsstr\", */ T:-1 },\n\t/*::[*/0x017E/*::]*/: { /* n:\"BrtBeginPRFItem\", */ T:1 },\n\t/*::[*/0x017F/*::]*/: { /* n:\"BrtEndPRFItem\", */ T:-1 },\n\t/*::[*/0x0180/*::]*/: { /* n:\"BrtBeginPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0181/*::]*/: { /* n:\"BrtEndPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0182/*::]*/: { /* n:\"BrtBeginPivotCacheID\", */ T:1 },\n\t/*::[*/0x0183/*::]*/: { /* n:\"BrtEndPivotCacheID\", */ T:-1 },\n\t/*::[*/0x0184/*::]*/: { /* n:\"BrtBeginISXVIs\", */ T:1 },\n\t/*::[*/0x0185/*::]*/: { /* n:\"BrtEndISXVIs\", */ T:-1 },\n\t/*::[*/0x0186/*::]*/: { /* n:\"BrtBeginColInfos\", */ T:1 },\n\t/*::[*/0x0187/*::]*/: { /* n:\"BrtEndColInfos\", */ T:-1 },\n\t/*::[*/0x0188/*::]*/: { /* n:\"BrtBeginRwBrk\", */ T:1 },\n\t/*::[*/0x0189/*::]*/: { /* n:\"BrtEndRwBrk\", */ T:-1 },\n\t/*::[*/0x018A/*::]*/: { /* n:\"BrtBeginColBrk\", */ T:1 },\n\t/*::[*/0x018B/*::]*/: { /* n:\"BrtEndColBrk\", */ T:-1 },\n\t/*::[*/0x018C/*::]*/: { /* n:\"BrtBrk\" */ },\n\t/*::[*/0x018D/*::]*/: { /* n:\"BrtUserBookView\" */ },\n\t/*::[*/0x018E/*::]*/: { /* n:\"BrtInfo\" */ },\n\t/*::[*/0x018F/*::]*/: { /* n:\"BrtCUsr\" */ },\n\t/*::[*/0x0190/*::]*/: { /* n:\"BrtUsr\" */ },\n\t/*::[*/0x0191/*::]*/: { /* n:\"BrtBeginUsers\", */ T:1 },\n\t/*::[*/0x0193/*::]*/: { /* n:\"BrtEOF\" */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"BrtUCR\" */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"BrtRRInsDel\" */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"BrtRREndInsDel\" */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BrtRRMove\" */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"BrtRREndMove\" */ },\n\t/*::[*/0x0199/*::]*/: { /* n:\"BrtRRChgCell\" */ },\n\t/*::[*/0x019A/*::]*/: { /* n:\"BrtRREndChgCell\" */ },\n\t/*::[*/0x019B/*::]*/: { /* n:\"BrtRRHeader\" */ },\n\t/*::[*/0x019C/*::]*/: { /* n:\"BrtRRUserView\" */ },\n\t/*::[*/0x019D/*::]*/: { /* n:\"BrtRRRenSheet\" */ },\n\t/*::[*/0x019E/*::]*/: { /* n:\"BrtRRInsertSh\" */ },\n\t/*::[*/0x019F/*::]*/: { /* n:\"BrtRRDefName\" */ },\n\t/*::[*/0x01A0/*::]*/: { /* n:\"BrtRRNote\" */ },\n\t/*::[*/0x01A1/*::]*/: { /* n:\"BrtRRConflict\" */ },\n\t/*::[*/0x01A2/*::]*/: { /* n:\"BrtRRTQSIF\" */ },\n\t/*::[*/0x01A3/*::]*/: { /* n:\"BrtRRFormat\" */ },\n\t/*::[*/0x01A4/*::]*/: { /* n:\"BrtRREndFormat\" */ },\n\t/*::[*/0x01A5/*::]*/: { /* n:\"BrtRRAutoFmt\" */ },\n\t/*::[*/0x01A6/*::]*/: { /* n:\"BrtBeginUserShViews\", */ T:1 },\n\t/*::[*/0x01A7/*::]*/: { /* n:\"BrtBeginUserShView\", */ T:1 },\n\t/*::[*/0x01A8/*::]*/: { /* n:\"BrtEndUserShView\", */ T:-1 },\n\t/*::[*/0x01A9/*::]*/: { /* n:\"BrtEndUserShViews\", */ T:-1 },\n\t/*::[*/0x01AA/*::]*/: { /* n:\"BrtArrFmla\", */ f:parse_BrtArrFmla },\n\t/*::[*/0x01AB/*::]*/: { /* n:\"BrtShrFmla\", */ f:parse_BrtShrFmla },\n\t/*::[*/0x01AC/*::]*/: { /* n:\"BrtTable\" */ },\n\t/*::[*/0x01AD/*::]*/: { /* n:\"BrtBeginExtConnections\", */ T:1 },\n\t/*::[*/0x01AE/*::]*/: { /* n:\"BrtEndExtConnections\", */ T:-1 },\n\t/*::[*/0x01AF/*::]*/: { /* n:\"BrtBeginPCDCalcMems\", */ T:1 },\n\t/*::[*/0x01B0/*::]*/: { /* n:\"BrtEndPCDCalcMems\", */ T:-1 },\n\t/*::[*/0x01B1/*::]*/: { /* n:\"BrtBeginPCDCalcMem\", */ T:1 },\n\t/*::[*/0x01B2/*::]*/: { /* n:\"BrtEndPCDCalcMem\", */ T:-1 },\n\t/*::[*/0x01B3/*::]*/: { /* n:\"BrtBeginPCDHGLevels\", */ T:1 },\n\t/*::[*/0x01B4/*::]*/: { /* n:\"BrtEndPCDHGLevels\", */ T:-1 },\n\t/*::[*/0x01B5/*::]*/: { /* n:\"BrtBeginPCDHGLevel\", */ T:1 },\n\t/*::[*/0x01B6/*::]*/: { /* n:\"BrtEndPCDHGLevel\", */ T:-1 },\n\t/*::[*/0x01B7/*::]*/: { /* n:\"BrtBeginPCDHGLGroups\", */ T:1 },\n\t/*::[*/0x01B8/*::]*/: { /* n:\"BrtEndPCDHGLGroups\", */ T:-1 },\n\t/*::[*/0x01B9/*::]*/: { /* n:\"BrtBeginPCDHGLGroup\", */ T:1 },\n\t/*::[*/0x01BA/*::]*/: { /* n:\"BrtEndPCDHGLGroup\", */ T:-1 },\n\t/*::[*/0x01BB/*::]*/: { /* n:\"BrtBeginPCDHGLGMembers\", */ T:1 },\n\t/*::[*/0x01BC/*::]*/: { /* n:\"BrtEndPCDHGLGMembers\", */ T:-1 },\n\t/*::[*/0x01BD/*::]*/: { /* n:\"BrtBeginPCDHGLGMember\", */ T:1 },\n\t/*::[*/0x01BE/*::]*/: { /* n:\"BrtEndPCDHGLGMember\", */ T:-1 },\n\t/*::[*/0x01BF/*::]*/: { /* n:\"BrtBeginQSI\", */ T:1 },\n\t/*::[*/0x01C0/*::]*/: { /* n:\"BrtEndQSI\", */ T:-1 },\n\t/*::[*/0x01C1/*::]*/: { /* n:\"BrtBeginQSIR\", */ T:1 },\n\t/*::[*/0x01C2/*::]*/: { /* n:\"BrtEndQSIR\", */ T:-1 },\n\t/*::[*/0x01C3/*::]*/: { /* n:\"BrtBeginDeletedNames\", */ T:1 },\n\t/*::[*/0x01C4/*::]*/: { /* n:\"BrtEndDeletedNames\", */ T:-1 },\n\t/*::[*/0x01C5/*::]*/: { /* n:\"BrtBeginDeletedName\", */ T:1 },\n\t/*::[*/0x01C6/*::]*/: { /* n:\"BrtEndDeletedName\", */ T:-1 },\n\t/*::[*/0x01C7/*::]*/: { /* n:\"BrtBeginQSIFs\", */ T:1 },\n\t/*::[*/0x01C8/*::]*/: { /* n:\"BrtEndQSIFs\", */ T:-1 },\n\t/*::[*/0x01C9/*::]*/: { /* n:\"BrtBeginQSIF\", */ T:1 },\n\t/*::[*/0x01CA/*::]*/: { /* n:\"BrtEndQSIF\", */ T:-1 },\n\t/*::[*/0x01CB/*::]*/: { /* n:\"BrtBeginAutoSortScope\", */ T:1 },\n\t/*::[*/0x01CC/*::]*/: { /* n:\"BrtEndAutoSortScope\", */ T:-1 },\n\t/*::[*/0x01CD/*::]*/: { /* n:\"BrtBeginConditionalFormatting\", */ T:1 },\n\t/*::[*/0x01CE/*::]*/: { /* n:\"BrtEndConditionalFormatting\", */ T:-1 },\n\t/*::[*/0x01CF/*::]*/: { /* n:\"BrtBeginCFRule\", */ T:1 },\n\t/*::[*/0x01D0/*::]*/: { /* n:\"BrtEndCFRule\", */ T:-1 },\n\t/*::[*/0x01D1/*::]*/: { /* n:\"BrtBeginIconSet\", */ T:1 },\n\t/*::[*/0x01D2/*::]*/: { /* n:\"BrtEndIconSet\", */ T:-1 },\n\t/*::[*/0x01D3/*::]*/: { /* n:\"BrtBeginDatabar\", */ T:1 },\n\t/*::[*/0x01D4/*::]*/: { /* n:\"BrtEndDatabar\", */ T:-1 },\n\t/*::[*/0x01D5/*::]*/: { /* n:\"BrtBeginColorScale\", */ T:1 },\n\t/*::[*/0x01D6/*::]*/: { /* n:\"BrtEndColorScale\", */ T:-1 },\n\t/*::[*/0x01D7/*::]*/: { /* n:\"BrtCFVO\" */ },\n\t/*::[*/0x01D8/*::]*/: { /* n:\"BrtExternValueMeta\" */ },\n\t/*::[*/0x01D9/*::]*/: { /* n:\"BrtBeginColorPalette\", */ T:1 },\n\t/*::[*/0x01DA/*::]*/: { /* n:\"BrtEndColorPalette\", */ T:-1 },\n\t/*::[*/0x01DB/*::]*/: { /* n:\"BrtIndexedColor\" */ },\n\t/*::[*/0x01DC/*::]*/: { /* n:\"BrtMargins\", */ f:parse_BrtMargins },\n\t/*::[*/0x01DD/*::]*/: { /* n:\"BrtPrintOptions\" */ },\n\t/*::[*/0x01DE/*::]*/: { /* n:\"BrtPageSetup\" */ },\n\t/*::[*/0x01DF/*::]*/: { /* n:\"BrtBeginHeaderFooter\", */ T:1 },\n\t/*::[*/0x01E0/*::]*/: { /* n:\"BrtEndHeaderFooter\", */ T:-1 },\n\t/*::[*/0x01E1/*::]*/: { /* n:\"BrtBeginSXCrtFormat\", */ T:1 },\n\t/*::[*/0x01E2/*::]*/: { /* n:\"BrtEndSXCrtFormat\", */ T:-1 },\n\t/*::[*/0x01E3/*::]*/: { /* n:\"BrtBeginSXCrtFormats\", */ T:1 },\n\t/*::[*/0x01E4/*::]*/: { /* n:\"BrtEndSXCrtFormats\", */ T:-1 },\n\t/*::[*/0x01E5/*::]*/: { /* n:\"BrtWsFmtInfo\", */ f:parse_BrtWsFmtInfo },\n\t/*::[*/0x01E6/*::]*/: { /* n:\"BrtBeginMgs\", */ T:1 },\n\t/*::[*/0x01E7/*::]*/: { /* n:\"BrtEndMGs\", */ T:-1 },\n\t/*::[*/0x01E8/*::]*/: { /* n:\"BrtBeginMGMaps\", */ T:1 },\n\t/*::[*/0x01E9/*::]*/: { /* n:\"BrtEndMGMaps\", */ T:-1 },\n\t/*::[*/0x01EA/*::]*/: { /* n:\"BrtBeginMG\", */ T:1 },\n\t/*::[*/0x01EB/*::]*/: { /* n:\"BrtEndMG\", */ T:-1 },\n\t/*::[*/0x01EC/*::]*/: { /* n:\"BrtBeginMap\", */ T:1 },\n\t/*::[*/0x01ED/*::]*/: { /* n:\"BrtEndMap\", */ T:-1 },\n\t/*::[*/0x01EE/*::]*/: { /* n:\"BrtHLink\", */ f:parse_BrtHLink },\n\t/*::[*/0x01EF/*::]*/: { /* n:\"BrtBeginDCon\", */ T:1 },\n\t/*::[*/0x01F0/*::]*/: { /* n:\"BrtEndDCon\", */ T:-1 },\n\t/*::[*/0x01F1/*::]*/: { /* n:\"BrtBeginDRefs\", */ T:1 },\n\t/*::[*/0x01F2/*::]*/: { /* n:\"BrtEndDRefs\", */ T:-1 },\n\t/*::[*/0x01F3/*::]*/: { /* n:\"BrtDRef\" */ },\n\t/*::[*/0x01F4/*::]*/: { /* n:\"BrtBeginScenMan\", */ T:1 },\n\t/*::[*/0x01F5/*::]*/: { /* n:\"BrtEndScenMan\", */ T:-1 },\n\t/*::[*/0x01F6/*::]*/: { /* n:\"BrtBeginSct\", */ T:1 },\n\t/*::[*/0x01F7/*::]*/: { /* n:\"BrtEndSct\", */ T:-1 },\n\t/*::[*/0x01F8/*::]*/: { /* n:\"BrtSlc\" */ },\n\t/*::[*/0x01F9/*::]*/: { /* n:\"BrtBeginDXFs\", */ T:1 },\n\t/*::[*/0x01FA/*::]*/: { /* n:\"BrtEndDXFs\", */ T:-1 },\n\t/*::[*/0x01FB/*::]*/: { /* n:\"BrtDXF\" */ },\n\t/*::[*/0x01FC/*::]*/: { /* n:\"BrtBeginTableStyles\", */ T:1 },\n\t/*::[*/0x01FD/*::]*/: { /* n:\"BrtEndTableStyles\", */ T:-1 },\n\t/*::[*/0x01FE/*::]*/: { /* n:\"BrtBeginTableStyle\", */ T:1 },\n\t/*::[*/0x01FF/*::]*/: { /* n:\"BrtEndTableStyle\", */ T:-1 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"BrtTableStyleElement\" */ },\n\t/*::[*/0x0201/*::]*/: { /* n:\"BrtTableStyleClient\" */ },\n\t/*::[*/0x0202/*::]*/: { /* n:\"BrtBeginVolDeps\", */ T:1 },\n\t/*::[*/0x0203/*::]*/: { /* n:\"BrtEndVolDeps\", */ T:-1 },\n\t/*::[*/0x0204/*::]*/: { /* n:\"BrtBeginVolType\", */ T:1 },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BrtEndVolType\", */ T:-1 },\n\t/*::[*/0x0206/*::]*/: { /* n:\"BrtBeginVolMain\", */ T:1 },\n\t/*::[*/0x0207/*::]*/: { /* n:\"BrtEndVolMain\", */ T:-1 },\n\t/*::[*/0x0208/*::]*/: { /* n:\"BrtBeginVolTopic\", */ T:1 },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BrtEndVolTopic\", */ T:-1 },\n\t/*::[*/0x020A/*::]*/: { /* n:\"BrtVolSubtopic\" */ },\n\t/*::[*/0x020B/*::]*/: { /* n:\"BrtVolRef\" */ },\n\t/*::[*/0x020C/*::]*/: { /* n:\"BrtVolNum\" */ },\n\t/*::[*/0x020D/*::]*/: { /* n:\"BrtVolErr\" */ },\n\t/*::[*/0x020E/*::]*/: { /* n:\"BrtVolStr\" */ },\n\t/*::[*/0x020F/*::]*/: { /* n:\"BrtVolBool\" */ },\n\t/*::[*/0x0210/*::]*/: { /* n:\"BrtBeginCalcChain$\", */ T:1 },\n\t/*::[*/0x0211/*::]*/: { /* n:\"BrtEndCalcChain$\", */ T:-1 },\n\t/*::[*/0x0212/*::]*/: { /* n:\"BrtBeginSortState\", */ T:1 },\n\t/*::[*/0x0213/*::]*/: { /* n:\"BrtEndSortState\", */ T:-1 },\n\t/*::[*/0x0214/*::]*/: { /* n:\"BrtBeginSortCond\", */ T:1 },\n\t/*::[*/0x0215/*::]*/: { /* n:\"BrtEndSortCond\", */ T:-1 },\n\t/*::[*/0x0216/*::]*/: { /* n:\"BrtBookProtection\" */ },\n\t/*::[*/0x0217/*::]*/: { /* n:\"BrtSheetProtection\" */ },\n\t/*::[*/0x0218/*::]*/: { /* n:\"BrtRangeProtection\" */ },\n\t/*::[*/0x0219/*::]*/: { /* n:\"BrtPhoneticInfo\" */ },\n\t/*::[*/0x021A/*::]*/: { /* n:\"BrtBeginECTxtWiz\", */ T:1 },\n\t/*::[*/0x021B/*::]*/: { /* n:\"BrtEndECTxtWiz\", */ T:-1 },\n\t/*::[*/0x021C/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst\", */ T:1 },\n\t/*::[*/0x021D/*::]*/: { /* n:\"BrtEndECTWFldInfoLst\", */ T:-1 },\n\t/*::[*/0x021E/*::]*/: { /* n:\"BrtBeginECTwFldInfo\", */ T:1 },\n\t/*::[*/0x0224/*::]*/: { /* n:\"BrtFileSharing\" */ },\n\t/*::[*/0x0225/*::]*/: { /* n:\"BrtOleSize\" */ },\n\t/*::[*/0x0226/*::]*/: { /* n:\"BrtDrawing\", */ f:parse_RelID },\n\t/*::[*/0x0227/*::]*/: { /* n:\"BrtLegacyDrawing\" */ },\n\t/*::[*/0x0228/*::]*/: { /* n:\"BrtLegacyDrawingHF\" */ },\n\t/*::[*/0x0229/*::]*/: { /* n:\"BrtWebOpt\" */ },\n\t/*::[*/0x022A/*::]*/: { /* n:\"BrtBeginWebPubItems\", */ T:1 },\n\t/*::[*/0x022B/*::]*/: { /* n:\"BrtEndWebPubItems\", */ T:-1 },\n\t/*::[*/0x022C/*::]*/: { /* n:\"BrtBeginWebPubItem\", */ T:1 },\n\t/*::[*/0x022D/*::]*/: { /* n:\"BrtEndWebPubItem\", */ T:-1 },\n\t/*::[*/0x022E/*::]*/: { /* n:\"BrtBeginSXCondFmt\", */ T:1 },\n\t/*::[*/0x022F/*::]*/: { /* n:\"BrtEndSXCondFmt\", */ T:-1 },\n\t/*::[*/0x0230/*::]*/: { /* n:\"BrtBeginSXCondFmts\", */ T:1 },\n\t/*::[*/0x0231/*::]*/: { /* n:\"BrtEndSXCondFmts\", */ T:-1 },\n\t/*::[*/0x0232/*::]*/: { /* n:\"BrtBkHim\" */ },\n\t/*::[*/0x0234/*::]*/: { /* n:\"BrtColor\" */ },\n\t/*::[*/0x0235/*::]*/: { /* n:\"BrtBeginIndexedColors\", */ T:1 },\n\t/*::[*/0x0236/*::]*/: { /* n:\"BrtEndIndexedColors\", */ T:-1 },\n\t/*::[*/0x0239/*::]*/: { /* n:\"BrtBeginMRUColors\", */ T:1 },\n\t/*::[*/0x023A/*::]*/: { /* n:\"BrtEndMRUColors\", */ T:-1 },\n\t/*::[*/0x023C/*::]*/: { /* n:\"BrtMRUColor\" */ },\n\t/*::[*/0x023D/*::]*/: { /* n:\"BrtBeginDVals\", */ T:1 },\n\t/*::[*/0x023E/*::]*/: { /* n:\"BrtEndDVals\", */ T:-1 },\n\t/*::[*/0x0241/*::]*/: { /* n:\"BrtSupNameStart\" */ },\n\t/*::[*/0x0242/*::]*/: { /* n:\"BrtSupNameValueStart\" */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BrtSupNameValueEnd\" */ },\n\t/*::[*/0x0244/*::]*/: { /* n:\"BrtSupNameNum\" */ },\n\t/*::[*/0x0245/*::]*/: { /* n:\"BrtSupNameErr\" */ },\n\t/*::[*/0x0246/*::]*/: { /* n:\"BrtSupNameSt\" */ },\n\t/*::[*/0x0247/*::]*/: { /* n:\"BrtSupNameNil\" */ },\n\t/*::[*/0x0248/*::]*/: { /* n:\"BrtSupNameBool\" */ },\n\t/*::[*/0x0249/*::]*/: { /* n:\"BrtSupNameFmla\" */ },\n\t/*::[*/0x024A/*::]*/: { /* n:\"BrtSupNameBits\" */ },\n\t/*::[*/0x024B/*::]*/: { /* n:\"BrtSupNameEnd\" */ },\n\t/*::[*/0x024C/*::]*/: { /* n:\"BrtEndSupBook\", */ T:-1 },\n\t/*::[*/0x024D/*::]*/: { /* n:\"BrtCellSmartTagProperty\" */ },\n\t/*::[*/0x024E/*::]*/: { /* n:\"BrtBeginCellSmartTag\", */ T:1 },\n\t/*::[*/0x024F/*::]*/: { /* n:\"BrtEndCellSmartTag\", */ T:-1 },\n\t/*::[*/0x0250/*::]*/: { /* n:\"BrtBeginCellSmartTags\", */ T:1 },\n\t/*::[*/0x0251/*::]*/: { /* n:\"BrtEndCellSmartTags\", */ T:-1 },\n\t/*::[*/0x0252/*::]*/: { /* n:\"BrtBeginSmartTags\", */ T:1 },\n\t/*::[*/0x0253/*::]*/: { /* n:\"BrtEndSmartTags\", */ T:-1 },\n\t/*::[*/0x0254/*::]*/: { /* n:\"BrtSmartTagType\" */ },\n\t/*::[*/0x0255/*::]*/: { /* n:\"BrtBeginSmartTagTypes\", */ T:1 },\n\t/*::[*/0x0256/*::]*/: { /* n:\"BrtEndSmartTagTypes\", */ T:-1 },\n\t/*::[*/0x0257/*::]*/: { /* n:\"BrtBeginSXFilters\", */ T:1 },\n\t/*::[*/0x0258/*::]*/: { /* n:\"BrtEndSXFilters\", */ T:-1 },\n\t/*::[*/0x0259/*::]*/: { /* n:\"BrtBeginSXFILTER\", */ T:1 },\n\t/*::[*/0x025A/*::]*/: { /* n:\"BrtEndSXFilter\", */ T:-1 },\n\t/*::[*/0x025B/*::]*/: { /* n:\"BrtBeginFills\", */ T:1 },\n\t/*::[*/0x025C/*::]*/: { /* n:\"BrtEndFills\", */ T:-1 },\n\t/*::[*/0x025D/*::]*/: { /* n:\"BrtBeginCellWatches\", */ T:1 },\n\t/*::[*/0x025E/*::]*/: { /* n:\"BrtEndCellWatches\", */ T:-1 },\n\t/*::[*/0x025F/*::]*/: { /* n:\"BrtCellWatch\" */ },\n\t/*::[*/0x0260/*::]*/: { /* n:\"BrtBeginCRErrs\", */ T:1 },\n\t/*::[*/0x0261/*::]*/: { /* n:\"BrtEndCRErrs\", */ T:-1 },\n\t/*::[*/0x0262/*::]*/: { /* n:\"BrtCrashRecErr\" */ },\n\t/*::[*/0x0263/*::]*/: { /* n:\"BrtBeginFonts\", */ T:1 },\n\t/*::[*/0x0264/*::]*/: { /* n:\"BrtEndFonts\", */ T:-1 },\n\t/*::[*/0x0265/*::]*/: { /* n:\"BrtBeginBorders\", */ T:1 },\n\t/*::[*/0x0266/*::]*/: { /* n:\"BrtEndBorders\", */ T:-1 },\n\t/*::[*/0x0267/*::]*/: { /* n:\"BrtBeginFmts\", */ T:1 },\n\t/*::[*/0x0268/*::]*/: { /* n:\"BrtEndFmts\", */ T:-1 },\n\t/*::[*/0x0269/*::]*/: { /* n:\"BrtBeginCellXFs\", */ T:1 },\n\t/*::[*/0x026A/*::]*/: { /* n:\"BrtEndCellXFs\", */ T:-1 },\n\t/*::[*/0x026B/*::]*/: { /* n:\"BrtBeginStyles\", */ T:1 },\n\t/*::[*/0x026C/*::]*/: { /* n:\"BrtEndStyles\", */ T:-1 },\n\t/*::[*/0x0271/*::]*/: { /* n:\"BrtBigName\" */ },\n\t/*::[*/0x0272/*::]*/: { /* n:\"BrtBeginCellStyleXFs\", */ T:1 },\n\t/*::[*/0x0273/*::]*/: { /* n:\"BrtEndCellStyleXFs\", */ T:-1 },\n\t/*::[*/0x0274/*::]*/: { /* n:\"BrtBeginComments\", */ T:1 },\n\t/*::[*/0x0275/*::]*/: { /* n:\"BrtEndComments\", */ T:-1 },\n\t/*::[*/0x0276/*::]*/: { /* n:\"BrtBeginCommentAuthors\", */ T:1 },\n\t/*::[*/0x0277/*::]*/: { /* n:\"BrtEndCommentAuthors\", */ T:-1 },\n\t/*::[*/0x0278/*::]*/: { /* n:\"BrtCommentAuthor\", */ f:parse_BrtCommentAuthor },\n\t/*::[*/0x0279/*::]*/: { /* n:\"BrtBeginCommentList\", */ T:1 },\n\t/*::[*/0x027A/*::]*/: { /* n:\"BrtEndCommentList\", */ T:-1 },\n\t/*::[*/0x027B/*::]*/: { /* n:\"BrtBeginComment\", */ T:1, f:parse_BrtBeginComment},\n\t/*::[*/0x027C/*::]*/: { /* n:\"BrtEndComment\", */ T:-1 },\n\t/*::[*/0x027D/*::]*/: { /* n:\"BrtCommentText\", */ f:parse_BrtCommentText },\n\t/*::[*/0x027E/*::]*/: { /* n:\"BrtBeginOleObjects\", */ T:1 },\n\t/*::[*/0x027F/*::]*/: { /* n:\"BrtOleObject\" */ },\n\t/*::[*/0x0280/*::]*/: { /* n:\"BrtEndOleObjects\", */ T:-1 },\n\t/*::[*/0x0281/*::]*/: { /* n:\"BrtBeginSxrules\", */ T:1 },\n\t/*::[*/0x0282/*::]*/: { /* n:\"BrtEndSxRules\", */ T:-1 },\n\t/*::[*/0x0283/*::]*/: { /* n:\"BrtBeginActiveXControls\", */ T:1 },\n\t/*::[*/0x0284/*::]*/: { /* n:\"BrtActiveX\" */ },\n\t/*::[*/0x0285/*::]*/: { /* n:\"BrtEndActiveXControls\", */ T:-1 },\n\t/*::[*/0x0286/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembersSortBy\", */ T:1 },\n\t/*::[*/0x0288/*::]*/: { /* n:\"BrtBeginCellIgnoreECs\", */ T:1 },\n\t/*::[*/0x0289/*::]*/: { /* n:\"BrtCellIgnoreEC\" */ },\n\t/*::[*/0x028A/*::]*/: { /* n:\"BrtEndCellIgnoreECs\", */ T:-1 },\n\t/*::[*/0x028B/*::]*/: { /* n:\"BrtCsProp\", */ f:parse_BrtCsProp },\n\t/*::[*/0x028C/*::]*/: { /* n:\"BrtCsPageSetup\" */ },\n\t/*::[*/0x028D/*::]*/: { /* n:\"BrtBeginUserCsViews\", */ T:1 },\n\t/*::[*/0x028E/*::]*/: { /* n:\"BrtEndUserCsViews\", */ T:-1 },\n\t/*::[*/0x028F/*::]*/: { /* n:\"BrtBeginUserCsView\", */ T:1 },\n\t/*::[*/0x0290/*::]*/: { /* n:\"BrtEndUserCsView\", */ T:-1 },\n\t/*::[*/0x0291/*::]*/: { /* n:\"BrtBeginPcdSFCIEntries\", */ T:1 },\n\t/*::[*/0x0292/*::]*/: { /* n:\"BrtEndPCDSFCIEntries\", */ T:-1 },\n\t/*::[*/0x0293/*::]*/: { /* n:\"BrtPCDSFCIEntry\" */ },\n\t/*::[*/0x0294/*::]*/: { /* n:\"BrtBeginListParts\", */ T:1 },\n\t/*::[*/0x0295/*::]*/: { /* n:\"BrtListPart\" */ },\n\t/*::[*/0x0296/*::]*/: { /* n:\"BrtEndListParts\", */ T:-1 },\n\t/*::[*/0x0297/*::]*/: { /* n:\"BrtSheetCalcProp\" */ },\n\t/*::[*/0x0298/*::]*/: { /* n:\"BrtBeginFnGroup\", */ T:1 },\n\t/*::[*/0x0299/*::]*/: { /* n:\"BrtFnGroup\" */ },\n\t/*::[*/0x029A/*::]*/: { /* n:\"BrtEndFnGroup\", */ T:-1 },\n\t/*::[*/0x029B/*::]*/: { /* n:\"BrtSupAddin\" */ },\n\t/*::[*/0x029C/*::]*/: { /* n:\"BrtSXTDMPOrder\" */ },\n\t/*::[*/0x029D/*::]*/: { /* n:\"BrtCsProtection\" */ },\n\t/*::[*/0x029F/*::]*/: { /* n:\"BrtBeginWsSortMap\", */ T:1 },\n\t/*::[*/0x02A0/*::]*/: { /* n:\"BrtEndWsSortMap\", */ T:-1 },\n\t/*::[*/0x02A1/*::]*/: { /* n:\"BrtBeginRRSort\", */ T:1 },\n\t/*::[*/0x02A2/*::]*/: { /* n:\"BrtEndRRSort\", */ T:-1 },\n\t/*::[*/0x02A3/*::]*/: { /* n:\"BrtRRSortItem\" */ },\n\t/*::[*/0x02A4/*::]*/: { /* n:\"BrtFileSharingIso\" */ },\n\t/*::[*/0x02A5/*::]*/: { /* n:\"BrtBookProtectionIso\" */ },\n\t/*::[*/0x02A6/*::]*/: { /* n:\"BrtSheetProtectionIso\" */ },\n\t/*::[*/0x02A7/*::]*/: { /* n:\"BrtCsProtectionIso\" */ },\n\t/*::[*/0x02A8/*::]*/: { /* n:\"BrtRangeProtectionIso\" */ },\n\t/*::[*/0x02A9/*::]*/: { /* n:\"BrtDValList\" */ },\n\t/*::[*/0x0400/*::]*/: { /* n:\"BrtRwDescent\" */ },\n\t/*::[*/0x0401/*::]*/: { /* n:\"BrtKnownFonts\" */ },\n\t/*::[*/0x0402/*::]*/: { /* n:\"BrtBeginSXTupleSet\", */ T:1 },\n\t/*::[*/0x0403/*::]*/: { /* n:\"BrtEndSXTupleSet\", */ T:-1 },\n\t/*::[*/0x0404/*::]*/: { /* n:\"BrtBeginSXTupleSetHeader\", */ T:1 },\n\t/*::[*/0x0405/*::]*/: { /* n:\"BrtEndSXTupleSetHeader\", */ T:-1 },\n\t/*::[*/0x0406/*::]*/: { /* n:\"BrtSXTupleSetHeaderItem\" */ },\n\t/*::[*/0x0407/*::]*/: { /* n:\"BrtBeginSXTupleSetData\", */ T:1 },\n\t/*::[*/0x0408/*::]*/: { /* n:\"BrtEndSXTupleSetData\", */ T:-1 },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BrtBeginSXTupleSetRow\", */ T:1 },\n\t/*::[*/0x040A/*::]*/: { /* n:\"BrtEndSXTupleSetRow\", */ T:-1 },\n\t/*::[*/0x040B/*::]*/: { /* n:\"BrtSXTupleSetRowItem\" */ },\n\t/*::[*/0x040C/*::]*/: { /* n:\"BrtNameExt\" */ },\n\t/*::[*/0x040D/*::]*/: { /* n:\"BrtPCDH14\" */ },\n\t/*::[*/0x040E/*::]*/: { /* n:\"BrtBeginPCDCalcMem14\", */ T:1 },\n\t/*::[*/0x040F/*::]*/: { /* n:\"BrtEndPCDCalcMem14\", */ T:-1 },\n\t/*::[*/0x0410/*::]*/: { /* n:\"BrtSXTH14\" */ },\n\t/*::[*/0x0411/*::]*/: { /* n:\"BrtBeginSparklineGroup\", */ T:1 },\n\t/*::[*/0x0412/*::]*/: { /* n:\"BrtEndSparklineGroup\", */ T:-1 },\n\t/*::[*/0x0413/*::]*/: { /* n:\"BrtSparkline\" */ },\n\t/*::[*/0x0414/*::]*/: { /* n:\"BrtSXDI14\" */ },\n\t/*::[*/0x0415/*::]*/: { /* n:\"BrtWsFmtInfoEx14\" */ },\n\t/*::[*/0x0416/*::]*/: { /* n:\"BrtBeginConditionalFormatting14\", */ T:1 },\n\t/*::[*/0x0417/*::]*/: { /* n:\"BrtEndConditionalFormatting14\", */ T:-1 },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BrtBeginCFRule14\", */ T:1 },\n\t/*::[*/0x0419/*::]*/: { /* n:\"BrtEndCFRule14\", */ T:-1 },\n\t/*::[*/0x041A/*::]*/: { /* n:\"BrtCFVO14\" */ },\n\t/*::[*/0x041B/*::]*/: { /* n:\"BrtBeginDatabar14\", */ T:1 },\n\t/*::[*/0x041C/*::]*/: { /* n:\"BrtBeginIconSet14\", */ T:1 },\n\t/*::[*/0x041D/*::]*/: { /* n:\"BrtDVal14\", */ f: parse_BrtDVal14 },\n\t/*::[*/0x041E/*::]*/: { /* n:\"BrtBeginDVals14\", */ T:1 },\n\t/*::[*/0x041F/*::]*/: { /* n:\"BrtColor14\" */ },\n\t/*::[*/0x0420/*::]*/: { /* n:\"BrtBeginSparklines\", */ T:1 },\n\t/*::[*/0x0421/*::]*/: { /* n:\"BrtEndSparklines\", */ T:-1 },\n\t/*::[*/0x0422/*::]*/: { /* n:\"BrtBeginSparklineGroups\", */ T:1 },\n\t/*::[*/0x0423/*::]*/: { /* n:\"BrtEndSparklineGroups\", */ T:-1 },\n\t/*::[*/0x0425/*::]*/: { /* n:\"BrtSXVD14\" */ },\n\t/*::[*/0x0426/*::]*/: { /* n:\"BrtBeginSXView14\", */ T:1 },\n\t/*::[*/0x0427/*::]*/: { /* n:\"BrtEndSXView14\", */ T:-1 },\n\t/*::[*/0x0428/*::]*/: { /* n:\"BrtBeginSXView16\", */ T:1 },\n\t/*::[*/0x0429/*::]*/: { /* n:\"BrtEndSXView16\", */ T:-1 },\n\t/*::[*/0x042A/*::]*/: { /* n:\"BrtBeginPCD14\", */ T:1 },\n\t/*::[*/0x042B/*::]*/: { /* n:\"BrtEndPCD14\", */ T:-1 },\n\t/*::[*/0x042C/*::]*/: { /* n:\"BrtBeginExtConn14\", */ T:1 },\n\t/*::[*/0x042D/*::]*/: { /* n:\"BrtEndExtConn14\", */ T:-1 },\n\t/*::[*/0x042E/*::]*/: { /* n:\"BrtBeginSlicerCacheIDs\", */ T:1 },\n\t/*::[*/0x042F/*::]*/: { /* n:\"BrtEndSlicerCacheIDs\", */ T:-1 },\n\t/*::[*/0x0430/*::]*/: { /* n:\"BrtBeginSlicerCacheID\", */ T:1 },\n\t/*::[*/0x0431/*::]*/: { /* n:\"BrtEndSlicerCacheID\", */ T:-1 },\n\t/*::[*/0x0433/*::]*/: { /* n:\"BrtBeginSlicerCache\", */ T:1 },\n\t/*::[*/0x0434/*::]*/: { /* n:\"BrtEndSlicerCache\", */ T:-1 },\n\t/*::[*/0x0435/*::]*/: { /* n:\"BrtBeginSlicerCacheDef\", */ T:1 },\n\t/*::[*/0x0436/*::]*/: { /* n:\"BrtEndSlicerCacheDef\", */ T:-1 },\n\t/*::[*/0x0437/*::]*/: { /* n:\"BrtBeginSlicersEx\", */ T:1 },\n\t/*::[*/0x0438/*::]*/: { /* n:\"BrtEndSlicersEx\", */ T:-1 },\n\t/*::[*/0x0439/*::]*/: { /* n:\"BrtBeginSlicerEx\", */ T:1 },\n\t/*::[*/0x043A/*::]*/: { /* n:\"BrtEndSlicerEx\", */ T:-1 },\n\t/*::[*/0x043B/*::]*/: { /* n:\"BrtBeginSlicer\", */ T:1 },\n\t/*::[*/0x043C/*::]*/: { /* n:\"BrtEndSlicer\", */ T:-1 },\n\t/*::[*/0x043D/*::]*/: { /* n:\"BrtSlicerCachePivotTables\" */ },\n\t/*::[*/0x043E/*::]*/: { /* n:\"BrtBeginSlicerCacheOlapImpl\", */ T:1 },\n\t/*::[*/0x043F/*::]*/: { /* n:\"BrtEndSlicerCacheOlapImpl\", */ T:-1 },\n\t/*::[*/0x0440/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelsData\", */ T:1 },\n\t/*::[*/0x0441/*::]*/: { /* n:\"BrtEndSlicerCacheLevelsData\", */ T:-1 },\n\t/*::[*/0x0442/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelData\", */ T:1 },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BrtEndSlicerCacheLevelData\", */ T:-1 },\n\t/*::[*/0x0444/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRanges\", */ T:1 },\n\t/*::[*/0x0445/*::]*/: { /* n:\"BrtEndSlicerCacheSiRanges\", */ T:-1 },\n\t/*::[*/0x0446/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRange\", */ T:1 },\n\t/*::[*/0x0447/*::]*/: { /* n:\"BrtEndSlicerCacheSiRange\", */ T:-1 },\n\t/*::[*/0x0448/*::]*/: { /* n:\"BrtSlicerCacheOlapItem\" */ },\n\t/*::[*/0x0449/*::]*/: { /* n:\"BrtBeginSlicerCacheSelections\", */ T:1 },\n\t/*::[*/0x044A/*::]*/: { /* n:\"BrtSlicerCacheSelection\" */ },\n\t/*::[*/0x044B/*::]*/: { /* n:\"BrtEndSlicerCacheSelections\", */ T:-1 },\n\t/*::[*/0x044C/*::]*/: { /* n:\"BrtBeginSlicerCacheNative\", */ T:1 },\n\t/*::[*/0x044D/*::]*/: { /* n:\"BrtEndSlicerCacheNative\", */ T:-1 },\n\t/*::[*/0x044E/*::]*/: { /* n:\"BrtSlicerCacheNativeItem\" */ },\n\t/*::[*/0x044F/*::]*/: { /* n:\"BrtRangeProtection14\" */ },\n\t/*::[*/0x0450/*::]*/: { /* n:\"BrtRangeProtectionIso14\" */ },\n\t/*::[*/0x0451/*::]*/: { /* n:\"BrtCellIgnoreEC14\" */ },\n\t/*::[*/0x0457/*::]*/: { /* n:\"BrtList14\" */ },\n\t/*::[*/0x0458/*::]*/: { /* n:\"BrtCFIcon\" */ },\n\t/*::[*/0x0459/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x045A/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x045B/*::]*/: { /* n:\"BrtBeginSlicers\", */ T:1 },\n\t/*::[*/0x045C/*::]*/: { /* n:\"BrtEndSlicers\", */ T:-1 },\n\t/*::[*/0x045D/*::]*/: { /* n:\"BrtWbProp14\" */ },\n\t/*::[*/0x045E/*::]*/: { /* n:\"BrtBeginSXEdit\", */ T:1 },\n\t/*::[*/0x045F/*::]*/: { /* n:\"BrtEndSXEdit\", */ T:-1 },\n\t/*::[*/0x0460/*::]*/: { /* n:\"BrtBeginSXEdits\", */ T:1 },\n\t/*::[*/0x0461/*::]*/: { /* n:\"BrtEndSXEdits\", */ T:-1 },\n\t/*::[*/0x0462/*::]*/: { /* n:\"BrtBeginSXChange\", */ T:1 },\n\t/*::[*/0x0463/*::]*/: { /* n:\"BrtEndSXChange\", */ T:-1 },\n\t/*::[*/0x0464/*::]*/: { /* n:\"BrtBeginSXChanges\", */ T:1 },\n\t/*::[*/0x0465/*::]*/: { /* n:\"BrtEndSXChanges\", */ T:-1 },\n\t/*::[*/0x0466/*::]*/: { /* n:\"BrtSXTupleItems\" */ },\n\t/*::[*/0x0468/*::]*/: { /* n:\"BrtBeginSlicerStyle\", */ T:1 },\n\t/*::[*/0x0469/*::]*/: { /* n:\"BrtEndSlicerStyle\", */ T:-1 },\n\t/*::[*/0x046A/*::]*/: { /* n:\"BrtSlicerStyleElement\" */ },\n\t/*::[*/0x046B/*::]*/: { /* n:\"BrtBeginStyleSheetExt14\", */ T:1 },\n\t/*::[*/0x046C/*::]*/: { /* n:\"BrtEndStyleSheetExt14\", */ T:-1 },\n\t/*::[*/0x046D/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheID\", */ T:1 },\n\t/*::[*/0x046E/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheID\", */ T:-1 },\n\t/*::[*/0x046F/*::]*/: { /* n:\"BrtBeginConditionalFormattings\", */ T:1 },\n\t/*::[*/0x0470/*::]*/: { /* n:\"BrtEndConditionalFormattings\", */ T:-1 },\n\t/*::[*/0x0471/*::]*/: { /* n:\"BrtBeginPCDCalcMemExt\", */ T:1 },\n\t/*::[*/0x0472/*::]*/: { /* n:\"BrtEndPCDCalcMemExt\", */ T:-1 },\n\t/*::[*/0x0473/*::]*/: { /* n:\"BrtBeginPCDCalcMemsExt\", */ T:1 },\n\t/*::[*/0x0474/*::]*/: { /* n:\"BrtEndPCDCalcMemsExt\", */ T:-1 },\n\t/*::[*/0x0475/*::]*/: { /* n:\"BrtPCDField14\" */ },\n\t/*::[*/0x0476/*::]*/: { /* n:\"BrtBeginSlicerStyles\", */ T:1 },\n\t/*::[*/0x0477/*::]*/: { /* n:\"BrtEndSlicerStyles\", */ T:-1 },\n\t/*::[*/0x0478/*::]*/: { /* n:\"BrtBeginSlicerStyleElements\", */ T:1 },\n\t/*::[*/0x0479/*::]*/: { /* n:\"BrtEndSlicerStyleElements\", */ T:-1 },\n\t/*::[*/0x047A/*::]*/: { /* n:\"BrtCFRuleExt\" */ },\n\t/*::[*/0x047B/*::]*/: { /* n:\"BrtBeginSXCondFmt14\", */ T:1 },\n\t/*::[*/0x047C/*::]*/: { /* n:\"BrtEndSXCondFmt14\", */ T:-1 },\n\t/*::[*/0x047D/*::]*/: { /* n:\"BrtBeginSXCondFmts14\", */ T:1 },\n\t/*::[*/0x047E/*::]*/: { /* n:\"BrtEndSXCondFmts14\", */ T:-1 },\n\t/*::[*/0x0480/*::]*/: { /* n:\"BrtBeginSortCond14\", */ T:1 },\n\t/*::[*/0x0481/*::]*/: { /* n:\"BrtEndSortCond14\", */ T:-1 },\n\t/*::[*/0x0482/*::]*/: { /* n:\"BrtEndDVals14\", */ T:-1 },\n\t/*::[*/0x0483/*::]*/: { /* n:\"BrtEndIconSet14\", */ T:-1 },\n\t/*::[*/0x0484/*::]*/: { /* n:\"BrtEndDatabar14\", */ T:-1 },\n\t/*::[*/0x0485/*::]*/: { /* n:\"BrtBeginColorScale14\", */ T:1 },\n\t/*::[*/0x0486/*::]*/: { /* n:\"BrtEndColorScale14\", */ T:-1 },\n\t/*::[*/0x0487/*::]*/: { /* n:\"BrtBeginSxrules14\", */ T:1 },\n\t/*::[*/0x0488/*::]*/: { /* n:\"BrtEndSxrules14\", */ T:-1 },\n\t/*::[*/0x0489/*::]*/: { /* n:\"BrtBeginPRule14\", */ T:1 },\n\t/*::[*/0x048A/*::]*/: { /* n:\"BrtEndPRule14\", */ T:-1 },\n\t/*::[*/0x048B/*::]*/: { /* n:\"BrtBeginPRFilters14\", */ T:1 },\n\t/*::[*/0x048C/*::]*/: { /* n:\"BrtEndPRFilters14\", */ T:-1 },\n\t/*::[*/0x048D/*::]*/: { /* n:\"BrtBeginPRFilter14\", */ T:1 },\n\t/*::[*/0x048E/*::]*/: { /* n:\"BrtEndPRFilter14\", */ T:-1 },\n\t/*::[*/0x048F/*::]*/: { /* n:\"BrtBeginPRFItem14\", */ T:1 },\n\t/*::[*/0x0490/*::]*/: { /* n:\"BrtEndPRFItem14\", */ T:-1 },\n\t/*::[*/0x0491/*::]*/: { /* n:\"BrtBeginCellIgnoreECs14\", */ T:1 },\n\t/*::[*/0x0492/*::]*/: { /* n:\"BrtEndCellIgnoreECs14\", */ T:-1 },\n\t/*::[*/0x0493/*::]*/: { /* n:\"BrtDxf14\" */ },\n\t/*::[*/0x0494/*::]*/: { /* n:\"BrtBeginDxF14s\", */ T:1 },\n\t/*::[*/0x0495/*::]*/: { /* n:\"BrtEndDxf14s\", */ T:-1 },\n\t/*::[*/0x0499/*::]*/: { /* n:\"BrtFilter14\" */ },\n\t/*::[*/0x049A/*::]*/: { /* n:\"BrtBeginCustomFilters14\", */ T:1 },\n\t/*::[*/0x049C/*::]*/: { /* n:\"BrtCustomFilter14\" */ },\n\t/*::[*/0x049D/*::]*/: { /* n:\"BrtIconFilter14\" */ },\n\t/*::[*/0x049E/*::]*/: { /* n:\"BrtPivotCacheConnectionName\" */ },\n\t/*::[*/0x0800/*::]*/: { /* n:\"BrtBeginDecoupledPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0801/*::]*/: { /* n:\"BrtEndDecoupledPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0802/*::]*/: { /* n:\"BrtDecoupledPivotCacheID\" */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"BrtBeginPivotTableRefs\", */ T:1 },\n\t/*::[*/0x0804/*::]*/: { /* n:\"BrtEndPivotTableRefs\", */ T:-1 },\n\t/*::[*/0x0805/*::]*/: { /* n:\"BrtPivotTableRef\" */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"BrtSlicerCacheBookPivotTables\" */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"BrtBeginSxvcells\", */ T:1 },\n\t/*::[*/0x0808/*::]*/: { /* n:\"BrtEndSxvcells\", */ T:-1 },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BrtBeginSxRow\", */ T:1 },\n\t/*::[*/0x080A/*::]*/: { /* n:\"BrtEndSxRow\", */ T:-1 },\n\t/*::[*/0x080C/*::]*/: { /* n:\"BrtPcdCalcMem15\" */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"BrtQsi15\" */ },\n\t/*::[*/0x0814/*::]*/: { /* n:\"BrtBeginWebExtensions\", */ T:1 },\n\t/*::[*/0x0815/*::]*/: { /* n:\"BrtEndWebExtensions\", */ T:-1 },\n\t/*::[*/0x0816/*::]*/: { /* n:\"BrtWebExtension\" */ },\n\t/*::[*/0x0817/*::]*/: { /* n:\"BrtAbsPath15\" */ },\n\t/*::[*/0x0818/*::]*/: { /* n:\"BrtBeginPivotTableUISettings\", */ T:1 },\n\t/*::[*/0x0819/*::]*/: { /* n:\"BrtEndPivotTableUISettings\", */ T:-1 },\n\t/*::[*/0x081B/*::]*/: { /* n:\"BrtTableSlicerCacheIDs\" */ },\n\t/*::[*/0x081C/*::]*/: { /* n:\"BrtTableSlicerCacheID\" */ },\n\t/*::[*/0x081D/*::]*/: { /* n:\"BrtBeginTableSlicerCache\", */ T:1 },\n\t/*::[*/0x081E/*::]*/: { /* n:\"BrtEndTableSlicerCache\", */ T:-1 },\n\t/*::[*/0x081F/*::]*/: { /* n:\"BrtSxFilter15\" */ },\n\t/*::[*/0x0820/*::]*/: { /* n:\"BrtBeginTimelineCachePivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0821/*::]*/: { /* n:\"BrtEndTimelineCachePivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0822/*::]*/: { /* n:\"BrtTimelineCachePivotCacheID\" */ },\n\t/*::[*/0x0823/*::]*/: { /* n:\"BrtBeginTimelineCacheIDs\", */ T:1 },\n\t/*::[*/0x0824/*::]*/: { /* n:\"BrtEndTimelineCacheIDs\", */ T:-1 },\n\t/*::[*/0x0825/*::]*/: { /* n:\"BrtBeginTimelineCacheID\", */ T:1 },\n\t/*::[*/0x0826/*::]*/: { /* n:\"BrtEndTimelineCacheID\", */ T:-1 },\n\t/*::[*/0x0827/*::]*/: { /* n:\"BrtBeginTimelinesEx\", */ T:1 },\n\t/*::[*/0x0828/*::]*/: { /* n:\"BrtEndTimelinesEx\", */ T:-1 },\n\t/*::[*/0x0829/*::]*/: { /* n:\"BrtBeginTimelineEx\", */ T:1 },\n\t/*::[*/0x082A/*::]*/: { /* n:\"BrtEndTimelineEx\", */ T:-1 },\n\t/*::[*/0x082B/*::]*/: { /* n:\"BrtWorkBookPr15\" */ },\n\t/*::[*/0x082C/*::]*/: { /* n:\"BrtPCDH15\" */ },\n\t/*::[*/0x082D/*::]*/: { /* n:\"BrtBeginTimelineStyle\", */ T:1 },\n\t/*::[*/0x082E/*::]*/: { /* n:\"BrtEndTimelineStyle\", */ T:-1 },\n\t/*::[*/0x082F/*::]*/: { /* n:\"BrtTimelineStyleElement\" */ },\n\t/*::[*/0x0830/*::]*/: { /* n:\"BrtBeginTimelineStylesheetExt15\", */ T:1 },\n\t/*::[*/0x0831/*::]*/: { /* n:\"BrtEndTimelineStylesheetExt15\", */ T:-1 },\n\t/*::[*/0x0832/*::]*/: { /* n:\"BrtBeginTimelineStyles\", */ T:1 },\n\t/*::[*/0x0833/*::]*/: { /* n:\"BrtEndTimelineStyles\", */ T:-1 },\n\t/*::[*/0x0834/*::]*/: { /* n:\"BrtBeginTimelineStyleElements\", */ T:1 },\n\t/*::[*/0x0835/*::]*/: { /* n:\"BrtEndTimelineStyleElements\", */ T:-1 },\n\t/*::[*/0x0836/*::]*/: { /* n:\"BrtDxf15\" */ },\n\t/*::[*/0x0837/*::]*/: { /* n:\"BrtBeginDxfs15\", */ T:1 },\n\t/*::[*/0x0838/*::]*/: { /* n:\"BrtEndDxfs15\", */ T:-1 },\n\t/*::[*/0x0839/*::]*/: { /* n:\"BrtSlicerCacheHideItemsWithNoData\" */ },\n\t/*::[*/0x083A/*::]*/: { /* n:\"BrtBeginItemUniqueNames\", */ T:1 },\n\t/*::[*/0x083B/*::]*/: { /* n:\"BrtEndItemUniqueNames\", */ T:-1 },\n\t/*::[*/0x083C/*::]*/: { /* n:\"BrtItemUniqueName\" */ },\n\t/*::[*/0x083D/*::]*/: { /* n:\"BrtBeginExtConn15\", */ T:1 },\n\t/*::[*/0x083E/*::]*/: { /* n:\"BrtEndExtConn15\", */ T:-1 },\n\t/*::[*/0x083F/*::]*/: { /* n:\"BrtBeginOledbPr15\", */ T:1 },\n\t/*::[*/0x0840/*::]*/: { /* n:\"BrtEndOledbPr15\", */ T:-1 },\n\t/*::[*/0x0841/*::]*/: { /* n:\"BrtBeginDataFeedPr15\", */ T:1 },\n\t/*::[*/0x0842/*::]*/: { /* n:\"BrtEndDataFeedPr15\", */ T:-1 },\n\t/*::[*/0x0843/*::]*/: { /* n:\"BrtTextPr15\" */ },\n\t/*::[*/0x0844/*::]*/: { /* n:\"BrtRangePr15\" */ },\n\t/*::[*/0x0845/*::]*/: { /* n:\"BrtDbCommand15\" */ },\n\t/*::[*/0x0846/*::]*/: { /* n:\"BrtBeginDbTables15\", */ T:1 },\n\t/*::[*/0x0847/*::]*/: { /* n:\"BrtEndDbTables15\", */ T:-1 },\n\t/*::[*/0x0848/*::]*/: { /* n:\"BrtDbTable15\" */ },\n\t/*::[*/0x0849/*::]*/: { /* n:\"BrtBeginDataModel\", */ T:1 },\n\t/*::[*/0x084A/*::]*/: { /* n:\"BrtEndDataModel\", */ T:-1 },\n\t/*::[*/0x084B/*::]*/: { /* n:\"BrtBeginModelTables\", */ T:1 },\n\t/*::[*/0x084C/*::]*/: { /* n:\"BrtEndModelTables\", */ T:-1 },\n\t/*::[*/0x084D/*::]*/: { /* n:\"BrtModelTable\" */ },\n\t/*::[*/0x084E/*::]*/: { /* n:\"BrtBeginModelRelationships\", */ T:1 },\n\t/*::[*/0x084F/*::]*/: { /* n:\"BrtEndModelRelationships\", */ T:-1 },\n\t/*::[*/0x0850/*::]*/: { /* n:\"BrtModelRelationship\" */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"BrtBeginECTxtWiz15\", */ T:1 },\n\t/*::[*/0x0852/*::]*/: { /* n:\"BrtEndECTxtWiz15\", */ T:-1 },\n\t/*::[*/0x0853/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst15\", */ T:1 },\n\t/*::[*/0x0854/*::]*/: { /* n:\"BrtEndECTWFldInfoLst15\", */ T:-1 },\n\t/*::[*/0x0855/*::]*/: { /* n:\"BrtBeginECTWFldInfo15\", */ T:1 },\n\t/*::[*/0x0856/*::]*/: { /* n:\"BrtFieldListActiveItem\" */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"BrtPivotCacheIdVersion\" */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"BrtSXDI15\" */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"BrtBeginModelTimeGroupings\", */ T:1 },\n\t/*::[*/0x085A/*::]*/: { /* n:\"BrtEndModelTimeGroupings\", */ T:-1 },\n\t/*::[*/0x085B/*::]*/: { /* n:\"BrtBeginModelTimeGrouping\", */ T:1 },\n\t/*::[*/0x085C/*::]*/: { /* n:\"BrtEndModelTimeGrouping\", */ T:-1 },\n\t/*::[*/0x085D/*::]*/: { /* n:\"BrtModelTimeGroupingCalcCol\" */ },\n\t/*::[*/0x0C00/*::]*/: { /* n:\"BrtUid\" */ },\n\t/*::[*/0x0C01/*::]*/: { /* n:\"BrtRevisionPtr\" */ },\n\t/*::[*/0x1000/*::]*/: { /* n:\"BrtBeginDynamicArrayPr\", */ T:1 },\n\t/*::[*/0x1001/*::]*/: { /* n:\"BrtEndDynamicArrayPr\", */ T:-1 },\n\t/*::[*/0x138A/*::]*/: { /* n:\"BrtBeginRichValueBlock\", */ T:1 },\n\t/*::[*/0x138B/*::]*/: { /* n:\"BrtEndRichValueBlock\", */ T:-1 },\n\t/*::[*/0x13D9/*::]*/: { /* n:\"BrtBeginRichFilters\", */ T:1 },\n\t/*::[*/0x13DA/*::]*/: { /* n:\"BrtEndRichFilters\", */ T:-1 },\n\t/*::[*/0x13DB/*::]*/: { /* n:\"BrtRichFilter\" */ },\n\t/*::[*/0x13DC/*::]*/: { /* n:\"BrtBeginRichFilterColumn\", */ T:1 },\n\t/*::[*/0x13DD/*::]*/: { /* n:\"BrtEndRichFilterColumn\", */ T:-1 },\n\t/*::[*/0x13DE/*::]*/: { /* n:\"BrtBeginCustomRichFilters\", */ T:1 },\n\t/*::[*/0x13DF/*::]*/: { /* n:\"BrtEndCustomRichFilters\", */ T:-1 },\n\t/*::[*/0x13E0/*::]*/: { /* n:\"BrtCustomRichFilter\" */ },\n\t/*::[*/0x13E1/*::]*/: { /* n:\"BrtTop10RichFilter\" */ },\n\t/*::[*/0x13E2/*::]*/: { /* n:\"BrtDynamicRichFilter\" */ },\n\t/*::[*/0x13E4/*::]*/: { /* n:\"BrtBeginRichSortCondition\", */ T:1 },\n\t/*::[*/0x13E5/*::]*/: { /* n:\"BrtEndRichSortCondition\", */ T:-1 },\n\t/*::[*/0x13E6/*::]*/: { /* n:\"BrtRichFilterDateGroupItem\" */ },\n\t/*::[*/0x13E7/*::]*/: { /* n:\"BrtBeginCalcFeatures\", */ T:1 },\n\t/*::[*/0x13E8/*::]*/: { /* n:\"BrtEndCalcFeatures\", */ T:-1 },\n\t/*::[*/0x13E9/*::]*/: { /* n:\"BrtCalcFeature\" */ },\n\t/*::[*/0x13EB/*::]*/: { /* n:\"BrtExternalLinksPr\" */ },\n\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n};\n\n/* [MS-XLS] 2.3 Record Enumeration (and other sources) */\nvar XLSRecordEnum = {\n\t/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */\n\t/*::[*/0x0006/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x000a/*::]*/: { /* n:\"EOF\", */ f:parsenoop2 },\n\t/*::[*/0x000c/*::]*/: { /* n:\"CalcCount\", */ f:parseuint16 }, //\n\t/*::[*/0x000d/*::]*/: { /* n:\"CalcMode\", */ f:parseuint16 }, //\n\t/*::[*/0x000e/*::]*/: { /* n:\"CalcPrecision\", */ f:parsebool }, //\n\t/*::[*/0x000f/*::]*/: { /* n:\"CalcRefMode\", */ f:parsebool }, //\n\t/*::[*/0x0010/*::]*/: { /* n:\"CalcDelta\", */ f:parse_Xnum }, //\n\t/*::[*/0x0011/*::]*/: { /* n:\"CalcIter\", */ f:parsebool }, //\n\t/*::[*/0x0012/*::]*/: { /* n:\"Protect\", */ f:parsebool },\n\t/*::[*/0x0013/*::]*/: { /* n:\"Password\", */ f:parseuint16 },\n\t/*::[*/0x0014/*::]*/: { /* n:\"Header\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0015/*::]*/: { /* n:\"Footer\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0017/*::]*/: { /* n:\"ExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x0018/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0019/*::]*/: { /* n:\"WinProtect\", */ f:parsebool },\n\t/*::[*/0x001a/*::]*/: { /* n:\"VerticalPageBreaks\", */ },\n\t/*::[*/0x001b/*::]*/: { /* n:\"HorizontalPageBreaks\", */ },\n\t/*::[*/0x001c/*::]*/: { /* n:\"Note\", */ f:parse_Note },\n\t/*::[*/0x001d/*::]*/: { /* n:\"Selection\", */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"Date1904\", */ f:parsebool },\n\t/*::[*/0x0023/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0026/*::]*/: { /* n:\"LeftMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0027/*::]*/: { /* n:\"RightMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0028/*::]*/: { /* n:\"TopMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0029/*::]*/: { /* n:\"BottomMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x002a/*::]*/: { /* n:\"PrintRowCol\", */ f:parsebool },\n\t/*::[*/0x002b/*::]*/: { /* n:\"PrintGrid\", */ f:parsebool },\n\t/*::[*/0x002f/*::]*/: { /* n:\"FilePass\", */ f:parse_FilePass },\n\t/*::[*/0x0031/*::]*/: { /* n:\"Font\", */ f:parse_Font },\n\t/*::[*/0x0033/*::]*/: { /* n:\"PrintSize\", */ f:parseuint16 },\n\t/*::[*/0x003c/*::]*/: { /* n:\"Continue\", */ },\n\t/*::[*/0x003d/*::]*/: { /* n:\"Window1\", */ f:parse_Window1 },\n\t/*::[*/0x0040/*::]*/: { /* n:\"Backup\", */ f:parsebool },\n\t/*::[*/0x0041/*::]*/: { /* n:\"Pane\", */ f:parse_Pane },\n\t/*::[*/0x0042/*::]*/: { /* n:\"CodePage\", */ f:parseuint16 },\n\t/*::[*/0x004d/*::]*/: { /* n:\"Pls\", */ },\n\t/*::[*/0x0050/*::]*/: { /* n:\"DCon\", */ },\n\t/*::[*/0x0051/*::]*/: { /* n:\"DConRef\", */ },\n\t/*::[*/0x0052/*::]*/: { /* n:\"DConName\", */ },\n\t/*::[*/0x0055/*::]*/: { /* n:\"DefColWidth\", */ f:parseuint16 },\n\t/*::[*/0x0059/*::]*/: { /* n:\"XCT\", */ },\n\t/*::[*/0x005a/*::]*/: { /* n:\"CRN\", */ },\n\t/*::[*/0x005b/*::]*/: { /* n:\"FileSharing\", */ },\n\t/*::[*/0x005c/*::]*/: { /* n:\"WriteAccess\", */ f:parse_WriteAccess },\n\t/*::[*/0x005d/*::]*/: { /* n:\"Obj\", */ f:parse_Obj },\n\t/*::[*/0x005e/*::]*/: { /* n:\"Uncalced\", */ },\n\t/*::[*/0x005f/*::]*/: { /* n:\"CalcSaveRecalc\", */ f:parsebool }, //\n\t/*::[*/0x0060/*::]*/: { /* n:\"Template\", */ },\n\t/*::[*/0x0061/*::]*/: { /* n:\"Intl\", */ },\n\t/*::[*/0x0063/*::]*/: { /* n:\"ObjProtect\", */ f:parsebool },\n\t/*::[*/0x007d/*::]*/: { /* n:\"ColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x0080/*::]*/: { /* n:\"Guts\", */ f:parse_Guts },\n\t/*::[*/0x0081/*::]*/: { /* n:\"WsBool\", */ f:parse_WsBool },\n\t/*::[*/0x0082/*::]*/: { /* n:\"GridSet\", */ f:parseuint16 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"HCenter\", */ f:parsebool },\n\t/*::[*/0x0084/*::]*/: { /* n:\"VCenter\", */ f:parsebool },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BoundSheet8\", */ f:parse_BoundSheet8 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"WriteProtect\", */ },\n\t/*::[*/0x008c/*::]*/: { /* n:\"Country\", */ f:parse_Country },\n\t/*::[*/0x008d/*::]*/: { /* n:\"HideObj\", */ f:parseuint16 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"Sort\", */ },\n\t/*::[*/0x0092/*::]*/: { /* n:\"Palette\", */ f:parse_Palette },\n\t/*::[*/0x0097/*::]*/: { /* n:\"Sync\", */ },\n\t/*::[*/0x0098/*::]*/: { /* n:\"LPr\", */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"DxGCol\", */ },\n\t/*::[*/0x009a/*::]*/: { /* n:\"FnGroupName\", */ },\n\t/*::[*/0x009b/*::]*/: { /* n:\"FilterMode\", */ },\n\t/*::[*/0x009c/*::]*/: { /* n:\"BuiltInFnGroupCount\", */ f:parseuint16 },\n\t/*::[*/0x009d/*::]*/: { /* n:\"AutoFilterInfo\", */ },\n\t/*::[*/0x009e/*::]*/: { /* n:\"AutoFilter\", */ },\n\t/*::[*/0x00a0/*::]*/: { /* n:\"Scl\", */ f:parse_Scl },\n\t/*::[*/0x00a1/*::]*/: { /* n:\"Setup\", */ f:parse_Setup },\n\t/*::[*/0x00ae/*::]*/: { /* n:\"ScenMan\", */ },\n\t/*::[*/0x00af/*::]*/: { /* n:\"SCENARIO\", */ },\n\t/*::[*/0x00b0/*::]*/: { /* n:\"SxView\", */ },\n\t/*::[*/0x00b1/*::]*/: { /* n:\"Sxvd\", */ },\n\t/*::[*/0x00b2/*::]*/: { /* n:\"SXVI\", */ },\n\t/*::[*/0x00b4/*::]*/: { /* n:\"SxIvd\", */ },\n\t/*::[*/0x00b5/*::]*/: { /* n:\"SXLI\", */ },\n\t/*::[*/0x00b6/*::]*/: { /* n:\"SXPI\", */ },\n\t/*::[*/0x00b8/*::]*/: { /* n:\"DocRoute\", */ },\n\t/*::[*/0x00b9/*::]*/: { /* n:\"RecipName\", */ },\n\t/*::[*/0x00bd/*::]*/: { /* n:\"MulRk\", */ f:parse_MulRk },\n\t/*::[*/0x00be/*::]*/: { /* n:\"MulBlank\", */ f:parse_MulBlank },\n\t/*::[*/0x00c1/*::]*/: { /* n:\"Mms\", */ f:parsenoop2 },\n\t/*::[*/0x00c5/*::]*/: { /* n:\"SXDI\", */ },\n\t/*::[*/0x00c6/*::]*/: { /* n:\"SXDB\", */ },\n\t/*::[*/0x00c7/*::]*/: { /* n:\"SXFDB\", */ },\n\t/*::[*/0x00c8/*::]*/: { /* n:\"SXDBB\", */ },\n\t/*::[*/0x00c9/*::]*/: { /* n:\"SXNum\", */ },\n\t/*::[*/0x00ca/*::]*/: { /* n:\"SxBool\", */ f:parsebool },\n\t/*::[*/0x00cb/*::]*/: { /* n:\"SxErr\", */ },\n\t/*::[*/0x00cc/*::]*/: { /* n:\"SXInt\", */ },\n\t/*::[*/0x00cd/*::]*/: { /* n:\"SXString\", */ },\n\t/*::[*/0x00ce/*::]*/: { /* n:\"SXDtr\", */ },\n\t/*::[*/0x00cf/*::]*/: { /* n:\"SxNil\", */ },\n\t/*::[*/0x00d0/*::]*/: { /* n:\"SXTbl\", */ },\n\t/*::[*/0x00d1/*::]*/: { /* n:\"SXTBRGIITM\", */ },\n\t/*::[*/0x00d2/*::]*/: { /* n:\"SxTbpg\", */ },\n\t/*::[*/0x00d3/*::]*/: { /* n:\"ObProj\", */ },\n\t/*::[*/0x00d5/*::]*/: { /* n:\"SXStreamID\", */ },\n\t/*::[*/0x00d7/*::]*/: { /* n:\"DBCell\", */ },\n\t/*::[*/0x00d8/*::]*/: { /* n:\"SXRng\", */ },\n\t/*::[*/0x00d9/*::]*/: { /* n:\"SxIsxoper\", */ },\n\t/*::[*/0x00da/*::]*/: { /* n:\"BookBool\", */ f:parseuint16 },\n\t/*::[*/0x00dc/*::]*/: { /* n:\"DbOrParamQry\", */ },\n\t/*::[*/0x00dd/*::]*/: { /* n:\"ScenarioProtect\", */ f:parsebool },\n\t/*::[*/0x00de/*::]*/: { /* n:\"OleObjectSize\", */ },\n\t/*::[*/0x00e0/*::]*/: { /* n:\"XF\", */ f:parse_XF },\n\t/*::[*/0x00e1/*::]*/: { /* n:\"InterfaceHdr\", */ f:parse_InterfaceHdr },\n\t/*::[*/0x00e2/*::]*/: { /* n:\"InterfaceEnd\", */ f:parsenoop2 },\n\t/*::[*/0x00e3/*::]*/: { /* n:\"SXVS\", */ },\n\t/*::[*/0x00e5/*::]*/: { /* n:\"MergeCells\", */ f:parse_MergeCells },\n\t/*::[*/0x00e9/*::]*/: { /* n:\"BkHim\", */ },\n\t/*::[*/0x00eb/*::]*/: { /* n:\"MsoDrawingGroup\", */ },\n\t/*::[*/0x00ec/*::]*/: { /* n:\"MsoDrawing\", */ },\n\t/*::[*/0x00ed/*::]*/: { /* n:\"MsoDrawingSelection\", */ },\n\t/*::[*/0x00ef/*::]*/: { /* n:\"PhoneticInfo\", */ },\n\t/*::[*/0x00f0/*::]*/: { /* n:\"SxRule\", */ },\n\t/*::[*/0x00f1/*::]*/: { /* n:\"SXEx\", */ },\n\t/*::[*/0x00f2/*::]*/: { /* n:\"SxFilt\", */ },\n\t/*::[*/0x00f4/*::]*/: { /* n:\"SxDXF\", */ },\n\t/*::[*/0x00f5/*::]*/: { /* n:\"SxItm\", */ },\n\t/*::[*/0x00f6/*::]*/: { /* n:\"SxName\", */ },\n\t/*::[*/0x00f7/*::]*/: { /* n:\"SxSelect\", */ },\n\t/*::[*/0x00f8/*::]*/: { /* n:\"SXPair\", */ },\n\t/*::[*/0x00f9/*::]*/: { /* n:\"SxFmla\", */ },\n\t/*::[*/0x00fb/*::]*/: { /* n:\"SxFormat\", */ },\n\t/*::[*/0x00fc/*::]*/: { /* n:\"SST\", */ f:parse_SST },\n\t/*::[*/0x00fd/*::]*/: { /* n:\"LabelSst\", */ f:parse_LabelSst },\n\t/*::[*/0x00ff/*::]*/: { /* n:\"ExtSST\", */ f:parse_ExtSST },\n\t/*::[*/0x0100/*::]*/: { /* n:\"SXVDEx\", */ },\n\t/*::[*/0x0103/*::]*/: { /* n:\"SXFormula\", */ },\n\t/*::[*/0x0122/*::]*/: { /* n:\"SXDBEx\", */ },\n\t/*::[*/0x0137/*::]*/: { /* n:\"RRDInsDel\", */ },\n\t/*::[*/0x0138/*::]*/: { /* n:\"RRDHead\", */ },\n\t/*::[*/0x013b/*::]*/: { /* n:\"RRDChgCell\", */ },\n\t/*::[*/0x013d/*::]*/: { /* n:\"RRTabId\", */ f:parseuint16a },\n\t/*::[*/0x013e/*::]*/: { /* n:\"RRDRenSheet\", */ },\n\t/*::[*/0x013f/*::]*/: { /* n:\"RRSort\", */ },\n\t/*::[*/0x0140/*::]*/: { /* n:\"RRDMove\", */ },\n\t/*::[*/0x014a/*::]*/: { /* n:\"RRFormat\", */ },\n\t/*::[*/0x014b/*::]*/: { /* n:\"RRAutoFmt\", */ },\n\t/*::[*/0x014d/*::]*/: { /* n:\"RRInsertSh\", */ },\n\t/*::[*/0x014e/*::]*/: { /* n:\"RRDMoveBegin\", */ },\n\t/*::[*/0x014f/*::]*/: { /* n:\"RRDMoveEnd\", */ },\n\t/*::[*/0x0150/*::]*/: { /* n:\"RRDInsDelBegin\", */ },\n\t/*::[*/0x0151/*::]*/: { /* n:\"RRDInsDelEnd\", */ },\n\t/*::[*/0x0152/*::]*/: { /* n:\"RRDConflict\", */ },\n\t/*::[*/0x0153/*::]*/: { /* n:\"RRDDefName\", */ },\n\t/*::[*/0x0154/*::]*/: { /* n:\"RRDRstEtxp\", */ },\n\t/*::[*/0x015f/*::]*/: { /* n:\"LRng\", */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"UsesELFs\", */ f:parsebool },\n\t/*::[*/0x0161/*::]*/: { /* n:\"DSF\", */ f:parsenoop2 },\n\t/*::[*/0x0191/*::]*/: { /* n:\"CUsr\", */ },\n\t/*::[*/0x0192/*::]*/: { /* n:\"CbUsr\", */ },\n\t/*::[*/0x0193/*::]*/: { /* n:\"UsrInfo\", */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"UsrExcl\", */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"FileLock\", */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"RRDInfo\", */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BCUsrs\", */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"UsrChk\", */ },\n\t/*::[*/0x01a9/*::]*/: { /* n:\"UserBView\", */ },\n\t/*::[*/0x01aa/*::]*/: { /* n:\"UserSViewBegin\", */ },\n\t/*::[*/0x01ab/*::]*/: { /* n:\"UserSViewEnd\", */ },\n\t/*::[*/0x01ac/*::]*/: { /* n:\"RRDUserView\", */ },\n\t/*::[*/0x01ad/*::]*/: { /* n:\"Qsi\", */ },\n\t/*::[*/0x01ae/*::]*/: { /* n:\"SupBook\", */ f:parse_SupBook },\n\t/*::[*/0x01af/*::]*/: { /* n:\"Prot4Rev\", */ f:parsebool },\n\t/*::[*/0x01b0/*::]*/: { /* n:\"CondFmt\", */ },\n\t/*::[*/0x01b1/*::]*/: { /* n:\"CF\", */ },\n\t/*::[*/0x01b2/*::]*/: { /* n:\"DVal\", */ },\n\t/*::[*/0x01b5/*::]*/: { /* n:\"DConBin\", */ },\n\t/*::[*/0x01b6/*::]*/: { /* n:\"TxO\", */ f:parse_TxO },\n\t/*::[*/0x01b7/*::]*/: { /* n:\"RefreshAll\", */ f:parsebool }, //\n\t/*::[*/0x01b8/*::]*/: { /* n:\"HLink\", */ f:parse_HLink },\n\t/*::[*/0x01b9/*::]*/: { /* n:\"Lel\", */ },\n\t/*::[*/0x01ba/*::]*/: { /* n:\"CodeName\", */ f:parse_XLUnicodeString },\n\t/*::[*/0x01bb/*::]*/: { /* n:\"SXFDBType\", */ },\n\t/*::[*/0x01bc/*::]*/: { /* n:\"Prot4RevPass\", */ f:parseuint16 },\n\t/*::[*/0x01bd/*::]*/: { /* n:\"ObNoMacros\", */ },\n\t/*::[*/0x01be/*::]*/: { /* n:\"Dv\", */ },\n\t/*::[*/0x01c0/*::]*/: { /* n:\"Excel9File\", */ f:parsenoop2 },\n\t/*::[*/0x01c1/*::]*/: { /* n:\"RecalcId\", */ f:parse_RecalcId, r:2},\n\t/*::[*/0x01c2/*::]*/: { /* n:\"EntExU2\", */ f:parsenoop2 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0201/*::]*/: { /* n:\"Blank\", */ f:parse_Blank },\n\t/*::[*/0x0203/*::]*/: { /* n:\"Number\", */ f:parse_Number },\n\t/*::[*/0x0204/*::]*/: { /* n:\"Label\", */ f:parse_Label },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0207/*::]*/: { /* n:\"String\", */ f:parse_String },\n\t/*::[*/0x0208/*::]*/: { /* n:\"Row\", */ f:parse_Row },\n\t/*::[*/0x020b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0221/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0225/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t/*::[*/0x0236/*::]*/: { /* n:\"Table\", */ },\n\t/*::[*/0x023e/*::]*/: { /* n:\"Window2\", */ f:parse_Window2 },\n\t/*::[*/0x027e/*::]*/: { /* n:\"RK\", */ f:parse_RK },\n\t/*::[*/0x0293/*::]*/: { /* n:\"Style\", */ },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BigName\", */ },\n\t/*::[*/0x041e/*::]*/: { /* n:\"Format\", */ f:parse_Format },\n\t/*::[*/0x043c/*::]*/: { /* n:\"ContinueBigName\", */ },\n\t/*::[*/0x04bc/*::]*/: { /* n:\"ShrFmla\", */ f:parse_ShrFmla },\n\t/*::[*/0x0800/*::]*/: { /* n:\"HLinkTooltip\", */ f:parse_HLinkTooltip },\n\t/*::[*/0x0801/*::]*/: { /* n:\"WebPub\", */ },\n\t/*::[*/0x0802/*::]*/: { /* n:\"QsiSXTag\", */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"DBQueryExt\", */ },\n\t/*::[*/0x0804/*::]*/: { /* n:\"ExtString\", */ },\n\t/*::[*/0x0805/*::]*/: { /* n:\"TxtQry\", */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"Qsir\", */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"Qsif\", */ },\n\t/*::[*/0x0808/*::]*/: { /* n:\"RRDTQSIF\", */ },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x080a/*::]*/: { /* n:\"OleDbConn\", */ },\n\t/*::[*/0x080b/*::]*/: { /* n:\"WOpt\", */ },\n\t/*::[*/0x080c/*::]*/: { /* n:\"SXViewEx\", */ },\n\t/*::[*/0x080d/*::]*/: { /* n:\"SXTH\", */ },\n\t/*::[*/0x080e/*::]*/: { /* n:\"SXPIEx\", */ },\n\t/*::[*/0x080f/*::]*/: { /* n:\"SXVDTEx\", */ },\n\t/*::[*/0x0810/*::]*/: { /* n:\"SXViewEx9\", */ },\n\t/*::[*/0x0812/*::]*/: { /* n:\"ContinueFrt\", */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"RealTimeData\", */ },\n\t/*::[*/0x0850/*::]*/: { /* n:\"ChartFrtInfo\", */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"FrtWrapper\", */ },\n\t/*::[*/0x0852/*::]*/: { /* n:\"StartBlock\", */ },\n\t/*::[*/0x0853/*::]*/: { /* n:\"EndBlock\", */ },\n\t/*::[*/0x0854/*::]*/: { /* n:\"StartObject\", */ },\n\t/*::[*/0x0855/*::]*/: { /* n:\"EndObject\", */ },\n\t/*::[*/0x0856/*::]*/: { /* n:\"CatLab\", */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"YMult\", */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"SXViewLink\", */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"PivotChartBits\", */ },\n\t/*::[*/0x085a/*::]*/: { /* n:\"FrtFontList\", */ },\n\t/*::[*/0x0862/*::]*/: { /* n:\"SheetExt\", */ },\n\t/*::[*/0x0863/*::]*/: { /* n:\"BookExt\", */ r:12},\n\t/*::[*/0x0864/*::]*/: { /* n:\"SXAddl\", */ },\n\t/*::[*/0x0865/*::]*/: { /* n:\"CrErr\", */ },\n\t/*::[*/0x0866/*::]*/: { /* n:\"HFPicture\", */ },\n\t/*::[*/0x0867/*::]*/: { /* n:\"FeatHdr\", */ f:parsenoop2 },\n\t/*::[*/0x0868/*::]*/: { /* n:\"Feat\", */ },\n\t/*::[*/0x086a/*::]*/: { /* n:\"DataLabExt\", */ },\n\t/*::[*/0x086b/*::]*/: { /* n:\"DataLabExtContents\", */ },\n\t/*::[*/0x086c/*::]*/: { /* n:\"CellWatch\", */ },\n\t/*::[*/0x0871/*::]*/: { /* n:\"FeatHdr11\", */ },\n\t/*::[*/0x0872/*::]*/: { /* n:\"Feature11\", */ },\n\t/*::[*/0x0874/*::]*/: { /* n:\"DropDownObjIds\", */ },\n\t/*::[*/0x0875/*::]*/: { /* n:\"ContinueFrt11\", */ },\n\t/*::[*/0x0876/*::]*/: { /* n:\"DConn\", */ },\n\t/*::[*/0x0877/*::]*/: { /* n:\"List12\", */ },\n\t/*::[*/0x0878/*::]*/: { /* n:\"Feature12\", */ },\n\t/*::[*/0x0879/*::]*/: { /* n:\"CondFmt12\", */ },\n\t/*::[*/0x087a/*::]*/: { /* n:\"CF12\", */ },\n\t/*::[*/0x087b/*::]*/: { /* n:\"CFEx\", */ },\n\t/*::[*/0x087c/*::]*/: { /* n:\"XFCRC\", */ f:parse_XFCRC, r:12 },\n\t/*::[*/0x087d/*::]*/: { /* n:\"XFExt\", */ f:parse_XFExt, r:12 },\n\t/*::[*/0x087e/*::]*/: { /* n:\"AutoFilter12\", */ },\n\t/*::[*/0x087f/*::]*/: { /* n:\"ContinueFrt12\", */ },\n\t/*::[*/0x0884/*::]*/: { /* n:\"MDTInfo\", */ },\n\t/*::[*/0x0885/*::]*/: { /* n:\"MDXStr\", */ },\n\t/*::[*/0x0886/*::]*/: { /* n:\"MDXTuple\", */ },\n\t/*::[*/0x0887/*::]*/: { /* n:\"MDXSet\", */ },\n\t/*::[*/0x0888/*::]*/: { /* n:\"MDXProp\", */ },\n\t/*::[*/0x0889/*::]*/: { /* n:\"MDXKPI\", */ },\n\t/*::[*/0x088a/*::]*/: { /* n:\"MDB\", */ },\n\t/*::[*/0x088b/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x088c/*::]*/: { /* n:\"Compat12\", */ f:parsebool, r:12 },\n\t/*::[*/0x088d/*::]*/: { /* n:\"DXF\", */ },\n\t/*::[*/0x088e/*::]*/: { /* n:\"TableStyles\", */ r:12 },\n\t/*::[*/0x088f/*::]*/: { /* n:\"TableStyle\", */ },\n\t/*::[*/0x0890/*::]*/: { /* n:\"TableStyleElement\", */ },\n\t/*::[*/0x0892/*::]*/: { /* n:\"StyleExt\", */ },\n\t/*::[*/0x0893/*::]*/: { /* n:\"NamePublish\", */ },\n\t/*::[*/0x0894/*::]*/: { /* n:\"NameCmt\", */ f:parse_NameCmt, r:12 },\n\t/*::[*/0x0895/*::]*/: { /* n:\"SortData\", */ },\n\t/*::[*/0x0896/*::]*/: { /* n:\"Theme\", */ f:parse_Theme, r:12 },\n\t/*::[*/0x0897/*::]*/: { /* n:\"GUIDTypeLib\", */ },\n\t/*::[*/0x0898/*::]*/: { /* n:\"FnGrp12\", */ },\n\t/*::[*/0x0899/*::]*/: { /* n:\"NameFnGrp12\", */ },\n\t/*::[*/0x089a/*::]*/: { /* n:\"MTRSettings\", */ f:parse_MTRSettings, r:12 },\n\t/*::[*/0x089b/*::]*/: { /* n:\"CompressPictures\", */ f:parsenoop2 },\n\t/*::[*/0x089c/*::]*/: { /* n:\"HeaderFooter\", */ },\n\t/*::[*/0x089d/*::]*/: { /* n:\"CrtLayout12\", */ },\n\t/*::[*/0x089e/*::]*/: { /* n:\"CrtMlFrt\", */ },\n\t/*::[*/0x089f/*::]*/: { /* n:\"CrtMlFrtContinue\", */ },\n\t/*::[*/0x08a3/*::]*/: { /* n:\"ForceFullCalculation\", */ f:parse_ForceFullCalculation },\n\t/*::[*/0x08a4/*::]*/: { /* n:\"ShapePropsStream\", */ },\n\t/*::[*/0x08a5/*::]*/: { /* n:\"TextPropsStream\", */ },\n\t/*::[*/0x08a6/*::]*/: { /* n:\"RichTextStream\", */ },\n\t/*::[*/0x08a7/*::]*/: { /* n:\"CrtLayout12A\", */ },\n\t/*::[*/0x1001/*::]*/: { /* n:\"Units\", */ },\n\t/*::[*/0x1002/*::]*/: { /* n:\"Chart\", */ },\n\t/*::[*/0x1003/*::]*/: { /* n:\"Series\", */ },\n\t/*::[*/0x1006/*::]*/: { /* n:\"DataFormat\", */ },\n\t/*::[*/0x1007/*::]*/: { /* n:\"LineFormat\", */ },\n\t/*::[*/0x1009/*::]*/: { /* n:\"MarkerFormat\", */ },\n\t/*::[*/0x100a/*::]*/: { /* n:\"AreaFormat\", */ },\n\t/*::[*/0x100b/*::]*/: { /* n:\"PieFormat\", */ },\n\t/*::[*/0x100c/*::]*/: { /* n:\"AttachedLabel\", */ },\n\t/*::[*/0x100d/*::]*/: { /* n:\"SeriesText\", */ },\n\t/*::[*/0x1014/*::]*/: { /* n:\"ChartFormat\", */ },\n\t/*::[*/0x1015/*::]*/: { /* n:\"Legend\", */ },\n\t/*::[*/0x1016/*::]*/: { /* n:\"SeriesList\", */ },\n\t/*::[*/0x1017/*::]*/: { /* n:\"Bar\", */ },\n\t/*::[*/0x1018/*::]*/: { /* n:\"Line\", */ },\n\t/*::[*/0x1019/*::]*/: { /* n:\"Pie\", */ },\n\t/*::[*/0x101a/*::]*/: { /* n:\"Area\", */ },\n\t/*::[*/0x101b/*::]*/: { /* n:\"Scatter\", */ },\n\t/*::[*/0x101c/*::]*/: { /* n:\"CrtLine\", */ },\n\t/*::[*/0x101d/*::]*/: { /* n:\"Axis\", */ },\n\t/*::[*/0x101e/*::]*/: { /* n:\"Tick\", */ },\n\t/*::[*/0x101f/*::]*/: { /* n:\"ValueRange\", */ },\n\t/*::[*/0x1020/*::]*/: { /* n:\"CatSerRange\", */ },\n\t/*::[*/0x1021/*::]*/: { /* n:\"AxisLine\", */ },\n\t/*::[*/0x1022/*::]*/: { /* n:\"CrtLink\", */ },\n\t/*::[*/0x1024/*::]*/: { /* n:\"DefaultText\", */ },\n\t/*::[*/0x1025/*::]*/: { /* n:\"Text\", */ },\n\t/*::[*/0x1026/*::]*/: { /* n:\"FontX\", */ f:parseuint16 },\n\t/*::[*/0x1027/*::]*/: { /* n:\"ObjectLink\", */ },\n\t/*::[*/0x1032/*::]*/: { /* n:\"Frame\", */ },\n\t/*::[*/0x1033/*::]*/: { /* n:\"Begin\", */ },\n\t/*::[*/0x1034/*::]*/: { /* n:\"End\", */ },\n\t/*::[*/0x1035/*::]*/: { /* n:\"PlotArea\", */ },\n\t/*::[*/0x103a/*::]*/: { /* n:\"Chart3d\", */ },\n\t/*::[*/0x103c/*::]*/: { /* n:\"PicF\", */ },\n\t/*::[*/0x103d/*::]*/: { /* n:\"DropBar\", */ },\n\t/*::[*/0x103e/*::]*/: { /* n:\"Radar\", */ },\n\t/*::[*/0x103f/*::]*/: { /* n:\"Surf\", */ },\n\t/*::[*/0x1040/*::]*/: { /* n:\"RadarArea\", */ },\n\t/*::[*/0x1041/*::]*/: { /* n:\"AxisParent\", */ },\n\t/*::[*/0x1043/*::]*/: { /* n:\"LegendException\", */ },\n\t/*::[*/0x1044/*::]*/: { /* n:\"ShtProps\", */ f:parse_ShtProps },\n\t/*::[*/0x1045/*::]*/: { /* n:\"SerToCrt\", */ },\n\t/*::[*/0x1046/*::]*/: { /* n:\"AxesUsed\", */ },\n\t/*::[*/0x1048/*::]*/: { /* n:\"SBaseRef\", */ },\n\t/*::[*/0x104a/*::]*/: { /* n:\"SerParent\", */ },\n\t/*::[*/0x104b/*::]*/: { /* n:\"SerAuxTrend\", */ },\n\t/*::[*/0x104e/*::]*/: { /* n:\"IFmtRecord\", */ },\n\t/*::[*/0x104f/*::]*/: { /* n:\"Pos\", */ },\n\t/*::[*/0x1050/*::]*/: { /* n:\"AlRuns\", */ },\n\t/*::[*/0x1051/*::]*/: { /* n:\"BRAI\", */ },\n\t/*::[*/0x105b/*::]*/: { /* n:\"SerAuxErrBar\", */ },\n\t/*::[*/0x105c/*::]*/: { /* n:\"ClrtClient\", */ f:parse_ClrtClient },\n\t/*::[*/0x105d/*::]*/: { /* n:\"SerFmt\", */ },\n\t/*::[*/0x105f/*::]*/: { /* n:\"Chart3DBarShape\", */ },\n\t/*::[*/0x1060/*::]*/: { /* n:\"Fbi\", */ },\n\t/*::[*/0x1061/*::]*/: { /* n:\"BopPop\", */ },\n\t/*::[*/0x1062/*::]*/: { /* n:\"AxcExt\", */ },\n\t/*::[*/0x1063/*::]*/: { /* n:\"Dat\", */ },\n\t/*::[*/0x1064/*::]*/: { /* n:\"PlotGrowth\", */ },\n\t/*::[*/0x1065/*::]*/: { /* n:\"SIIndex\", */ },\n\t/*::[*/0x1066/*::]*/: { /* n:\"GelFrame\", */ },\n\t/*::[*/0x1067/*::]*/: { /* n:\"BopPopCustom\", */ },\n\t/*::[*/0x1068/*::]*/: { /* n:\"Fbi2\", */ },\n\n\t/*::[*/0x0000/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BIFF2BLANK\", */ },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BIFF2INT\", */ f:parse_BIFF2INT },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BIFF2NUM\", */ f:parse_BIFF2NUM },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BIFF2STR\", */ f:parse_BIFF2STR },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0007/*::]*/: { /* n:\"String\", */ f:parse_BIFF2STRING },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BIFF2ROW\", */ },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x000b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"ExternCount\", */ f:parseuint16 },\n\t/*::[*/0x001e/*::]*/: { /* n:\"BIFF2FORMAT\", */ f:parse_BIFF2Format },\n\t/*::[*/0x001f/*::]*/: { /* n:\"BIFF2FMTCNT\", */ }, /* 16-bit cnt of BIFF2FORMAT records */\n\t/*::[*/0x0020/*::]*/: { /* n:\"BIFF2COLINFO\", */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0024/*::]*/: { /* n:\"COLWIDTH\", */ },\n\t/*::[*/0x0025/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t// 0x2c ??\n\t// 0x2d ??\n\t// 0x2e ??\n\t// 0x30 FONTCOUNT: number of fonts\n\t/*::[*/0x0032/*::]*/: { /* n:\"BIFF2FONTXTRA\", */ f:parse_BIFF2FONTXTRA },\n\t// 0x35: INFOOPTS\n\t// 0x36: TABLE (BIFF2 only)\n\t// 0x37: TABLE2 (BIFF2 only)\n\t// 0x38: WNDESK\n\t// 0x39 ??\n\t// 0x3a: BEGINPREF\n\t// 0x3b: ENDPREF\n\t/*::[*/0x003e/*::]*/: { /* n:\"BIFF2WINDOW2\", */ },\n\t// 0x3f ??\n\t// 0x46: SHOWSCROLL\n\t// 0x47: SHOWFORMULA\n\t// 0x48: STATUSBAR\n\t// 0x49: SHORTMENUS\n\t// 0x4A:\n\t// 0x4B:\n\t// 0x4C:\n\t// 0x4E:\n\t// 0x4F:\n\t// 0x58: TOOLBAR (BIFF3)\n\n\t/* - - - */\n\t/*::[*/0x0034/*::]*/: { /* n:\"DDEObjName\", */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BIFF2XF\", */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BIFF2XFINDEX\", */ f:parseuint16 },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BIFF2FONTCLR\", */ },\n\t/*::[*/0x0056/*::]*/: { /* n:\"BIFF4FMTCNT\", */ }, /* 16-bit cnt, similar to BIFF2 */\n\t/*::[*/0x007e/*::]*/: { /* n:\"RK\", */ }, /* Not necessarily same as 0x027e */\n\t/*::[*/0x007f/*::]*/: { /* n:\"ImData\", */ f:parse_ImData },\n\t/*::[*/0x0087/*::]*/: { /* n:\"Addin\", */ },\n\t/*::[*/0x0088/*::]*/: { /* n:\"Edg\", */ },\n\t/*::[*/0x0089/*::]*/: { /* n:\"Pub\", */ },\n\t// 0x8A\n\t// 0x8B LH: alternate menu key flag (BIFF3/4)\n\t// 0x8E\n\t// 0x8F\n\t/*::[*/0x0091/*::]*/: { /* n:\"Sub\", */ },\n\t// 0x93 STYLE\n\t/*::[*/0x0094/*::]*/: { /* n:\"LHRecord\", */ },\n\t/*::[*/0x0095/*::]*/: { /* n:\"LHNGraph\", */ },\n\t/*::[*/0x0096/*::]*/: { /* n:\"Sound\", */ },\n\t// 0xA2 FNPROTO: function prototypes (BIFF4)\n\t// 0xA3\n\t// 0xA8\n\t/*::[*/0x00a9/*::]*/: { /* n:\"CoordList\", */ },\n\t/*::[*/0x00ab/*::]*/: { /* n:\"GCW\", */ },\n\t/*::[*/0x00bc/*::]*/: { /* n:\"ShrFmla\", */ }, /* Not necessarily same as 0x04bc */\n\t/*::[*/0x00bf/*::]*/: { /* n:\"ToolbarHdr\", */ },\n\t/*::[*/0x00c0/*::]*/: { /* n:\"ToolbarEnd\", */ },\n\t/*::[*/0x00c2/*::]*/: { /* n:\"AddMenu\", */ },\n\t/*::[*/0x00c3/*::]*/: { /* n:\"DelMenu\", */ },\n\t/*::[*/0x00d6/*::]*/: { /* n:\"RString\", */ f:parse_RString },\n\t/*::[*/0x00df/*::]*/: { /* n:\"UDDesc\", */ },\n\t/*::[*/0x00ea/*::]*/: { /* n:\"TabIdConf\", */ },\n\t/*::[*/0x0162/*::]*/: { /* n:\"XL5Modify\", */ },\n\t/*::[*/0x01a5/*::]*/: { /* n:\"FileSharing2\", */ },\n\t/*::[*/0x0206/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0218/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0223/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0231/*::]*/: { /* n:\"Font\", */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BIFF3XF\", */ },\n\t/*::[*/0x0406/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BIFF4XF\", */ },\n\t/*::[*/0x086d/*::]*/: { /* n:\"FeatInfo\", */ },\n\t/*::[*/0x0873/*::]*/: { /* n:\"FeatInfo11\", */ },\n\t/*::[*/0x0881/*::]*/: { /* n:\"SXAddl12\", */ },\n\t/*::[*/0x08c0/*::]*/: { /* n:\"AutoWebPub\", */ },\n\t/*::[*/0x08c1/*::]*/: { /* n:\"ListObj\", */ },\n\t/*::[*/0x08c2/*::]*/: { /* n:\"ListField\", */ },\n\t/*::[*/0x08c3/*::]*/: { /* n:\"ListDV\", */ },\n\t/*::[*/0x08c4/*::]*/: { /* n:\"ListCondFmt\", */ },\n\t/*::[*/0x08c5/*::]*/: { /* n:\"ListCF\", */ },\n\t/*::[*/0x08c6/*::]*/: { /* n:\"FMQry\", */ },\n\t/*::[*/0x08c7/*::]*/: { /* n:\"FMSQry\", */ },\n\t/*::[*/0x08c8/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x08c9/*::]*/: { /* n:\"LnExt\", */ },\n\t/*::[*/0x08ca/*::]*/: { /* n:\"MkrExt\", */ },\n\t/*::[*/0x08cb/*::]*/: { /* n:\"CrtCoopt\", */ },\n\t/*::[*/0x08d6/*::]*/: { /* n:\"FRTArchId$\", */ r:12 },\n\n\t/* --- multiplan 4 records --- */\n\t/*::[*/0x0065/*::]*/: { /* n:\"\", */ }, // one per window\n\t/*::[*/0x0066/*::]*/: { /* n:\"\", */ }, // calc settings\n\t/*::[*/0x0069/*::]*/: { /* n:\"\", */ }, // print header\n\t/*::[*/0x006a/*::]*/: { /* n:\"\", */ }, // print footer\n\t/*::[*/0x006b/*::]*/: { /* n:\"\", */ }, // print settings\n\t/*::[*/0x006d/*::]*/: { /* n:\"\", */ }, // one per window\n\t/*::[*/0x0070/*::]*/: { /* n:\"\", */ }, // includes default col width\n\t/*::[*/0x0072/*::]*/: { /* n:\"\", */ }, // includes selected cell\n\n\t/*::[*/0x7262/*::]*/: {}\n};\n\nfunction write_biff_rec(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar t/*:number*/ = type;\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(/*:: len != null &&*/len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_biff_continue(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar len = length || (payload||[]).length || 0;\n\tif(len <= 8224) return write_biff_rec(ba, type, payload, len);\n\tvar t = type;\n\tif(isNaN(t)) return;\n\tvar parts = payload.parts || [], sidx = 0;\n\tvar i = 0, w = 0;\n\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, w);\n\tba.push(payload.slice(i, i + w));\n\ti += w;\n\twhile(i < len) {\n\t\to = ba.next(4);\n\t\to.write_shift(2, 0x3c); // TODO: figure out correct continue type\n\t\tw = 0;\n\t\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\t\to.write_shift(2, w);\n\t\tba.push(payload.slice(i, i+w)); i+= w;\n\t}\n}\n\nfunction write_BIFF2Cell(out, r/*:number*/, c/*:number*/) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r/*:number*/, c/*:number*/, val, t/*:?string*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\twrite_Bes(val, t || 'b', out);\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r/*:number*/, c/*:number*/, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*//*::, opts*/) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, cell.v == null ? \"\" : String(cell.v).slice(0,255)));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba/*:BufArray*/, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar dense = ws[\"!data\"] != null;\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref/*:string*/, rr = \"\", cols/*:Array*/ = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t}\n\tvar row = [];\n\tfor(var C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tif(dense) row = ws[\"!data\"][R] || [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar cell = dense ? row[C] : ws[cols[C] + rr];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i*/ = [];\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\");\n\tvar MAX_ROWS = b8 ? 65536 : 16384;\n\tif(range.e.c > 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* [Uncalced] Index */\n\twrite_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1));\n\twrite_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100));\n\twrite_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true));\n\twrite_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false));\n\twrite_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001));\n\twrite_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true));\n\twrite_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false));\n\twrite_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false));\n\twrite_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1));\n\twrite_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0]));\n\t/* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */\n\t/* Header (string) */\n\t/* Footer (string) */\n\twrite_biff_rec(ba, 0x0083 /* HCenter */, writebool(false));\n\twrite_biff_rec(ba, 0x0084 /* VCenter */, writebool(false));\n\t/* ... */\n\tif(b8) write_ws_cols_biff8(ba, ws[\"!cols\"]);\n\t/* ... */\n\twrite_biff_rec(ba, 0x0200 /* Dimensions */, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tvar comments = [];\n\tvar row = [];\n\tfor(var C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tif(dense) row = ws[\"!data\"][R] || [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? row[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t\tif(b8 && cell.c) comments.push([ref, cell.c]);\n\t\t}\n\t}\n\tvar cname/*:string*/ = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\t// if(b8) comments.forEach(function(comment) { write_biff_rec(ba, 0x001c /* Note */, write_NoteSh(comment)); });\n\t/* ... */\n\tif(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges']));\n\t/* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* [DVAL] */\n\twrite_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t/* *WebPub *CellWatch [SheetExt] */\n\tif(b8) write_FEAT(ba, ws);\n\t/* *FEAT11 *RECORD12 */\n\twrite_biff_rec(ba, 0x000a /* EOF */);\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb/*:Workbook*/, bufs, opts/*:WriteOpts*/) {\n\tvar A = buf_array();\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheets/*:Array*/ = (_WB.Sheets||[]);\n\tvar _wb/*:WBProps*/ = /*::((*/_WB.WBProps||{/*::CodeName:\"ThisWorkbook\"*/}/*:: ):any)*/;\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, 0x0087 /* Addin */);\n\twrite_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2));\n\tif(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */);\n\tif(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */);\n\twrite_biff_rec(A, 0x00e2 /* InterfaceEnd */);\n\twrite_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess(\"SheetJS\", opts));\n\t/* [FileSharing] */\n\twrite_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4));\n\t/* *2047 Lel */\n\tif(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01c0 /* Excel9File */);\n\twrite_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */);\n\t/* [ObNoMacros] */\n\tif(b8 && wb.vbaraw) {\n\t\tvar cname/*:string*/ = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11));\n\t/* *FnGroupName *FnGrp12 */\n\t/* *Lbl */\n\t/* [OleObjectSize] */\n\twrite_biff_rec(A, 0x0019 /* WinProtect */, writebool(false));\n\twrite_biff_rec(A, 0x0012 /* Protect */, writebool(false));\n\twrite_biff_rec(A, 0x0013 /* Password */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false));\n\tif(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0));\n\twrite_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts));\n\twrite_biff_rec(A, 0x0040 /* Backup */, writebool(false));\n\twrite_biff_rec(A, 0x008d /* HideObj */, writeuint16(0));\n\twrite_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true));\n\tif(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false));\n\twrite_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\t/* METADATA [MTRSettings] [ForceFullCalculation] */\n\tif(b8) write_biff_rec(C, 0x008C /* Country */, write_Country());\n\t/* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */\n\n\t/* BIFF8: [SST *Continue] ExtSST */\n\tif(b8 && opts.Strings) write_biff_continue(C, 0x00FC /* SST */, write_SST(opts.Strings, opts));\n\n\t/* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */\n\twrite_biff_rec(C, 0x000A /* EOF */);\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet/*:WBWSProp*/ = _sheets[j] || ({}/*:any*/);\n\t\twrite_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn bconcat(out);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\n\to.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tfix_write_opts(o);\n\n\to.cellXfs = [];\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn bconcat(bufs);\n}\n\nfunction write_biff_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tfor(var i = 0; i <= wb.SheetNames.length; ++i) {\n\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\tif(range.e.c > 255) { // note: 255 is IV\n\t\t\tif(typeof console != \"undefined\" && console.error) console.error(\"Worksheet '\" + wb.SheetNames[i] + \"' extends beyond column IV (255). Data may be lost.\");\n\t\t}\n\t}\n\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nfunction html_to_sheet(str/*:string*/, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar dense = (opts.dense != null) ? opts.dense : DENSE;\n\tvar ws/*:Worksheet*/ = ({}/*:any*/); if(dense) ws[\"!data\"] = [];\n\tstr = str.replace(//g, \"\");\n\tvar mtch/*:any*/ = str.match(/\");\n\tvar mtch2/*:any*/ = str.match(/<\\/table/i);\n\tvar i/*:number*/ = mtch.index, j/*:number*/ = mtch2 && mtch2.index || str.length;\n\tvar rows = split_regex(str.slice(i, j), /(:?]*>)/i, \"\");\n\tvar R = -1, C = 0, RS = 0, CS = 0;\n\tvar range/*:Range*/ = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\tvar merges/*:Array*/ = [];\n\tfor(i = 0; i < rows.length; ++i) {\n\t\tvar row = rows[i].trim();\n\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\tif(hd == \"/i);\n\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\tvar cell = cells[j].trim();\n\t\t\tif(!cell.match(/\")) > -1) m = m.slice(cc+1);\n\t\t\tfor(var midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar _merge/*:Range*/ = merges[midx];\n\t\t\t\tif(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; }\n\t\t\t}\n\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar _t/*:string*/ = tag.t || tag[\"data-t\"] || \"\";\n\t\t\t/* TODO: generate stub cells */\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tm = htmldecode(m);\n\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tvar o/*:Cell*/ = {t:'s', v:m};\n\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\to = ({t:'d', v:parseDate(m)}/*:any*/);\n\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t}\n\t\t\tif(dense) { if(!ws[\"!data\"][R]) ws[\"!data\"][R] = []; ws[\"!data\"][R][C] = o; }\n\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\tC += CS;\n\t\t}\n\t}\n\tws['!ref'] = encode_range(range);\n\tif(merges.length) ws[\"!merges\"] = merges;\n\treturn ws;\n}\nfunction make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar M/*:Array*/ = (ws['!merges'] ||[]);\n\tvar oo/*:Array*/ = [];\n\tvar sp = ({}/*:any*/);\n\tvar dense = ws[\"!data\"] != null;\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar RS = 0, CS = 0;\n\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t}\n\t\tif(RS < 0) continue;\n\t\tvar coord = encode_col(C) + encode_row(R);\n\t\tvar cell = dense ? (ws[\"!data\"][R]||[])[C] : ws[coord];\n\t\t/* TODO: html entities */\n\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\n\t\tsp = ({}/*:any*/);\n\t\tif(RS > 1) sp.rowspan = RS;\n\t\tif(CS > 1) sp.colspan = CS;\n\t\tif(o.editable) w = '' + w + '';\n\t\telse if(cell) {\n\t\t\tsp[\"data-t\"] = cell && cell.t || 'z';\n\t\t\tif(cell.v != null) sp[\"data-v\"] = cell.v;\n\t\t\tif(cell.z != null) sp[\"data-z\"] = cell.z;\n\t\t\tif(cell.l && (cell.l.Target || \"#\").charAt(0) != \"#\") w = '' + w + '';\n\t\t}\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\n\t\too.push(writextag('td', w, sp));\n\t}\n\tvar preamble = \"\";\n\treturn preamble + oo.join(\"\") + \"\";\n}\n\nvar HTML_BEGIN = 'SheetJS Table Export';\nvar HTML_END = '';\n\nfunction html_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\tvar mtch = str.match(/[\\s\\S]*?<\\/table>/gi);\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find
      \");\n\tif(mtch.length == 1) {\n\t\tvar w = sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);\n\t\tw.bookType = \"html\";\n\t\treturn w;\n\t}\n\tvar wb = book_new();\n\tmtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), \"Sheet\" + (idx+1)); });\n\twb.bookType = \"html\";\n\treturn wb;\n}\n\nfunction make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\treturn out.join(\"\") + '';\n}\n\nfunction sheet_to_html(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*//*, wb:?Workbook*/)/*:string*/ {\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tvar out/*:Array*/ = [header];\n\tvar r = decode_range(ws['!ref']);\n\tout.push(make_html_preamble(ws, r, o));\n\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\tout.push(\"
      \" + footer);\n\treturn out.join(\"\");\n}\n\nfunction sheet_add_dom(ws/*:Worksheet*/, table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar rows/*:HTMLCollection*/ = table.rows;\n\tif(!rows) {\n\t\t/* not an HTML TABLE */\n\t\tthrow \"Unsupported origin when \" + table.tagName + \" is not a TABLE\";\n\t}\n\n\tvar opts = _opts || {};\n\tvar dense = ws[\"!data\"] != null;\n\tvar or_R = 0, or_C = 0;\n\tif(opts.origin != null) {\n\t\tif(typeof opts.origin == 'number') or_R = opts.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof opts.origin == \"string\" ? decode_cell(opts.origin) : opts.origin;\n\t\t\tor_R = _origin.r; or_C = _origin.c;\n\t\t}\n\t}\n\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\n\tvar range/*:Range*/ = {s:{r:0,c:0},e:{r:or_R,c:or_C}};\n\tif(ws[\"!ref\"]) {\n\t\tvar _range/*:Range*/ = decode_range(ws[\"!ref\"]);\n\t\trange.s.r = Math.min(range.s.r, _range.s.r);\n\t\trange.s.c = Math.min(range.s.c, _range.s.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\tif(or_R == -1) range.e.r = or_R = _range.e.r + 1;\n\t}\n\tvar merges/*:Array*/ = [], midx = 0;\n\tvar rowinfo/*:Array*/ = ws[\"!rows\"] || (ws[\"!rows\"] = []);\n\tvar _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0;\n\tif(!ws[\"!cols\"]) ws['!cols'] = [];\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row/*:HTMLTableRowElement*/ = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts/*:HTMLCollection*/ = (row.cells);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt/*:HTMLTableCellElement*/ = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v/*:?string*/ = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML);\n\t\t\tvar z/*:?string*/ = elt.getAttribute('data-z') || elt.getAttribute('z');\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m/*:Range*/ = merges[midx];\n\t\t\t\tif(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif( ((RS = (+elt.getAttribute(\"rowspan\") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}});\n\t\t\tvar o/*:Cell*/ = {t:'s', v:v};\n\t\t\tvar _t/*:string*/ = elt.getAttribute(\"data-t\") || elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)}/*:any*/);\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(o.z === undefined && z != null) o.z = z;\n\t\t\t/* The first link is used. Links are assumed to be fully specified.\n\t\t\t * TODO: The right way to process relative links is to make a new */\n\t\t\tvar l = \"\", Aelts = elt.getElementsByTagName(\"A\");\n\t\t\tif(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti)\tif(Aelts[Aelti].hasAttribute(\"href\")) {\n\t\t\t\tl = Aelts[Aelti].getAttribute(\"href\"); if(l.charAt(0) != \"#\") break;\n\t\t\t}\n\t\t\tif(l && l.charAt(0) != \"#\" &&\tl.slice(0, 11).toLowerCase() != 'javascript:') o.l = ({ Target: l });\n\t\t\tif(dense) { if(!ws[\"!data\"][R + or_R]) ws[\"!data\"][R + or_R] = []; ws[\"!data\"][R + or_R][C + or_C] = o; }\n\t\t\telse ws[encode_cell({c:C + or_C, r:R + or_R})] = o;\n\t\t\tif(range.e.c < C + or_C) range.e.c = C + or_C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws['!merges'] = (ws[\"!merges\"] || []).concat(merges);\n\trange.e.r = Math.max(range.e.r, R - 1 + or_R);\n\tws['!ref'] = encode_range(range);\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance\n\treturn ws;\n}\n\nfunction parse_dom_table(table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tvar ws/*:Worksheet*/ = ({}/*:any*/); if(opts.dense) ws[\"!data\"] = [];\n\treturn sheet_add_dom(ws, table, _opts);\n}\n\nfunction table_to_book(table/*:HTMLElement*/, opts/*:?any*/)/*:Workbook*/ {\n\tvar o = sheet_to_workbook(parse_dom_table(table, opts), opts);\n\t//o.bookType = \"dom\"; // TODO: define a type for this\n\treturn o;\n}\n\nfunction is_dom_element_hidden(element/*:HTMLElement*/)/*:boolean*/ {\n\tvar display/*:string*/ = '';\n\tvar get_computed_style/*:?function*/ = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\n\tif(!display) display = element.style && element.style.display;\n\treturn display === 'none';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element/*:HTMLElement*/)/*:?function*/ {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nfunction parse_text_p(text/*:string*//*::, tag*/)/*:Array*/ {\n\t/* 6.1.2 White Space Characters */\n\tvar fixed = text\n\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t.replace(//g,\" \")\n\t\t.replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t.replace(/]*\\/>/g,\"\\t\")\n\t\t.replace(//g,\"\\n\");\n\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\n\n\treturn [v];\n}\n\n/* Note: ODS can stick styles in content.xml or styles.xml, FODS blurs lines */\nfunction parse_ods_styles(d/*:string*/, _opts, _nfm) {\n\tvar number_format_map = _nfm || {};\n\tvar str = xlml_normalize(d);\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\n\tvar Rn, NFtag, NF = \"\", tNF = \"\", y, etpos = 0, tidx = -1, infmt = false, payload = \"\";\n\twhile((Rn = xlmlregex.exec(str))) {\n\t\tswitch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\t\t/* Number Format Definitions */\n\t\tcase 'number-style': // 16.29.2\n\t\tcase 'currency-style': // 16.29.8\n\t\tcase 'percentage-style': // 16.29.10\n\t\tcase 'date-style': // 16.29.11\n\t\tcase 'time-style': // 16.29.19\n\t\tcase 'text-style': // 16.29.26\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tinfmt = false;\n\t\t\t\tif(NFtag['truncate-on-overflow'] == \"false\") {\n\t\t\t\t\tif(NF.match(/h/)) NF = NF.replace(/h+/, \"[$&]\");\n\t\t\t\t\telse if(NF.match(/m/)) NF = NF.replace(/m+/, \"[$&]\");\n\t\t\t\t\telse if(NF.match(/s/)) NF = NF.replace(/s+/, \"[$&]\");\n\t\t\t\t}\n\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\tNF = \"\";\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tinfmt = true;\n\t\t\t\tNF = \"\";\n\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t} break;\n\n\t\t// LibreOffice bug https://bugs.documentfoundation.org/show_bug.cgi?id=149484\n\t\tcase 'boolean-style': // 16.29.24\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tinfmt = false;\n\t\t\t\tnumber_format_map[NFtag.name] = \"General\";\n\t\t\t\tNF = \"\";\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tinfmt = true;\n\t\t\t\tNF = \"\";\n\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t} break;\n\n\t\t/* Number Format Elements */\n\t\tcase 'boolean': // 16.29.25\n\t\t\tNF += \"General\"; // ODF spec is unfortunately underspecified here\n\t\t\tbreak;\n\n\t\tcase 'text': // 16.29.27\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tpayload = str.slice(tidx, xlmlregex.lastIndex - Rn[0].length);\n\t\t\t\t// NOTE: Excel has a different interpretation of \"%%\" and friends\n\t\t\t\tif(payload == \"%\" && NFtag[0] == ' 16.29.12\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"d\"; break;\n\t\t\t\tcase \"long\": NF += \"dd\"; break;\n\t\t\t\tdefault: NF += \"dd\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'day-of-week': { // 16.29.16\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"ddd\"; break;\n\t\t\t\tcase \"long\": NF += \"dddd\"; break;\n\t\t\t\tdefault: NF += \"ddd\"; break;\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'era': { // 16.29.15 TODO: proper mapping\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"ee\"; break;\n\t\t\t\tcase \"long\": NF += \"eeee\"; break;\n\t\t\t\tdefault: NF += \"eeee\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'hours': { // 16.29.20\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"h\"; break;\n\t\t\t\tcase \"long\": NF += \"hh\"; break;\n\t\t\t\tdefault: NF += \"hh\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'minutes': { // 16.29.21\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"m\"; break;\n\t\t\t\tcase \"long\": NF += \"mm\"; break;\n\t\t\t\tdefault: NF += \"mm\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'month': { // 16.29.13\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tif(y[\"textual\"]) NF += \"mm\";\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"m\"; break;\n\t\t\t\tcase \"long\": NF += \"mm\"; break;\n\t\t\t\tdefault: NF += \"m\"; break;\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'seconds': { // 16.29.22\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"s\"; break;\n\t\t\t\tcase \"long\": NF += \"ss\"; break;\n\t\t\t\tdefault: NF += \"ss\"; break; // TODO: error condition\n\t\t\t}\n\t\t\tif(y[\"decimal-places\"]) NF += \".\" + fill(\"0\", +y[\"decimal-places\"]);\n\t\t} break;\n\n\t\tcase 'year': { // 16.29.14\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch(y[\"style\"]) {\n\t\t\t\tcase \"short\": NF += \"yy\"; break;\n\t\t\t\tcase \"long\": NF += \"yyyy\"; break;\n\t\t\t\tdefault: NF += \"yy\"; break; // TODO: error condition\n\t\t\t}\n\t\t} break;\n\n\t\tcase 'am-pm': // 16.29.23\n\t\t\tNF += \"AM/PM\"; // LO autocorrects A/P -> AM/PM\n\t\t\tbreak;\n\n\t\tcase 'week-of-year': // 16.29.17\n\t\tcase 'quarter': // 16.29.18\n\t\t\tconsole.error(\"Excel does not support ODS format token \" + Rn[3]);\n\t\t\tbreak;\n\n\t\tcase 'fill-character': // 16.29.5\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tpayload = str.slice(tidx, xlmlregex.lastIndex - Rn[0].length);\n\t\t\t\t// NOTE: Excel has a different interpretation of \"%%\" and friends\n\t\t\t\tNF += '\"' + payload.replace(/\"/g, '\"\"') + '\"*';\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\ttidx = xlmlregex.lastIndex;\n\t\t\t} break;\n\n\t\tcase 'scientific-number': // 16.29.6\n\t\t\t// TODO: find a mapping for all parameters\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tNF += \"0.\" + fill(\"0\", +y[\"min-decimal-places\"] || +y[\"decimal-places\"] || 2) + fill(\"?\", +y[\"decimal-places\"] - +y[\"min-decimal-places\"] || 0) + \"E\" + (parsexmlbool(y[\"forced-exponent-sign\"]) ? \"+\" : \"\") + fill(\"0\", +y[\"min-exponent-digits\"] || 2);\n\t\t\tbreak;\n\n\t\tcase 'fraction': // 16.29.7\n\t\t\t// TODO: find a mapping for all parameters\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tif(!+y[\"min-integer-digits\"]) NF += \"#\";\n\t\t\telse NF += fill(\"0\", +y[\"min-integer-digits\"]);\n\t\t\tNF += \" \";\n\t\t\tNF += fill(\"?\", +y[\"min-numerator-digits\"] || 1);\n\t\t\tNF += \"/\";\n\t\t\tif(+y[\"denominator-value\"]) NF += y[\"denominator-value\"];\n\t\t\telse NF += fill(\"?\", +y[\"min-denominator-digits\"] || 1);\n\t\t\tbreak;\n\n\t\tcase 'currency-symbol': // 16.29.9\n\t\t\t// TODO: localization with [$-...]\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tNF += '\"' + str.slice(tidx, xlmlregex.lastIndex - Rn[0].length).replace(/\"/g, '\"\"') + '\"';\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\ttidx = xlmlregex.lastIndex;\n\t\t\t} else NF += \"$\";\n\t\t\tbreak;\n\n\t\tcase 'text-properties': // 16.29.29\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tswitch((y[\"color\"]||\"\").toLowerCase().replace(\"#\", \"\")) {\n\t\t\t\tcase \"ff0000\": case \"red\": NF = \"[Red]\" + NF; break;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'text-content': // 16.29.28\n\t\t\tNF += \"@\";\n\t\t\tbreak;\n\n\t\tcase 'map': // 16.3\n\t\t\t// TODO: handle more complex maps\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\tif(unescapexml(y[\"condition\"]) == \"value()>=0\") NF = number_format_map[y[\"apply-style-name\"]] + \";\" + NF;\n\t\t\telse console.error(\"ODS number format may be incorrect: \" + y[\"condition\"]);\n\t\t\tbreak;\n\n\t\tcase 'number': // 16.29.3\n\t\t\t// TODO: handle all the attributes\n\t\t\tif(Rn[1]==='/') break;\n\t\t\ty = parsexmltag(Rn[0], false);\n\t\t\ttNF = \"\";\n\t\t\ttNF += fill(\"0\", +y[\"min-integer-digits\"] || 1);\n\t\t\tif(parsexmlbool(y[\"grouping\"])) tNF = commaify(fill(\"#\", Math.max(0, 4 - tNF.length)) + tNF);\n\t\t\tif(+y[\"min-decimal-places\"] || +y[\"decimal-places\"]) tNF += \".\";\n\t\t\tif(+y[\"min-decimal-places\"]) tNF += fill(\"0\", +y[\"min-decimal-places\"] || 1);\n\t\t\tif(+y[\"decimal-places\"] - (+y[\"min-decimal-places\"]||0)) tNF += fill(\"0\", +y[\"decimal-places\"] - (+y[\"min-decimal-places\"]||0)); // TODO: should this be \"#\" ?\n\t\t\tNF += tNF;\n\t\t\tbreak;\n\n\t\tcase 'embedded-text': // 16.29.4\n\t\t\t// TODO: verify interplay with grouping et al\n\t\t\tif(Rn[1]==='/') {\n\t\t\t\tif(etpos == 0) NF += '\"' + str.slice(tidx, xlmlregex.lastIndex - Rn[0].length).replace(/\"/g, '\"\"') + '\"';\n\t\t\t\telse NF = NF.slice(0, etpos) + '\"' + str.slice(tidx, xlmlregex.lastIndex - Rn[0].length).replace(/\"/g, '\"\"') + '\"' + NF.slice(etpos);\n\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\ttidx = xlmlregex.lastIndex;\n\t\t\t\tetpos = -+parsexmltag(Rn[0], false)[\"position\"] || 0;\n\t\t\t} break;\n\n\t}}\n\treturn number_format_map;\n}\n\nfunction parse_content_xml(d/*:string*/, _opts, _nfm)/*:Workbook*/ {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state/*:Array*/ = [], tmp;\n\t\tvar tag/*:: = {}*/;\n\t\tvar nfidx, NF = \"\", pidx = 0;\n\t\tvar sheetag/*:: = {name:\"\", '名称':\"\"}*/;\n\t\tvar rowtag/*:: = {'行号':\"\"}*/;\n\t\tvar Sheets = {}, SheetNames/*:Array*/ = [];\n\t\tvar ws = ({}/*:any*/); if(opts.dense) ws[\"!data\"] = [];\n\t\tvar Rn, q/*:: :any = ({t:\"\", v:null, z:null, w:\"\",c:[],}:any)*/;\n\t\tvar ctag = ({value:\"\"}/*:any*/);\n\t\tvar textp = \"\", textpidx = 0, textptag/*:: = {}*/;\n\t\tvar textR = [];\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = _nfm || {}, styles = {};\n\t\tvar merges/*:Array*/ = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo/*:Array*/ = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\t\tvar WB = {Names:[], WBProps:{}};\n\t\tvar atag = ({}/*:any*/);\n\t\tvar _Ref/*:[string, string]*/ = [\"\", \"\"];\n\t\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\tvar baddate = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 \n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\telse ws['!ref'] = \"A1:A1\";\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = ({}/*:any*/); if(opts.dense) ws[\"!data\"] = []; merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 \n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 \n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 \n\t\t\t\tif(Rn[1] !== '/') ++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[\"!data\"][R]) ws[\"!data\"][R] = []; ws[\"!data\"][R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif(ctag[\"style-name\"] && styles[ctag[\"style-name\"]]) q.z = styles[ctag[\"style-name\"]];\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[\"!data\"][R]) ws[\"!data\"][R] = [];\n\t\t\t\t\t\t\tws[\"!data\"][R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_col(C) + encode_row(R)] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({}/*:any*/);\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag[\"style-name\"] && styles[ctag[\"style-name\"]]) q.z = styles[ctag[\"style-name\"]];\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']) || (+ctag['boolean-value'] >= 1); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v, WB.WBProps.date1904) - baddate; }\n\t\t\t\t\t\t\tif(!q.z) q.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400;\n\t\t\t\t\t\t\tif(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); }\n\t\t\t\t\t\t\tif(!q.z) q.z = 'HH:MM:SS'; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tif(textR.length) q.R = textR;\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(isstub) { q.t = \"z\"; delete q.v; }\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[\"!data\"][R + rpt]) ws[\"!data\"][R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[\"!data\"][R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[\"!data\"][R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {/*:: t:\"\", v:null, z:null, w:\"\",c:[]*/};\n\t\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\t}\n\t\t\t\tatag = ({}/*:any*/);\n\t\t\t\tbreak; // 9.1.4 \n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 \n\t\t\tcase 'spreadsheet': case '主体': // 3.7 \n\t\t\tcase 'scripts': // 3.12 \n\t\t\tcase 'styles': // TODO \n\t\t\tcase 'font-face-decls': // 3.14 \n\t\t\tcase 'master-styles': // 3.15.4 -- relevant for FODS\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tif(textR.length) /*::(*/comment/*:: :any)*/.R = textR;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 \n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: FODS/UOF\n\t\t\tcase 'settings': // TODO: \n\t\t\tcase 'config-item-set': // TODO: \n\t\t\tcase 'config-item-map-indexed': // TODO: \n\t\t\tcase 'config-item-map-entry': // TODO: \n\t\t\tcase 'config-item-map-named': // TODO: \n\t\t\tcase 'shapes': // 9.2.8 \n\t\t\tcase 'frame': // 10.4.2 \n\t\t\tcase 'text-box': // 10.4.3 \n\t\t\tcase 'image': // 10.4.4 \n\t\t\tcase 'data-pilot-tables': // 9.6.2 \n\t\t\tcase 'list-style': // 16.30 \n\t\t\tcase 'form': // 13.13 \n\t\t\tcase 'dde-links': // 9.8 \n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // \n\t\t\tcase 'currency-symbol': // \n\t\t\tcase 'fill-character': // 16.29.5 \n\t\t\t\tbreak;\n\n\t\t\tcase 'text-style': // 16.27.25 \n\t\t\tcase 'boolean-style': // 16.27.23 \n\t\t\tcase 'number-style': // 16.27.2 \n\t\t\tcase 'currency-style': // 16.29.8 \n\t\t\tcase 'percentage-style': // 16.27.9 \n\t\t\tcase 'date-style': // 16.27.10 \n\t\t\tcase 'time-style': // 16.27.18 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tvar xlmlidx = xlmlregex.lastIndex;\n\t\t\t\t\tparse_ods_styles(str.slice(nfidx, xlmlregex.lastIndex), _opts, number_format_map);\n\t\t\t\t\txlmlregex.lastIndex = xlmlidx;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tnfidx = xlmlregex.lastIndex - Rn[0].length;\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 \n\t\t\tcase 'libraries': break; // TODO: \n\t\t\tcase 'automatic-styles': break; // 3.15.3 \n\n\t\t\tcase 'default-style': // TODO: \n\t\t\tcase 'page-layout': break; // TODO: \n\t\t\tcase 'style': { // 16.2 \n\t\t\t\tvar styletag = parsexmltag(Rn[0], false);\n\t\t\t\tif(styletag[\"family\"] == \"table-cell\" && number_format_map[styletag[\"data-style-name\"]]) styles[styletag[\"name\"]] = number_format_map[styletag[\"data-style-name\"]];\n\t\t\t} break;\n\t\t\tcase 'map': break; // 16.3 \n\t\t\tcase 'font-face': break; // 16.21 \n\n\t\t\tcase 'paragraph-properties': break; // 17.6 \n\t\t\tcase 'table-properties': break; // 17.15 \n\t\t\tcase 'table-column-properties': break; // 17.16 \n\t\t\tcase 'table-row-properties': break; // 17.17 \n\t\t\tcase 'table-cell-properties': break; // 17.18 \n\n\t\t\tcase 'number': // 16.27.3 \n\t\t\t\tbreak;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 \n\n\t\t\tcase 'day': // 16.27.11 \n\t\t\tcase 'month': // 16.27.12 \n\t\t\tcase 'year': // 16.27.13 \n\t\t\tcase 'era': // 16.27.14 \n\t\t\tcase 'day-of-week': // 16.27.15 \n\t\t\tcase 'week-of-year': // 16.27.16 \n\t\t\tcase 'quarter': // 16.27.17 \n\t\t\tcase 'hours': // 16.27.19 \n\t\t\tcase 'minutes': // 16.27.20 \n\t\t\tcase 'seconds': // 16.27.21 \n\t\t\tcase 'am-pm': // 16.27.22 \n\t\t\t\tbreak;\n\n\t\t\tcase 'boolean': break; // 16.27.24 \n\t\t\tcase 'text': // 16.27.26 \n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 \n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}/*:any*/);\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 \n\t\t\tcase 'text-properties': break; // 16.27.27 \n\t\t\tcase 'embedded-text': break; // 16.27.4 \n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 \n\t\t\tcase 'table-header-rows': break; // 9.1.7 \n\t\t\tcase 'table-rows': break; // 9.1.12 \n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 \n\t\t\tcase 'table-header-columns': break; // 9.1.11 \n\t\t\tcase 'table-columns': break; // 9.1.12 \n\n\t\t\tcase 'null-date': // 9.4.2 \n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\tswitch(tag[\"date-value\"]) {\n\t\t\t\t\tcase \"1904-01-01\": WB.WBProps.date1904 = true;\n\t\t\t\t\t/* falls through */\n\t\t\t\t\tcase \"1900-01-01\": baddate = 0;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'graphic-properties': break; // 17.21 \n\t\t\tcase 'calculation-settings': break; // 9.4.1 \n\t\t\tcase 'named-expressions': break; // 9.4.11 \n\t\t\tcase 'label-range': break; // 9.4.9 \n\t\t\tcase 'label-ranges': break; // 9.4.10 \n\t\t\tcase 'named-expression': break; // 9.4.13 \n\t\t\tcase 'sort': break; // 9.4.19 \n\t\t\tcase 'sort-by': break; // 9.4.20 \n\t\t\tcase 'sort-groups': break; // 9.4.22 \n\n\t\t\tcase 'tab': break; // 6.1.4 \n\t\t\tcase 'line-break': break; // 6.1.5 \n\t\t\tcase 'span': break; // 6.1.7 \n\t\t\tcase 'p': case '文本串': // 5.1.3 \n\t\t\t\tif(['master-styles'].indexOf(state[state.length-1][0]) > -1) break;\n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // \n\t\t\tcase 's': break; // \n\n\t\t\tcase 'database-range': // 9.4.15 \n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 \n\t\t\tcase 'title': case '标题': break; // <*:title> OR \n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 \n\t\t\tcase 'content-validations': break; // 9.4.4 \n\t\t\tcase 'filter': break; // 9.5.2 \n\t\t\tcase 'filter-and': break; // 9.5.3 \n\t\t\tcase 'filter-or': break; // 9.5.4 \n\t\t\tcase 'filter-condition': break; // 9.5.5 \n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 \n\t\t\tcase 'page-count': break; // TODO \n\t\t\tcase 'time': break; // TODO \n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 \n\t\t\tcase 'property': break; // 13.8 \n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = unescapexml(atag.href); delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t} else if(atag.Target.match(/^\\.\\.[\\\\\\/]/)) atag.Target = atag.Target.slice(3);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // ',\n\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t'',\n\t\t''\n\t].join(\"\");\n\n\tvar payload = '' + master_styles + '';\n\n\treturn function wso(/*::wb, opts*/) {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\n\n// TODO: find out if anyone actually read the spec. LO has some wild errors\nfunction write_number_format_ods(nf/*:string*/, nfidx/*:string*/)/*:string*/ {\n\tvar type = \"number\", payload = \"\", nopts = { \"style:name\": nfidx }, c = \"\", i = 0;\n\tnf = nf.replace(/\"[$]\"/g, \"$\");\n\t/* TODO: replace with an actual parser based on a real grammar */\n\tj: {\n\t\t// TODO: support style maps\n\t\tif(nf.indexOf(\";\") > -1) {\n\t\t\tconsole.error(\"Unsupported ODS Style Map exported. Using first branch of \" + nf);\n\t\t\tnf = nf.slice(0, nf.indexOf(\";\"));\n\t\t}\n\n\t\tif(nf == \"@\") { type = \"text\"; payload = \"\"; break j; }\n\n\t\t/* currency flag */\n\t\tif(nf.indexOf(/\\$/) > -1) { type = \"currency\"; }\n\n\t\t/* opening string literal */\n\t\tif(nf[i] == '\"') {\n\t\t\tc = \"\";\n\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\tif(nf[i+1] == \"*\") {\n\t\t\t\ti++;\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t\t} else {\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t\t}\n\t\t\tnf = nf.slice(i+1); i = 0;\n\t\t}\n\n\t\t/* fractions */\n\t\tvar t = nf.match(/# (\\?+)\\/(\\?+)/);\n\t\tif(t) { payload += writextag(\"number:fraction\", null, {\"number:min-integer-digits\":0, \"number:min-numerator-digits\": t[1].length, \"number:max-denominator-value\": Math.max(+(t[1].replace(/./g, \"9\")), +(t[2].replace(/./g, \"9\"))) }); break j; }\n\t\tif((t=nf.match(/# (\\?+)\\/(\\d+)/))) { payload += writextag(\"number:fraction\", null, {\"number:min-integer-digits\":0, \"number:min-numerator-digits\": t[1].length, \"number:denominator-value\": +t[2]}); break j; }\n\n\t\t/* percentages */\n\t\tif((t=nf.match(/(\\d+)(|\\.\\d+)%/))) { type = \"percentage\"; payload += writextag(\"number:number\", null, {\"number:decimal-places\": t[2] && t.length - 1 || 0, \"number:min-decimal-places\": t[2] && t.length - 1 || 0, \"number:min-integer-digits\": t[1].length }) + \"%\"; break j; }\n\n\t\t/* datetime */\n\t\tvar has_time = false;\n\t\tif([\"y\",\"m\",\"d\"].indexOf(nf[0]) > -1) {\n\t\t\ttype = \"date\";\n\t\t\tk: for(; i < nf.length; ++i) switch((c = nf[i].toLowerCase())) {\n\t\t\t\tcase \"h\": case \"s\": has_time = true; --i; break k;\n\t\t\t\tcase \"m\":\n\t\t\t\t\tl: for(var h = i+1; h < nf.length; ++h) switch(nf[h]) {\n\t\t\t\t\t\tcase \"y\": case \"d\": break l;\n\t\t\t\t\t\tcase \"h\": case \"s\": has_time = true; --i; break k;\n\t\t\t\t\t}\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"y\": case \"d\":\n\t\t\t\t\twhile((nf[++i]||\"\").toLowerCase() == c[0]) c += c[0]; --i;\n\t\t\t\t\tswitch(c) {\n\t\t\t\t\t\tcase \"y\": case \"yy\": payload += \"\"; break;\n\t\t\t\t\t\tcase \"yyy\": case \"yyyy\": payload += ''; break;\n\t\t\t\t\t\tcase \"mmmmm\": console.error(\"ODS has no equivalent of format |mmmmm|\");\n\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\tcase \"m\": case \"mm\": case \"mmm\": case \"mmmm\":\n\t\t\t\t\t\t\tpayload += '= 3 ? \"true\" : \"false\") + '\"/>';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"d\": case \"dd\": payload += ''; break;\n\t\t\t\t\t\tcase \"ddd\": case \"dddd\": payload += ''; break;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase '\"':\n\t\t\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\t\t\tpayload += '' + escapexml(c.slice(1).replace(/\"\"/g, '\"')) + '';\n\t\t\t\t\tbreak;\n\t\t\t\tcase '/': payload += '' + escapexml(c) + ''; break;\n\t\t\t\tdefault: console.error(\"unrecognized character \" + c + \" in ODF format \" + nf);\n\t\t\t}\n\t\t\tif(!has_time) break j;\n\t\t\tnf = nf.slice(i+1); i = 0;\n\t\t}\n\t\tif(nf.match(/^\\[?[hms]/)) {\n\t\t\tif(type == \"number\") type = \"time\";\n\t\t\tif(nf.match(/\\[/)) {\n\t\t\t\tnf = nf.replace(/[\\[\\]]/g, \"\");\n\t\t\t\tnopts['number:truncate-on-overflow'] = \"false\";\n\t\t\t}\n\t\t\tfor(; i < nf.length; ++i) switch((c = nf[i].toLowerCase())) {\n\t\t\t\tcase \"h\": case \"m\": case \"s\":\n\t\t\t\t\twhile((nf[++i]||\"\").toLowerCase() == c[0]) c += c[0]; --i;\n\t\t\t\t\tswitch(c) {\n\t\t\t\t\t\tcase \"h\": case \"hh\": payload += ''; break;\n\t\t\t\t\t\tcase \"m\": case \"mm\": payload += ''; break;\n\t\t\t\t\t\tcase \"s\": case \"ss\":\n\t\t\t\t\t\t\tif(nf[i+1] == \".\") do { c += nf[i+1]; ++i; } while(nf[i+1] == \"0\");\n\t\t\t\t\t\t\tpayload += ''; break;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase '\"':\n\t\t\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\t\t\tpayload += '' + escapexml(c.slice(1).replace(/\"\"/g, '\"')) + '';\n\t\t\t\t\tbreak;\n\t\t\t\tcase '/': payload += '' + escapexml(c) + ''; break;\n\t\t\t\tcase \"a\":\n\t\t\t\t\tif(nf.slice(i, i+3).toLowerCase() == \"a/p\") { payload += ''; i += 2; break; } // Note: ODF does not support A/P\n\t\t\t\t\tif(nf.slice(i, i+5).toLowerCase() == \"am/pm\") { payload += ''; i += 4; break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: console.error(\"unrecognized character \" + c + \" in ODF format \" + nf);\n\t\t\t}\n\t\t\tbreak j;\n\t\t}\n\n\t\t/* currency flag */\n\t\tif(nf.indexOf(/\\$/) > -1) { type = \"currency\"; }\n\n\t\t/* should be in a char loop */\n\t\tif(nf[0] == \"$\") { payload += '$'; nf = nf.slice(1); i = 0; }\n\t\ti = 0; if(nf[i] == '\"') {\n\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\tif(nf[i+1] == \"*\") {\n\t\t\t\ti++;\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t\t} else {\n\t\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t\t}\n\t\t\tnf = nf.slice(i+1); i = 0;\n\t\t}\n\n\t\t/* number TODO: interstitial text e.g. 000)000-0000 */\n\t\tvar np = nf.match(/([#0][0#,]*)(\\.[0#]*|)(E[+]?0*|)/i);\n\t\tif(!np || !np[0]) console.error(\"Could not find numeric part of \" + nf);\n\t\telse {\n\t\t\tvar base = np[1].replace(/,/g, \"\");\n\t\t\tpayload += ' -1 ? ' number:grouping=\"true\"' : \"\") +\n\t\t\t\t(np[2] && ' number:decimal-places=\"' + (np[2].length - 1) + '\"' || ' number:decimal-places=\"0\"') +\n\t\t\t\t(np[3] && np[3].indexOf(\"+\") > -1 ? ' number:forced-exponent-sign=\"true\"' : \"\" ) +\n\t\t\t\t(np[3] ? ' number:min-exponent-digits=\"' + np[3].match(/0+/)[0].length + '\"' : \"\" ) +\n\t\t\t\t'>' +\n\t\t\t\t/* TODO: interstitial text placeholders */\n\t\t\t\t'';\n\t\t\ti = np.index + np[0].length;\n\t\t}\n\n\t\t/* residual text */\n\t\tif(nf[i] == '\"') {\n\t\t\tc = \"\";\n\t\t\twhile(nf[++i] != '\"' || nf[++i] == '\"') c += nf[i]; --i;\n\t\t\tpayload += '' + escapexml(c.replace(/\"\"/g, '\"')) + '';\n\t\t}\n\t}\n\n\tif(!payload) { console.error(\"Could not generate ODS number format for |\" + nf + \"|\"); return \"\"; }\n\treturn writextag(\"number:\" + type + \"-style\", payload, nopts);\n}\n\nfunction write_names_ods(Names, SheetNames, idx) {\n\tvar scoped = Names.filter(function(name) { return name.Sheet == (idx == -1 ? null : idx); });\n\tif(!scoped.length) return \"\";\n\treturn \" \\n\" + scoped.map(function(name) {\n\t\tvar odsref = csf_to_ods_3D(name.Ref);\n\t\treturn \" \" + writextag(\"table:named-range\", null, {\n\t\t\t\"table:name\": name.Name,\n\t\t\t\"table:cell-range-address\": odsref,\n\t\t\t\"table:base-cell-address\": odsref.replace(/[\\.]?[^\\.]*$/, \".$A$1\")\n\t\t});\n\t}).join(\"\\n\") + \"\\n \\n\";\n}\nvar write_content_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text/*:string*/)/*:string*/ {\n\t\treturn escapexml(text)\n\t\t\t.replace(/ +/g, function($$){return '';})\n\t\t\t.replace(/\\t/g, \"\")\n\t\t\t.replace(/\\n/g, \"\")\n\t\t\t.replace(/^ /, \"\").replace(/ $/, \"\");\n\t};\n\n\tvar null_cell_xml = ' \\n';\n\tvar covered_cell_xml = ' \\n';\n\tvar write_ws = function(ws, wb/*:Workbook*/, i/*:number*/, opts, nfs)/*:string*/ {\n\t\t/* Section 9 Tables */\n\t\tvar o/*:Array*/ = [];\n\t\to.push(' \\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\n\t\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\t\tvar dense = ws[\"!data\"] != null;\n\t\tif(ws[\"!cols\"]) {\n\t\t\tfor(C = 0; C <= range.e.c; ++C) o.push(' \\n');\n\t\t}\n\t\tvar H = \"\", ROWS = ws[\"!rows\"]||[];\n\t\tfor(R = 0; R < range.s.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t}\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[\"!data\"][R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v == null ? \"\" : cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target;\n\t\t\t\t\t_tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\t// TODO: choose correct parent path format based on link delimiters\n\t\t\t\t\tif(_tgt.charAt(0) != \"#\" && !_tgt.match(/^\\w+:/)) _tgt = '../' + _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, \"&\")});\n\t\t\t\t}\n\t\t\t\tif(nfs[cell.z]) ct[\"table:style-name\"] = \"ce\" + nfs[cell.z].slice(1);\n\t\t\t\to.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push(' \\n');\n\t\t}\n\t\tif((wb.Workbook||{}).Names) o.push(write_names_ods(wb.Workbook.Names, wb.SheetNames, i));\n\t\to.push(' \\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o/*:Array*/, wb) {\n\t\to.push(' \\n');\n\n\t\t/* column styles */\n\t\tvar cidx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!cols\"]) {\n\t\t\t\tfor(var C = 0; C < ws[\"!cols\"].length; ++C) if(ws[\"!cols\"][C]) {\n\t\t\t\t\tvar colobj = ws[\"!cols\"][C];\n\t\t\t\t\tif(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue;\n\t\t\t\t\tprocess_col(colobj);\n\t\t\t\t\tcolobj.ods = cidx;\n\t\t\t\t\tvar w = ws[\"!cols\"][C].wpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++cidx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* row styles */\n\t\tvar ridx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!rows\"]) {\n\t\t\t\tfor(var R = 0; R < ws[\"!rows\"].length; ++R) if(ws[\"!rows\"][R]) {\n\t\t\t\t\tws[\"!rows\"][R].ods = ridx;\n\t\t\t\t\tvar h = ws[\"!rows\"][R].hpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++ridx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* table */\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* number formats, table cells, text */\n\t\tvar nfs = {};\n\t\tvar nfi = 69;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tvar dense = (ws[\"!data\"] != null);\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tfor(var R = 0; R <= range.e.r; ++R) for(var C = 0; C <= range.e.c; ++C) {\n\t\t\t\tvar c = dense ? (ws[\"!data\"][R]||[])[C] : ws[encode_cell({r:R,c:C})];\n\t\t\t\tif(!c || !c.z || c.z.toLowerCase() == \"general\") continue;\n\t\t\t\tif(!nfs[c.z]) {\n\t\t\t\t\tvar out = write_number_format_ods(c.z, \"N\" + nfi);\n\t\t\t\t\tif(out) { nfs[c.z] = \"N\" + nfi; ++nfi; o.push(out + \"\\n\"); }\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\to.push(' \\n');\n\t\tkeys(nfs).forEach(function(nf) {\n\t\t\to.push('\\n');\n\t\t});\n\n\t\t/* page-layout */\n\n\t\to.push(' \\n');\n\t\treturn nfs;\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office': \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table': \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style': \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text': \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw': \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo': \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink': \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc': \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta': \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number': \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg': \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart': \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d': \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math': \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form': \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script': \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo': \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow': \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc': \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom': \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms': \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd': \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi': \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet': \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt': \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of': \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml': \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl': \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo': \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo': \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext': \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext': \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field': \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx': \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t': \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version': \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config': \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") {\n\t\t\to.push('\\n');\n\t\t\to.push(write_meta_ods().replace(//, \"\").replace(/<\\/office:document-meta>/, \"\") + \"\\n\");\n\t\t\t// TODO: settings (equiv of settings.xml for ODS)\n\t\t} else o.push('\\n');\n\t\t// o.push(' \\n');\n\t\tvar nfs = write_automatic_styles_ods(o, wb);\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tif(((wb.Workbook||{}).WBProps||{}).date1904) o.push(' \\n \\n \\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts, nfs));\n\t\tif((wb.Workbook||{}).Names) o.push(write_names_ods(wb.Workbook.Names, wb.SheetNames, -1));\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tif(opts.bookType == \"fods\") o.push('');\n\t\telse o.push('');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb/*:any*/, opts/*:any*/) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\n\tvar zip = zip_new();\n\tvar f = \"\";\n\n\tvar manifest/*:Array >*/ = [];\n\tvar rdf/*:Array<[string, string]>*/ = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip_add_file(zip, f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip_add_file(zip, f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip_add_file(zip, f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip_add_file(zip, f, XML_HEADER + write_meta_ods(/*::wb, opts*/));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip_add_file(zip, f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip_add_file(zip, f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\n/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */\nvar subarray = function() {\n try {\n if (typeof Uint8Array == \"undefined\")\n return \"slice\";\n if (typeof Uint8Array.prototype.subarray == \"undefined\")\n return \"slice\";\n if (typeof Buffer !== \"undefined\") {\n if (typeof Buffer.prototype.subarray == \"undefined\")\n return \"slice\";\n if ((typeof Buffer.from == \"function\" ? Buffer.from([72, 62]) : new Buffer([72, 62])) instanceof Uint8Array)\n return \"subarray\";\n return \"slice\";\n }\n return \"subarray\";\n } catch (e) {\n return \"slice\";\n }\n}();\nfunction u8_to_dataview(array) {\n return new DataView(array.buffer, array.byteOffset, array.byteLength);\n}\nfunction u8str(u8) {\n return typeof TextDecoder != \"undefined\" ? new TextDecoder().decode(u8) : utf8read(a2s(u8));\n}\nfunction stru8(str) {\n return typeof TextEncoder != \"undefined\" ? new TextEncoder().encode(str) : s2a(utf8write(str));\n}\nfunction u8concat(u8a) {\n var len = 0;\n for (var i = 0; i < u8a.length; ++i)\n len += u8a[i].length;\n var out = new Uint8Array(len);\n var off = 0;\n for (i = 0; i < u8a.length; ++i) {\n var u8 = u8a[i], L = u8.length;\n if (L < 250) {\n for (var j = 0; j < L; ++j)\n out[off++] = u8[j];\n } else {\n out.set(u8, off);\n off += L;\n }\n }\n return out;\n}\nfunction popcnt(x) {\n x -= x >> 1 & 1431655765;\n x = (x & 858993459) + (x >> 2 & 858993459);\n return (x + (x >> 4) & 252645135) * 16843009 >>> 24;\n}\nfunction readDecimal128LE(buf, offset) {\n var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1;\n var mantissa = buf[offset + 14] & 1;\n for (var j = offset + 13; j >= offset; --j)\n mantissa = mantissa * 256 + buf[j];\n return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176);\n}\nfunction writeDecimal128LE(buf, offset, value) {\n var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 16;\n var mantissa = value / Math.pow(10, exp - 6176);\n buf[offset + 15] |= exp >> 7;\n buf[offset + 14] |= (exp & 127) << 1;\n for (var i = 0; mantissa >= 1; ++i, mantissa /= 256)\n buf[offset + i] = mantissa & 255;\n buf[offset + 15] |= value >= 0 ? 0 : 128;\n}\nfunction parse_varint49(buf, ptr) {\n var l = ptr.l;\n var usz = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n usz |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 28);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 35);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 42);\n ++l;\n if (buf[l++] < 128)\n break varint;\n }\n ptr.l = l;\n return usz;\n}\nfunction write_varint49(v) {\n var usz = new Uint8Array(7);\n usz[0] = v & 127;\n var L = 1;\n sz:\n if (v > 127) {\n usz[L - 1] |= 128;\n usz[L] = v >> 7 & 127;\n ++L;\n if (v <= 16383)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 14 & 127;\n ++L;\n if (v <= 2097151)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 21 & 127;\n ++L;\n if (v <= 268435455)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 256 >>> 21 & 127;\n ++L;\n if (v <= 34359738367)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 65536 >>> 21 & 127;\n ++L;\n if (v <= 4398046511103)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 16777216 >>> 21 & 127;\n ++L;\n }\n return usz[subarray](0, L);\n}\nfunction parse_packed_varints(buf) {\n var ptr = { l: 0 };\n var out = [];\n while (ptr.l < buf.length)\n out.push(parse_varint49(buf, ptr));\n return out;\n}\nfunction write_packed_varints(nums) {\n return u8concat(nums.map(function(x) {\n return write_varint49(x);\n }));\n}\nfunction varint_to_i32(buf) {\n var l = 0, i32 = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n i32 |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 28;\n }\n return i32;\n}\nfunction varint_to_u64(buf) {\n var l = 0, lo = buf[l] & 127, hi = 0;\n varint:\n if (buf[l++] >= 128) {\n lo |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n lo |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n lo |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n lo |= (buf[l] & 127) << 28;\n hi = buf[l] >> 4 & 7;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 3;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 10;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 17;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 24;\n if (buf[l++] < 128)\n break varint;\n hi |= (buf[l] & 127) << 31;\n }\n return [lo >>> 0, hi >>> 0];\n}\nfunction parse_shallow(buf) {\n var out = [], ptr = { l: 0 };\n while (ptr.l < buf.length) {\n var off = ptr.l;\n var num = parse_varint49(buf, ptr);\n var type = num & 7;\n num = num / 8 | 0;\n var data;\n var l = ptr.l;\n switch (type) {\n case 0:\n {\n while (buf[l++] >= 128)\n ;\n data = buf[subarray](ptr.l, l);\n ptr.l = l;\n }\n break;\n case 1:\n {\n data = buf[subarray](l, l + 8);\n ptr.l = l + 8;\n }\n break;\n case 2:\n {\n var len = parse_varint49(buf, ptr);\n data = buf[subarray](ptr.l, ptr.l + len);\n ptr.l += len;\n }\n break;\n case 5:\n {\n data = buf[subarray](l, l + 4);\n ptr.l = l + 4;\n }\n break;\n default:\n throw new Error(\"PB Type \".concat(type, \" for Field \").concat(num, \" at offset \").concat(off));\n }\n var v = { data: data, type: type };\n if (out[num] == null)\n out[num] = [];\n out[num].push(v);\n }\n return out;\n}\nfunction write_shallow(proto) {\n var out = [];\n proto.forEach(function(field, idx) {\n if (idx == 0)\n return;\n field.forEach(function(item) {\n if (!item.data)\n return;\n out.push(write_varint49(idx * 8 + item.type));\n if (item.type == 2)\n out.push(write_varint49(item.data.length));\n out.push(item.data);\n });\n });\n return u8concat(out);\n}\nfunction mappa(data, cb) {\n return (data == null ? void 0 : data.map(function(d) {\n return cb(d.data);\n })) || [];\n}\nfunction parse_iwa_file(buf) {\n var _a;\n var out = [], ptr = { l: 0 };\n while (ptr.l < buf.length) {\n var len = parse_varint49(buf, ptr);\n var ai = parse_shallow(buf[subarray](ptr.l, ptr.l + len));\n ptr.l += len;\n var res = {\n id: varint_to_i32(ai[1][0].data),\n messages: []\n };\n ai[2].forEach(function(b) {\n var mi = parse_shallow(b.data);\n var fl = varint_to_i32(mi[3][0].data);\n res.messages.push({\n meta: mi,\n data: buf[subarray](ptr.l, ptr.l + fl)\n });\n ptr.l += fl;\n });\n if ((_a = ai[3]) == null ? void 0 : _a[0])\n res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0;\n out.push(res);\n }\n return out;\n}\nfunction write_iwa_file(ias) {\n var bufs = [];\n ias.forEach(function(ia) {\n var ai = [\n [],\n [{ data: write_varint49(ia.id), type: 0 }],\n []\n ];\n if (ia.merge != null)\n ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }];\n var midata = [];\n ia.messages.forEach(function(mi) {\n midata.push(mi.data);\n mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }];\n ai[2].push({ data: write_shallow(mi.meta), type: 2 });\n });\n var aipayload = write_shallow(ai);\n bufs.push(write_varint49(aipayload.length));\n bufs.push(aipayload);\n midata.forEach(function(mid) {\n return bufs.push(mid);\n });\n });\n return u8concat(bufs);\n}\nfunction parse_snappy_chunk(type, buf) {\n if (type != 0)\n throw new Error(\"Unexpected Snappy chunk type \".concat(type));\n var ptr = { l: 0 };\n var usz = parse_varint49(buf, ptr);\n var chunks = [];\n var l = ptr.l;\n while (l < buf.length) {\n var tag = buf[l] & 3;\n if (tag == 0) {\n var len = buf[l++] >> 2;\n if (len < 60)\n ++len;\n else {\n var c = len - 59;\n len = buf[l];\n if (c > 1)\n len |= buf[l + 1] << 8;\n if (c > 2)\n len |= buf[l + 2] << 16;\n if (c > 3)\n len |= buf[l + 3] << 24;\n len >>>= 0;\n len++;\n l += c;\n }\n chunks.push(buf[subarray](l, l + len));\n l += len;\n continue;\n } else {\n var offset = 0, length = 0;\n if (tag == 1) {\n length = (buf[l] >> 2 & 7) + 4;\n offset = (buf[l++] & 224) << 3;\n offset |= buf[l++];\n } else {\n length = (buf[l++] >> 2) + 1;\n if (tag == 2) {\n offset = buf[l] | buf[l + 1] << 8;\n l += 2;\n } else {\n offset = (buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16 | buf[l + 3] << 24) >>> 0;\n l += 4;\n }\n }\n if (offset == 0)\n throw new Error(\"Invalid offset 0\");\n var j = chunks.length - 1, off = offset;\n while (j >= 0 && off >= chunks[j].length) {\n off -= chunks[j].length;\n --j;\n }\n if (j < 0) {\n if (off == 0)\n off = chunks[j = 0].length;\n else\n throw new Error(\"Invalid offset beyond length\");\n }\n if (length < off)\n chunks.push(chunks[j][subarray](chunks[j].length - off, chunks[j].length - off + length));\n else {\n if (off > 0) {\n chunks.push(chunks[j][subarray](chunks[j].length - off));\n length -= off;\n }\n ++j;\n while (length >= chunks[j].length) {\n chunks.push(chunks[j]);\n length -= chunks[j].length;\n ++j;\n }\n if (length)\n chunks.push(chunks[j][subarray](0, length));\n }\n if (chunks.length > 25)\n chunks = [u8concat(chunks)];\n }\n }\n var clen = 0;\n for (var u8i = 0; u8i < chunks.length; ++u8i)\n clen += chunks[u8i].length;\n if (clen != usz)\n throw new Error(\"Unexpected length: \".concat(clen, \" != \").concat(usz));\n return chunks;\n}\nfunction decompress_iwa_file(buf) {\n if (Array.isArray(buf))\n buf = new Uint8Array(buf);\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var t = buf[l++];\n var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16;\n l += 3;\n out.push.apply(out, parse_snappy_chunk(t, buf[subarray](l, l + len)));\n l += len;\n }\n if (l !== buf.length)\n throw new Error(\"data is not a valid framed stream!\");\n return out.length == 1 ? out[0] : u8concat(out);\n}\nfunction compress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var c = Math.min(buf.length - l, 268435455);\n var frame = new Uint8Array(4);\n out.push(frame);\n var usz = write_varint49(c);\n var L = usz.length;\n out.push(usz);\n if (c <= 60) {\n L++;\n out.push(new Uint8Array([c - 1 << 2]));\n } else if (c <= 256) {\n L += 2;\n out.push(new Uint8Array([240, c - 1 & 255]));\n } else if (c <= 65536) {\n L += 3;\n out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255]));\n } else if (c <= 16777216) {\n L += 4;\n out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255]));\n } else if (c <= 4294967296) {\n L += 5;\n out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255]));\n }\n out.push(buf[subarray](l, l + c));\n L += c;\n frame[0] = 0;\n frame[1] = L & 255;\n frame[2] = L >> 8 & 255;\n frame[3] = L >> 16 & 255;\n l += c;\n }\n return u8concat(out);\n}\nvar numbers_lut_new = function() {\n return { sst: [], rsst: [], ofmt: [], nfmt: [] };\n};\nfunction numbers_format_cell(cell, t, flags, ofmt, nfmt) {\n var _a, _b, _c, _d;\n var ctype = t & 255, ver = t >> 8;\n var fmt = ver >= 5 ? nfmt : ofmt;\n dur:\n if (flags & (ver > 4 ? 8 : 4) && cell.t == \"n\" && ctype == 7) {\n var dstyle = ((_a = fmt[7]) == null ? void 0 : _a[0]) ? varint_to_i32(fmt[7][0].data) : -1;\n if (dstyle == -1)\n break dur;\n var dmin = ((_b = fmt[15]) == null ? void 0 : _b[0]) ? varint_to_i32(fmt[15][0].data) : -1;\n var dmax = ((_c = fmt[16]) == null ? void 0 : _c[0]) ? varint_to_i32(fmt[16][0].data) : -1;\n var auto = ((_d = fmt[40]) == null ? void 0 : _d[0]) ? varint_to_i32(fmt[40][0].data) : -1;\n var d = cell.v, dd = d;\n autodur:\n if (auto) {\n if (d == 0) {\n dmin = dmax = 2;\n break autodur;\n }\n if (d >= 604800)\n dmin = 1;\n else if (d >= 86400)\n dmin = 2;\n else if (d >= 3600)\n dmin = 4;\n else if (d >= 60)\n dmin = 8;\n else if (d >= 1)\n dmin = 16;\n else\n dmin = 32;\n if (Math.floor(d) != d)\n dmax = 32;\n else if (d % 60)\n dmax = 16;\n else if (d % 3600)\n dmax = 8;\n else if (d % 86400)\n dmax = 4;\n else if (d % 604800)\n dmax = 2;\n if (dmax < dmin)\n dmax = dmin;\n }\n if (dmin == -1 || dmax == -1)\n break dur;\n var dstr = [], zstr = [];\n if (dmin == 1) {\n dd = d / 604800;\n if (dmax == 1) {\n zstr.push('d\"d\"');\n } else {\n dd |= 0;\n d -= 604800 * dd;\n }\n dstr.push(dd + (dstyle == 2 ? \" week\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"w\" : \"\"));\n }\n if (dmin <= 2 && dmax >= 2) {\n dd = d / 86400;\n if (dmax > 2) {\n dd |= 0;\n d -= 86400 * dd;\n }\n zstr.push('d\"d\"');\n dstr.push(dd + (dstyle == 2 ? \" day\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"d\" : \"\"));\n }\n if (dmin <= 4 && dmax >= 4) {\n dd = d / 3600;\n if (dmax > 4) {\n dd |= 0;\n d -= 3600 * dd;\n }\n zstr.push((dmin >= 4 ? \"[h]\" : \"h\") + '\"h\"');\n dstr.push(dd + (dstyle == 2 ? \" hour\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"h\" : \"\"));\n }\n if (dmin <= 8 && dmax >= 8) {\n dd = d / 60;\n if (dmax > 8) {\n dd |= 0;\n d -= 60 * dd;\n }\n zstr.push((dmin >= 8 ? \"[m]\" : \"m\") + '\"m\"');\n if (dstyle == 0)\n dstr.push((dmin == 8 && dmax == 8 || dd >= 10 ? \"\" : \"0\") + dd);\n else\n dstr.push(dd + (dstyle == 2 ? \" minute\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"m\" : \"\"));\n }\n if (dmin <= 16 && dmax >= 16) {\n dd = d;\n if (dmax > 16) {\n dd |= 0;\n d -= dd;\n }\n zstr.push((dmin >= 16 ? \"[s]\" : \"s\") + '\"s\"');\n if (dstyle == 0)\n dstr.push((dmax == 16 && dmin == 16 || dd >= 10 ? \"\" : \"0\") + dd);\n else\n dstr.push(dd + (dstyle == 2 ? \" second\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"s\" : \"\"));\n }\n if (dmax >= 32) {\n dd = Math.round(1e3 * d);\n if (dmin < 32)\n zstr.push('.000\"ms\"');\n if (dstyle == 0)\n dstr.push((dd >= 100 ? \"\" : dd >= 10 ? \"0\" : \"00\") + dd);\n else\n dstr.push(dd + (dstyle == 2 ? \" millisecond\" + (dd == 1 ? \"\" : \"s\") : dstyle == 1 ? \"ms\" : \"\"));\n }\n cell.w = dstr.join(dstyle == 0 ? \":\" : \" \");\n cell.z = zstr.join(dstyle == 0 ? '\":\"' : \" \");\n if (dstyle == 0)\n cell.w = cell.w.replace(/:(\\d\\d\\d)$/, \".$1\");\n }\n}\nfunction parse_old_storage(buf, lut, v) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(4, true);\n var ridx = -1, sidx = -1, zidx = -1, ieee = NaN, dt = new Date(2001, 0, 1);\n var doff = v > 1 ? 12 : 8;\n if (flags & 2) {\n zidx = dv.getUint32(doff, true);\n doff += 4;\n }\n doff += popcnt(flags & (v > 1 ? 3468 : 396)) * 4;\n if (flags & 512) {\n ridx = dv.getUint32(doff, true);\n doff += 4;\n }\n doff += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4;\n if (flags & 16) {\n sidx = dv.getUint32(doff, true);\n doff += 4;\n }\n if (flags & 32) {\n ieee = dv.getFloat64(doff, true);\n doff += 8;\n }\n if (flags & 64) {\n dt.setTime(dt.getTime() + dv.getFloat64(doff, true) * 1e3);\n doff += 8;\n }\n if (v > 1) {\n flags = dv.getUint32(8, true) >>> 16;\n if (flags & 255) {\n if (zidx == -1)\n zidx = dv.getUint32(doff, true);\n doff += 4;\n }\n }\n var ret;\n var t = buf[v >= 4 ? 1 : 2];\n switch (t) {\n case 0:\n return void 0;\n case 2:\n ret = { t: \"n\", v: ieee };\n break;\n case 3:\n ret = { t: \"s\", v: lut.sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: lut.rsst[ridx] };\n else\n throw new Error(\"Unsupported cell type \".concat(buf[subarray](0, 4)));\n }\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf[subarray](0, 4)));\n }\n if (zidx > -1)\n numbers_format_cell(ret, t | v << 8, flags, lut.ofmt[zidx], lut.nfmt[zidx]);\n if (t == 7)\n ret.v /= 86400;\n return ret;\n}\nfunction parse_new_storage(buf, lut) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(4, true);\n var fields = dv.getUint32(8, true);\n var doff = 12;\n var ridx = -1, sidx = -1, zidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1);\n if (fields & 1) {\n d128 = readDecimal128LE(buf, doff);\n doff += 16;\n }\n if (fields & 2) {\n ieee = dv.getFloat64(doff, true);\n doff += 8;\n }\n if (fields & 4) {\n dt.setTime(dt.getTime() + dv.getFloat64(doff, true) * 1e3);\n doff += 8;\n }\n if (fields & 8) {\n sidx = dv.getUint32(doff, true);\n doff += 4;\n }\n if (fields & 16) {\n ridx = dv.getUint32(doff, true);\n doff += 4;\n }\n var ret;\n var t = buf[1];\n switch (t) {\n case 0:\n return void 0;\n case 2:\n ret = { t: \"n\", v: d128 };\n break;\n case 3:\n ret = { t: \"s\", v: lut.sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n ret = { t: \"s\", v: lut.rsst[ridx] };\n break;\n case 10:\n ret = { t: \"n\", v: d128 };\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(fields & 31, \" : \").concat(buf[subarray](0, 4)));\n }\n doff += popcnt(fields & 8160) * 4;\n if (fields & 516096) {\n if (zidx == -1)\n zidx = dv.getUint32(doff, true);\n doff += 4;\n }\n if (zidx > -1)\n numbers_format_cell(ret, t | 5 << 8, fields >> 13, lut.ofmt[zidx], lut.nfmt[zidx]);\n if (t == 7)\n ret.v /= 86400;\n return ret;\n}\nfunction write_new_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 5;\n switch (cell.t) {\n case \"n\":\n out[1] = 2;\n writeDecimal128LE(out, l, cell.v);\n flags |= 1;\n l += 16;\n break;\n case \"b\":\n out[1] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 2;\n l += 8;\n break;\n case \"s\":\n var s = cell.v == null ? \"\" : String(cell.v);\n var isst = sst.indexOf(s);\n if (isst == -1)\n sst[isst = sst.length] = s;\n out[1] = 3;\n dv.setUint32(l, isst, true);\n flags |= 8;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(8, flags, true);\n return out[subarray](0, l);\n}\nfunction write_old_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 4;\n switch (cell.t) {\n case \"n\":\n out[2] = 2;\n dv.setFloat64(l, cell.v, true);\n flags |= 32;\n l += 8;\n break;\n case \"b\":\n out[2] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 32;\n l += 8;\n break;\n case \"s\":\n var s = cell.v == null ? \"\" : String(cell.v);\n var isst = sst.indexOf(s);\n if (isst == -1)\n sst[isst = sst.length] = s;\n out[2] = 3;\n dv.setUint32(l, isst, true);\n flags |= 16;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(8, flags, true);\n return out[subarray](0, l);\n}\nfunction parse_cell_storage(buf, lut) {\n switch (buf[0]) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n return parse_old_storage(buf, lut, buf[0]);\n case 5:\n return parse_new_storage(buf, lut);\n default:\n throw new Error(\"Unsupported payload version \".concat(buf[0]));\n }\n}\nfunction parse_TSP_Reference(buf) {\n var pb = parse_shallow(buf);\n return varint_to_i32(pb[1][0].data);\n}\nfunction write_TSP_Reference(idx) {\n return write_shallow([\n [],\n [{ type: 0, data: write_varint49(idx) }]\n ]);\n}\nfunction numbers_add_oref(iwa, ref) {\n var _a;\n var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];\n var orefidx = orefs.indexOf(ref);\n if (orefidx == -1) {\n orefs.push(ref);\n iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];\n }\n}\nfunction numbers_del_oref(iwa, ref) {\n var _a;\n var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];\n iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs.filter(function(r) {\n return r != ref;\n })) }];\n}\nfunction parse_TST_TableDataList(M, root) {\n var pb = parse_shallow(root.data);\n var type = varint_to_i32(pb[1][0].data);\n var entries = pb[3];\n var data = [];\n (entries || []).forEach(function(entry) {\n var le = parse_shallow(entry.data);\n if (!le[1])\n return;\n var key = varint_to_i32(le[1][0].data) >>> 0;\n switch (type) {\n case 1:\n data[key] = u8str(le[3][0].data);\n break;\n case 8:\n {\n var rt = M[parse_TSP_Reference(le[9][0].data)][0];\n var rtp = parse_shallow(rt.data);\n var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0];\n var mtype = varint_to_i32(rtpref.meta[1][0].data);\n if (mtype != 2001)\n throw new Error(\"2000 unexpected reference to \".concat(mtype));\n var tswpsa = parse_shallow(rtpref.data);\n data[key] = tswpsa[3].map(function(x) {\n return u8str(x.data);\n }).join(\"\");\n }\n break;\n case 2:\n data[key] = parse_shallow(le[6][0].data);\n break;\n default:\n throw type;\n }\n });\n return data;\n}\nfunction parse_TST_TileRowInfo(u8, type) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n var pb = parse_shallow(u8);\n var R = varint_to_i32(pb[1][0].data) >>> 0;\n var cnt = varint_to_i32(pb[2][0].data) >>> 0;\n var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false;\n var used_storage_u8, used_storage;\n if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) {\n used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data;\n used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data;\n } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) {\n used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data;\n used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data;\n } else\n throw \"NUMBERS Tile missing \".concat(type, \" cell storage\");\n var width = wide_offsets ? 4 : 1;\n var used_storage_offsets = u8_to_dataview(used_storage_u8);\n var offsets = [];\n for (var C = 0; C < used_storage_u8.length / 2; ++C) {\n var off = used_storage_offsets.getUint16(C * 2, true);\n if (off < 65535)\n offsets.push([C, off]);\n }\n if (offsets.length != cnt)\n throw \"Expected \".concat(cnt, \" cells, found \").concat(offsets.length);\n var cells = [];\n for (C = 0; C < offsets.length - 1; ++C)\n cells[offsets[C][0]] = used_storage[subarray](offsets[C][1] * width, offsets[C + 1][1] * width);\n if (offsets.length >= 1)\n cells[offsets[offsets.length - 1][0]] = used_storage[subarray](offsets[offsets.length - 1][1] * width);\n return { R: R, cells: cells };\n}\nfunction parse_TST_Tile(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var storage = -1;\n if ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) {\n if (varint_to_i32(pb[7][0].data) >>> 0)\n storage = 1;\n else\n storage = 0;\n }\n var ri = mappa(pb[5], function(u8) {\n return parse_TST_TileRowInfo(u8, storage);\n });\n return {\n nrows: varint_to_i32(pb[4][0].data) >>> 0,\n data: ri.reduce(function(acc, x) {\n if (!acc[x.R])\n acc[x.R] = [];\n x.cells.forEach(function(cell, C) {\n if (acc[x.R][C])\n throw new Error(\"Duplicate cell r=\".concat(x.R, \" c=\").concat(C));\n acc[x.R][C] = cell;\n });\n return acc;\n }, [])\n };\n}\nfunction parse_TST_TableModelArchive(M, root, ws) {\n var _a, _b, _c, _d, _e, _f;\n var pb = parse_shallow(root.data);\n var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };\n range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1;\n if (range.e.r < 0)\n throw new Error(\"Invalid row varint \".concat(pb[6][0].data));\n range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1;\n if (range.e.c < 0)\n throw new Error(\"Invalid col varint \".concat(pb[7][0].data));\n ws[\"!ref\"] = encode_range(range);\n var dense = ws[\"!data\"] != null, dws = ws;\n var store = parse_shallow(pb[4][0].data);\n var lut = numbers_lut_new();\n if ((_a = store[4]) == null ? void 0 : _a[0])\n lut.sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]);\n if ((_b = store[11]) == null ? void 0 : _b[0])\n lut.ofmt = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[11][0].data)][0]);\n if ((_c = store[17]) == null ? void 0 : _c[0])\n lut.rsst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]);\n if ((_d = store[22]) == null ? void 0 : _d[0])\n lut.nfmt = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[22][0].data)][0]);\n var tile = parse_shallow(store[3][0].data);\n var _R = 0;\n tile[1].forEach(function(t) {\n var tl = parse_shallow(t.data);\n var ref2 = M[parse_TSP_Reference(tl[2][0].data)][0];\n var mtype2 = varint_to_i32(ref2.meta[1][0].data);\n if (mtype2 != 6002)\n throw new Error(\"6001 unexpected reference to \".concat(mtype2));\n var _tile = parse_TST_Tile(M, ref2);\n _tile.data.forEach(function(row, R) {\n row.forEach(function(buf, C) {\n var res = parse_cell_storage(buf, lut);\n if (res) {\n if (dense) {\n if (!dws[\"!data\"][_R + R])\n dws[\"!data\"][_R + R] = [];\n dws[\"!data\"][_R + R][C] = res;\n } else {\n ws[encode_col(C) + encode_row(_R + R)] = res;\n }\n }\n });\n });\n _R += _tile.nrows;\n });\n if ((_e = store[13]) == null ? void 0 : _e[0]) {\n var ref = M[parse_TSP_Reference(store[13][0].data)][0];\n var mtype = varint_to_i32(ref.meta[1][0].data);\n if (mtype != 6144)\n throw new Error(\"Expected merge type 6144, found \".concat(mtype));\n ws[\"!merges\"] = (_f = parse_shallow(ref.data)) == null ? void 0 : _f[1].map(function(pi) {\n var merge = parse_shallow(pi.data);\n var origin = u8_to_dataview(parse_shallow(merge[1][0].data)[1][0].data), size = u8_to_dataview(parse_shallow(merge[2][0].data)[1][0].data);\n return {\n s: { r: origin.getUint16(0, true), c: origin.getUint16(2, true) },\n e: {\n r: origin.getUint16(0, true) + size.getUint16(0, true) - 1,\n c: origin.getUint16(2, true) + size.getUint16(2, true) - 1\n }\n };\n });\n }\n}\nfunction parse_TST_TableInfoArchive(M, root, opts) {\n var pb = parse_shallow(root.data);\n var out = { \"!ref\": \"A1\" };\n if (opts == null ? void 0 : opts.dense)\n out[\"!data\"] = [];\n var tableref = M[parse_TSP_Reference(pb[2][0].data)];\n var mtype = varint_to_i32(tableref[0].meta[1][0].data);\n if (mtype != 6001)\n throw new Error(\"6000 unexpected reference to \".concat(mtype));\n parse_TST_TableModelArchive(M, tableref[0], out);\n return out;\n}\nfunction parse_TN_SheetArchive(M, root, opts) {\n var _a;\n var pb = parse_shallow(root.data);\n var out = {\n name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : \"\",\n sheets: []\n };\n var shapeoffs = mappa(pb[2], parse_TSP_Reference);\n shapeoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 6e3)\n out.sheets.push(parse_TST_TableInfoArchive(M, m, opts));\n });\n });\n return out;\n}\nfunction parse_TN_DocumentArchive(M, root, opts) {\n var _a;\n var out = book_new();\n var pb = parse_shallow(root.data);\n if ((_a = pb[2]) == null ? void 0 : _a[0])\n throw new Error(\"Keynote presentations are not supported\");\n var sheetoffs = mappa(pb[1], parse_TSP_Reference);\n sheetoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 2) {\n var root2 = parse_TN_SheetArchive(M, m, opts);\n root2.sheets.forEach(function(sheet, idx) {\n book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + \"_\" + idx, true);\n });\n }\n });\n });\n if (out.SheetNames.length == 0)\n throw new Error(\"Empty NUMBERS file\");\n out.bookType = \"numbers\";\n return out;\n}\nfunction parse_numbers_iwa(cfb, opts) {\n var _a, _b, _c, _d, _e, _f, _g;\n var M = {}, indices = [];\n cfb.FullPaths.forEach(function(p) {\n if (p.match(/\\.iwpv2/))\n throw new Error(\"Unsupported password protection\");\n });\n cfb.FileIndex.forEach(function(s) {\n if (!s.name.match(/\\.iwa$/))\n return;\n if (s.content[0] != 0)\n return;\n var o;\n try {\n o = decompress_iwa_file(s.content);\n } catch (e) {\n return console.log(\"?? \" + s.content.length + \" \" + (e.message || e));\n }\n var packets;\n try {\n packets = parse_iwa_file(o);\n } catch (e) {\n return console.log(\"## \" + (e.message || e));\n }\n packets.forEach(function(packet) {\n M[packet.id] = packet.messages;\n indices.push(packet.id);\n });\n });\n if (!indices.length)\n throw new Error(\"File has no messages\");\n if (((_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0].meta) == null ? void 0 : _b[1]) == null ? void 0 : _c[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1e4)\n throw new Error(\"Pages documents are not supported\");\n var docroot = ((_g = (_f = (_e = (_d = M == null ? void 0 : M[1]) == null ? void 0 : _d[0]) == null ? void 0 : _e.meta) == null ? void 0 : _f[1]) == null ? void 0 : _g[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];\n if (!docroot)\n indices.forEach(function(idx) {\n M[idx].forEach(function(iwam) {\n var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0;\n if (mtype == 1) {\n if (!docroot)\n docroot = iwam;\n else\n throw new Error(\"Document has multiple roots\");\n }\n });\n });\n if (!docroot)\n throw new Error(\"Cannot find Document root\");\n return parse_TN_DocumentArchive(M, docroot, opts);\n}\nfunction write_TST_TileRowInfo(data, SST, wide) {\n var _a, _b;\n var tri = [\n [],\n [{ type: 0, data: write_varint49(0) }],\n [{ type: 0, data: write_varint49(0) }],\n [{ type: 2, data: new Uint8Array([]) }],\n [{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {\n return 255;\n })) }],\n [{ type: 0, data: write_varint49(5) }],\n [{ type: 2, data: new Uint8Array([]) }],\n [{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {\n return 255;\n })) }],\n [{ type: 0, data: write_varint49(1) }]\n ];\n if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))\n throw \"Mutation only works on post-BNC storages!\";\n var cnt = 0;\n if (tri[7][0].data.length < 2 * data.length) {\n var new_7 = new Uint8Array(2 * data.length);\n new_7.set(tri[7][0].data);\n tri[7][0].data = new_7;\n }\n if (tri[4][0].data.length < 2 * data.length) {\n var new_4 = new Uint8Array(2 * data.length);\n new_4.set(tri[4][0].data);\n tri[4][0].data = new_4;\n }\n var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = [];\n var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = [];\n var width = wide ? 4 : 1;\n for (var C = 0; C < data.length; ++C) {\n if (data[C] == null) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535);\n continue;\n }\n dv.setUint16(C * 2, last_offset / width, true);\n _dv.setUint16(C * 2, _last_offset / width, true);\n var celload, _celload;\n switch (typeof data[C]) {\n case \"string\":\n celload = write_new_storage({ t: \"s\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"s\", v: data[C] }, SST);\n break;\n case \"number\":\n celload = write_new_storage({ t: \"n\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"n\", v: data[C] }, SST);\n break;\n case \"boolean\":\n celload = write_new_storage({ t: \"b\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"b\", v: data[C] }, SST);\n break;\n default:\n if (data[C] instanceof Date) {\n celload = write_new_storage({ t: \"s\", v: data[C].toISOString() }, SST);\n _celload = write_old_storage({ t: \"s\", v: data[C].toISOString() }, SST);\n break;\n }\n throw new Error(\"Unsupported value \" + data[C]);\n }\n cell_storage.push(celload);\n last_offset += celload.length;\n {\n _cell_storage.push(_celload);\n _last_offset += _celload.length;\n }\n ++cnt;\n }\n tri[2][0].data = write_varint49(cnt);\n tri[5][0].data = write_varint49(5);\n for (; C < tri[7][0].data.length / 2; ++C) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535, true);\n }\n tri[6][0].data = u8concat(cell_storage);\n tri[3][0].data = u8concat(_cell_storage);\n tri[8] = [{ type: 0, data: write_varint49(wide ? 1 : 0) }];\n return tri;\n}\nfunction write_iwam(type, payload) {\n return {\n meta: [\n [],\n [{ type: 0, data: write_varint49(type) }]\n ],\n data: payload\n };\n}\nfunction get_unique_msgid(dep, dependents) {\n if (!dependents.last)\n dependents.last = 927262;\n for (var i = dependents.last; i < 2e6; ++i)\n if (!dependents[i]) {\n dependents[dependents.last = i] = dep;\n return i;\n }\n throw new Error(\"Too many messages\");\n}\nfunction build_numbers_deps(cfb) {\n var dependents = {};\n var indices = [];\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (fi.type != 2)\n return;\n if (!fi.name.match(/\\.iwa/))\n return;\n if (fi.content[0] != 0)\n return;\n parse_iwa_file(decompress_iwa_file(fi.content)).forEach(function(packet) {\n indices.push(packet.id);\n dependents[packet.id] = { deps: [], location: fp, type: varint_to_i32(packet.messages[0].meta[1][0].data) };\n });\n });\n cfb.FileIndex.forEach(function(fi) {\n if (!fi.name.match(/\\.iwa/))\n return;\n if (fi.content[0] != 0)\n return;\n parse_iwa_file(decompress_iwa_file(fi.content)).forEach(function(ia) {\n ia.messages.forEach(function(mess) {\n [5, 6].forEach(function(f) {\n if (!mess.meta[f])\n return;\n mess.meta[f].forEach(function(x) {\n dependents[ia.id].deps.push(varint_to_i32(x.data));\n });\n });\n });\n });\n });\n return dependents;\n}\nfunction write_numbers_iwa(wb, opts) {\n if (!opts || !opts.numbers)\n throw new Error(\"Must pass a `numbers` option -- check the README\");\n var cfb = CFB.read(opts.numbers, { type: \"base64\" });\n var deps = build_numbers_deps(cfb);\n var docroot = numbers_iwa_find(cfb, deps, 1);\n if (docroot == null)\n throw \"Could not find message \".concat(1, \" in Numbers template\");\n var sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);\n if (sheetrefs.length > 1)\n throw new Error(\"Template NUMBERS file must have exactly one sheet\");\n wb.SheetNames.forEach(function(name, idx) {\n if (idx >= 1) {\n numbers_add_ws(cfb, deps, idx + 1);\n docroot = numbers_iwa_find(cfb, deps, 1);\n sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);\n }\n write_numbers_ws(cfb, deps, wb.Sheets[name], name, idx, sheetrefs[idx]);\n });\n return cfb;\n}\nfunction numbers_iwa_doit(cfb, deps, id, cb) {\n var entry = CFB.find(cfb, deps[id].location);\n if (!entry)\n throw \"Could not find \".concat(deps[id].location, \" in Numbers template\");\n var x = parse_iwa_file(decompress_iwa_file(entry.content));\n var ainfo = x.find(function(packet) {\n return packet.id == id;\n });\n cb(ainfo, x);\n entry.content = compress_iwa_file(write_iwa_file(x));\n entry.size = entry.content.length;\n}\nfunction numbers_iwa_find(cfb, deps, id) {\n var entry = CFB.find(cfb, deps[id].location);\n if (!entry)\n throw \"Could not find \".concat(deps[id].location, \" in Numbers template\");\n var x = parse_iwa_file(decompress_iwa_file(entry.content));\n var ainfo = x.find(function(packet) {\n return packet.id == id;\n });\n return ainfo;\n}\nfunction numbers_add_ws(cfb, deps, wsidx) {\n var sheetref = -1, newsheetref = -1;\n var remap = {};\n numbers_iwa_doit(cfb, deps, 1, function(docroot, arch) {\n var doc = parse_shallow(docroot.messages[0].data);\n sheetref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);\n newsheetref = get_unique_msgid({ deps: [1], location: deps[sheetref].location, type: 2 }, deps);\n remap[sheetref] = newsheetref;\n numbers_add_oref(docroot, newsheetref);\n doc[1].push({ type: 2, data: write_TSP_Reference(newsheetref) });\n var sheet = numbers_iwa_find(cfb, deps, sheetref);\n sheet.id = newsheetref;\n if (deps[1].location == deps[newsheetref].location)\n arch.push(sheet);\n else\n numbers_iwa_doit(cfb, deps, newsheetref, function(_, x) {\n return x.push(sheet);\n });\n docroot.messages[0].data = write_shallow(doc);\n });\n var tiaref = -1;\n numbers_iwa_doit(cfb, deps, newsheetref, function(sheetroot, arch) {\n var sa = parse_shallow(sheetroot.messages[0].data);\n for (var i = 3; i <= 69; ++i)\n delete sa[i];\n var drawables = mappa(sa[2], parse_TSP_Reference);\n drawables.forEach(function(n) {\n return numbers_del_oref(sheetroot, n);\n });\n tiaref = get_unique_msgid({ deps: [newsheetref], location: deps[drawables[0]].location, type: deps[drawables[0]].type }, deps);\n numbers_add_oref(sheetroot, tiaref);\n remap[drawables[0]] = tiaref;\n sa[2] = [{ type: 2, data: write_TSP_Reference(tiaref) }];\n var tia = numbers_iwa_find(cfb, deps, drawables[0]);\n tia.id = tiaref;\n if (deps[drawables[0]].location == deps[newsheetref].location)\n arch.push(tia);\n else {\n var loc2 = deps[newsheetref].location;\n loc2 = loc2.replace(/^Root Entry\\//, \"\");\n loc2 = loc2.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n var parentidx = mlist[3].findIndex(function(m) {\n var _a, _b;\n var mm = parse_shallow(m.data);\n if ((_a = mm[3]) == null ? void 0 : _a[0])\n return u8str(mm[3][0].data) == loc2;\n if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc2)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(tiaref) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n numbers_iwa_doit(cfb, deps, tiaref, function(_, x) {\n return x.push(tia);\n });\n }\n sheetroot.messages[0].data = write_shallow(sa);\n });\n var tmaref = -1;\n numbers_iwa_doit(cfb, deps, tiaref, function(tiaroot, arch) {\n var tia = parse_shallow(tiaroot.messages[0].data);\n var da = parse_shallow(tia[1][0].data);\n for (var i = 3; i <= 69; ++i)\n delete da[i];\n var dap = parse_TSP_Reference(da[2][0].data);\n da[2][0].data = write_TSP_Reference(remap[dap]);\n tia[1][0].data = write_shallow(da);\n var oldtmaref = parse_TSP_Reference(tia[2][0].data);\n numbers_del_oref(tiaroot, oldtmaref);\n tmaref = get_unique_msgid({ deps: [tiaref], location: deps[oldtmaref].location, type: deps[oldtmaref].type }, deps);\n numbers_add_oref(tiaroot, tmaref);\n remap[oldtmaref] = tmaref;\n tia[2][0].data = write_TSP_Reference(tmaref);\n var tma = numbers_iwa_find(cfb, deps, oldtmaref);\n tma.id = tmaref;\n if (deps[tiaref].location == deps[tmaref].location)\n arch.push(tma);\n else\n numbers_iwa_doit(cfb, deps, tmaref, function(_, x) {\n return x.push(tma);\n });\n tiaroot.messages[0].data = write_shallow(tia);\n });\n var loc = deps[tmaref].location;\n loc = loc.replace(/^Root Entry\\//, \"\");\n loc = loc.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n numbers_iwa_doit(cfb, deps, tmaref, function(tmaroot, arch) {\n var _a, _b;\n var tma = parse_shallow(tmaroot.messages[0].data);\n var uuid = u8str(tma[1][0].data), new_uuid = uuid.replace(/-[A-Z0-9]*/, \"-\".concat(wsidx.toString(16).padStart(4, \"0\")));\n tma[1][0].data = stru8(new_uuid);\n [12, 13, 29, 31, 32, 33, 39, 44, 47, 81, 82, 84].forEach(function(n) {\n return delete tma[n];\n });\n if (tma[45]) {\n var srrta = parse_shallow(tma[45][0].data);\n var ref = parse_TSP_Reference(srrta[1][0].data);\n numbers_del_oref(tmaroot, ref);\n delete tma[45];\n }\n if (tma[70]) {\n var hsoa = parse_shallow(tma[70][0].data);\n (_a = hsoa[2]) == null ? void 0 : _a.forEach(function(item) {\n var hsa = parse_shallow(item.data);\n [2, 3].map(function(n) {\n return hsa[n][0];\n }).forEach(function(hseadata) {\n var hsea = parse_shallow(hseadata.data);\n if (!hsea[8])\n return;\n var ref2 = parse_TSP_Reference(hsea[8][0].data);\n numbers_del_oref(tmaroot, ref2);\n });\n });\n delete tma[70];\n }\n [\n 46,\n 30,\n 34,\n 35,\n 36,\n 38,\n 48,\n 49,\n 60,\n 61,\n 62,\n 63,\n 64,\n 71,\n 72,\n 73,\n 74,\n 75,\n 85,\n 86,\n 87,\n 88,\n 89\n ].forEach(function(n) {\n if (!tma[n])\n return;\n var ref2 = parse_TSP_Reference(tma[n][0].data);\n delete tma[n];\n numbers_del_oref(tmaroot, ref2);\n });\n var store = parse_shallow(tma[4][0].data);\n {\n [2, 4, 5, 6, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22].forEach(function(n) {\n var _a2;\n if (!((_a2 = store[n]) == null ? void 0 : _a2[0]))\n return;\n var oldref = parse_TSP_Reference(store[n][0].data);\n var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);\n numbers_del_oref(tmaroot, oldref);\n numbers_add_oref(tmaroot, newref);\n remap[oldref] = newref;\n var msg = numbers_iwa_find(cfb, deps, oldref);\n msg.id = newref;\n if (deps[oldref].location == deps[tmaref].location)\n arch.push(msg);\n else {\n deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());\n if (deps[newref].location == deps[oldref].location)\n deps[newref].location = deps[newref].location.replace(/\\.iwa/, \"-\".concat(newref, \".iwa\"));\n CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));\n var newloc = deps[newref].location;\n newloc = newloc.replace(/^Root Entry\\//, \"\");\n newloc = newloc.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newref) }],\n [{ type: 2, data: stru8(newloc.replace(/-.*$/, \"\")) }],\n [{ type: 2, data: stru8(newloc) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [],\n [],\n [],\n [],\n [{ type: 0, data: write_varint49(0) }],\n [],\n [{ type: 0, data: write_varint49(0) }]\n ]) });\n mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, varint_to_i32(mlist[1][0].data))) }];\n var parentidx = mlist[3].findIndex(function(m) {\n var _a3, _b2;\n var mm = parse_shallow(m.data);\n if ((_a3 = mm[3]) == null ? void 0 : _a3[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newref) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n }\n store[n][0].data = write_TSP_Reference(newref);\n });\n var row_headers = parse_shallow(store[1][0].data);\n {\n (_b = row_headers[2]) == null ? void 0 : _b.forEach(function(tspref) {\n var oldref = parse_TSP_Reference(tspref.data);\n var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);\n numbers_del_oref(tmaroot, oldref);\n numbers_add_oref(tmaroot, newref);\n remap[oldref] = newref;\n var msg = numbers_iwa_find(cfb, deps, oldref);\n msg.id = newref;\n if (deps[oldref].location == deps[tmaref].location) {\n arch.push(msg);\n } else {\n deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());\n if (deps[newref].location == deps[oldref].location)\n deps[newref].location = deps[newref].location.replace(/\\.iwa/, \"-\".concat(newref, \".iwa\"));\n CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));\n var newloc = deps[newref].location;\n newloc = newloc.replace(/^Root Entry\\//, \"\");\n newloc = newloc.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newref) }],\n [{ type: 2, data: stru8(newloc.replace(/-.*$/, \"\")) }],\n [{ type: 2, data: stru8(newloc) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [],\n [],\n [],\n [],\n [{ type: 0, data: write_varint49(0) }],\n [],\n [{ type: 0, data: write_varint49(0) }]\n ]) });\n mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, varint_to_i32(mlist[1][0].data))) }];\n var parentidx = mlist[3].findIndex(function(m) {\n var _a2, _b2;\n var mm = parse_shallow(m.data);\n if ((_a2 = mm[3]) == null ? void 0 : _a2[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newref) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n }\n tspref.data = write_TSP_Reference(newref);\n });\n }\n store[1][0].data = write_shallow(row_headers);\n var tiles = parse_shallow(store[3][0].data);\n {\n tiles[1].forEach(function(t) {\n var tst = parse_shallow(t.data);\n var oldtileref = parse_TSP_Reference(tst[2][0].data);\n var newtileref = remap[oldtileref];\n if (!remap[oldtileref]) {\n newtileref = get_unique_msgid({ deps: [tmaref], location: \"\", type: deps[oldtileref].type }, deps);\n deps[newtileref].location = \"Root Entry/Index/Tables/Tile-\".concat(newtileref, \".iwa\");\n remap[oldtileref] = newtileref;\n var oldtile = numbers_iwa_find(cfb, deps, oldtileref);\n oldtile.id = newtileref;\n numbers_del_oref(tmaroot, oldtileref);\n numbers_add_oref(tmaroot, newtileref);\n CFB.utils.cfb_add(cfb, \"/Index/Tables/Tile-\".concat(newtileref, \".iwa\"), compress_iwa_file(write_iwa_file([oldtile])));\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newtileref) }],\n [{ type: 2, data: stru8(\"Tables/Tile\") }],\n [{ type: 2, data: stru8(\"Tables/Tile-\".concat(newtileref)) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [],\n [],\n [],\n [],\n [{ type: 0, data: write_varint49(0) }],\n [],\n [{ type: 0, data: write_varint49(0) }]\n ]) });\n mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileref + 1, varint_to_i32(mlist[1][0].data))) }];\n var parentidx = mlist[3].findIndex(function(m) {\n var _a2, _b2;\n var mm = parse_shallow(m.data);\n if ((_a2 = mm[3]) == null ? void 0 : _a2[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newtileref) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n }\n tst[2][0].data = write_TSP_Reference(newtileref);\n t.data = write_shallow(tst);\n });\n }\n store[3][0].data = write_shallow(tiles);\n }\n tma[4][0].data = write_shallow(store);\n tmaroot.messages[0].data = write_shallow(tma);\n });\n}\nfunction write_numbers_ws(cfb, deps, ws, wsname, sheetidx, rootref) {\n var drawables = [];\n numbers_iwa_doit(cfb, deps, rootref, function(docroot) {\n var sheetref = parse_shallow(docroot.messages[0].data);\n {\n sheetref[1] = [{ type: 2, data: stru8(wsname) }];\n drawables = mappa(sheetref[2], parse_TSP_Reference);\n }\n docroot.messages[0].data = write_shallow(sheetref);\n });\n var tia = numbers_iwa_find(cfb, deps, drawables[0]);\n var tmaref = parse_TSP_Reference(parse_shallow(tia.messages[0].data)[2][0].data);\n numbers_iwa_doit(cfb, deps, tmaref, function(docroot, x) {\n return write_numbers_tma(cfb, deps, ws, docroot, x, tmaref);\n });\n}\nvar USE_WIDE_ROWS = true;\nfunction write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {\n var range = decode_range(ws[\"!ref\"]);\n range.s.r = range.s.c = 0;\n var trunc = false;\n if (range.e.c > 999) {\n trunc = true;\n range.e.c = 999;\n }\n if (range.e.r > 999999) {\n trunc = true;\n range.e.r = 999999;\n }\n if (trunc)\n console.error(\"Truncating to \".concat(encode_range(range)));\n var data = sheet_to_json(ws, { range: range, header: 1 });\n var SST = [\"~Sh33tJ5~\"];\n var loc = deps[tmaref].location;\n loc = loc.replace(/^Root Entry\\//, \"\");\n loc = loc.replace(/^Index\\//, \"\").replace(/\\.iwa$/, \"\");\n var pb = parse_shallow(tmaroot.messages[0].data);\n {\n pb[6][0].data = write_varint49(range.e.r + 1);\n pb[7][0].data = write_varint49(range.e.c + 1);\n delete pb[46];\n var store = parse_shallow(pb[4][0].data);\n {\n var row_header_ref = parse_TSP_Reference(parse_shallow(store[1][0].data)[2][0].data);\n numbers_iwa_doit(cfb, deps, row_header_ref, function(rowhead, _x) {\n var _a;\n var base_bucket = parse_shallow(rowhead.messages[0].data);\n if ((_a = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a[0])\n for (var R2 = 0; R2 < data.length; ++R2) {\n var _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(R2);\n _bucket[4][0].data = write_varint49(data[R2].length);\n base_bucket[2][R2] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n rowhead.messages[0].data = write_shallow(base_bucket);\n });\n var col_header_ref = parse_TSP_Reference(store[2][0].data);\n numbers_iwa_doit(cfb, deps, col_header_ref, function(colhead, _x) {\n var base_bucket = parse_shallow(colhead.messages[0].data);\n for (var C = 0; C <= range.e.c; ++C) {\n var _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(C);\n _bucket[4][0].data = write_varint49(range.e.r + 1);\n base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n colhead.messages[0].data = write_shallow(base_bucket);\n });\n var rbtree = parse_shallow(store[9][0].data);\n rbtree[1] = [];\n var tilestore = parse_shallow(store[3][0].data);\n {\n var tstride = 256;\n tilestore[2] = [{ type: 0, data: write_varint49(tstride) }];\n var tileref = parse_TSP_Reference(parse_shallow(tilestore[1][0].data)[2][0].data);\n var save_token = function() {\n var metadata = numbers_iwa_find(cfb, deps, 2);\n var mlist = parse_shallow(metadata.messages[0].data);\n var mlst = mlist[3].filter(function(m) {\n return varint_to_i32(parse_shallow(m.data)[1][0].data) == tileref;\n });\n return (mlst == null ? void 0 : mlst.length) ? varint_to_i32(parse_shallow(mlst[0].data)[12][0].data) : 0;\n }();\n {\n CFB.utils.cfb_del(cfb, deps[tileref].location);\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3] = mlist[3].filter(function(m) {\n return varint_to_i32(parse_shallow(m.data)[1][0].data) != tileref;\n });\n var parentidx = mlist[3].findIndex(function(m) {\n var _a, _b;\n var mm = parse_shallow(m.data);\n if ((_a = mm[3]) == null ? void 0 : _a[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6] = parent[6].filter(function(m) {\n return varint_to_i32(parse_shallow(m.data)[1][0].data) != tileref;\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n numbers_del_oref(tmaroot, tileref);\n }\n tilestore[1] = [];\n var ntiles = Math.ceil((range.e.r + 1) / tstride);\n for (var tidx = 0; tidx < ntiles; ++tidx) {\n var newtileid = get_unique_msgid({\n deps: [],\n location: \"\",\n type: 6002\n }, deps);\n deps[newtileid].location = \"Root Entry/Index/Tables/Tile-\".concat(newtileid, \".iwa\");\n var tiledata = [\n [],\n [{ type: 0, data: write_varint49(0) }],\n [{ type: 0, data: write_varint49(Math.min(range.e.r + 1, (tidx + 1) * tstride)) }],\n [{ type: 0, data: write_varint49(0) }],\n [{ type: 0, data: write_varint49(Math.min((tidx + 1) * tstride, range.e.r + 1) - tidx * tstride) }],\n [],\n [{ type: 0, data: write_varint49(5) }],\n [{ type: 0, data: write_varint49(1) }],\n [{ type: 0, data: write_varint49(USE_WIDE_ROWS ? 1 : 0) }]\n ];\n for (var R = tidx * tstride; R <= Math.min(range.e.r, (tidx + 1) * tstride - 1); ++R) {\n var tilerow = write_TST_TileRowInfo(data[R], SST, USE_WIDE_ROWS);\n tilerow[1][0].data = write_varint49(R - tidx * tstride);\n tiledata[5].push({ data: write_shallow(tilerow), type: 2 });\n }\n tilestore[1].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(tidx) }],\n [{ type: 2, data: write_TSP_Reference(newtileid) }]\n ]) });\n var newtile = {\n id: newtileid,\n messages: [write_iwam(6002, write_shallow(tiledata))]\n };\n var tilecontent = compress_iwa_file(write_iwa_file([newtile]));\n CFB.utils.cfb_add(cfb, \"/Index/Tables/Tile-\".concat(newtileid, \".iwa\"), tilecontent);\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n mlist[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newtileid) }],\n [{ type: 2, data: stru8(\"Tables/Tile\") }],\n [{ type: 2, data: stru8(\"Tables/Tile-\".concat(newtileid)) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [{ type: 2, data: new Uint8Array([2, 0, 0]) }],\n [],\n [],\n [],\n [],\n [{ type: 0, data: write_varint49(0) }],\n [],\n [{ type: 0, data: write_varint49(save_token) }]\n ]) });\n mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileid + 1, varint_to_i32(mlist[1][0].data))) }];\n var parentidx = mlist[3].findIndex(function(m) {\n var _a, _b;\n var mm = parse_shallow(m.data);\n if ((_a = mm[3]) == null ? void 0 : _a[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(newtileid) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n numbers_add_oref(tmaroot, newtileid);\n rbtree[1].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(tidx * tstride) }],\n [{ type: 0, data: write_varint49(tidx) }]\n ]) });\n }\n }\n store[3][0].data = write_shallow(tilestore);\n store[9][0].data = write_shallow(rbtree);\n store[10] = [{ type: 2, data: new Uint8Array([]) }];\n if (ws[\"!merges\"]) {\n var mergeid = get_unique_msgid({\n type: 6144,\n deps: [tmaref],\n location: deps[tmaref].location\n }, deps);\n tmafile.push({\n id: mergeid,\n messages: [write_iwam(6144, write_shallow([\n [],\n ws[\"!merges\"].map(function(m) {\n return { type: 2, data: write_shallow([\n [],\n [{ type: 2, data: write_shallow([\n [],\n [{ type: 5, data: new Uint8Array(new Uint16Array([m.s.r, m.s.c]).buffer) }]\n ]) }],\n [{ type: 2, data: write_shallow([\n [],\n [{ type: 5, data: new Uint8Array(new Uint16Array([m.e.r - m.s.r + 1, m.e.c - m.s.c + 1]).buffer) }]\n ]) }]\n ]) };\n })\n ]))]\n });\n store[13] = [{ type: 2, data: write_TSP_Reference(mergeid) }];\n numbers_iwa_doit(cfb, deps, 2, function(ai) {\n var mlist = parse_shallow(ai.messages[0].data);\n var parentidx = mlist[3].findIndex(function(m) {\n var _a, _b;\n var mm = parse_shallow(m.data);\n if ((_a = mm[3]) == null ? void 0 : _a[0])\n return u8str(mm[3][0].data) == loc;\n if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)\n return true;\n return false;\n });\n var parent = parse_shallow(mlist[3][parentidx].data);\n if (!parent[6])\n parent[6] = [];\n parent[6].push({\n type: 2,\n data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(mergeid) }]\n ])\n });\n mlist[3][parentidx].data = write_shallow(parent);\n ai.messages[0].data = write_shallow(mlist);\n });\n numbers_add_oref(tmaroot, mergeid);\n } else\n delete store[13];\n var sstref = parse_TSP_Reference(store[4][0].data);\n numbers_iwa_doit(cfb, deps, sstref, function(sstroot) {\n var sstdata = parse_shallow(sstroot.messages[0].data);\n {\n sstdata[3] = [];\n SST.forEach(function(str, i) {\n if (i == 0)\n return;\n sstdata[3].push({ type: 2, data: write_shallow([\n [],\n [{ type: 0, data: write_varint49(i) }],\n [{ type: 0, data: write_varint49(1) }],\n [{ type: 2, data: stru8(str) }]\n ]) });\n });\n }\n sstroot.messages[0].data = write_shallow(sstdata);\n });\n }\n pb[4][0].data = write_shallow(store);\n }\n tmaroot.messages[0].data = write_shallow(pb);\n}\nfunction fix_opts_func(defaults/*:Array >*/)/*:{(o:any):void}*/ {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nfunction fix_read_opts(opts) {\nfix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\n\nfunction fix_write_opts(opts) {\nfix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\nfunction get_sheet_type(n/*:string*/)/*:string*/ {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, idx/*:number*/, sheetRels, sheets, stype/*:string*/, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws['!drawel']) break;\n\t\t\t\tvar dfile = resolve_path(_ws['!drawel'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tdefault: throw new Error(\"Unrecognized sheet type \" + stype);\n\t\t}\n\t\tsheets[sheet] = _ws;\n\n\t\t/* scan rels for comments and threaded comments */\n\t\tvar comments = [], tcomments = [];\n\t\tif(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) {\n\t\t\tvar dfile = \"\";\n\t\t\tif(sheetRels[sheet][n].Type == RELS.CMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\tcomments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts);\n\t\t\t\tif(!comments || !comments.length) return;\n\t\t\t\tsheet_insert_comments(_ws, comments, false);\n\t\t\t}\n\t\t\tif(sheetRels[sheet][n].Type == RELS.TCMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\ttcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts));\n\t\t\t}\n\t\t});\n\t\tif(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []);\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x/*:string*/)/*:string*/ { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip/*:ZIP*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tmake_ssf();\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) {\n\t\tif(typeof Uint8Array == \"undefined\") throw new Error('NUMBERS file parsing requires Uint8Array support');\n\t\tif(typeof parse_numbers_iwa != \"undefined\") {\n\t\t\tif(zip.FileIndex) return parse_numbers_iwa(zip, opts);\n\t\t\tvar _zip = CFB.utils.cfb_new();\n\t\t\tzipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); });\n\t\t\treturn parse_numbers_iwa(_zip, opts);\n\t\t}\n\t\tthrow new Error('Unsupported NUMBERS file');\n\t}\n\tif(!safegetzipfile(zip, '[Content_Types].xml')) {\n\t\tif(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file');\n\t\tif(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file');\n\t\tvar index_zip = CFB.find(zip, 'Index.zip');\n\t\tif(index_zip) {\n\t\t\topts = dup(opts);\n\t\t\tdelete opts.type;\n\t\t\tif(typeof index_zip.content == \"string\") opts.type = \"binary\";\n\t\t\t// TODO: Bun buffer bug\n\t\t\tif(typeof Bun !== \"undefined\" && Buffer.isBuffer(index_zip.content)) return readSync(new Uint8Array(index_zip.content), opts);\n\t\t\treturn readSync(index_zip.content, opts);\n\t\t}\n\t\tthrow new Error('Unsupported ZIP file');\n\t}\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')/*:?any*/));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({}/*:any*/);\n\tvar styles = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme_xml(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\", opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\ttry {\n\t\t\tvar rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link);\n\t\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts);\n\t\t} catch(e) {}\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({}/*:any*/);\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({}/*:any*/);\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, \"s5s\"));\n\n\tif((dir.metadata || []).length >= 1) {\n\t\t/* TODO: MDX and other types of metadata */\n\t\topts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts);\n\t}\n\n\tif((dir.people || []).length >= 1) {\n\t\topts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts);\n\t}\n\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\twsloop: for(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tif(opts && opts.sheets != null) switch(typeof opts.sheets) {\n\t\t\tcase \"number\": if(i != opts.sheets) continue wsloop; break;\n\t\t\tcase \"string\": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break;\n\t\t\tdefault: if(Array.isArray && Array.isArray(opts.sheets)) {\n\t\t\t\tvar snjseen = false;\n\t\t\t\tfor(var snj = 0; snj != opts.sheets.length; ++snj) {\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"number\" && opts.sheets[snj] == i) snjseen=1;\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"string\" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1;\n\t\t\t\t}\n\t\t\t\tif(!snjseen) continue wsloop;\n\t\t\t}\n\t\t}\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: dup(table_fmt)\n\t}/*:any*/);\n\tif(opts && opts.bookFiles) {\n\t\tif(zip.files) {\n\t\t\tout.keys = entries;\n\t\t\tout.files = zip.files;\n\t\t} else {\n\t\t\tout.keys = [];\n\t\t\tout.files = {};\n\t\t\tzip.FullPaths.forEach(function(p, idx) {\n\t\t\t\tp = p.replace(/^Root Entry[\\/]/, \"\");\n\t\t\t\tout.keys.push(p);\n\t\t\t\tout.files[p] = zip.FileIndex[idx];\n\t\t\t});\n\t\t}\n\t}\n\tif(opts && opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\t// TODO: pass back content types metdata for xlsm/xlsx resolution\n\tout.bookType = xlsb ? \"xlsb\" : \"xlsx\";\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\n\ttry {\n\tf = '/!DataSpaces/Version';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\n/*:: declare var decrypt_agile:any; */\n\tif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\n/*:: declare var decrypt_std76:any; */\n\tif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip_xlsb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"bin\";\n\tvar vbafmt = true;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_bin(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_bin(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_bin(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_bin(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tvar ww = write_theme(wb.Themes, opts);\n\tzip_add_file(zip, f, ww);\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_bin(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_bin());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction write_zip_xlsx(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tvar people = [\"SheetJ5\"];\n\topts.tcid = 0;\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar needtc = false;\n\t\t\t\tcomments.forEach(function(carr) {\n\t\t\t\t\tcarr[1].forEach(function(c) { if(c.T == true) needtc = true; });\n\t\t\t\t});\n\t\t\t\tif(needtc) {\n\t\t\t\t\tcf = \"xl/threadedComments/threadedComment\" + rId + \".xml\";\n\t\t\t\t\tzip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts));\n\t\t\t\t\tct.threadedcomments.push(cf);\n\t\t\t\t\tadd_rels(wsrels, -1, \"../threadedComments/threadedComment\" + rId + \".xml\", RELS.TCMNT);\n\t\t\t\t}\n\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_xml(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_xml(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_xml(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_xml(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_xml());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tif(people.length > 1) {\n\t\tf = \"xl/persons/person.xml\";\n\t\tzip_add_file(zip, f, write_people_xml(people, opts));\n\t\tct.people.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"persons/person.xml\", RELS.PEOPLE);\n\t}\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array*/ {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tcase 'base64': x = Base64_decode(f.slice(0,12)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)];\n}\n\nfunction read_cfb(cfb/*:CFBContainer*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tzip = zip_read(d, o);\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64_decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\to.type = \"binary\";\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64_decode(d);\n\tif(typeof ArrayBuffer !== \"undefined\" && data instanceof ArrayBuffer) d = new Uint8Array(data);\n\td = typeof $cptable !== \"undefined\" ? $cptable.utils.decode(1200, d.slice(2), 'str') : (\n\t\t(has_buf && Buffer.isBuffer(data)) ? data.slice(2).toString(\"utf16le\") :\n\t\t(typeof Uint8Array !== \"undefined\" && d instanceof Uint8Array) ? (\n\t\t\ttypeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf-16le\").decode(d.slice(2)) : utf16lereadu(d.slice(2))\n\t\t) : utf16leread(d.slice(2))\n\t);\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data/*:string*/)/*:string*/ {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treset_cp();\n\tvar o = opts||{};\n\tif(o.codepage && typeof $cptable === \"undefined\") console.error(\"Codepage tables are not loaded. Non-ASCII characters may not give expected results\");\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = \"array\", o));\n\tif(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== \"undefined\" ? \"buffer\" : \"array\";\n\tvar d = data, n = [0,0,0,0], str = false;\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = \"array\"; }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;\n\t\tcase 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49:\n\t\t\tif(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error(\"TIFF Image File is not a spreadsheet\");\n\t\t\tif(n[1] === 0x44) return read_wb_ID(d, o);\n\t\t\tbreak;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF:\n\t\t\tif(n[1] === 0xFE) { return read_utf16(d, o); }\n\t\t\telse if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\tbreak;\n\t\tcase 0x00:\n\t\t\tif(n[1] === 0x00) {\n\t\t\t\tif(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\t\tif(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return rtf_to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t\tcase 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error(\"PNG Image File is not a spreadsheet\"); break;\n\t\tcase 0x08: if(n[1] === 0xE7) throw new Error(\"Unsupported Multiplan 1.x file!\"); break;\n\t\tcase 0x0C:\n\t\t\tif(n[1] === 0xEC) throw new Error(\"Unsupported Multiplan 2.x file!\");\n\t\t\tif(n[1] === 0xED) throw new Error(\"Unsupported Multiplan 3.x file!\");\n\t\t\tbreak;\n\t}\n\tif(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ {\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\nfunction write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tswitch(opts.bookType) {\n\t\tcase \"ods\": return write_ods(wb, opts);\n\t\tcase \"numbers\": return write_numbers_iwa(wb, opts);\n\t\tcase \"xlsb\": return write_zip_xlsb(wb, opts);\n\t\tdefault: return write_zip_xlsx(wb, opts);\n\t}\n}\n\n/*:: declare var encrypt_agile:any; */\nfunction write_zip_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_typeXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip_xlsx(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ {\n\tvar oopts = {};\n\tvar ftype = has_buf ? \"nodebuffer\" : (typeof Uint8Array !== \"undefined\" ? \"array\" : \"string\");\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tif(o.password) oopts.type = ftype;\n\telse switch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = ftype; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tvar out = z.FullPaths ? CFB.write(z, {fileType:\"zip\", type: /*::(*/{\"nodebuffer\": \"buffer\", \"string\": \"binary\"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts);\n\tif(typeof Deno !== \"undefined\") {\n\t\tif(typeof out == \"string\") {\n\t\t\tif(o.type == \"binary\" || o.type == \"base64\") return out;\n\t\t\tout = new Uint8Array(s2ab(out));\n\t\t}\n\t}\n/*jshint -W083 */\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef\n/*jshint +W083 */\n\tif(o.type === \"file\") return write_dl(o.file, out);\n\treturn o.type == \"string\" ? utf8read(/*::(*/out/*:: :any)*/) : out;\n}\n\nfunction write_cfb_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = opts||{};\n\tvar cfb/*:CFBContainer*/ = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out/*:string*/, opts/*:WriteOpts*/, bom/*:?string*/)/*:any*/ {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\n\t\t\telse if(typeof TextEncoder !== \"undefined\") return new TextEncoder().encode(o);\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out/*:string*/, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode_pass(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\treturn write_zip_typeXLSX(wb, o);\n}\n\nfunction writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\tvar idx = 0;\n\tif(o.sheet) {\n\t\tif(typeof o.sheet == \"number\") idx = o.sheet;\n\t\telse idx = wb.SheetNames.indexOf(o.sheet);\n\t\tif(!wb.SheetNames[idx]) throw new Error(\"Sheet not found: \" + o.sheet + \" : \" + (typeof o.sheet));\n\t}\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o, wb), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'rtf': return write_string_type(sheet_to_rtf(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'numbers':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o/*:WriteFileOpts*/) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileSyncXLSX(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSyncXLSX(wb, o);\n}\n\n\nfunction writeFileAsync(filename/*:string*/, wb/*:Workbook*/, opts/*:?WriteFileOpts*/, cb/*:?(e?:ErrnoError)=>void*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts/*:any*/);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\n/*::\ntype MJRObject = {\n\trow: any;\n\tisempty: boolean;\n};\n*/\nfunction make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, header/*:number*/, hdr/*:Array*/, o/*:Sheet2JSONOpts*/)/*:MJRObject*/ {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, \"raw\");\n\tvar isempty = true, dense = (sheet[\"!data\"] != null);\n\tvar row/*:any*/ = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[\"!data\"][R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? (sheet[\"!data\"][R]||[])[C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\tcase 'e': v = (v == 0 ? null : void 0); break;\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(val.t == \"e\" && v === null) row[hdr[C]] = null;\n\t\t\t\telse if(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw && (val.t !== \"n\" || (val.t === \"n\" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet/*:Worksheet*/, opts/*:?Sheet2JSONOpts*/) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\telse if(o.header == null) header = 0;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar out/*:Array*/ = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = sheet[\"!data\"] != null;\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[\"!data\"][R]) sheet[\"!data\"][R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[\"!data\"][R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ {\n\tvar isempty = true;\n\tvar row/*:Array*/ = [], txt = \"\", rr = encode_row(R);\n\tvar dense = sheet[\"!data\"] != null;\n\tvar datarow = dense && sheet[\"!data\"][R] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = dense ? datarow[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+(o.rawNumbers && val.t == \"n\" ? val.v : format_cell(val, null, o));\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols/*:Array*/ = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar w = 0;\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tif(row || (o.blankrows !== false)) out.push((w++ ? RS : \"\") + row);\n\t}\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof $cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = $cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet/*:Worksheet*/)/*:Array*/ {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols/*:Array*/ = [], C;\n\tvar cmds/*:Array*/ = [];\n\tvar dense = sheet[\"!data\"] != null;\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[\"!data\"][R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws/*:?Worksheet*/, js/*:Array*/, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? (_ws[\"!data\"] != null) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar offset = +!o.skipHeader;\n\tvar ws/*:Worksheet*/ = _ws || ({});\n\tif(!_ws && dense) ws[\"!data\"] = [];\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t} else {\n\t\tif(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; }\n\t}\n\tvar hdr/*:Array*/ = o.header || [], C = 0;\n\tvar ROW = [];\n\tjs.forEach(function (JS, R/*:number*/) {\n\t\tif(dense && !ws[\"!data\"][_R + R + offset]) ws[\"!data\"][_R + R + offset] = [];\n\t\tif(dense) ROW = ws[\"!data\"][_R + R + offset];\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tvar ref = dense ? \"\" : (encode_col(_C + C) + encode_row(_R + R + offset));\n\t\t\tvar cell/*:Cell*/ = dense ? ROW[_C + C] : ws[ref];\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\n\t\t\t\tif(dense) ROW[_C + C] = v;\n\t\t\t\telse ws[ref] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = 'd';\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\t\tz = (cell != null && cell.z && fmt_is_date(cell.z)) ? cell.z : (o.dateNF || table_fmt[14]);\n\t\t\t\t}\n\t\t\t\telse if(v === null && o.nullError) { t = 'e'; v = 0; }\n\t\t\t\tif(!cell) {\n\t\t\t\t\tif(!dense) ws[ref] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\t\telse ROW[_C + C] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\t} else {\n\t\t\t\t\tcell.t = t; cell.v = v;\n\t\t\t\t\tdelete cell.w; delete cell.R;\n\t\t\t\t\tif(z) cell.z = z;\n\t\t\t\t}\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(dense && !ws[\"!data\"][_R]) ws[\"!data\"][_R] = [];\n\tif(offset) for(C = 0; C < hdr.length; ++C) {\n\t\tif(dense) ws[\"!data\"][_R][C + _C] = {t:'s', v:hdr[C]};\n\t\telse ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\t}\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js/*:Array*/, opts)/*:Worksheet*/ { return sheet_add_json(null, js, opts); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws/*:Worksheet*/, R, C/*:?number*/)/*:Cell*/ {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") {\n\t\tif(ws[\"!data\"] != null) {\n\t\t\tvar RC = decode_cell(R);\n\t\t\tif(!ws[\"!data\"][RC.r]) ws[\"!data\"][RC.r] = [];\n\t\t\treturn ws[\"!data\"][RC.r][RC.c] || (ws[\"!data\"][RC.r][RC.c] = {t:'z'});\n\t\t}\n\t\treturn ws[R] || (ws[R] = {t:'z'});\n\t}\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_col(C||0) + encode_row(R));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb/*:Workbook*/, sh/*:number|string*/) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nfunction book_new()/*:Workbook*/ {\n\treturn { SheetNames: [], Sheets: {} };\n}\n\n/* add a worksheet to the end of a given workbook */\nfunction book_append_sheet(wb/*:Workbook*/, ws/*:Worksheet*/, name/*:?string*/, roll/*:?boolean*/)/*:string*/ {\n\tvar i = 1;\n\tif(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name || wb.SheetNames.length >= 0xFFFF) throw new Error(\"Too many worksheets\");\n\tif(roll && wb.SheetNames.indexOf(name) >= 0) {\n\t\tvar m = name.match(/(^.*?)(\\d+)$/);\n\t\ti = m && +m[2] || 0;\n\t\tvar root = m && m[1] || name;\n\t\tfor(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break;\n\t}\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n\treturn name;\n}\n\n/* set sheet visibility (visible/hidden/very hidden) */\nfunction book_set_sheet_visibility(wb/*:Workbook*/, sh/*:number|string*/, vis/*:number*/) {\n\tif(!wb.Workbook) wb.Workbook = {};\n\tif(!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tif(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {};\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n}\n\n/* set number format */\nfunction cell_set_number_format(cell/*:Cell*/, fmt/*:string|number*/) {\n\tcell.z = fmt;\n\treturn cell;\n}\n\n/* set cell hyperlink */\nfunction cell_set_hyperlink(cell/*:Cell*/, target/*:string*/, tooltip/*:?string*/) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target }/*:Hyperlink*/);\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n}\nfunction cell_set_internal_link(cell/*:Cell*/, range/*:string*/, tooltip/*:?string*/) { return cell_set_hyperlink(cell, \"#\" + range, tooltip); }\n\n/* add to cell comments */\nfunction cell_add_comment(cell/*:Cell*/, text/*:string*/, author/*:?string*/) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n}\n\n/* set array formula and flush related cells */\nfunction sheet_set_array_formula(ws/*:Worksheet*/, range, formula/*:string*/, dynamic/*:boolean*/) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) {\n\t\t\tcell.f = formula;\n\t\t\tif(dynamic) cell.D = true;\n\t\t}\n\t}\n\tvar wsr = decode_range(ws[\"!ref\"]);\n\tif(wsr.s.r > rng.s.r) wsr.s.r = rng.s.r;\n\tif(wsr.s.c > rng.s.c) wsr.s.c = rng.s.c;\n\tif(wsr.e.r < rng.e.r) wsr.e.r = rng.e.r;\n\tif(wsr.e.c < rng.e.c) wsr.e.c = rng.e.c;\n\tws[\"!ref\"] = encode_range(wsr);\n\treturn ws;\n}\n\nvar utils/*:any*/ = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\tsheet_add_dom: sheet_add_dom,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: sheet_to_html,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json,\n\tsheet_get_cell: ws_get_cell_stub,\n\tbook_new: book_new,\n\tbook_append_sheet: book_append_sheet,\n\tbook_set_sheet_visibility: book_set_sheet_visibility,\n\tcell_set_number_format: cell_set_number_format,\n\tcell_set_hyperlink: cell_set_hyperlink,\n\tcell_set_internal_link: cell_set_internal_link,\n\tcell_add_comment: cell_add_comment,\n\tsheet_set_array_formula: sheet_set_array_formula,\n\tconsts: {\n\t\tSHEET_VISIBLE: 0,\n\t\tSHEET_HIDDEN: 1,\n\t\tSHEET_VERY_HIDDEN: 2\n\t}\n};\n\nvar _Readable;\nfunction set_readable(R) { _Readable = R; }\n\nfunction write_csv_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable();\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row/*:?string*/ = \"\", cols/*:Array*/ = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar R = r.s.r;\n\tvar BOM = false, w = 0;\n\tstream._read = function() {\n\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\twhile(R <= r.e.r) {\n\t\t\t++R;\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\tif(row != null) {\n\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\tif(row || (o.blankrows !== false)) return stream.push((w++ ? RS : \"\") + row);\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nfunction write_html_stream(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*/) {\n\tvar stream = _Readable();\n\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tstream.push(header);\n\tvar r = decode_range(ws['!ref']);\n\tstream.push(make_html_preamble(ws, r, o));\n\tvar R = r.s.r;\n\tvar end = false;\n\tstream._read = function() {\n\t\tif(R > r.e.r) {\n\t\t\tif(!end) { end = true; stream.push(\"\" + footer); }\n\t\t\treturn stream.push(null);\n\t\t}\n\t\twhile(R <= r.e.r) {\n\t\t\tstream.push(make_html_row(ws, r, R, o));\n\t\t\t++R;\n\t\t\tbreak;\n\t\t}\n\t};\n\treturn stream;\n}\n\nfunction write_json_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable({objectMode:true});\n\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar counter = 0;\n\tvar dense = sheet[\"!data\"] != null;\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[\"!data\"][R]) sheet[\"!data\"][R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[\"!data\"][R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tR = r.s.r + offset;\n\tstream._read = function() {\n\t\twhile(R <= r.e.r) {\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, o);\n\t\t\t++R;\n\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\tstream.push(row.row);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nvar __stream = {\n\tto_json: write_json_stream,\n\tto_html: write_html_stream,\n\tto_csv: write_csv_stream,\n\tset_readable: set_readable\n};\nexport const version = XLSX.version;\nexport {\n\tparse_xlscfb,\n\tparse_zip,\n\treadSync as read,\n\treadFileSync as readFile,\n\treadFileSync,\n\twriteSync as write,\n\twriteFileSync as writeFile,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteSyncXLSX as writeXLSX,\n\twriteFileSyncXLSX as writeFileXLSX,\n\tutils,\n\tset_fs,\n\tset_cptable,\n\t__stream as stream,\n\tSSF,\n\tCFB\n};\nexport default {\n\tparse_xlscfb,\n\tparse_zip,\n\tread: readSync,\n\treadFile: readFileSync,\n\treadFileSync,\n\twrite: writeSync,\n\twriteFile: writeFileSync,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteXLSX: writeSyncXLSX,\n\twriteFileXLSX: writeFileSyncXLSX,\n\tutils,\n\tset_fs,\n\tset_cptable,\n\tstream: __stream,\n\tSSF,\n\tCFB\n}\n","/* eslint-disable react/no-direct-mutation-state */\r\n/* eslint-disable default-case */\r\nimport React, { Component } from 'react';\r\nimport { Button, Modal, ModalFooter, ModalHeader, ModalBody, Label, Input, Row, Col } from 'reactstrap';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, GridComponent, Sort, Search, Filter, ExcelExport, Edit, Toolbar, InfiniteScroll, ToolbarItems } from '@syncfusion/ej2-react-grids';\r\nimport { DatePickerComponent, TimePickerComponent } from '@syncfusion/ej2-react-calendars';\r\nimport { DropDownListComponent, CheckBoxSelection, MultiSelectComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { TextBoxComponent, NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { HtmlEditor, Image, Inject, Count, Link, Toolbar as rteToolbar, QuickToolbar, RichTextEditorComponent } from '@syncfusion/ej2-react-richtexteditor';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { ImageThumbnails } from '../ImageThumbnails';\r\nimport { Context } from '../../helpers/Context';\r\nimport Select2 from '../../helpers/Select2';\r\nimport '../../css/Select2.css';\r\nimport { PreviewCards } from '../PreviewCards';\r\nimport { exportProducts, handleExportClick } from '../../helpers/Global';\r\nimport * as XLSX from 'xlsx';\r\n\r\nexport class Products extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Preview', buttonOption: { cssClass: 'e-flat', iconCss: 'e-eye e-icons' } },\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n \r\n this.fullToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', 'StrikeThrough',\r\n 'FontName', 'FontSize', 'FontColor', 'BackgroundColor',\r\n 'LowerCase', 'UpperCase', '|', 'Formats', 'Alignments', 'OrderedList', 'UnorderedList',\r\n 'Outdent', 'Indent', '|', 'CreateLink', 'Image', '|', 'ClearFormat',\r\n 'SourceCode', 'FullScreen', '|', 'Undo', 'Redo'\r\n ],\r\n type: 'Expand'\r\n };\r\n\r\n this.simpleToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', '|', 'ClearFormat', 'Undo', 'Redo', '|', 'SourceCode'],\r\n type: 'Expand'\r\n };\r\n\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, previewModal: false, uploadModal: false, gridCommands: commandTemplate, gridToolbar: [],\r\n Id: 0,\r\n Slug: '',\r\n ProductBrandId: 0,\r\n fProductBrandId: 0,\r\n fCategoryId: 0,\r\n fProductName: '',\r\n fSubcategoryId: [],\r\n ProductRangeId: 0,\r\n ProductTypeId: 0,\r\n Title: '',\r\n ShortDescription: '',\r\n DisplayOrder: 0,\r\n Weight: '',\r\n Height: '',\r\n Length: '',\r\n Width: '',\r\n SPrice: 0,\r\n DateSPriceStarts: new Date(),\r\n DateSPriceEnds: new Date(),\r\n Upsells: 0,\r\n CrossSells: '',\r\n Stock: 0,\r\n Quantity: 0,\r\n Price: 0,\r\n Images: [],\r\n Sku: '',\r\n Published: 0,\r\n Featured: 0,\r\n GTIN: '',\r\n About: '',\r\n AdditionalInfo: '',\r\n Tags: '',\r\n RelatedProducts: '',\r\n MetaData: '',\r\n ExternalURL: '',\r\n DisplayType: 0,\r\n OutOfStock: false,\r\n Ongoing: false,\r\n StockCount: 0,\r\n LowStockAmount: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n PrevId: 0,\r\n BrandList: [],\r\n CategoryList: [],\r\n SelectedCategories: [],\r\n SubCategoryList: [],\r\n SelectedSubCategories: [],\r\n PreviewProduct: [],\r\n excelData: [],\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.previewToggle = this.previewToggle.bind(this);\r\n this.uploadToggle = this.uploadToggle.bind(this);\r\n this.handleSelectChange = this.handleSelectChange.bind(this);\r\n this.handleFilterSelectChange = this.handleFilterSelectChange.bind(this);\r\n this.handleUnSelectChange = this.handleUnSelectChange.bind(this);\r\n this.handleFilterUnSelectChange = this.handleFilterUnSelectChange.bind(this);\r\n this.uploadExcelData = this.uploadExcelData.bind(this)\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n previewToggle() {\r\n this.setState({\r\n previewModal: !this.state.previewModal,\r\n PrevId: 0,\r\n });\r\n }\r\n\r\n uploadToggle() {\r\n this.setState({\r\n uploadModal: !this.state.uploadModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Products Administration\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n\r\n //console.log(data, id)\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id === id });\r\n console.log(data)\r\n this.setState({ Id: data.id, Slug: data.slug, ProductBrandId: data.productBrandId, ProductRangeId: data.productRangeId, SelectedCategories: data.selectedCategories && JSON.parse(data.selectedCategories), GTIN: data.gtin, ProductTypeId: data.productTypeId, Title: data.title, ShortDescription: data.shortDescription, DisplayOrder: data.displayOrder, Weight: data.weight, Height: data.height, Length: data.length, Width: data.width, SPrice: data.sPrice, DateSPriceStarts: data.dateSPriceStarts, DateSPriceEnds: data.dateSPriceEnds, Upsells: data.upsells, CrossSells: data.crossSells, Stock: data.stock, Quantity: data.quantity, Price: data.price, Images: data.images, Sku: data.sku, Published: data.published, Featured: data.featured, About: data.about, AdditionalInfo: data.additionalInfo, Tags: data.tags, RelatedProducts: data.relatedProducts, MetaData: data.metaData, ExternalURL: data.externalURL, DisplayType: data.displayType, OutOfStock: data.outOfStock, Ongoing: data.ongoing, StockCount: data.stockCount, LowStockAmount: data.lowStockAmount, AddedBy: data.addedBy, DateAdded: data.dateAdded, ModifiedBy: data.modifiedBy, DateModified: data.dateModified, Status: data.status, Badge: data.badge });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n Slug: '',\r\n ProductBrandId: 0,\r\n ProductRangeId: 0,\r\n ProductTypeId: 0,\r\n fProductTypeId: 0,\r\n fCategoryId: 0,\r\n fSubcategoryId: 0,\r\n Title: '',\r\n ShortDescription: '',\r\n DisplayOrder: 0,\r\n Weight: '',\r\n Height: '',\r\n Length: '',\r\n Width: '',\r\n SPrice: 0,\r\n DateSPriceStarts: new Date(),\r\n DateSPriceEnds: new Date(),\r\n Upsells: 0,\r\n CrossSells: '',\r\n Stock: 0,\r\n Quantity: 0,\r\n Price: 0,\r\n Images: '',\r\n Sku: '',\r\n Published: 0,\r\n Featured: 0,\r\n GTIN: '',\r\n About: '',\r\n AdditionalInfo: '',\r\n SelectedCategories: [],\r\n Tags: '',\r\n RelatedProducts: '',\r\n MetaData: '',\r\n ExternalURL: '',\r\n DisplayType: 0,\r\n OutOfStock: false,\r\n Ongoing: false,\r\n StockCount: 0,\r\n LowStockAmount: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n Badge: '',\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n valid &= fieldRequired(this.state.ProductBrandId, 'tbProductBrandIdError', '* required');\r\n valid &= fieldRequired(this.state.Title, 'tbTitleError', '* required');\r\n valid &= fieldRequired(this.state.ShortDescription, 'tbShortDescriptionError', '* required');\r\n valid &= fieldRequired(this.state.Sku, 'tbSkuError', '* required');\r\n valid &= fieldRequired(this.state.Price, 'tbPriceError', '* required');\r\n\r\n if (valid) {\r\n const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n this.state.AddedBy = data.addedBy;\r\n this.state.DateAdded = data.dateAdded;\r\n this.state.Id = data.id;\r\n this.state.Status = data.status;\r\n }\r\n else {\r\n this.state.Status = 1;\r\n }\r\n this.saveData(this.state.editId, null);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n previewItem = (id) => {\r\n let brandId = 0;\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id == id });\r\n brandId = data.productBrandId;\r\n this.setState({ PreviewProduct: data, Id: data.id, Slug: data.slug, ProductBrandId: data.productBrandId, ProductRangeId: data.productRangeId, SelectedCategories: data.selectedCategories && JSON.parse(data.selectedCategories), ProductTypeId: data.productTypeId, Title: data.title, ShortDescription: data.shortDescription, DisplayOrder: data.displayOrder, Weight: data.weight, Height: data.height, Length: data.length, Width: data.width, SPrice: data.sPrice, DateSPriceStarts: data.dateSPriceStarts, DateSPriceEnds: data.dateSPriceEnds, Upsells: data.upsells, CrossSells: data.crossSells, Stock: data.stock, Quantity: data.quantity, Price: data.price, Images: data.images, Sku: data.sku, Published: data.published, Featured: data.featured, About: data.about, AdditionalInfo: data.additionalInfo, Tags: data.tags, RelatedProducts: data.relatedProducts, MetaData: data.metaData, ExternalURL: data.externalURL, DisplayType: data.displayType, OutOfStock: data.outOfStock, Ongoing: data.ongoing, StockCount: data.stockCount, LowStockAmount: data.lowStockAmount, AddedBy: data.addedBy, DateAdded: data.dateAdded, ModifiedBy: data.modifiedBy, DateModified: data.dateModified, Status: data.status, });\r\n }\r\n\r\n this.setState({ PrevId: brandId, previewModal: true });\r\n }\r\n\r\n async uploadExcelData() {\r\n let valid = true;\r\n valid &= fieldRequired(this.state.excelData.length, \"uploadData\", \"* required\")\r\n if (valid) {\r\n this.setState({ uploadModal: false })\r\n let dataToUpload = this.state.excelData\r\n //console.log(dataToUpload)\r\n for (let i = 0; i < dataToUpload.length; i++) {\r\n //console.log(dataToUpload[i][\"Brand *\"], typeof dataToUpload[i][\"Brand *\"])\r\n let brandId = typeof dataToUpload[i][\"Brand *\"] == \"number\" ? dataToUpload[i][\"Brand *\"] : parseInt(dataToUpload[i][\"Brand *\"].split(\" - \")[1]);\r\n let selectedCategory = dataToUpload[i].Subcategories.includes(\"[\") ? dataToUpload[i].Subcategories : JSON.stringify([parseInt(dataToUpload[i].Subcategories.split(\" - \")[1])]);\r\n\r\n var body = {\r\n Id: this.state.Id,\r\n Slug: dataToUpload[i][\"Slug *\"],\r\n ProductBrandId: brandId,\r\n SelectedCategories: selectedCategory,\r\n ProductRangeId: this.state.ProductRangeId,\r\n ProductTypeId: this.state.ProductTypeId,\r\n GTIN: dataToUpload[i].GTIN.toString(),\r\n Title: dataToUpload[i][\"Title *\"],\r\n ShortDescription: dataToUpload[i].ShortDescription ? dataToUpload[i]?.ShortDescription : \"\",\r\n DisplayOrder: this.state.DisplayOrder,\r\n Weight: dataToUpload[i][\"Weight *\"].toString(),\r\n Height: dataToUpload[i][\"Height *\"].toString(),\r\n Length: dataToUpload[i][\"Length *\"].toString(),\r\n Width: dataToUpload[i][\"Width *\"].toString(),\r\n SPrice: dataToUpload[i]?.SPrice ? dataToUpload[i].SPrice : 0,\r\n DateSPriceStarts: dataToUpload[i].DateSPriceStarts ? new Date(dataToUpload[i].DateSPriceStarts) : new Date(),\r\n DateSPriceEnds: dataToUpload[i].DateSPriceEnds ? new Date(dataToUpload[i].DateSPriceEnds) : new Date(),\r\n Upsells: this.state.Upsells,\r\n CrossSells: this.state.CrossSells,\r\n Stock: dataToUpload[i][\"Stock *\"],\r\n Quantity: dataToUpload[i].Quantity,\r\n Price: dataToUpload[i][\"Price *\"],\r\n Images: dataToUpload[i]?.Images ? dataToUpload[i].Images : \"\",\r\n Sku: dataToUpload[i][\"SKU *\"] ? dataToUpload[i][\"SKU *\"] : \"\",\r\n Published: this.state.Published,\r\n Featured: this.state.Featured,\r\n About: dataToUpload[i].About ? dataToUpload[i]?.About : \"\",\r\n AdditionalInfo: dataToUpload[i].AdditionalInfo ? dataToUpload[i]?.AdditionalInfo : \"\",\r\n Tags: dataToUpload[i].Tags ? dataToUpload[i].Tags : \"\",\r\n RelatedProducts: this.state.RelatedProducts,\r\n MetaData: this.state.MetaData,\r\n ExternalURL: this.state.ExternalURL,\r\n DisplayType: this.state.DisplayType,\r\n OutOfStock: dataToUpload[i].OutOfStock,\r\n Ongoing: dataToUpload[i].Ongoing,\r\n StockCount: dataToUpload[i][\"StockCount *\"],\r\n LowStockAmount: dataToUpload[i].LowStockAmount,\r\n AddedBy: this.state.AddedBy,\r\n DateAdded: this.state.DateAdded,\r\n ModifiedBy: this.state.ModifiedBy,\r\n DateModified: this.state.DateModified,\r\n Status: this.state.Status,\r\n }\r\n //console.log(body)\r\n this.saveBulkData(body);\r\n }\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Preview':\r\n this.previewItem(args.rowData.id);\r\n break;\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n RenderBrands = (props) => {\r\n const brand = this.state.BrandList.find(item => item.id === props.productBrandId);\r\n if (brand) {\r\n return (\r\n \r\n {brand.title}\r\n \r\n );\r\n }\r\n }\r\n\r\n RenderCategories = (props) => {\r\n const selectedCategoryIds = props.selectedCategories;\r\n //console.log(this.state.SubCategoryList, selectedCategoryIds == '\"\"', selectedCategoryIds)\r\n const categories = this.state.SubCategoryList.filter(item => selectedCategoryIds && selectedCategoryIds !== '\"\"' && JSON.parse(selectedCategoryIds).find(a => item.id === a));\r\n const categoryTitles = categories.map(category => category.title).join(', ');\r\n return (\r\n \r\n {categoryTitles}\r\n \r\n );\r\n }\r\n\r\n renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n const FilterOptions = {\r\n type: 'Excel'\r\n };\r\n\r\n return (\r\n this.grid = g} commandClick={commandClick} enableInfiniteScrolling={true} allowSorting={true} allowFiltering={true} filterSettings={FilterOptions} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n \r\n\r\n handleUpdatedImageUrls = (updatedUrls) => {\r\n this.setState({ Images: updatedUrls });\r\n }\r\n\r\n handleSelectChange(event) { const selectedValues = Array.from(event.target.selectedOptions).map(option => parseInt(option.value)); this.setState({ SelectedCategories: [...selectedValues] }); }\r\n\r\n handleUnSelectChange(event) {\r\n const selectedValues = Array.from(event.target.selectedOptions).map(option => option.value);\r\n let newData = this.state.SelectedSubCategories.filter(item => item !== selectedValues[0])\r\n this.setState({ SelectedSubCategories: newData });\r\n }\r\n\r\n //handleFilterSelectChange(event) { const selectedValue = Array.from(event.target.selectedOptions).map(option => parseInt(option.value)); this.setState({ fSubcategoryId: selectedValue }); }\r\n handleFilterSelectChange(event) {\r\n //const selectedValue = Array.from(event.value).map(option => parseInt(option));\r\n this.setState({ fSubcategoryId: event.value });\r\n console.log(event.value);\r\n }\r\n\r\n handleFilterUnSelectChange(event) {\r\n this.setState({ fSubcategoryId: [] });\r\n }\r\n\r\n filterProductsByCategories = (selectedCategoryIds, productCategories, products) => {\r\n // Extract subCategoryIds from all selected categories\r\n \r\n //console.clear();\r\n //console.log(selectedCategoryIds, productCategories, products);\r\n var subCategoryIds = [];\r\n for (var i = 0; i < productCategories?.length; i++) {\r\n if (selectedCategoryIds.indexOf(productCategories[i].id) !== -1) {\r\n for (var j = 0; j < productCategories[i].subCategoryIds?.length; j++) {\r\n subCategoryIds.push(productCategories[i].subCategoryIds[j].id);\r\n }\r\n }\r\n }\r\n //console.log(subCategoryIds);\r\n \r\n var filteredProducts = [];\r\n for (var k = 0; k < products?.length; k++) {\r\n if (products[k].selectedCategories) {\r\n var selectedCategories = JSON.parse(products[k].selectedCategories);\r\n for (var l = 0; l < selectedCategories?.length; l++) {\r\n if (subCategoryIds.indexOf(selectedCategories[l]) !== -1) {\r\n filteredProducts.push(products[k]);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n \r\n return filteredProducts;\r\n };\r\n\r\n render() {\r\n let data = this.state.editData;\r\n const { handleNavigate } = this.context;\r\n let CategoryList = [];\r\n if (Array.isArray(this.state.CategoryList)) {\r\n CategoryList = this.state.CategoryList.map(item => ({\r\n label: item.title,\r\n value: item.id\r\n }))\r\n }\r\n\r\n let images = this.state.Images;\r\n const Fields = { text: 'label', value: 'value' };\r\n if (this.state.Images.includes(\"\\\\\\\\\")) {\r\n images = JSON.parse(this.state.Images)\r\n }\r\n if (this.state.fProductBrandId !== 0) {\r\n data = data?.filter(item => item.productBrandId === this.state.fProductBrandId || (!this.state.fProductBrandId && !item.productBrandId));\r\n }\r\n \r\n\r\n if (this.state.fProductName) {\r\n data = data?.filter(item => item.title?.toLowerCase().includes(this.state.fProductName) || item.sku?.toLowerCase().includes(this.state.fProductName));\r\n }\r\n if (this.state.fSubcategoryId.length) {\r\n data = this.filterProductsByCategories(this.state.fSubcategoryId, this.state.CategoryList, data);\r\n }\r\n let contents = this.state.loading ?

      Loading...

      : this.renderDataTable(data, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n let mapedData = this.state.CategoryList.map((item, index) => { return { text: item.title, children: this.state.SubCategoryList.filter(sub => sub.categoryId === item.id).map(sub => { return { text: sub.title, id: sub.id } }) } })\r\n\r\n const uploadExcel = (e) => {\r\n const file = e.target.files[0];\r\n if (file instanceof Blob) {\r\n const reader = new FileReader();\r\n reader.readAsBinaryString(e.target.files[0])\r\n\r\n reader.onload = (e) => {\r\n const contents = e.target.result;\r\n const wb = XLSX.read(contents, { type: \"binary\" });\r\n const sheetName = wb.SheetNames[0];\r\n const sheet = wb.Sheets[sheetName];\r\n const newData = XLSX.utils.sheet_to_json(sheet);\r\n this.setState({ excelData: newData })\r\n //console.log(newData)\r\n }\r\n\r\n } else {\r\n console.error('Invalid file type');\r\n }\r\n }\r\n\r\n \r\n return (\r\n <>\r\n
      \r\n \r\n \r\n

      Products Administration

      \r\n \r\n \r\n \r\n \r\n \r\n
      \r\n \r\n \r\n
      \r\n \r\n \r\n \r\n \r\n \r\n Filters\r\n
      \r\n {
      \r\n this.setState({ fProductBrandId: e.itemData ? e.itemData.id : 0 })} />\r\n
      }\r\n {
      \r\n this.setState({ fProductName: e.target.value.toLowerCase() })} />\r\n
      }\r\n
      \r\n \r\n {/**/}\r\n {/* { const selectedData = e.value; this.setState({ fSubcategoryId: selectedData }); }} dataSource={CategoryList} />*/}\r\n \r\n \r\n \r\n {/**/}\r\n {/**/}\r\n
      \r\n
      \r\n\r\n
      \r\n {contents}\r\n \r\n
      \r\n
      \r\n\r\n \r\n }>Edit Products\r\n \r\n
      \r\n
      \r\n this.setState({ Title: e.target.value })} />
      \r\n
      \r\n
      \r\n this.setState({ Sku: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ ProductBrandId: e.itemData.id })} />\r\n
      \r\n
      \r\n\r\n
      \r\n this.setState({ GTIN: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ Badge: e.target.value })} /> \r\n
      \r\n \r\n
      \r\n\r\n \r\n
      \r\n \r\n \r\n
      \r\n\r\n
      \r\n \r\n this.setState({ ShortDescription: e.value })} >\r\n \r\n
      \r\n
      \r\n\r\n \r\n (Include measuring units)\r\n
      \r\n
      \r\n this.setState({ Weight: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ Height: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ Length: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ Width: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n\r\n\r\n
      \r\n
      \r\n this.setState({ Price: e.target.value })} />
      \r\n
      \r\n
      \r\n this.setState({ Stock: parseInt(e.target.value) })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ StockCount: parseInt(e.target.value) })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ LowStockAmount: parseInt(e.target.value) })} />
      \r\n
      \r\n\r\n
      \r\n\r\n
      Sale
      \r\n
      \r\n
      \r\n this.setState({ SPrice: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ DateSPriceStarts: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ DateSPriceEnds: e.target.value })} />
      \r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n this.setState({ Ongoing: e.target.checked })} />  
      \r\n
      \r\n
      \r\n this.setState({ OutOfStock: e.target.checked })} />  
      \r\n
      \r\n
      \r\n\r\n\r\n \r\n\r\n
      \r\n \r\n this.setState({ About: e.value })} >\r\n \r\n
      \r\n
      \r\n\r\n
      \r\n \r\n this.setState({ AdditionalInfo: e.value })} >\r\n \r\n
      \r\n
      \r\n\r\n
      \r\n this.setState({ Tags: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n \r\n \r\n
      \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {\r\n }>Product Preview\r\n \r\n = new Date()) || (this.state.SPrice && this.state.Ongoing) ? this.state.SPrice : this.state.Price}\r\n prevPrice={(this.state.SPrice && this.state.DateSPriceEnds && new Date(this.state.DateSPriceEnds) >= new Date()) || (this.state.SPrice && this.state.Ongoing) ? this.state.Price : this.state.SPrice}\r\n title={this.state.Title}\r\n description={this.state.ShortDescription} />\r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n }>Upload Products\r\n \r\n uploadExcel(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\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/products', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n let data = await response.json();\r\n data = data.filter(item => item.status !== 2);\r\n this.setState({ editData: [...data, { SelectedCategories: data.SelectedCategories && JSON.parse(data?.SelectedCategories), }] });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n try {\r\n const response = await fetch('api/productbrands', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ BrandList: data });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n try {\r\n const response = await fetch('api/productcategories', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ CategoryList: data });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n try {\r\n const response = await fetch('api/productsubcategories', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ SubCategoryList: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId, bulk) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n //console.log(dataId)\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Slug: this.state.Slug, ProductBrandId: this.state.ProductBrandId, SelectedCategories: JSON.stringify(this.state.SelectedCategories), ProductRangeId: this.state.ProductRangeId, ProductTypeId: this.state.ProductTypeId, GTIN: this.state.GTIN, Title: this.state.Title, ShortDescription: this.state.ShortDescription, DisplayOrder: this.state.DisplayOrder, Weight: this.state.Weight, Height: this.state.Height, Length: this.state.Length, Width: this.state.Width, SPrice: this.state.SPrice, DateSPriceStarts: this.state.DateSPriceStarts, DateSPriceEnds: this.state.DateSPriceEnds, Upsells: this.state.Upsells, CrossSells: this.state.CrossSells, Stock: this.state.Stock, Quantity: this.state.Quantity, Price: this.state.Price, Images: Array.isArray(this.state.Images) ? this.state.Images.join(\", \") : this.state.Images, Sku: this.state.Sku, Published: this.state.Published, Featured: this.state.Featured, About: this.state.About, AdditionalInfo: this.state.AdditionalInfo, Tags: this.state.Tags, RelatedProducts: this.state.RelatedProducts, MetaData: this.state.MetaData, ExternalURL: this.state.ExternalURL, DisplayType: this.state.DisplayType, OutOfStock: this.state.OutOfStock, Ongoing: this.state.Ongoing, StockCount: this.state.StockCount, LowStockAmount: this.state.LowStockAmount, AddedBy: this.state.AddedBy, DateAdded: this.state.DateAdded, ModifiedBy: this.state.ModifiedBy, DateModified: this.state.DateModified, Status: this.state.Status, Badge: this.state.Badge }\r\n var body = bulk ? bulk : data;\r\n //console.log(data)\r\n try {\r\n const response = await fetch('api/products', {\r\n method: dataId == 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(body),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Products', content: 'The products was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n this.setState({ loading: false });\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Products', content: 'There was an error saving the products!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async saveBulkData(bulk) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n //console.log(dataId)\r\n var bearer = 'Bearer ' + getAuthToken();\r\n // var data = { Id: this.state.Id, Slug: this.state.Slug, ProductBrandId: this.state.ProductBrandId, SelectedCategories: JSON.stringify(this.state.SelectedCategories), ProductRangeId: this.state.ProductRangeId, ProductTypeId: this.state.ProductTypeId, GTIN: this.state.GTIN, Title: this.state.Title, ShortDescription: this.state.ShortDescription, DisplayOrder: this.state.DisplayOrder, Weight: this.state.Weight, Height: this.state.Height, Length: this.state.Length, Width: this.state.Width, SPrice: this.state.SPrice, DateSPriceStarts: this.state.DateSPriceStarts, DateSPriceEnds: this.state.DateSPriceEnds, Upsells: this.state.Upsells, CrossSells: this.state.CrossSells, Stock: this.state.Stock, Quantity: this.state.Quantity, Price: this.state.Price, Images: Array.isArray(this.state.Images) ? this.state.Images.join(\", \") : this.state.Images, Sku: this.state.Sku, Published: this.state.Published, Featured: this.state.Featured, About: this.state.About, AdditionalInfo: this.state.AdditionalInfo, Tags: this.state.Tags, RelatedProducts: this.state.RelatedProducts, MetaData: this.state.MetaData, ExternalURL: this.state.ExternalURL, DisplayType: this.state.DisplayType, OutOfStock: this.state.OutOfStock, StockCount: this.state.StockCount, LowStockAmount: this.state.LowStockAmount, AddedBy: this.state.AddedBy, DateAdded: this.state.DateAdded, ModifiedBy: this.state.ModifiedBy, DateModified: this.state.DateModified, Status: this.state.Status, }\r\n var body = bulk;\r\n //console.log(data)\r\n try {\r\n const response = await fetch('api/products/bulkupload', {\r\n method: 'POST',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(body),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Products', content: 'The products was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n this.setState({ loading: false });\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Products', content: 'There was an error saving the products!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/products/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Products', content: 'The products was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Products', content: 'There was an error deleting the products!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\nimport { Button, Modal, ModalFooter, ModalHeader, ModalBody, Label, Input, Row, Col } from 'reactstrap';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, GridComponent, Sort, Search, ExcelExport, Edit, Toolbar, ToolbarItems } from '@syncfusion/ej2-react-grids';\r\nimport { DatePickerComponent, TimePickerComponent } from '@syncfusion/ej2-react-calendars';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { TextBoxComponent, NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { HtmlEditor, Image, Inject, Count, Link, Toolbar as rteToolbar, QuickToolbar, RichTextEditorComponent } from '@syncfusion/ej2-react-richtexteditor';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { Context } from '../../helpers/Context';\r\n\r\nexport class ProductSubCategories extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n CategoryId: 0,\r\n Title: '',\r\n Slug: '',\r\n DateAdded: new Date(),\r\n AddedBy: 0,\r\n Status: 0,\r\n CategoryList: [],\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Product Sub Categories Administration\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n console.log(id)\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id === id });\r\n this.setState({ Id: data.id, CategoryId: data.categoryId, Title: data.title, Slug: data.slug, DateAdded: data.dateAdded, AddedBy: data.addedBy, Status: data.status, });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n CategoryId: 0,\r\n Title: '',\r\n Slug: '',\r\n DateAdded: new Date(),\r\n AddedBy: 0,\r\n Status: 0,\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n valid &= fieldRequired(this.state.Slug, 'tbSlugError', '* required');\r\n valid &= fieldRequired(this.state.Title, 'tbTitleError', '* required');\r\n console.log(event, this.state.editId)\r\n if (valid) {\r\n const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n this.state.AddedBy = data.addedBy;\r\n this.state.DateAdded = data.dateAdded;\r\n this.state.Id = data.id;\r\n this.state.Status = data.status;\r\n }\r\n else {\r\n this.state.Status = 1;\r\n }\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n default:\r\n this.editItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n return (\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n const { handleNavigate } = this.context;\r\n let contents = this.state.loading ?

      Loading...

      : ProductSubCategories.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n\r\n return (\r\n <>\r\n
      \r\n \r\n \r\n

      Product Sub Categories Administration

      \r\n \r\n \r\n \r\n \r\n \r\n
      \r\n \r\n \r\n {contents}\r\n \r\n \r\n
      \r\n\r\n \r\n }>Edit Product Sub Categories\r\n \r\n
      \r\n
      \r\n this.setState({ Title: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ Slug: e.target.value })} />
      \r\n
      \r\n
      \r\n
      \r\n this.setState({ CategoryId: e.itemData.id })} />\r\n
      \r\n
      \r\n {/*
      */}\r\n {/* */}\r\n {/* this.setState({ CategoryId: e.target.value })} />*/}\r\n {/*
      */}\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/productsubcategories', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n try {\r\n const response = await fetch('api/productcategories', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ CategoryList: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Id: this.state.Id, CategoryId: this.state.CategoryId, Title: this.state.Title, Slug: this.state.Slug, DateAdded: this.state.DateAdded, AddedBy: this.state.AddedBy, Status: this.state.Status, }\r\n console.log(dataId)\r\n try {\r\n const response = await fetch('api/productsubcategories', {\r\n method: dataId == 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Product Sub Categories', content: 'The product sub categories was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Product Sub Categories', content: 'There was an error saving the product sub categories!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/productsubcategories/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Product Sub Categories', content: 'The product sub categories was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Product Sub Categories', content: 'There was an error deleting the product sub categories!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, Edit, GridComponent, Sort, Toolbar } from '@syncfusion/ej2-react-grids';\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { Inject } from '@syncfusion/ej2-react-richtexteditor';\r\nimport React, { Component } from 'react';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { Button, Col, Modal, ModalBody, ModalFooter, ModalHeader, Row } from 'reactstrap';\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\n\r\nexport class ProductType extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n this.fullToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', 'StrikeThrough',\r\n 'FontName', 'FontSize', 'FontColor', 'BackgroundColor',\r\n 'LowerCase', 'UpperCase', '|', 'Formats', 'Alignments', 'OrderedList', 'UnorderedList',\r\n 'Outdent', 'Indent', '|', 'CreateLink', 'Image', '|', 'ClearFormat',\r\n 'SourceCode', 'FullScreen', '|', 'Undo', 'Redo'\r\n ],\r\n type: 'Expand'\r\n };\r\n\r\n this.simpleToolbarSettings = {\r\n items: ['Bold', 'Italic', 'Underline', '|', 'ClearFormat', 'Undo', 'Redo', '|', 'SourceCode'],\r\n type: 'Expand'\r\n };\r\n\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n Slug: '',\r\n Title: '',\r\n TypeImages: '',\r\n DisplayOrder: 0,\r\n IsRestricted: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Product Type Administration\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id == id });\r\n this.setState({ Id: data.id, Slug: data.slug, Title: data.title, TypeImages: data.typeImages, DisplayOrder: data.displayOrder, IsRestricted: data.isRestricted, AddedBy: data.addedBy, DateAdded: data.dateAdded, ModifiedBy: data.modifiedBy, DateModified: data.dateModified, Status: data.status, });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n Slug: '',\r\n Title: '',\r\n TypeImages: '',\r\n DisplayOrder: 0,\r\n IsRestricted: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n //valid &= fieldRequired(this.state.Slug, 'tbSlugError', '* required');\r\n valid &= fieldRequired(this.state.Title, 'tbTitleError', '* required');\r\n //valid &= fieldRequired(this.state.DisplayOrder, 'tbDisplayOrderError', '* required');\r\n\r\n if (valid) {\r\n const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n this.state.AddedBy = data.addedBy;\r\n this.state.DateAdded = data.dateAdded;\r\n this.state.Id = data.id;\r\n this.state.Status = data.status;\r\n }\r\n else {\r\n this.state.Status = 1;\r\n }\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n return (\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n let contents = this.state.loading ?

      Loading...

      : ProductType.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n\r\n return (\r\n <>\r\n
      \r\n \r\n \r\n

      Product Type Administration

      \r\n \r\n \r\n \r\n \r\n
      \r\n \r\n \r\n {contents}\r\n \r\n \r\n
      \r\n\r\n \r\n }>Edit Product Type\r\n \r\n {/*
      */}\r\n {/* this.setState({ Slug: e.target.value })} />
      */}\r\n {/*
      */}\r\n\r\n
      \r\n this.setState({ Title: e.target.value })} />
      \r\n
      \r\n\r\n {/*
      */}\r\n {/* */}\r\n {/* this.setState({ TypeImages: e.value })} >*/}\r\n {/* */}\r\n {/*
      */}\r\n {/*
      */}\r\n\r\n {/*
      */}\r\n {/* this.setState({ DisplayOrder: e.target.value })} />
      */}\r\n {/*
      */}\r\n\r\n {/*
      */}\r\n {/* this.setState({ IsRestricted: e.target.value })} />
      */}\r\n {/*
      */}\r\n
      \r\n this.setState({ IsRestricted: e.target.value })} />  
      \r\n
      \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/producttype', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Title: this.state.Title, IsRestricted: this.state.IsRestricted }\r\n\r\n try {\r\n const response = await fetch('api/producttype', {\r\n method: dataId == 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Product Type', content: 'The product type was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Product Type', content: 'There was an error saving the product type!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/producttype/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Product Type', content: 'The product type was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Product Type', content: 'There was an error deleting the product type!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\nimport { Button, Modal, ModalFooter, ModalHeader, ModalBody, Label, Input, Row, Col } from 'reactstrap';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, GridComponent, Sort, Search, ExcelExport, Edit, Toolbar, ToolbarItems } from '@syncfusion/ej2-react-grids';\r\nimport { DatePickerComponent, TimePickerComponent } from '@syncfusion/ej2-react-calendars';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { TextBoxComponent, NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { HtmlEditor, Image, Inject, Count, Link, Toolbar as rteToolbar, QuickToolbar, RichTextEditorComponent } from '@syncfusion/ej2-react-richtexteditor';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { Context } from '../../helpers/Context';\r\n\r\nexport class PromoCodes extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n const promoTypeData = [\r\n { value: 0, text: '- Select -' },\r\n { value: 1, text: 'Amount' },\r\n { value: 2, text: 'Percentage' }\r\n ];\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n Description: '',\r\n Code: '',\r\n MaxUses: 0,\r\n NumUses: 0,\r\n StartDate: new Date(),\r\n EndDate: new Date(),\r\n Type: 0,\r\n Amount: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n TypeData: promoTypeData,\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Promo Codes :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id == id });\r\n this.setState({ Id: data.id, Description: data.description, Code: data.code, MaxUses: data.maxUses, NumUses: data.numUses, StartDate: data.startDate, EndDate: data.endDate, Type: data.type, Amount: data.amount, AddedBy: data.addedBy, DateAdded: data.dateAdded, ModifiedBy: data.modifiedBy, DateModified: data.dateModified, Status: data.status, });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n Description: '',\r\n Code: '',\r\n MaxUses: 0,\r\n NumUses: 0,\r\n StartDate: new Date(),\r\n EndDate: new Date(),\r\n Type: 0,\r\n Amount: 0,\r\n AddedBy: 0,\r\n DateAdded: new Date(),\r\n ModifiedBy: 0,\r\n DateModified: new Date(),\r\n Status: 0,\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n valid &= fieldRequired(this.state.Description, 'tbDescriptionError', '* required');\r\n valid &= fieldRequired(this.state.Code, 'tbCodeError', '* required');\r\n valid &= fieldRequired(this.state.MaxUses, 'tbMaxUsesError', '* required');\r\n valid &= fieldRequired(this.state.Type, 'ddTypeError', '* required');\r\n\r\n if (valid) {\r\n const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n this.state.AddedBy = data.addedBy;\r\n this.state.DateAdded = data.dateAdded;\r\n this.state.Id = data.id;\r\n this.state.Status = data.status;\r\n }\r\n else {\r\n this.state.Status = 1;\r\n }\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n return (\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n let contents = this.state.loading ?

      Loading...

      : PromoCodes.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n const { handleNavigate } = this.context;\r\n return (\r\n <>\r\n
      \r\n \r\n \r\n

      Promo Codes

      \r\n \r\n \r\n \r\n \r\n \r\n
      \r\n \r\n \r\n {contents}\r\n \r\n \r\n
      \r\n\r\n \r\n }>Edit Promo Codes\r\n \r\n
      \r\n this.setState({ Description: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n
      \r\n this.setState({ Code: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ MaxUses: e.target.value })} />
      \r\n
      \r\n\r\n {/*
      */}\r\n {/* this.setState({ NumUses: e.target.value })} />
      */}\r\n {/*
      */}\r\n
      \r\n\r\n
      \r\n
      \r\n this.setState({ StartDate: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ EndDate: e.target.value })} />
      \r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n this.setState({ Type: e.itemData.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ Amount: e.target.value })} />
      \r\n
      \r\n
      \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/promocodes', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Id: this.state.Id, Description: this.state.Description, Code: this.state.Code, MaxUses: this.state.MaxUses, NumUses: this.state.NumUses, StartDate: this.state.StartDate, EndDate: this.state.EndDate, Type: this.state.Type, Amount: this.state.Amount, AddedBy: this.state.AddedBy, DateAdded: this.state.DateAdded, ModifiedBy: this.state.ModifiedBy, DateModified: this.state.DateModified, Status: this.state.Status, }\r\n\r\n try {\r\n const response = await fetch('api/promocodes', {\r\n method: dataId == 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Promo Codes', content: 'The promo codes was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Promo Codes', content: 'There was an error saving the promo codes!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/promocodes/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Promo Codes', content: 'The promo codes was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Promo Codes', content: 'There was an error deleting the promo codes!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import React from 'react';\r\nimport { useNavigate } from \"react-router-dom\";\r\n\r\nconst PromotionsCard = ({ title, description, imageUrl, buttonText, code, test }) => {\r\n const navigate = useNavigate();\r\n return (\r\n
      \r\n {title}\r\n
      \r\n

      {title}

      \r\n CODE: {code}\r\n

      {description}

      \r\n \r\n
      \r\n
      \r\n );\r\n};\r\n\r\nexport default PromotionsCard;\r\n","import React, { Component } from 'react';\r\nimport { Button, Modal, ModalFooter, ModalHeader, ModalBody, Label, Input, Row, Col } from 'reactstrap';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, GridComponent, Sort, Search, ExcelExport, Edit, Toolbar, ToolbarItems } from '@syncfusion/ej2-react-grids';\r\nimport { DatePickerComponent, TimePickerComponent } from '@syncfusion/ej2-react-calendars';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { TextBoxComponent, NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { HtmlEditor, Image, Inject, Count, Link, Toolbar as rteToolbar, QuickToolbar, RichTextEditorComponent } from '@syncfusion/ej2-react-richtexteditor';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { getAuthToken } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { BannerThumbnails } from '../BannerThumbnails';\r\nimport { Context } from '../../helpers/Context';\r\nimport PromotionsCard from '../PromotionsCard';\r\nimport { getCurrentDomain } from '../../helpers/Lookup';\r\n\r\nexport class Promotions extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Preview', buttonOption: { cssClass: 'e-flat', iconCss: 'e-eye e-icons' } },\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, previewModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n PromoCodeId: 0,\r\n PromoImg: '',\r\n Title: '',\r\n Description: '',\r\n PromoStartDate: new Date(),\r\n PromoEndDate: new Date(),\r\n DateAdded: new Date(),\r\n AddedBy: 0,\r\n Status: 0,\r\n PrevId: 0,\r\n PromoCodeList: [],\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.previewToggle = this.previewToggle.bind(this);\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n previewToggle() {\r\n this.setState({\r\n previewModal: !this.state.previewModal,\r\n PrevId: 0,\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Promotions Administration\";\r\n this.loadData();\r\n }\r\n\r\n editItem = (id) => {\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id == id });\r\n this.setState({ Id: data.id, PromoCodeId: data.promoCodeId, PromoImg: data.promoImg, Title: data.title, Description: data.description, PromoStartDate: data.promoStartDate, PromoEndDate: data.promoEndDate, DateAdded: data.dateAdded, AddedBy: data.addedBy, Status: data.status, });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n PromoCodeId: 0,\r\n PromoImg: '',\r\n Title: '',\r\n Description: '',\r\n PromoStartDate: new Date(),\r\n PromoEndDate: new Date(),\r\n DateAdded: new Date(),\r\n AddedBy: 0,\r\n Status: 0,\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n\r\n if (valid) {\r\n const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n this.state.AddedBy = data.addedBy;\r\n this.state.DateAdded = data.dateAdded;\r\n this.state.Id = data.id;\r\n this.state.Status = data.status;\r\n }\r\n else {\r\n this.state.Status = 1;\r\n }\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n previewItem = (id) => {\r\n let promoCodeId = 0;\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id == id });\r\n promoCodeId = data.promoCodeId;\r\n this.setState({ Id: data.id, PromoCodeId: data.promoCodeId, PromoImg: data.promoImg, Title: data.title, Description: data.description, PromoStartDate: data.promoStartDate, PromoEndDate: data.promoEndDate, DateAdded: data.dateAdded, AddedBy: data.addedBy, Status: data.status, });\r\n }\r\n\r\n this.setState({ PrevId: promoCodeId, previewModal: true });\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Preview':\r\n this.previewItem(args.rowData.id);\r\n break;\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n return (\r\n this.grid = g} commandClick={commandClick} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n handleUpdatedBannerUrls = (updatedUrls) => {\r\n this.setState({ PromoImg: updatedUrls });\r\n }\r\n\r\n render() {\r\n const { handleNavigate } = this.context;\r\n let contents = this.state.loading ?

      Loading...

      : Promotions.renderDataTable(this.state.editData, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n let banners = this.state.PromoImg;\r\n if (this.state.PromoImg.includes(\"\\\\\\\\\")) {\r\n banners = JSON.parse(this.state.PromoImg)\r\n }\r\n console.log(this.state)\r\n return (\r\n <>\r\n
      \r\n \r\n \r\n

      Promotions Administration

      \r\n \r\n \r\n \r\n \r\n \r\n
      \r\n \r\n \r\n {contents}\r\n \r\n \r\n
      \r\n\r\n \r\n }>Edit Promotions\r\n \r\n\r\n
      \r\n
      \r\n this.setState({ Title: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ PromoCodeId: e.itemData.id })} />\r\n
      \r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n this.setState({ PromoStartDate: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ PromoEndDate: e.target.value })} />
      \r\n
      \r\n
      \r\n\r\n
      \r\n this.setState({ Description: e.target.value })} />
      \r\n
      \r\n {/*
      */}\r\n {/* this.setState({ PromoImg: e.target.value })} />
      */}\r\n {/*
      */}\r\n
      \r\n \r\n \r\n
      \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {\r\n }>Product Preview\r\n \r\n item.id === this.state.PrevId)?.code}\r\n buttonText=\"Shop Now\"\r\n test={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 async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/promotions', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ editData: data});\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n try {\r\n const response = await fetch('api/promocodes', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n this.setState({ PromoCodeList: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, PromoCodeId: this.state.PromoCodeId, PromoImg: Array.isArray(this.state.PromoImg) ? this.state.PromoImg.join(\", \") : this.state.PromoImg, Title: this.state.Title, Description: this.state.Description, PromoStartDate: this.state.PromoStartDate, PromoEndDate: this.state.PromoEndDate, DateAdded: this.state.DateAdded, AddedBy: this.state.AddedBy, Status: this.state.Status, }\r\n\r\n try {\r\n const response = await fetch('api/promotions', {\r\n method: dataId == 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Promotions', content: 'The promotions was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Promotions', content: 'There was an error saving the promotions!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/promotions/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Promotions', content: 'The promotions was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Promotions', content: 'There was an error deleting the promotions!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { ColumnDirective, ColumnsDirective, CommandColumn, Edit, GridComponent, Sort, Toolbar, InfiniteScroll } from '@syncfusion/ej2-react-grids';\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { Inject } from '@syncfusion/ej2-react-richtexteditor';\r\nimport React, { Component } from 'react';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { Button, Col, Modal, ModalBody, ModalFooter, ModalHeader, Row } from 'reactstrap';\r\nimport { getAuthToken, getUserDetails } from '../../helpers/authentication';\r\nimport { fieldRequired } from '../../helpers/validation';\r\nimport { Context } from '../../helpers/Context';\r\n\r\nexport class UserData extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n const commandTemplate = [\r\n { type: 'Edit', buttonOption: { cssClass: 'e-flat', iconCss: 'e-edit e-icons' } },\r\n { type: 'Delete', buttonOption: { cssClass: 'e-flat', iconCss: 'e-delete e-icons' } }\r\n ];\r\n\r\n const userTypeData = [\r\n { value: 0, text: '- Select -' },\r\n { value: 1, text: 'Customer' },\r\n { value: 10, text: 'Administrator' }\r\n ];\r\n\r\n this.state = {\r\n editData: [], loading: true, editModal: false, gridCommands: commandTemplate, gridToolbar: ['Search'],\r\n Id: 0,\r\n UserId: '',\r\n fUserType: 0,\r\n UserType: 0,\r\n FirstName: '',\r\n LastName: '',\r\n EmailAddress: '',\r\n EmailConfirmed: false,\r\n CurrentPassword: '',\r\n LastPassword: '',\r\n Mobile: '',\r\n Communication: 0,\r\n OldId: 0,\r\n Credit: 0,\r\n Status: 0,\r\n DateAdded: new Date(),\r\n DateModified: new Date(),\r\n AddedBy: getUserDetails().id,\r\n DateVerified: new Date(),\r\n LastLogin: new Date(),\r\n FailedLogins: 0,\r\n LockedOut: false,\r\n LockOutDate: new Date(),\r\n ResetPassword: false,\r\n LastIP: '',\r\n LoginCookie: '',\r\n importModal: false,\r\n excelData: [],\r\n userTypes: userTypeData,\r\n\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.importUsersModal = this.importUsersModal.bind(this);\r\n this.saveBulk = this.saveBulk.bind(this);\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n editModal: !this.state.editModal\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"User Data Administration\";\r\n this.loadData();\r\n }\r\n\r\n importUsersModal = () => {\r\n this.setState({\r\n importModal: !this.state.importModal,\r\n excelData: []\r\n })\r\n }\r\n\r\n uploadExcel = async (e) => {\r\n // const file = e.target.files[0];\r\n // if (file instanceof Blob) {\r\n // const reader = new FileReader();\r\n // reader.readAsBinaryString(e.target.files[0])\r\n\r\n // reader.onload = (e) => {\r\n // const contents = e.target.result;\r\n // const wb = XLSX.read(contents, { type: \"binary\" });\r\n // const sheetName = wb.SheetNames[0];\r\n // const sheet = wb.Sheets[sheetName];\r\n // const newData = XLSX.utils.sheet_to_json(sheet);\r\n // console.log(newData.map((idx, i) => {\r\n\r\n // let userObj = {\r\n // EmailAddress: i.user_email,\r\n // FirstName: i.first_name,\r\n // LastName: i.last_name,\r\n // UserType: i.role === \"customer\" ? 1 : 10\r\n // };\r\n\r\n // if (i.billing_phone)\r\n // userObj.Mobile = i.billing_phone;\r\n\r\n // var UserAddress = [];\r\n // // if (i.shipping_address_1) {\r\n\r\n // // var address = {\r\n // // Address: i.shipping_address_2 + \", \" + i.shipping_address_1,\r\n // // City: i.shipping_city,\r\n // // Province: i.shipping_state,\r\n // // Country: i.shipping_country,\r\n // // PostalCode: i.shipping_postcode\r\n // // }\r\n // // UserAddress.push({\r\n\r\n // // })\r\n\r\n // return userObj;\r\n // }));\r\n // this.setState({ excelData: newData })\r\n // // const data = reader.result;\r\n // }\r\n\r\n // } else {\r\n // console.error('Invalid file type');\r\n // }\r\n }\r\n\r\n editItem = (id) => {\r\n if (id > 0) {\r\n const data = this.state.editData.find((item) => { return item.id == id });\r\n this.setState({ Id: data.id, UserId: data.userId, UserType: data.userType, FirstName: data.firstName, LastName: data.lastName, EmailAddress: data.emailAddress, EmailConfirmed: data.emailConfirmed, CurrentPassword: data.currentPassword, LastPassword: data.lastPassword, Mobile: data.mobile, Communication: data.communication, Credit: data.credit, Status: data.status, DateAdded: data.dateAdded, DateModified: data.dateModified, AddedBy: data.addedBy, DateVerified: data.dateVerified, LastLogin: data.lastLogin, FailedLogins: data.failedLogins, LockedOut: data.lockedOut, LockOutDate: data.lockOutDate, ResetPassword: data.resetPassword, LastIP: data.lastIP, LoginCookie: data.loginCookie, OldId: data.oldId });\r\n }\r\n else {\r\n //clear state fields\r\n this.setState({\r\n Id: 0,\r\n UserId: '',\r\n UserType: 0,\r\n FirstName: '',\r\n LastName: '',\r\n EmailAddress: '',\r\n EmailConfirmed: false,\r\n CurrentPassword: '',\r\n LastPassword: '',\r\n Mobile: '',\r\n Communication: 0,\r\n OldId: 0,\r\n Credit: 0,\r\n Status: 0,\r\n DateAdded: new Date(),\r\n DateModified: new Date(),\r\n AddedBy: getUserDetails().id,\r\n DateVerified: new Date(),\r\n LastLogin: new Date(),\r\n FailedLogins: 0,\r\n LockedOut: false,\r\n LockOutDate: new Date(),\r\n ResetPassword: false,\r\n LastIP: '',\r\n LoginCookie: '',\r\n });\r\n }\r\n this.setState({ editId: id, editModal: true });\r\n };\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n var valid = true;\r\n //valid &= fieldRequired(this.state.UserId, 'tbUserIdError', '* required');\r\n valid &= fieldRequired(this.state.FirstName, 'tbFirstNameError', '* required');\r\n valid &= fieldRequired(this.state.LastName, 'tbLastNameError', '* required');\r\n valid &= fieldRequired(this.state.EmailAddress, 'tbEmailAddressError', '* required');\r\n\r\n if (valid) {\r\n const data = this.state.editData.find((item) => { return item.id == this.state.editId });\r\n if (this.state.editId > 0) { //do not overwrite the following fie when updating\r\n this.state.AddedBy = data.addedBy;\r\n this.state.DateAdded = data.dateAdded;\r\n this.state.Id = data.id;\r\n this.state.Status = data.status;\r\n }\r\n else {\r\n this.state.Status = 1;\r\n }\r\n this.saveData(this.state.editId);\r\n this.setState({ editModal: false });\r\n }\r\n }\r\n\r\n deleteItem = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n this.deleteData(id);\r\n }\r\n }\r\n\r\n onGridCommand = (args) => {\r\n switch (args.commandColumn.type) {\r\n case 'Edit':\r\n this.editItem(args.rowData.id);\r\n break;\r\n case 'Delete':\r\n this.deleteItem(args.rowData.id);\r\n break;\r\n }\r\n }\r\n\r\n static renderDataTable(data, gridCommands, gridToolbar, commandClick) {\r\n return (\r\n this.grid = g} commandClick={commandClick} enableInfiniteScrolling={true} height={500} allowPaging={true} allowSorting={true} toolbar={gridToolbar} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n let data = this.state.editData;\r\n if (this.state.fUserType !== 0) {\r\n data = data?.filter(item => item.userType === this.state.fUserType || (!this.state.fUserType && !item.userType));\r\n }\r\n let contents = this.state.loading ?

      Loading...

      : UserData.renderDataTable(data, this.state.gridCommands, this.state.gridToolbar, this.onGridCommand);\r\n const { handleNavigate } = this.context;\r\n console.log(this.state)\r\n return (\r\n <>\r\n
      \r\n \r\n \r\n

      User Data Administration

      \r\n \r\n \r\n \r\n \r\n \r\n \r\n
      \r\n \r\n \r\n
      \r\n Filters\r\n
      \r\n {
      \r\n this.setState({ fUserType: e.itemData ? e.itemData.value : 0 })} />\r\n
      }\r\n
      \r\n\r\n
      \r\n {contents}\r\n \r\n
      \r\n
      \r\n\r\n \r\n }>Edit User Data\r\n \r\n {/*
      */}\r\n {/* this.setState({ UserId: e.target.value })} />
      */}\r\n {/*
      */}\r\n\r\n
      \r\n
      \r\n this.setState({ FirstName: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ LastName: e.target.value })} />
      \r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n this.setState({ EmailAddress: e.target.value })} />
      \r\n
      \r\n\r\n
      \r\n this.setState({ UserType: e.itemData.value })} />\r\n {/* this.setState({ UserType: e.target.value })} />
      */}\r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n this.setState({ CurrentPassword: e.target.value })} />
      \r\n
      \r\n\r\n {/*
      */}\r\n {/* this.setState({ LastPassword: e.target.value })} />
      */}\r\n {/*
      */}\r\n\r\n
      \r\n this.setState({ Mobile: e.target.value })} />
      \r\n
      \r\n
      \r\n\r\n {/*
      */}\r\n {/* this.setState({ Communication: e.target.value })} />
      */}\r\n {/*
      */}\r\n\r\n {/*
      */}\r\n {/* this.setState({ Credit: e.target.value })} />
      */}\r\n {/*
      */}\r\n\r\n {/*
      */}\r\n {/* this.setState({ DateVerified: e.target.value })} />
      */}\r\n {/*
      */}\r\n\r\n {/*
      */}\r\n {/* this.setState({ LastLogin: e.target.value })} />
      */}\r\n {/*
      */}\r\n\r\n {/*
      */}\r\n {/* this.setState({ FailedLogins: e.target.value })} />
      */}\r\n {/*
      */}\r\n
      \r\n
      \r\n this.setState({ EmailConfirmed: e.target.value })} />  
      \r\n
      \r\n\r\n
      \r\n this.setState({ LockedOut: e.target.value })} />  
      \r\n
      \r\n\r\n {/*
      */}\r\n {/* this.setState({ LockOutDate: e.target.value })} />
      */}\r\n {/*
      */}\r\n\r\n
      \r\n this.setState({ ResetPassword: e.target.value })} />  
      \r\n
      \r\n\r\n {/*
      */}\r\n {/* this.setState({ LastIP: e.target.value })} />
      */}\r\n {/*
      */}\r\n\r\n {/*
      */}\r\n {/* this.setState({ LoginCookie: e.target.value })} />
      */}\r\n {/*
      */}\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n Import Users\r\n \r\n \r\n \r\n this.uploadExcel(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 \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/userdata', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n let data = await response.json();\r\n console.log(data)\r\n this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData(dataId) {\r\n\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Id: this.state.Id, UserId: this.state.UserId, UserType: this.state.UserType, FirstName: this.state.FirstName, LastName: this.state.LastName, EmailAddress: this.state.EmailAddress, EmailConfirmed: this.state.EmailConfirmed, CurrentPassword: this.state.CurrentPassword, LastPassword: this.state.LastPassword, Mobile: this.state.Mobile, Communication: this.state.Communication, Credit: this.state.Credit, Status: this.state.Status, DateAdded: this.state.DateAdded, DateModified: this.state.DateModified, AddedBy: this.state.AddedBy, DateVerified: this.state.DateVerified, LastLogin: this.state.LastLogin, FailedLogins: this.state.FailedLogins, LockedOut: this.state.LockedOut, LockOutDate: this.state.LockOutDate, ResetPassword: this.state.ResetPassword, LastIP: this.state.LastIP, LoginCookie: this.state.LoginCookie, OldId: this.state.OldId }\r\n //console.log(data);\r\n try {\r\n const response = await fetch('api/userdata', {\r\n method: dataId == 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'User Data', content: 'The user data was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'User Data', content: 'There was an error saving the user data!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n async saveBulk() {\r\n // console.log(this.state.excelData.map(item => ({\r\n // ...item\r\n // })))\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/userdata/importusers', {\r\n method: 'POST',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n console.log(\"lolo:\", data);\r\n // this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async deleteData(dataId) {\r\n this.setState({ loading: true });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/userdata/' + dataId, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'User Data', content: 'The user data was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'User Data', content: 'There was an error deleting the user data!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import React, { useContext, useEffect } from \"react\";\r\nimport { Link, useNavigate } from \"react-router-dom\";\r\nimport { Context } from \"../helpers/Context\";\r\nimport { getCurrentDomain } from \"../helpers/Lookup\";\r\nimport FixedMessenger from \"./FixedMessenger\";\r\n\r\nconst BrandPage = () => {\r\n const navigate = useNavigate();\r\n const { getBrands, brands } = useContext(Context);\r\n const goToBrand = (data) => {\r\n navigate(data);\r\n };\r\n useEffect(() => {\r\n document.title = \"Brands :: TriggerCraft\";\r\n getBrands();\r\n }, [])\r\n //console.log(brands)\r\n return (\r\n
      \r\n \r\n

      Brands

      \r\n
      \r\n
      \r\n {brands.map((brand) => {\r\n return (\r\n
      goToBrand(`/brands/products/${brand.slug}`)} key={brand.id}>\r\n {brand.title}\r\n
      {brand.title}
      \r\n
      \r\n )\r\n })}\r\n
      \r\n \r\n
      \r\n );\r\n};\r\n\r\nexport default BrandPage;","import React, { useContext, useEffect } from \"react\";\r\nimport { useNavigate, Link } from \"react-router-dom\";\r\nimport { Context } from \"../helpers/Context\";\r\nimport { getCurrentDomain } from \"../helpers/Lookup\";\r\nimport FixedMessenger from \"./FixedMessenger\";\r\n\r\nconst Categories = () => {\r\n const navigate = useNavigate();\r\n const { getCategories, categories, getSubcategories, subcategories, setSelectedBrands } = useContext(Context);\r\n const goToCategory = (data) => {\r\n navigate(data);\r\n };\r\n useEffect(() => {\r\n document.title = \"Categories :: TriggerCraft\";\r\n getCategories();\r\n getSubcategories();\r\n }, [])\r\n const categoriesWithSubcategories = categories.filter((category) =>\r\n subcategories.some((sub) => sub.categoryId === category.id)\r\n );\r\n //console.log(categories, subcategories, categoriesWithSubcategories)\r\n return (\r\n
      \r\n \r\n

      Categories

      \r\n
      \r\n
      \r\n {categoriesWithSubcategories.map((category) => (\r\n \r\n
      { goToCategory(`/products/category/${category.title.trim().replace(\" \", \"_\").toLowerCase()}`); localStorage.removeItem('selectedBrands1'); setSelectedBrands([]); }}>\r\n \r\n
      {category.title}
      \r\n
      \r\n
      \r\n {subcategories\r\n .filter((sub) => sub.categoryId === category.id)\r\n .map((sub) => (\r\n { goToCategory(`/products/category/${sub.slug}`); localStorage.removeItem('selectedBrands1'); setSelectedBrands([]); }}\r\n key={sub.id}\r\n >\r\n {sub.title}\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 Categories;","import React, { useContext } from 'react';\r\nimport { Modal, ModalHeader } from 'reactstrap';\r\nimport { getAuthToken } from '../helpers/authentication';\r\nimport { Context } from '../helpers/Context';\r\n\r\nconst QuickViewModal = ({ isOpen, toggle, productData, picture, color }) => {\r\n const { handleAddToCart, handleAddToWishlist, handleRemoveFromWishlist, isItemInWishlist } = useContext(Context);\r\n //console.log(color)\r\n return (\r\n \r\n Quick product view\r\n
      \r\n
      \r\n {productData.product.title}\r\n
      \r\n
      \r\n

      {productData.product.title}

      \r\n

      \r\n

      {new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', }).format(productData.currPrice)}  {(productData.prevPrice && productData && productData.product.sPrice && productData.product.dateSPriceEnds && new Date(productData.product.dateSPriceEnds) >= new Date()) || (productData && productData.product.sPrice && productData.product.ongoing) ? R {productData.prevPrice}.00 : \"\"}

      \r\n
      \r\n {productData.product.stock > 0 ?\r\n \r\n :\r\n \r\n }\r\n {isItemInWishlist(productData.product.id) ? handleRemoveFromWishlist(productData.product.id)} className=\"fa-solid fa-heart text-danger ms-3 fs-2\" title=\"Remove From Wishlist\"> : handleAddToWishlist({ product: productData.product, productId: productData.product.id, img: productData.imageURL, price: productData.currPrice })} className=\"fa-regular fa-heart fw-light ms-3 fs-2\" title=\"Add To Wishlist\">}\r\n
      \r\n
      \r\n
      \r\n
      \r\n );\r\n};\r\n\r\nexport default QuickViewModal;","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Context } from '../helpers/Context';\r\nimport { getCurrentDomain } from '../helpers/Lookup';\r\nimport QuickViewModal from './QuickViewModal';\r\n\r\nexport class ProductCard extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n isQuickViewOpen: false,\r\n quickViewProduct: null,\r\n };\r\n }\r\n\r\n calculateSavingsPercentage(originalPrice, discountedPrice) {\r\n const savingsAmount = originalPrice - discountedPrice;\r\n const savingsPercentage = Math.abs((savingsAmount / originalPrice) * 100);\r\n return savingsPercentage.toFixed(0);\r\n };\r\n\r\n view = (productData) => {\r\n this.setState({ isQuickViewOpen: true, quickViewProduct: productData });\r\n };\r\n\r\n toggleQuickView = () => {\r\n this.setState({ isQuickViewOpen: !this.state.isQuickViewOpen });\r\n };\r\n\r\n handleShare = async (productLink) => {\r\n try {\r\n await navigator.share({\r\n title: 'Check out this product!',\r\n url: productLink,\r\n });\r\n console.log('Shared successfully');\r\n } catch (error) {\r\n console.error('Error sharing:', error);\r\n }\r\n };\r\n\r\n render() {\r\n const { product, imageURL, prevPrice, currPrice } = this.props;\r\n const { handleAddToCart, handleAddToWishlist, handleRemoveFromWishlist, isItemInWishlist } = this.context;\r\n const { quickViewProduct, isQuickViewOpen } = this.state;\r\n const productData = { ...this.props }\r\n let image = \"/assets/imgs/Trigger-Craft-Logo.png\";\r\n if (imageURL) {\r\n let images = productData.imageURL;\r\n if (productData.imageURL.includes(\"DynamicData\")) images = JSON.parse(productData.imageURL);\r\n\r\n if (Array.isArray(images)) {\r\n let pic = images[0]\r\n if (pic.includes(\"DynamicData\") && pic.includes(\"[\")) {\r\n const parsedImage = JSON.parse(pic);\r\n image = getCurrentDomain() + parsedImage[0];\r\n } else {\r\n image = getCurrentDomain() + pic;\r\n }\r\n } else if (images.includes(\"https\") && images.includes(\"[\")) {\r\n image = JSON.parse(images.split(\", \")[0])[0];\r\n } else {\r\n image = images.split(\", \")[0];\r\n }\r\n }\r\n //console.log(prevPrice)\r\n return (\r\n
      \r\n \r\n \"product\r\n \r\n {prevPrice && prevPrice > currPrice ?
      -{this.calculateSavingsPercentage(prevPrice, currPrice)}%
      : \"\"}\r\n
      \r\n {isItemInWishlist(product.id) ? handleRemoveFromWishlist(product.id)} className=\"fa-solid fa-heart text-danger fs-5\" title=\"Remove From Wishlist\"> : handleAddToWishlist({ product, productId: product.id, price: currPrice, img: imageURL })} className=\"fa-regular fa-heart fw-light fs-5\" title=\"Add To Wishlist\">}\r\n
      \r\n this.handleShare(\"/products/product-view/\" + productData.product.sku)}>\r\n
      \r\n this.view(productData)} className=\"fas fa-search fw-light fs-5\" title=\"Quick View\">\r\n
      \r\n
      \r\n {product.stock > 0 ?\r\n \r\n :\r\n \r\n }\r\n
      \r\n
      \r\n \r\n
      {product.title}
      \r\n \r\n \r\n
      \r\n
      \r\n {prevPrice && prevPrice > currPrice ? {prevPrice.toCurrencyString()} : \"\"}  {currPrice.toCurrencyString()}\r\n
      \r\n {quickViewProduct && (\r\n \r\n )}\r\n
      \r\n );\r\n }\r\n\r\n\r\n}","import React, { useContext, useEffect, useState } from 'react';\r\nimport { Link, useLocation, useParams } from 'react-router-dom';\r\nimport { Context } from '../helpers/Context';\r\nimport FixedMessenger from './FixedMessenger';\r\nimport { ProductCard } from './ProductCard';\r\nimport { getCurrentDomain } from '../helpers/Lookup';\r\nimport { getProductPrice } from \"../helpers/Global\";\r\n\r\n\r\nconst CategoryPage = () => {\r\n const [loading, setLoading] = useState(true);\r\n const [isDivVisible, setIsDivVisible] = useState(window.innerWidth >= 800);\r\n const [maxPrice, setMaxPrice] = useState(100000);\r\n //const [selectedBrands, setSelectedBrands] = useState(JSON.parse(localStorage.getItem('selectedBrands1')) || []);\r\n const [sort, setSort] = useState(null);\r\n const [showOutOfStock, setShowOutOfStock] = useState(true);\r\n const [selectedOption, setSelectedOption] = useState('lowest');\r\n const [productsPerPage] = useState(9);\r\n const location = useLocation();\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const { category } = useParams();\r\n\r\n let FilterCatName = category.replace(/_/g, \" \");\r\n const { products, brands, categories, subcategories, getProducts, getBrands, getCategories, getSubcategories, selectedBrands, setSelectedBrands } = useContext(Context);\r\n\r\n const handleBrandChange = (event) => {\r\n const productBrandId = parseInt(event.target.id);\r\n if (selectedBrands.includes(productBrandId)) {\r\n localStorage.setItem('selectedBrands1', JSON.stringify(selectedBrands.filter(id => id !== productBrandId)));\r\n setSelectedBrands(selectedBrands.filter(id => id !== productBrandId));\r\n } else {\r\n localStorage.setItem('selectedBrands1', JSON.stringify([...selectedBrands, productBrandId]));\r\n setSelectedBrands([...selectedBrands, productBrandId]);\r\n }\r\n };\r\n\r\n const handleDeselectAll = () => {\r\n setSelectedBrands([]);\r\n localStorage.removeItem('selectedBrands1');\r\n setMaxPrice(100000)\r\n };\r\n\r\n const parts = window.location.href.split(\"/\");\r\n const lastWord = parts[parts.length - 1];\r\n\r\n const indexOfLastProduct = currentPage * productsPerPage;\r\n const indexOfFirstProduct = indexOfLastProduct - productsPerPage;\r\n let filteredProducts;\r\n if (lastWord === 'products') {\r\n filteredProducts = products.filter((product) =>\r\n selectedBrands.length === 0 || selectedBrands.some((productBrandId) => product.productBrandId === productBrandId)\r\n );\r\n } else {\r\n let category = categories.find(c => c.slug === lastWord);\r\n if (category) {\r\n FilterCatName = category && category.title;\r\n let FilterSubcategories = subcategories ? subcategories.filter(c => c.categoryId === category.id).map(c => { return c.id; }) : [];\r\n filteredProducts = products?.filter((product) => {\r\n if (product.selectedCategories !== \"\" || product.selectedCategories) {\r\n const selectedCategoriesArr = JSON.parse(product.selectedCategories);\r\n if (selectedCategoriesArr || Array.isArray(selectedCategoriesArr)) {\r\n //console.log(selectedCategoriesArr);\r\n return selectedCategoriesArr?.some(id => FilterSubcategories.includes(id));\r\n } else {\r\n return false;\r\n }\r\n } else\r\n return false;\r\n });\r\n } else {\r\n\r\n category = subcategories.find(c => c.slug === lastWord);\r\n FilterCatName = category && category.title;\r\n try {\r\n filteredProducts = products.filter((product) => {\r\n if (product.selectedCategories !== \"\" || product.selectedCategories) {\r\n const selectedCategoriesArr = JSON.parse(product.selectedCategories);\r\n //console.log(product.title, selectedCategoriesArr.includes(category.id))\r\n return selectedCategoriesArr.includes(category.id);\r\n\r\n //selectedCategories\r\n //ategoryId => product.selectedCategories.includes(categoryId))\r\n } else\r\n return false;\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n }\r\n\r\n filteredProducts = filteredProducts.filter(\r\n (product) => product.price <= maxPrice || (product.sPrice && product.sPrice <= maxPrice)\r\n );\r\n\r\n if (selectedOption === 'lowest') {\r\n filteredProducts = filteredProducts.sort((a, b) => {\r\n const aPrice = a.sPrice || a.price;\r\n const bPrice = b.sPrice || b.price;\r\n return aPrice - bPrice;\r\n });\r\n } else if (selectedOption === 'highest') {\r\n filteredProducts = filteredProducts.sort((a, b) => {\r\n const aPrice = a.sPrice || a.price;\r\n const bPrice = b.sPrice || b.price;\r\n return bPrice - aPrice;\r\n });\r\n } else if (selectedOption === 'a-z') {\r\n filteredProducts = filteredProducts.sort((a, b) => a.title.localeCompare(b.title));\r\n } else if (selectedOption === 'z-a') {\r\n filteredProducts = filteredProducts.sort((a, b) => b.title.localeCompare(a.title));\r\n }\r\n\r\n if (showOutOfStock) {\r\n filteredProducts = filteredProducts.filter(item => item.stock > 0);\r\n } else if (!showOutOfStock) {\r\n filteredProducts = filteredProducts.filter(item => item);\r\n }\r\n\r\n const ProductBrandIDs = filteredProducts.map(item => { return item.productBrandId });\r\n const FilteredBrands = brands.filter(c => ProductBrandIDs.includes(c.id));\r\n\r\n filteredProducts = filteredProducts.filter((product) =>\r\n selectedBrands.length === 0 || selectedBrands.some((productBrandId) => product.productBrandId === productBrandId)\r\n );\r\n\r\n const currentProducts = filteredProducts.slice(indexOfFirstProduct, indexOfLastProduct);\r\n const handlePageChange = (pageNumber) => {\r\n setCurrentPage(pageNumber);\r\n };\r\n const totalPages = Math.ceil(filteredProducts.length / productsPerPage);\r\n const visiblePageCount = 7;\r\n\r\n const getStartPage = () => {\r\n if (currentPage <= Math.ceil(visiblePageCount / 2)) {\r\n return 1;\r\n } else if (currentPage >= totalPages - Math.floor(visiblePageCount / 2)) {\r\n return totalPages - visiblePageCount + 1;\r\n } else {\r\n return currentPage - Math.floor(visiblePageCount / 2);\r\n }\r\n };\r\n\r\n const startPage = getStartPage();\r\n\r\n const handleOptionChange = (e) => {\r\n setSelectedOption(e.target.value);\r\n };\r\n\r\n const toggleDiv = () => {\r\n setIsDivVisible(!isDivVisible);\r\n };\r\n\r\n const toggleStock = () => {\r\n setShowOutOfStock((prevShowOutOfStock) => !prevShowOutOfStock);\r\n };\r\n useEffect(() => {\r\n document.title = \"Categories :: TriggerCraft\";\r\n getBrands();\r\n getCategories();\r\n getSubcategories();\r\n getProducts().then(() => setLoading(false));\r\n\r\n const handleResize = () => {\r\n setIsDivVisible(window.innerWidth >= 768);\r\n };\r\n window.addEventListener(\"resize\", handleResize);\r\n\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, [])\r\n let selectedCategory = lastWord !== \"products\" && categories.find(c => c.slug === lastWord || subcategories.find(c => c.slug === lastWord)?.categoryId === c.id);\r\n //console.log(selectedBrands)\r\n return (\r\n <>\r\n \r\n
      \r\n \r\n {isDivVisible && (\r\n
      \r\n

      {FilterCatName}

      \r\n

      Filter

      \r\n
      \r\n \r\n
      Product Brands
      \r\n {FilteredBrands.length ? FilteredBrands.map(brand => (\r\n
      \r\n handleBrandChange(e)} />\r\n \r\n
      )) :

      No brands available

      \r\n }\r\n
      \r\n\r\n
      \r\n
      Filter By Price
      \r\n
      \r\n 0\r\n setMaxPrice(e.target.value)} />\r\n {maxPrice}\r\n
      \r\n
      \r\n
      )}\r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n All Products  \r\n
      \r\n \r\n \r\n
      \r\n   In Stock Only\r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n {loading ?   Loading... : filteredProducts.length ? currentProducts.map((product) => (\r\n
      \r\n \r\n
      \r\n )) :

      No Products Found

      }\r\n {!loading && filteredProducts.length ?
      \r\n \r\n\r\n {Array.from({ length: Math.min(visiblePageCount, totalPages) }).map((_, index) => {\r\n const pageNumber = startPage + index;\r\n return (\r\n pageNumber > 0 &&\r\n pageNumber <= totalPages && (\r\n handlePageChange(pageNumber)}\r\n disabled={currentPage === pageNumber}\r\n className={currentPage === pageNumber ? \"pagination-active ellipsis-button\" : \"ellipsis-button\"}\r\n >\r\n {pageNumber}\r\n \r\n )\r\n );\r\n })}\r\n\r\n \r\n
      : \"\"}\r\n
      \r\n
      \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CategoryPage;","import React, { useContext } from \"react\";\r\nimport { Context } from \"../helpers/Context\";\r\nimport { getCurrentDomain } from \"../helpers/Lookup\";\r\n\r\nconst CartItem = () => {\r\n const { cartItems, handleRemoveFromCart, handleCartProductQuantity } = useContext(Context);\r\n const getImage = (images) => {\r\n let image = \"/assets/imgs/Trigger-Craft-Logo.png\";\r\n if (images) {\r\n if (images.includes(\"DynamicData\")) images = JSON.parse(images);\r\n\r\n if (Array.isArray(images)) {\r\n images.map((pic) => {\r\n if (pic.includes(\"DynamicData\") && pic.includes(\"[\")) {\r\n const parsedImage = JSON.parse(pic);\r\n image = getCurrentDomain() + parsedImage[0];\r\n } else {\r\n image = getCurrentDomain() + pic;\r\n }\r\n });\r\n } else if (images.includes(\"https\") && images.includes(\"[\")) {\r\n image = JSON.parse(images.split(\", \")[0])[0];\r\n } else {\r\n image = images.split(\", \")[0];\r\n }\r\n }\r\n return image;\r\n }\r\n //console.log(\"Cart: \", cartItems)\r\n\r\n\r\n return (\r\n
      \r\n {cartItems?.filter(p => p.product).map((item) => (\r\n \r\n
      \r\n
      \r\n \"product\r\n
      \r\n
      \r\n {item.product.title}\r\n handleRemoveFromCart(item)}>\r\n \r\n
      \r\n handleCartProductQuantity(\"dec\", item)} >\r\n -\r\n \r\n {(item.quantity <= item.product.stock) ? item.quantity : item.product.stock}\r\n handleCartProductQuantity(\"inc\", item)}>\r\n +\r\n \r\n
      \r\n
      \r\n {item.quantity}\r\n x\r\n \r\n {(item.price * item.quantity).toCurrencyString()}\r\n \r\n
      \r\n
      \r\n
      \r\n ))}\r\n
      \r\n );\r\n};\r\n\r\nexport default CartItem;","import React, { useContext, useState } from \"react\";\r\nimport { useNavigate, Link } from \"react-router-dom\";\r\nimport { getAuthToken, getUserDetails } from \"../helpers/authentication\";\r\nimport { Context } from \"../helpers/Context\";\r\nimport { getCurrentDomain, GetCartData, SetCartData } from \"../helpers/Lookup\";\r\nimport CartItem from \"./CartItem\";\r\n\r\nconst CheckoutPage = () => {\r\n const [couponCode, setCouponCode] = useState('');\r\n const navigate = useNavigate();\r\n const { cartItems, cartSubTotal, cartTotal, applyCoupon, couponError, appliedCoupon, getCart } = useContext(Context);\r\n\r\n\r\n const calculateTotal = (cartSubTotal, deliveryFee, coupon) => {\r\n let total = cartSubTotal;\r\n\r\n if (coupon) {\r\n if (coupon.type === 1) {\r\n total -= coupon.amount;\r\n } else if (coupon.type === 2) {\r\n total -= (total * coupon.amount) / 100;\r\n }\r\n }\r\n\r\n return total + deliveryFee;\r\n };\r\n\r\n const saveCart = async () => {\r\n\r\n let cart = GetCartData();\r\n\r\n if (!cart.userId)\r\n cart.userId = getUserDetails().id;\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n\r\n try {\r\n const response = await fetch('/api/cart', {\r\n method: cart.id === 0 ? 'POST' : 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(cart),\r\n });\r\n if (response.ok) {\r\n const cartId = await response.json();\r\n //console.log(cartId);\r\n //load user cart\r\n await SetCartData(getCart(getUserDetails().id));\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n window.location.href = \"/login\";\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n const handleCheckoutStep = async (event) => {\r\n event.stopPropagation();\r\n if (getAuthToken()) {\r\n await saveCart();\r\n\r\n navigate(\"/order-completion\");\r\n\r\n }\r\n else\r\n alert(\"Please login or register to complete order\");\r\n }\r\n\r\n return (\r\n
      \r\n \r\n
      \r\n
      \r\n\r\n {!!cartItems?.length && (\r\n <>

      Checkout

      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n {
      \r\n
      \r\n setCouponCode(e.target.value)}\r\n />\r\n \r\n
      \r\n {couponError &&

      {couponError}

      }\r\n {appliedCoupon && appliedCoupon?.id ? (\r\n
      \r\n

      Coupon applied: {appliedCoupon.code}

      \r\n \r\n
      \r\n ) : \"\"}\r\n
      }\r\n
      \r\n
      \r\n Promo Discount: \r\n \r\n {appliedCoupon ? (\r\n appliedCoupon.type === 1\r\n ? appliedCoupon.amount.toCurrencyString()\r\n : appliedCoupon.type === 2\r\n ? `${appliedCoupon.amount} %`\r\n : (0).toCurrencyString()\r\n ) : (\r\n (0).toCurrencyString()\r\n )}\r\n \r\n
      \r\n
      \r\n Delivery Fee: \r\n \r\n {(65).toCurrencyString()}\r\n \r\n
      \r\n
      \r\n
      \r\n Subtotal:\r\n \r\n {cartSubTotal.toCurrencyString()}\r\n \r\n
      \r\n
      \r\n Total:\r\n \r\n {calculateTotal(cartSubTotal, 65, appliedCoupon).toCurrencyString()}\r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n \r\n )}\r\n
      \r\n
      \r\n );\r\n};\r\n\r\nexport default CheckoutPage;","var _excluded = [\"className\", \"cssModule\", \"type\", \"size\", \"color\", \"children\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Set a custom element for this component */\n tag: tagPropType,\n /** Change animation of spinner */\n type: PropTypes.oneOf(['border', 'grow']),\n /** Change size of spinner */\n size: PropTypes.oneOf(['sm']),\n /** Change color of spinner */\n color: PropTypes.oneOf(['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark']),\n /** Add custom class */\n className: PropTypes.string,\n /** Change existing className with a new className */\n cssModule: PropTypes.object,\n /** Pass children so this component can wrap the child elements */\n children: PropTypes.string\n};\nfunction Spinner(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$type = props.type,\n type = _props$type === void 0 ? 'border' : _props$type,\n size = props.size,\n color = props.color,\n _props$children = props.children,\n children = _props$children === void 0 ? 'Loading...' : _props$children,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, size ? \"spinner-\".concat(type, \"-\").concat(size) : false, \"spinner-\".concat(type), color ? \"text-\".concat(color) : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n role: \"status\"\n }, attributes, {\n className: classes\n }), children && /*#__PURE__*/React.createElement(\"span\", {\n className: mapToCssModules('visually-hidden', cssModule)\n }, children));\n}\nSpinner.propTypes = propTypes;\nexport default Spinner;","import React, { Component } from 'react'\r\nimport { Spinner, Toast, ToastBody, ToastHeader } from 'reactstrap';\r\n\r\nexport default class ThrobbleHelper extends Component {\r\n\r\n static parentObj = null;\r\n constructor(props) {\r\n super(props);\r\n ThrobbleHelper.parentObj = this;\r\n this.state = {\r\n throbbleMessage: \"\",\r\n showThrobble: false\r\n }\r\n }\r\n\r\n static toggleThrobble(showThrobble, throbbleMessage) {\r\n ThrobbleHelper.parentObj.setState({ showThrobble, throbbleMessage });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n","/* eslint-disable default-case */\r\nimport { ToastUtility } from \"@syncfusion/ej2-notifications\"\r\nimport ThrobbleHelper from \"./ThrobbleHelper\";\r\n\r\nexport const showToast = (type, title, content, loadMethod) => {\r\n\r\n setTimeout(() => {\r\n switch (type) {\r\n case \"success\":\r\n ToastUtility.show({\r\n title,\r\n content,\r\n cssClass: \"e-toast-success\",\r\n position: { X: \"Right\", Y: \"Top\" },\r\n timeOut: 5000,\r\n showCloseButton: true,\r\n });\r\n break;\r\n case \"error\":\r\n ToastUtility.show({\r\n title,\r\n content,\r\n cssClass: \"e-toast-danger\",\r\n position: { X: \"Right\", Y: \"Top\" },\r\n timeOut: 5000,\r\n showCloseButton: true,\r\n })\r\n break;\r\n case \"info\":\r\n ToastUtility.show({\r\n title,\r\n content,\r\n cssClass: \"e-toast-info\",\r\n position: { X: \"Right\", Y: \"Top\" },\r\n timeOut: 5000,\r\n showCloseButton: true,\r\n })\r\n break;\r\n }\r\n // ThrobbleHelper.toggleThrobble(false);\r\n }, 2500)\r\n\r\n}","var _excluded = [\"sitekey\", \"onChange\", \"theme\", \"type\", \"tabindex\", \"onExpired\", \"onErrored\", \"size\", \"stoken\", \"grecaptcha\", \"badge\", \"hl\", \"isolated\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\nvar ReCAPTCHA = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ReCAPTCHA, _React$Component);\n function ReCAPTCHA() {\n var _this;\n _this = _React$Component.call(this) || this;\n _this.handleExpired = _this.handleExpired.bind(_assertThisInitialized(_this));\n _this.handleErrored = _this.handleErrored.bind(_assertThisInitialized(_this));\n _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n _this.handleRecaptchaRef = _this.handleRecaptchaRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n var _proto = ReCAPTCHA.prototype;\n _proto.getCaptchaFunction = function getCaptchaFunction(fnName) {\n if (this.props.grecaptcha) {\n if (this.props.grecaptcha.enterprise) {\n return this.props.grecaptcha.enterprise[fnName];\n }\n return this.props.grecaptcha[fnName];\n }\n return null;\n };\n _proto.getValue = function getValue() {\n var getResponse = this.getCaptchaFunction(\"getResponse\");\n if (getResponse && this._widgetId !== undefined) {\n return getResponse(this._widgetId);\n }\n return null;\n };\n _proto.getWidgetId = function getWidgetId() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this._widgetId;\n }\n return null;\n };\n _proto.execute = function execute() {\n var execute = this.getCaptchaFunction(\"execute\");\n if (execute && this._widgetId !== undefined) {\n return execute(this._widgetId);\n } else {\n this._executeRequested = true;\n }\n };\n _proto.executeAsync = function executeAsync() {\n var _this2 = this;\n return new Promise(function (resolve, reject) {\n _this2.executionResolve = resolve;\n _this2.executionReject = reject;\n _this2.execute();\n });\n };\n _proto.reset = function reset() {\n var resetter = this.getCaptchaFunction(\"reset\");\n if (resetter && this._widgetId !== undefined) {\n resetter(this._widgetId);\n }\n };\n _proto.forceReset = function forceReset() {\n var resetter = this.getCaptchaFunction(\"reset\");\n if (resetter) {\n resetter();\n }\n };\n _proto.handleExpired = function handleExpired() {\n if (this.props.onExpired) {\n this.props.onExpired();\n } else {\n this.handleChange(null);\n }\n };\n _proto.handleErrored = function handleErrored() {\n if (this.props.onErrored) {\n this.props.onErrored();\n }\n if (this.executionReject) {\n this.executionReject();\n delete this.executionResolve;\n delete this.executionReject;\n }\n };\n _proto.handleChange = function handleChange(token) {\n if (this.props.onChange) {\n this.props.onChange(token);\n }\n if (this.executionResolve) {\n this.executionResolve(token);\n delete this.executionReject;\n delete this.executionResolve;\n }\n };\n _proto.explicitRender = function explicitRender() {\n var render = this.getCaptchaFunction(\"render\");\n if (render && this._widgetId === undefined) {\n var wrapper = document.createElement(\"div\");\n this._widgetId = render(wrapper, {\n sitekey: this.props.sitekey,\n callback: this.handleChange,\n theme: this.props.theme,\n type: this.props.type,\n tabindex: this.props.tabindex,\n \"expired-callback\": this.handleExpired,\n \"error-callback\": this.handleErrored,\n size: this.props.size,\n stoken: this.props.stoken,\n hl: this.props.hl,\n badge: this.props.badge,\n isolated: this.props.isolated\n });\n this.captcha.appendChild(wrapper);\n }\n if (this._executeRequested && this.props.grecaptcha && this._widgetId !== undefined) {\n this._executeRequested = false;\n this.execute();\n }\n };\n _proto.componentDidMount = function componentDidMount() {\n this.explicitRender();\n };\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.explicitRender();\n };\n _proto.handleRecaptchaRef = function handleRecaptchaRef(elem) {\n this.captcha = elem;\n };\n _proto.render = function render() {\n // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n /* eslint-disable no-unused-vars */\n var _this$props = this.props,\n sitekey = _this$props.sitekey,\n onChange = _this$props.onChange,\n theme = _this$props.theme,\n type = _this$props.type,\n tabindex = _this$props.tabindex,\n onExpired = _this$props.onExpired,\n onErrored = _this$props.onErrored,\n size = _this$props.size,\n stoken = _this$props.stoken,\n grecaptcha = _this$props.grecaptcha,\n badge = _this$props.badge,\n hl = _this$props.hl,\n isolated = _this$props.isolated,\n childProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\n /* eslint-enable no-unused-vars */\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, childProps, {\n ref: this.handleRecaptchaRef\n }));\n };\n return ReCAPTCHA;\n}(React.Component);\nexport { ReCAPTCHA as default };\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.propTypes = {\n sitekey: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n grecaptcha: PropTypes.object,\n theme: PropTypes.oneOf([\"dark\", \"light\"]),\n type: PropTypes.oneOf([\"image\", \"audio\"]),\n tabindex: PropTypes.number,\n onExpired: PropTypes.func,\n onErrored: PropTypes.func,\n size: PropTypes.oneOf([\"compact\", \"normal\", \"invisible\"]),\n stoken: PropTypes.string,\n hl: PropTypes.string,\n badge: PropTypes.oneOf([\"bottomright\", \"bottomleft\", \"inline\"]),\n isolated: PropTypes.bool\n};\nReCAPTCHA.defaultProps = {\n onChange: function onChange() {},\n theme: \"light\",\n type: \"image\",\n tabindex: 0,\n size: \"normal\",\n badge: \"bottomright\"\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport { Component, createElement, forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nvar SCRIPT_MAP = {}; // A counter used to generate a unique id for each component that uses the function\n\nvar idCount = 0;\nexport default function makeAsyncScript(getScriptURL, options) {\n options = options || {};\n return function wrapWithAsyncScript(WrappedComponent) {\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n\n var AsyncScriptLoader =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(AsyncScriptLoader, _Component);\n\n function AsyncScriptLoader(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.state = {};\n _this.__scriptURL = \"\";\n return _this;\n }\n\n var _proto = AsyncScriptLoader.prototype;\n\n _proto.asyncScriptLoaderGetScriptLoaderID = function asyncScriptLoaderGetScriptLoaderID() {\n if (!this.__scriptLoaderID) {\n this.__scriptLoaderID = \"async-script-loader-\" + idCount++;\n }\n\n return this.__scriptLoaderID;\n };\n\n _proto.setupScriptURL = function setupScriptURL() {\n this.__scriptURL = typeof getScriptURL === \"function\" ? getScriptURL() : getScriptURL;\n return this.__scriptURL;\n };\n\n _proto.asyncScriptLoaderHandleLoad = function asyncScriptLoaderHandleLoad(state) {\n var _this2 = this;\n\n // use reacts setState callback to fire props.asyncScriptOnLoad with new state/entry\n this.setState(state, function () {\n return _this2.props.asyncScriptOnLoad && _this2.props.asyncScriptOnLoad(_this2.state);\n });\n };\n\n _proto.asyncScriptLoaderTriggerOnScriptLoaded = function asyncScriptLoaderTriggerOnScriptLoaded() {\n var mapEntry = SCRIPT_MAP[this.__scriptURL];\n\n if (!mapEntry || !mapEntry.loaded) {\n throw new Error(\"Script is not loaded.\");\n }\n\n for (var obsKey in mapEntry.observers) {\n mapEntry.observers[obsKey](mapEntry);\n }\n\n delete window[options.callbackName];\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this3 = this;\n\n var scriptURL = this.setupScriptURL();\n var key = this.asyncScriptLoaderGetScriptLoaderID();\n var _options = options,\n globalName = _options.globalName,\n callbackName = _options.callbackName,\n scriptId = _options.scriptId; // check if global object already attached to window\n\n if (globalName && typeof window[globalName] !== \"undefined\") {\n SCRIPT_MAP[scriptURL] = {\n loaded: true,\n observers: {}\n };\n } // check if script loading already\n\n\n if (SCRIPT_MAP[scriptURL]) {\n var entry = SCRIPT_MAP[scriptURL]; // if loaded or errored then \"finish\"\n\n if (entry && (entry.loaded || entry.errored)) {\n this.asyncScriptLoaderHandleLoad(entry);\n return;\n } // if still loading then callback to observer queue\n\n\n entry.observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n return;\n }\n /*\n * hasn't started loading\n * start the \"magic\"\n * setup script to load and observers\n */\n\n\n var observers = {};\n\n observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n SCRIPT_MAP[scriptURL] = {\n loaded: false,\n observers: observers\n };\n var script = document.createElement(\"script\");\n script.src = scriptURL;\n script.async = true;\n\n for (var attribute in options.attributes) {\n script.setAttribute(attribute, options.attributes[attribute]);\n }\n\n if (scriptId) {\n script.id = scriptId;\n }\n\n var callObserverFuncAndRemoveObserver = function callObserverFuncAndRemoveObserver(func) {\n if (SCRIPT_MAP[scriptURL]) {\n var mapEntry = SCRIPT_MAP[scriptURL];\n var observersMap = mapEntry.observers;\n\n for (var obsKey in observersMap) {\n if (func(observersMap[obsKey])) {\n delete observersMap[obsKey];\n }\n }\n }\n };\n\n if (callbackName && typeof window !== \"undefined\") {\n window[callbackName] = function () {\n return _this3.asyncScriptLoaderTriggerOnScriptLoaded();\n };\n }\n\n script.onload = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.loaded = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n if (callbackName) {\n return false;\n }\n\n observer(mapEntry);\n return true;\n });\n }\n };\n\n script.onerror = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.errored = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n observer(mapEntry);\n return true;\n });\n }\n };\n\n document.body.appendChild(script);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Remove tag script\n var scriptURL = this.__scriptURL;\n\n if (options.removeOnUnmount === true) {\n var allScripts = document.getElementsByTagName(\"script\");\n\n for (var i = 0; i < allScripts.length; i += 1) {\n if (allScripts[i].src.indexOf(scriptURL) > -1) {\n if (allScripts[i].parentNode) {\n allScripts[i].parentNode.removeChild(allScripts[i]);\n }\n }\n }\n } // Clean the observer entry\n\n\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n delete mapEntry.observers[this.asyncScriptLoaderGetScriptLoaderID()];\n\n if (options.removeOnUnmount === true) {\n delete SCRIPT_MAP[scriptURL];\n }\n }\n };\n\n _proto.render = function render() {\n var globalName = options.globalName; // remove asyncScriptOnLoad from childProps\n\n var _this$props = this.props,\n asyncScriptOnLoad = _this$props.asyncScriptOnLoad,\n forwardedRef = _this$props.forwardedRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"asyncScriptOnLoad\", \"forwardedRef\"]); // eslint-disable-line no-unused-vars\n\n\n if (globalName && typeof window !== \"undefined\") {\n childProps[globalName] = typeof window[globalName] !== \"undefined\" ? window[globalName] : undefined;\n }\n\n childProps.ref = forwardedRef;\n return createElement(WrappedComponent, childProps);\n };\n\n return AsyncScriptLoader;\n }(Component); // Note the second param \"ref\" provided by React.forwardRef.\n // We can pass it along to AsyncScriptLoader as a regular prop, e.g. \"forwardedRef\"\n // And it can then be attached to the Component.\n\n\n var ForwardedComponent = forwardRef(function (props, ref) {\n return createElement(AsyncScriptLoader, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n ForwardedComponent.displayName = \"AsyncScriptLoader(\" + wrappedComponentName + \")\";\n ForwardedComponent.propTypes = {\n asyncScriptOnLoad: PropTypes.func\n };\n return hoistStatics(ForwardedComponent, WrappedComponent);\n };\n}","import ReCAPTCHA from \"./recaptcha\";\nimport makeAsyncScriptLoader from \"react-async-script\";\nvar callbackName = \"onloadcallback\";\nvar globalName = \"grecaptcha\";\nfunction getOptions() {\n return typeof window !== \"undefined\" && window.recaptchaOptions || {};\n}\nfunction getURL() {\n var dynamicOptions = getOptions();\n var hostname = dynamicOptions.useRecaptchaNet ? \"recaptcha.net\" : \"www.google.com\";\n if (dynamicOptions.enterprise) {\n return \"https://\" + hostname + \"/recaptcha/enterprise.js?onload=\" + callbackName + \"&render=explicit\";\n }\n return \"https://\" + hostname + \"/recaptcha/api.js?onload=\" + callbackName + \"&render=explicit\";\n}\nexport default makeAsyncScriptLoader(getURL, {\n callbackName: callbackName,\n globalName: globalName,\n attributes: getOptions().nonce ? {\n nonce: getOptions().nonce\n } : {}\n})(ReCAPTCHA);","import RecaptchaWrapper from \"./recaptcha-wrapper\";\nimport ReCAPTCHA from \"./recaptcha\";\nexport default RecaptchaWrapper;\nexport { ReCAPTCHA };","import React, { useEffect, useState } from 'react'\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\n\r\nexport default function GreptchaHelper(props) {\r\n const [CaptchaToken] = useState(props.CaptchaToken);\r\n const recaptchaRef = React.createRef();\r\n\r\n useEffect(() => {\r\n\r\n if (CaptchaToken === \"\")\r\n ResetCaptcha();\r\n })\r\n\r\n const ResetCaptcha = () => {\r\n console.log(recaptchaRef.current)\r\n recaptchaRef.current.reset();\r\n }\r\n\r\n const handleRecaptchaChange = (value) => {\r\n if (props.HandleChangeMethod)\r\n props.HandleChangeMethod(value);\r\n }\r\n return (\r\n
      \r\n \r\n
      \r\n )\r\n}\r\n","import React, { Component } from 'react'\r\nimport { Link } from 'react-router-dom';\r\nimport { Button, Input, Spinner } from 'reactstrap';\r\nimport { getCurrentDomain } from '../helpers/Lookup';\r\nimport { fieldRequired } from '../helpers/validation';\r\nimport { getUserDetails } from '../helpers/authentication';\r\nimport { DropDownListComponent, MultiSelectComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { showToast } from '../helpers/ToastHelper';\r\nimport ThrobbleHelper from '../helpers/ThrobbleHelper';\r\nimport GreptchaHelper from '../helpers/GreptchaHelper';\r\n\r\n\r\nexport default class ContactUs extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n PageContent: [],\r\n loading: true,\r\n ReasonList: [],\r\n ReasonId: 0,\r\n Firstname: \"\",\r\n Lastname: \"\",\r\n EmailAddress: \"\",\r\n Mobile: \"\",\r\n Message: \"\",\r\n CaptchaToken: false,\r\n submitting: false\r\n }\r\n\r\n this.renderContactPage = this.renderContactPage.bind(this);\r\n this.submitContact = this.submitContact.bind(this);\r\n this.saveContact = this.saveContact.bind(this);\r\n this.clearForm = this.clearForm.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Contact Us :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n async loadData() {\r\n try {\r\n const response = await fetch(\"api/pagecontent/LoadPageContent/contact-us\", {\r\n method: \"GET\",\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n\r\n if (response.ok) {\r\n const PageContent = await response.json();\r\n this.setState({ PageContent });\r\n } else {\r\n console.log(response.status + \":\", response.statusText);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n try {\r\n const reasonsResponse = await fetch(\"api/contactreasons/GetAllReasons\", {\r\n method: \"GET\",\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n\r\n if (reasonsResponse.ok) {\r\n const data = await reasonsResponse.json();\r\n const ReasonList = [{ id: 0, title: \"- Select Reason -\" }, ...data];\r\n this.setState({ ReasonList, loading: false })\r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n renderContactPage(content, reasons) {\r\n return (\r\n <>\r\n
      \r\n
      \r\n
      \r\n

      Contact Us

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

      Contact Information

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

      Leave us a Message

      \r\n
      \r\n
      \r\n\r\n
      \r\n \r\n this.setState({ Firstname: e.target.value }, () => fieldRequired(this.state.Firstname, \"errFirstname\", \"Required\"))} />\r\n
      \r\n
      \r\n \r\n this.setState({ Lastname: e.target.value }, () => fieldRequired(this.state.Lastname, \"errLastname\", \"Required\"))} />\r\n\r\n
      \r\n
      \r\n \r\n this.setState({ EmailAddress: e.target.value }, () => fieldRequired(this.state.EmailAddress, \"errEmail\", \"Required\"))} />\r\n\r\n
      \r\n
      \r\n \r\n this.setState({ Mobile: e.target.value }, () => fieldRequired(this.state.Mobile, \"errMobile\", \"Required\"))} />\r\n\r\n
      \r\n
      \r\n \r\n this.setState({ ReasonId: e.itemData.id }, () => fieldRequired(this.state.ReasonId, \"errReason\", \"Required\"))} />\r\n
      \r\n
      \r\n \r\n this.setState({ Message: e.target.value }, () => fieldRequired(this.state.Message, \"errMessage\", \"Required\"))} />\r\n\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n )\r\n }\r\n\r\n handleCaptchaChange(CaptchaToken) {\r\n this.setState({ CaptchaToken }, () => fieldRequired(this.state.CaptchaToken, \"errCaptcha\", \"* Required\"));\r\n }\r\n\r\n submitContact(e) {\r\n e.stopPropagation();\r\n let isValid = true;\r\n isValid &= fieldRequired(this.state.Firstname, \"errFirstname\", \"Required\");\r\n isValid &= fieldRequired(this.state.Lastname, \"errLastname\", \"Required\");\r\n isValid &= fieldRequired(this.state.EmailAddress, \"errEmail\", \"Required\");\r\n isValid &= fieldRequired(this.state.Mobile, \"errMobile\", \"Required\");\r\n isValid &= fieldRequired(this.state.Message, \"errMessage\", \"Required\");\r\n isValid &= fieldRequired(this.state.ReasonId, \"errReason\", \"Required\");\r\n\r\n if (isValid) {\r\n this.setState({ submitting: true });\r\n // ThrobbleHelper.toggleThrobble(true, \"Submitting Message\");\r\n this.saveContact();\r\n }\r\n }\r\n\r\n async saveContact() {\r\n\r\n const data = {\r\n UserId: getUserDetails()?.id,\r\n Firstname: this.state.Firstname,\r\n Surname: this.state.Lastname,\r\n ReasonId: this.state.ReasonId,\r\n Email: this.state.EmailAddress,\r\n Mobile: this.state.Mobile,\r\n IPAddress: \"\",\r\n Message: this.state.Message,\r\n DateSent: new Date()\r\n }\r\n\r\n try {\r\n const response = await fetch(\"api/contactmessages\", {\r\n method: \"POST\",\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n\r\n if (response.ok) {\r\n showToast(\"success\", \"Contact Message\", \"Your message was successfully submitted!\")\r\n this.clearForm();\r\n // ThrobbleHelper.toggleThrobble(false);\r\n\r\n } else {\r\n showToast(\"error\", \"Contact Message\", \"There was an error submitting your message. Pleas try again!\");\r\n // ThrobbleHelper.toggleThrobble(false);\r\n this.setState({ submitting: false, loading: false });\r\n\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n showToast(\"error\", \"Contact Message\", \"There was an error submitting your message. Pleas try again!\")\r\n this.setState({ submitting: false, loading: false });\r\n // ThrobbleHelper.toggleThrobble(false);\r\n }\r\n }\r\n\r\n clearForm() {\r\n this.setState({\r\n Firstname: \"\",\r\n Lastname: \"\",\r\n EmailAddress: \"\",\r\n Mobile: \"\",\r\n ReasonId: 0,\r\n Message: \"\",\r\n CaptchaToken: false,\r\n loading: false,\r\n submitting: false\r\n })\r\n }\r\n\r\n render() {\r\n\r\n const content = this.state.loading ? <> Loading... : this.renderContactPage(this.state.PageContent, this.state.ReasonList);\r\n return (\r\n
      \r\n \r\n\r\n {content}\r\n
      \r\n )\r\n }\r\n}\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport { Link, useNavigate } from \"react-router-dom\";\r\nimport { Context } from \"../helpers/Context\";\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { getCurrentDomain } from \"../helpers/Lookup\";\r\nimport FixedMessenger from \"./FixedMessenger\";\r\nimport { Button } from 'reactstrap';\r\nimport { getAuthToken } from \"../helpers/authentication\";\r\n\r\nconst CustomerDeliveryAddresses = () => {\r\n const [loading, seLoading] = useState(false);\r\n const navigate = useNavigate();\r\n const { getUserAddress, userAddresses } = useContext(Context);\r\n\r\n const handleDelete = async (id) => {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to delete this item?\", confirmStyles);\r\n if (result) {\r\n seLoading(true);\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/useraddress/' + id, {\r\n method: 'DELETE',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n seLoading(false);\r\n ToastUtility.show({\r\n title: 'User Address', content: 'The user address was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n navigate(\"/login\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n seLoading(false);\r\n ToastUtility.show({\r\n title: 'User Address', content: 'There was an error deleting the user address!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n document.title = \"Customer Delivery Addresses :: TriggerCraft\";\r\n getUserAddress();\r\n }, [loading])\r\n console.log(userAddresses)\r\n return (\r\n <>\r\n \r\n \r\n
      \r\n

      Customer Delivery Addresses

      \r\n {userAddresses && !loading && userAddresses.map((item, index) => (\r\n
      \r\n

      {item.address}, {item.postalCode}

      \r\n
      \r\n navigate(`/delivery-details/${item.id}`)} style={{cursor: \"pointer\"}} className=\"fa-regular fa-pen-to-square text-mited\">\r\n handleDelete(item.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\nexport default CustomerDeliveryAddresses;","import React, { useContext, useEffect, useState } from 'react';\r\nimport { Link, useNavigate, useParams } from 'react-router-dom';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { Context } from \"../helpers/Context\";\r\nimport { getAuthToken, getUserDetails } from '../helpers/authentication';\r\nimport { Button } from 'reactstrap';\r\nimport FixedMessenger from './FixedMessenger';\r\nimport { fieldRequired } from '../helpers/validation';\r\n\r\nconst DeliveryDetails = () => {\r\n const { userAddress, getUserAddress } = useContext(Context);\r\n const { id } = useParams();\r\n const navigate = useNavigate();\r\n const userId = getUserDetails().id\r\n const [formData, setFormData] = useState({\r\n Address: '',\r\n Apartment: '',\r\n City: '',\r\n Company: '',\r\n Country: '',\r\n DateAdded: new Date(),\r\n DateModified: new Date(),\r\n Id: 0,\r\n MobileNumber: '',\r\n OldId: 0,\r\n PostalCode: '',\r\n Status: 1,\r\n Suburb: '',\r\n Province: '',\r\n UserId: userId,\r\n });\r\n\r\n const provinces = [\r\n { id: 1, abbreviation: 'EC', name: 'Eastern Cape' },\r\n { id: 2, abbreviation: 'FS', name: 'Free State' },\r\n { id: 3, abbreviation: 'GP', name: 'Gauteng' },\r\n { id: 4, abbreviation: 'KZN', name: 'KwaZulu-Natal' },\r\n { id: 5, abbreviation: 'LP', name: 'Limpopo' },\r\n { id: 6, abbreviation: 'MP', name: 'Mpumalanga' },\r\n { id: 7, abbreviation: 'NC', name: 'Northern Cape' },\r\n { id: 8, abbreviation: 'NW', name: 'North West' },\r\n { id: 9, abbreviation: 'WC', name: 'Western Cape' },\r\n ];\r\n\r\n const nearSouthAfricaCountries = [\r\n { id: 1, abbreviation: 'BW', name: 'Botswana' },\r\n { id: 2, abbreviation: 'LS', name: 'Lesotho' },\r\n { id: 3, abbreviation: 'MZ', name: 'Mozambique' },\r\n { id: 4, abbreviation: 'NA', name: 'Namibia' },\r\n { id: 5, abbreviation: 'SZ', name: 'Eswatini' },\r\n { id: 6, abbreviation: 'ZW', name: 'Zimbabwe' },\r\n { id: 7, abbreviation: 'ZA', name: 'South Africa' },\r\n ];\r\n\r\n\r\n useEffect(() => {\r\n document.title = \"Delivery Details :: TriggerCraft\";\r\n getUserAddress(id);\r\n }, [])\r\n\r\n useEffect(() => {\r\n\r\n if (userAddress) {\r\n setFormData({\r\n Address: userAddress.address || '',\r\n Apartment: userAddress.apartment || '',\r\n City: userAddress.city || '',\r\n Company: userAddress.company || '',\r\n Country: userAddress.country || '',\r\n Id: userAddress.id || 0,\r\n MobileNumber: userAddress.mobileNumber || '',\r\n PostalCode: userAddress.postalCode || '',\r\n Suburb: userAddress.suburb || '',\r\n Province: userAddress.province || '',\r\n\r\n DateAdded: userAddress.dateAdded || new Date(),\r\n DateModified: new Date(),\r\n OldId: userAddress.oldId || 0,\r\n Status: userAddress.status || 1,\r\n UserId: userAddress.userId || userId,\r\n });\r\n }\r\n }, [userAddress])\r\n\r\n const handleSubmit = async (e) => {\r\n //console.log(formData)\r\n var valid = true;\r\n valid &= fieldRequired(formData.Address, 'tbAddressError', '* required');\r\n valid &= fieldRequired(formData.City, 'tbCityError', '* required');\r\n valid &= fieldRequired(formData.Suburb, 'tbSuburbError', '* required');\r\n valid &= fieldRequired(formData.Province, 'ddProvinceError', '* required');\r\n valid &= fieldRequired(formData.PostalCode, 'tbPostalCodeError', '* required');\r\n valid &= fieldRequired(formData.Country, 'ddCountryError', '* required');\r\n valid &= fieldRequired(formData.MobileNumber, 'tbMobileNumberError', '* required');\r\n //e.preventDefault();\r\n var bearer = 'Bearer ' + getAuthToken();\r\n if (valid) {\r\n const response = await fetch('/api/useraddress', {\r\n method: formData.Id === 0 ? 'POST' : 'PUT',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(formData),\r\n });\r\n\r\n if (response.ok) {\r\n ToastUtility.show({\r\n title: 'User Address', content: 'Address saved successfully', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n navigate(-1);\r\n } else {\r\n ToastUtility.show({\r\n title: 'User Address', content: 'There was an error saving address', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n };\r\n\r\n const handleChange = (e) => {\r\n const { name, value } = e.target;\r\n let realValue = e.value\r\n //console.log(name, e.value, value)\r\n setFormData((prevData) => ({\r\n ...prevData,\r\n [name]: value ? realValue : e.value,\r\n }));\r\n };\r\n\r\n const maxLength50 = { maxlength: \"50\" };\r\n const maxLength100 = { maxlength: \"100\" };\r\n const maxLength250 = { maxlength: \"250\" };\r\n const maxLength4 = { maxlength: \"4\" };\r\n\r\n //console.log(formData)\r\n return (\r\n <>\r\n \r\n\r\n
      \r\n
      \r\n

      Delivery Details

      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n
      \r\n
      \r\n\r\n
      \r\n setFormData({ ...formData, Province: e.value })} />\r\n
      \r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n
      \r\n
      \r\n\r\n
      \r\n setFormData({ ...formData, Country: e.value })} />\r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n
      \r\n
      \r\n\r\n \r\n \r\n
      \r\n \r\n );\r\n};\r\nexport default DeliveryDetails;","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport FixedMessenger from './FixedMessenger';\r\nimport { Button } from 'reactstrap';\r\n\r\nexport class FAQs extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true,\r\n faqItems: []\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"FAQs :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n async loadData() {\r\n try {\r\n const response = await fetch(\"api/faqs/GetAllFaqs\");\r\n if (response.ok) {\r\n const faqItems = await response.json();\r\n this.setState({ faqItems, loading: false });\r\n } else {\r\n console.log(response.status + \":\", response.statusText);\r\n this.setState({ loading: false });\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n toggleAnswer = (id) => {\r\n const updatedFAQItems = [...this.state.faqItems];\r\n const index = updatedFAQItems.findIndex(c => c.id === id);\r\n updatedFAQItems[index].isOpen = !updatedFAQItems[index].isOpen;\r\n this.setState(updatedFAQItems);\r\n };\r\n\r\n RenderFAQHeadings(data) {\r\n const SortedHeadings = [{ id: 0, title: false }, ...data.filter(c => c.type === 1).sort((a, b) => a.displayOrder - b.displayOrder)];\r\n return (\r\n SortedHeadings.map((item, idx) =>\r\n {\r\n item.title && (\r\n <>\r\n

      {item.title}

      \r\n {item.copy && }\r\n
      \r\n\r\n \r\n )}\r\n {this.RenderFAQs(item.id, data)}\r\n
      \r\n )\r\n )\r\n }\r\n\r\n RenderFAQs(HeadingId, data) {\r\n\r\n const HeadingQuestion = data.filter(c => c.type === 2 && c.parentId === HeadingId).sort((a, b) => a.displayOrder - b.displayOrder);\r\n return (\r\n
        {\r\n HeadingQuestion.map((item, index) =>\r\n
        this.toggleAnswer(item.id)}>\r\n {item.title}\r\n \r\n {item.isOpen && }\r\n
        \r\n )\r\n }\r\n
      \r\n\r\n )\r\n }\r\n\r\n render() {\r\n\r\n const content = this.state.loading ? Loading... : this.RenderFAQHeadings(this.state.faqItems);\r\n return (\r\n <>\r\n \r\n
      \r\n
      \r\n
      \r\n

      FAQs

      \r\n {content}\r\n
      \r\n
      \r\n\r\n {/*

      Where is TriggerCraft based?

      \r\n We are primarily an online store and offer shipping countrywide. We can also be found at conventions like ComiCon Africa and rAge Gaming Expo. Our offices are based in Northriding. In-office order pickups can be arranged.\r\n

      Am I able to view the product before purchasing?

      \r\n Unfortunately, no, feel free to call us for expert advice and get some reassurance on your purchase.\r\n

      Will you be stocking any other products?

      \r\n We are always look for the next best thing that you might need. Email us if you cannot find it on our website.\r\n

      Do your products have a warranty?

      \r\n The product warranty terms are specified on the product page.\r\n

      Is TriggerCraft on Social Media?

      \r\n Yes, you can follow us for updates or specials here (Facebook, Instagram, Twitter)– We would love to hear from you!\r\n

      How to purchase from TriggerCraft

      \r\n
        \r\n
      • Select the products you wish to purchase
      • \r\n
          \r\n
        1. When viewing products, if you see something you like, simply select the ‘Add to Cart’ button. If you are just browsing but would like to have the item added to your ‘wish list’ then select the heart icon.
        2. \r\n
        3. When you are ready to pay for your order, click on the shopping cart icon, your items will be displayed..
        4. \r\n
        5. Once your shopping cart is displayed, you can change the quantities or add and remove items. Select your shipping method and include a coupon code if available. When you are happy with your cart, select the ‘Proceed to Check out’ button.
        6. \r\n
        \r\n
      • Select shipping method
      • \r\n
          \r\n
        1. If you hadn’t already entered your shipping address to your profile, you can do so now, alternatively if you would like to ship to an alternative address than that already saved in your profile, you can also add that address now. Select your shipping method and include a coupon code if available.
        2. \r\n
        \r\n
      • Confirm order
      • \r\n
          \r\n
        1. Review your order and delivery details one last time, select your payment method, and agree to the Terms and conditions before clicking on the ‘Place Order’ button.
        2. \r\n
        \r\n
      • Select payment method and pay for order
      • \r\n
          \r\n
        1. If you opt to pay with a credit card or Instant EFT you will be directed to Pay Fast’s secure payment portal to complete the payment.
        2. \r\n
        3. If you would prefer to pay via EFT click on the ‘Pay by EFT’ button and we’ll send you an order reservation email with the details of your order, remember to use your order number as the payment reference so we can allocate your payment correctly. When making your payment you should have the option to include an email address for sending proof of payment, if you put ours in, it will come straight to us finance@triggercraft.co.za
        4. \r\n
        \r\n
      • Order confirmation and tracking
      • \r\n
          \r\n
        1. You will receive an email with your invoice and tracking details for your order to track the progress of your order until it is delivered.
        2. \r\n
        \r\n
      \r\n

      Coupon Codes

      \r\n
      \r\n

      Redeeming a Coupon Code

      \r\n Once you have finished shopping and adding items to your cart, click on your ‘cart’ to view your order. At the bottom of the order there is a block to add your coupon code. Type your code in the space providing and select ‘Apply Coupon’. You can now proceed to checkout.\r\n

      Coupon Code expirations

      \r\n Coupon Codes are linked to promotions and specials. Each promotion will have its own terms and conditions and expiration dates, please view the origin of your code for these terms.\r\n

      Coupon code not working

      \r\n Please ensure you are registered and logged in when placing an order. If the below criteria have been met and the coupon code is still not working, please email u at (support@triggercraft.co.za)\r\n
        \r\n
      • Entered the right code
      • \r\n
      • Met the conditions of the voucher (e.g. Only valid on orders of R150 or more)
      • \r\n
      • That the coupon promotion is still valid.
      • \r\n
      \r\n

      Wish list

      \r\n
      \r\n A wish list serves as a list of products you are interested in. You can also share your list with others who may buy the products as gifts for you.\r\n

      Creating a wish list

      \r\n You will need to create an account or log in to your existing account to start adding items to your wish list. Whilst browsing on our shop you can simply add items to your wish list by clicking on the ‘heart’ icon on each product. Items remain in your wish list until you remove them or add them to your cart. You can easily add items to your cart by clicking ‘Add to Cart’, for your convenience your wish list will also let you know if the item is still in stock.\r\n

      Where is your Wish list?

      \r\n When you are logged in, you can access your wish list by clicking on the ‘My Wish list’ at the top left of your screen.\r\n
        \r\n
      • To check out click – My Account
      • \r\n
      \r\n

      Forgot Password

      \r\n Please make sure you are using the correct username and/or email address you used when you registered. If you have forgotten your password, please click on the ‘Lost Password’ link, we’ll send you an email with a link to reset your password. This email may take several minutes to deliver to your inbox. Please be patient and rather not click on ‘Lost Password’ link several times as it will continue to generate new links.\r\n

      Change your password

      \r\n When logged in, go to ‘My Account’ and from your ‘My Account Dashboard’ click on ‘edit your password and account details’ You’ll need to enter your current password as well as the new password and confirm it. Remember to SAVE your changes.\r\n

      Change your login email address.

      \r\n This can also be done through your ‘My Account Dashboard’. Click on ‘Edit your password and account details’. Remember to SAVE your changes. Please note, you cannot change your original username.\r\n Coupon Codes are linked to promotions and specials. Each promotion will have its own terms and conditions and expiration dates, please view the origin of your code for these terms.\r\n

      Orders

      \r\n
      \r\n

      Tracking my order

      \r\n When your order leaves our office, you will receive an email including the information of the courier company and the details, which will allow you to track your order.\r\n

      Order did not arrive.

      \r\n Please contact us at admin@triggercraft.co.za and we will track your order for you and give you an answer as soon as possible.\r\n

      Wrong Order or Damaged/Faulty products

      \r\n In the unlikely event that you haven’t received what you ordered, or if the product you ordered arrives damaged, please contact us as soon as possible, and no longer than 7 days after receipt of your order. We’ll make it a priority to correct and ensure it to be as hassle free as possible. Please make sure the item/s that has been shipped wrong is not opened or used as it will not be accepted upon collection.\r\n

      Returns

      \r\n

      Step 1 – Contact

      \r\n Please email support@triggercraft.co.za with the following information in the email:\r\n
        \r\n
      1. Your order number (XXXXXXXX)
      2. \r\n
      3. A contact number.
      4. \r\n
      5. Explain the reason for the return. If the wrong order has been delivered, please do not open the product, or tamper with its original packaging. If the product has been opened, you may be liable for the purchase of the product.
      6. \r\n
      7. If the product is damaged (or if the wrong product has been delivered) please could you include a photo of the product in concern, this would be helpful.
      8. \r\n
      \r\n

      Step 2 – Collection / Return

      \r\n Depending on the circumstances we may arrange a courier to collect the product concerned alternately you may be asked to return it to the TriggerCraft office (Northriding, Johannesburg).\r\n Refunds may only be issued if the product(s) arrive at the TriggerCraft offices in a re saleable condition so please ensure care is taken when repacking the product(s).\r\n

      Step 3 – Processing

      \r\n Once the product(s) are received at TriggerCraft we will process the return. This may take up to 3 days to complete. In the case of the wrong product being delivered, your correct order will be dispatched without delay.\r\n

      Step 4 – Refund/Replacement

      \r\n If you are eligible for a refund, we will do so via EFT into an account of your choice. Please note EFT refunds may take up to 7 working days to reflect in your account.\r\n If you are eligible for a replacement product, a new one will be shipped to you.\r\n

      Order Cancellations

      \r\n
      \r\n

      Cancelling my order if I have already paid.

      \r\n If you have already paid for your order and have not yet received an email notifying that your order has already been shipped, please contact us at vaughn@triggercraft.co.za.\r\n

      Cancelling my order if I have not yet paid.

      \r\n If you have not paid for your order within 7 days of receiving your order confirmation, we will send you an email notification. We’ll cancel it 48 hours thereafter if payment is not received.\r\n

      Placing an Order

      \r\n
      \r\n

      Adding items to your cart

      \r\n
        \r\n
      1. When viewing products, if you see something you like, simply select the ‘Add to Cart’ button. If you are just browsing but would like to have the item added to your ‘wish list’ then select the heart icon.
      2. \r\n
      3. When you are ready to pay for your order, click on the shopping cart icon, your items will be displayed.
      4. \r\n
      5. Once your shopping cart is displayed, you can adjust the quantities or add and remove items if necessary. Select your shipping method and include a coupon code if available. Update your Cart. When you are happy with your cart, select the ‘Proceed to Check out’ button.
      6. \r\n
      7. If you hadn’t already entered your shipping address to your profile, you can do so now, alternatively if you would like to ship to an alternative address than that already saved in your profile, you can also add that address now. Select your shipping method and include a coupon code if available.
      8. \r\n
      9. Review your order and delivery details one last time, select your payment method, and agree to the Terms and conditions before clicking on the ‘Place Order’ button.
      10. \r\n
      11. If you opt to pay with a credit card or Instant EFT, you will be directed to Pay Fast’s secure payment portal to complete the payment. If you would prefer to pay via EFT, click on the ‘Pay by EFT’ button and we will send you an order reservation email with our banking details. Hold onto your order number for any questions you may have.
      12. \r\n
      \r\n

      Placing an Order without an account

      \r\n All purchases require you to have a TriggerCraft account, please update your details regularly, or at very least preview your details before making a purchase to ensure your delivery address is correct.\r\n

      International Order Restrictions

      \r\n Currently we are only shipping to locations within the borders of South Africa.\r\n

      Editing an Order

      \r\n
      \r\n

      Editing an order once it has been paid for

      \r\n If you wish to make changes after you have confirmed and paid for your order, you will need to contact us, so we can assist you, at vaughn@triggercraft.co.za. Please do so as soon as possible, as we endeavour to dispatch our orders as quickly as possible. Once the order has been dispatched, we will be unable to make changes.\r\n

      Editing and updating your cart before payment has been made.

      \r\n You can adjust the quantities of products in your cart, as well as removing items you no longer wish to buy. You can remove items by selecting the X next to the product in the table. Adjusting quantities is as simple. Please remember to select the ‘Update Cart’ button to affect your changes.\r\n

      Payment

      \r\n
      \r\n Payment Options\r\n You can pay for your order by credit card or via EFT.\r\n

      Paying with a debit card

      \r\n If your debit card meets the following criteria, it will be accepted.\r\n
        \r\n
      1. Has the Visa or MasterCard Logo.
      2. \r\n
      3. Is a credit, cheque, or debit card.
      4. \r\n
      5. Cash cards will not be accepted.
      6. \r\n
      7. Registered for 3D Secure. If receive One Time Pins (OTPs) via SMS or email from your bank, use online banking services, then you will be fine.
      8. \r\n
      9. If not, then you will need to register with your bank either online or in the branch.
      10. \r\n
      \r\n

      Paying with a credit card

      \r\n
        \r\n
      1. Click “Checkout” button.
      2. \r\n
      3. You will be directed to the PayFast secure payment gateway web page. You will be sent a one-time pin (OTP) via SMS or email from your bank.
      4. \r\n
      5. Enter in the OTP and proceed.
      6. \r\n
      7. Payment Success – You will be redirected back to the TriggerCraft website with a “Thank You” Message
      8. \r\n
      9. Payment Failure – You will be redirected back to the TriggerCraft website with a “Payment Failed” Message. You can either try again or select to pay by EFT. You can try as many times as you like without having to make a new order by going through your TriggerCraft profile (members only). Click on your name in the top right corner of the website to visit your profile.
      10. \r\n
      \r\n

      Where do I find the CVV number?

      \r\n The CVV Number (Card Verification Value) is the last 3 digits found on the back side of your VISA® and MasterCard® branded credit and debit cards.\r\n

      Is paying by credit card safe?

      \r\n All credit card transactions take place on a secure page (3D Secure Site). We use PayFast as our payment gateway, who only use the strictest form of encryption, and no credit card details are stored on our website. Learn more about PayFast security here.\r\n

      Paying via EFT

      \r\n There are two ways to pay via EFT.\r\n
        \r\n
      1. Instant EFT through PayFast: this allows instant verification of your EFT payment. If you bank with ABSA, FNB, Nedbank or Standard Bank, then you will be able to use this service. There is no delay in the checkout and no need to send proof of payment.
      2. \r\n
      3. Pay via EFT through your bank: if you select this option, you will be sent an email to the address you supplied during the checkout process or when you signed up. Please follow the instructions in the email you receive. You will need to supply proof of payment. If you have changed your email address or do not receive the email, please email finance@triggercraft.co.za
      4. \r\n
      \r\n

      Payment on Delivery or Collection

      \r\n All orders must be placed and paid for online before an order will be processed.\r\n

      Proof of Payment

      \r\n Proof of Payment will not be accepted as only the amount reflecting on our side can confirm the payment. You will be notified by our time once payment reflects.\r\n

      Bank Details

      \r\n TriggerCraft bank details for EFT Bank Transfer payments:\r\n
        \r\n
      • Name: TriggerCraft
      • \r\n
      • BANK: ABSA
      • \r\n
      • ACCOUNT NO: 4090155815
      • \r\n
      • BRANCH CODE: 632005
      • \r\n
      • Reference Code: (your order number KCXXXX)
      • \r\n
      • Proof of Payment: Please send to finance@triggercraft.co.za
      • \r\n
      • To check out click here.
      • \r\n
      • Payment Completion
      • \r\n
      \r\n

      Invoices

      \r\n An invoice is automatically supplied for every order, it will be emailed to the address you supplied at checkout or when you signed up.\r\n

      Payment Notifications

      \r\n As soon as we receive your payment, we will send you an email to confirm that your payment has been processed and that all is in order.\r\n

      Payment Issues

      \r\n Lost connection\r\n If your payment was successful, you will receive notification via email confirming your payment and order. If you do not receive confirmation, then please try again, or select to pay via EFT. Once in your profile, your order remains in your cart until checkout or until you delete it, therefore you can try again as many times as you like without having to recreate your order.\r\n

      How it Works

      \r\n
      \r\n When confirming an order, you have the option to have it shipped to a destination of your choice or you can choose to collect your order from our offices in Northriding, Johannesburg.\r\n We use a third-party provider to deliver our orders; we currently use the services of RAM Couriers to ship all our online national orders. The shipping cost will be automatically added to your cart unless you have chosen to collect.\r\n Shipping costs are calculated according to the product dimensions and/or weight and the area it is being shipped too. Our website is integrated with RAM Courier shipping system, so you will easily be able to adjust your shipping needs.\r\n To check out click here.\r\n

      Shipping Costs

      \r\n Standard Delivery takes 2 to 3 days to major centres and 3 to 6 days to regional areas.\r\n
        \r\n
      • Eastern Cape R150
      • \r\n
      • Free State R150
      • \r\n
      • Gauteng R90
      • \r\n
      • KwaZulu-Natal R90
      • \r\n
      • Limpopo R150
      • \r\n
      • Mpumalanga R150
      • \r\n
      • Northern Cape R150
      • \r\n
      • North West R150
      • \r\n
      • Western Cape R90
      • \r\n
      \r\n

      International Shipping

      \r\n International Orders and Shipping\r\n If you are located outside of the borders of South Africa We can arrange for international shipping. Please email
      admin@triggercraft.co.za and we can get you a quotation including shipping, and the respective duties and customs that may be applicable.\r\n

      Delivery Times

      \r\n
      \r\n

      How long will it take for my order to arrive?

      \r\n This will be based on the shipping method you select. On average orders are dispatched from our offices within 24 hours and take 1 to 3 working days to deliver to main centres. Please note the courier company only operates during working hours, Monday to Friday.\r\n

      When do you deliver?

      \r\n The courier company operates during working hours, Monday to Friday.\r\n

      Order Tracking

      \r\n
      \r\n

      Where is my order?

      \r\n When your order leaves are offices, you are sent an email to notify you, this email will contain the waybill number and link to RAM Courier’s website for easy tracking. Please let us know if you didn’t receive this. If you would like us to track your order for you, please email us at admin@triggercraft.co.za.\r\n

      Will the courier call before delivery?

      \r\n We do pass on all customer requests to our courier company, but we cannot guarantee that the driver will be able to call you before he delivers your parcel. If the home address provided will not have someone there during office hours to receive the parcel, perhaps consider shipping it to your place of work.\r\n

      Standard shipping/courier terms

      \r\n
        \r\n
      • These are door-to-door delivery services. We do not deliver to Post boxes.
      • \r\n
      • All delivery times are estimates only.
      • \r\n
      • Someone will have to sign for the parcel on delivery.
      • \r\n
      • Deliveries are normally made between 9am and 5pm.
      • \r\n
      • Unfortunately, it is not possible to provide a more accurate time for your delivery.
      • \r\n
      • It is not possible to guarantee that a courier will contact you during the delivery cycle.
      • \r\n
      \r\n

      Can I change the delivery address after I have ordered?

      \r\n Yes, if your parcel is still in the TriggerCraft warehouse then there should be no additional delay to your delivery. However, if your new shipping address is to a new centre, then additional delivery fees may apply.\r\n To change the delivery address please urgently contact us at admin@triggercraft.co.za */}\r\n\r\n
      \r\n \r\n \r\n );\r\n }\r\n\r\n\r\n}","import React, { useEffect, useState } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { Button } from 'reactstrap';\r\n\r\nfunction ForgotPassword() {\r\n const [email, setEmail] = useState('');\r\n const [message, setMessage] = useState('');\r\n const [loading, setLoading] = useState(false);\r\n const navigate = useNavigate();\r\n\r\n const handleSubmit = async (e) => {\r\n e.preventDefault();\r\n setLoading(true);\r\n const response = await fetch('/api/login/forgotpassword', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({ email }),\r\n });\r\n\r\n if (response.ok) {\r\n setMessage('An email has been sent with a link to reset your password.');\r\n setLoading(false);\r\n } else {\r\n setMessage('Failed to reset password. Please check your email address.');\r\n setLoading(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.title = \"Forgot Password :: TriggerCraft\";\r\n }, []);\r\n\r\n return (\r\n\r\n
      \r\n
      \r\n
      \r\n
      \r\n \"Trigger-Craft\r\n
      \r\n
      \r\n
      \r\n

      Forgot Password

      \r\n\r\n
      \r\n\r\n \r\n\r\n setEmail(e.target.value)} required />\r\n
      \r\n\r\n
      \r\n \r\n
      \r\n

      {message}

      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n );\r\n}\r\n\r\nexport default ForgotPassword;","import React from 'react';\n\n/**\n * CarouselContext\n * {\n * direction: PropTypes.oneOf(['start', 'end']).isRequired,\n * }\n */\nexport var CarouselContext = /*#__PURE__*/React.createContext({});","function _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); }\nvar _excluded = [\"in\", \"children\", \"cssModule\", \"slide\", \"tag\", \"className\"];\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; }\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; }\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; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\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); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\nimport { CarouselContext } from './CarouselContext';\nimport { mapToCssModules, TransitionTimeouts, TransitionStatuses, tagPropType } from './utils';\nvar CarouselItem = /*#__PURE__*/function (_React$Component) {\n _inherits(CarouselItem, _React$Component);\n var _super = _createSuper(CarouselItem);\n function CarouselItem(props) {\n var _this;\n _classCallCheck(this, CarouselItem);\n _this = _super.call(this, props);\n _this.state = {\n startAnimation: false\n };\n _this.onEnter = _this.onEnter.bind(_assertThisInitialized(_this));\n _this.onEntering = _this.onEntering.bind(_assertThisInitialized(_this));\n _this.onExit = _this.onExit.bind(_assertThisInitialized(_this));\n _this.onExiting = _this.onExiting.bind(_assertThisInitialized(_this));\n _this.onExited = _this.onExited.bind(_assertThisInitialized(_this));\n return _this;\n }\n _createClass(CarouselItem, [{\n key: \"onEnter\",\n value: function onEnter(node, isAppearing) {\n this.setState({\n startAnimation: false\n });\n this.props.onEnter(node, isAppearing);\n }\n }, {\n key: \"onEntering\",\n value: function onEntering(node, isAppearing) {\n // getting this variable triggers a reflow\n var offsetHeight = node.offsetHeight;\n this.setState({\n startAnimation: true\n });\n this.props.onEntering(node, isAppearing);\n return offsetHeight;\n }\n }, {\n key: \"onExit\",\n value: function onExit(node) {\n this.setState({\n startAnimation: false\n });\n this.props.onExit(node);\n }\n }, {\n key: \"onExiting\",\n value: function onExiting(node) {\n this.setState({\n startAnimation: true\n });\n node.dispatchEvent(new CustomEvent('slide.bs.carousel'));\n this.props.onExiting(node);\n }\n }, {\n key: \"onExited\",\n value: function onExited(node) {\n node.dispatchEvent(new CustomEvent('slid.bs.carousel'));\n this.props.onExited(node);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props = this.props,\n isIn = _this$props[\"in\"],\n children = _this$props.children,\n cssModule = _this$props.cssModule,\n _this$props$slide = _this$props.slide,\n slide = _this$props$slide === void 0 ? true : _this$props$slide,\n _this$props$tag = _this$props.tag,\n Tag = _this$props$tag === void 0 ? 'div' : _this$props$tag,\n className = _this$props.className,\n transitionProps = _objectWithoutProperties(_this$props, _excluded);\n return /*#__PURE__*/React.createElement(Transition, _extends({}, transitionProps, {\n enter: slide,\n exit: slide,\n \"in\": isIn,\n onEnter: this.onEnter,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }), function (status) {\n var direction = _this2.context.direction;\n var isActive = status === TransitionStatuses.ENTERED || status === TransitionStatuses.EXITING;\n var directionClassName = (status === TransitionStatuses.ENTERING || status === TransitionStatuses.EXITING) && _this2.state.startAnimation && (direction === 'end' ? 'carousel-item-start' : 'carousel-item-end');\n var orderClassName = status === TransitionStatuses.ENTERING && (direction === 'end' ? 'carousel-item-next' : 'carousel-item-prev');\n var itemClasses = mapToCssModules(classNames(className, 'carousel-item', isActive && 'active', directionClassName, orderClassName), cssModule);\n return /*#__PURE__*/React.createElement(Tag, {\n className: itemClasses\n }, children);\n });\n }\n }]);\n return CarouselItem;\n}(React.Component);\nCarouselItem.propTypes = _objectSpread(_objectSpread({}, Transition.propTypes), {}, {\n /** Set a custom element for this component */\n tag: tagPropType,\n \"in\": PropTypes.bool,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n children: PropTypes.node,\n /** Enable/disable animation */\n slide: PropTypes.bool,\n /** Add custom class */\n className: PropTypes.string\n});\nCarouselItem.defaultProps = _objectSpread(_objectSpread({}, Transition.defaultProps), {}, {\n timeout: TransitionTimeouts.Carousel\n});\nCarouselItem.contextType = CarouselContext;\nexport default CarouselItem;","function _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); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\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); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport CarouselItem from './CarouselItem';\nimport { CarouselContext } from './CarouselContext';\nimport { mapToCssModules, omit } from './utils';\nvar SWIPE_THRESHOLD = 40;\nvar propTypes = {\n /** the current active slide of the carousel */\n activeIndex: PropTypes.number,\n /** a function which should advance the carousel to the next slide (via activeIndex) */\n next: PropTypes.func.isRequired,\n /** a function which should advance the carousel to the previous slide (via activeIndex) */\n previous: PropTypes.func.isRequired,\n /** controls if the left and right arrow keys should control the carousel */\n keyboard: PropTypes.bool,\n /** If set to \"hover\", pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on\n * mouseleave. If set to false, hovering over the carousel won't pause it.\n */\n pause: PropTypes.oneOf(['hover', false]),\n /** Autoplays the carousel after the user manually cycles the first item. If \"carousel\", autoplays the carousel on load. */\n ride: PropTypes.oneOf(['carousel']),\n /** the interval at which the carousel automatically cycles */\n interval: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.bool]),\n children: PropTypes.array,\n /** called when the mouse enters the Carousel */\n mouseEnter: PropTypes.func,\n /** called when the mouse exits the Carousel */\n mouseLeave: PropTypes.func,\n /** controls whether the slide animation on the Carousel works or not */\n slide: PropTypes.bool,\n /** make the controls, indicators and captions dark on the Carousel */\n dark: PropTypes.bool,\n fade: PropTypes.bool,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Add custom class */\n className: PropTypes.string,\n /** Enable touch support */\n enableTouch: PropTypes.bool\n};\nvar propsToOmit = Object.keys(propTypes);\nvar defaultProps = {\n interval: 5000,\n pause: 'hover',\n keyboard: true,\n slide: true,\n enableTouch: true,\n fade: false\n};\nvar Carousel = /*#__PURE__*/function (_React$Component) {\n _inherits(Carousel, _React$Component);\n var _super = _createSuper(Carousel);\n function Carousel(props) {\n var _this;\n _classCallCheck(this, Carousel);\n _this = _super.call(this, props);\n _this.handleKeyPress = _this.handleKeyPress.bind(_assertThisInitialized(_this));\n _this.renderItems = _this.renderItems.bind(_assertThisInitialized(_this));\n _this.hoverStart = _this.hoverStart.bind(_assertThisInitialized(_this));\n _this.hoverEnd = _this.hoverEnd.bind(_assertThisInitialized(_this));\n _this.handleTouchStart = _this.handleTouchStart.bind(_assertThisInitialized(_this));\n _this.handleTouchEnd = _this.handleTouchEnd.bind(_assertThisInitialized(_this));\n _this.touchStartX = 0;\n _this.touchStartY = 0;\n _this.state = {\n activeIndex: _this.props.activeIndex,\n direction: 'end',\n indicatorClicked: false\n };\n return _this;\n }\n _createClass(Carousel, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // Set up the cycle\n if (this.props.ride === 'carousel') {\n this.setInterval();\n }\n\n // TODO: move this to the specific carousel like bootstrap. Currently it will trigger ALL carousels on the page.\n document.addEventListener('keyup', this.handleKeyPress);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (prevState.activeIndex === this.state.activeIndex) return;\n this.setInterval();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearInterval();\n document.removeEventListener('keyup', this.handleKeyPress);\n }\n }, {\n key: \"handleKeyPress\",\n value: function handleKeyPress(evt) {\n if (this.props.keyboard) {\n if (evt.keyCode === 37) {\n this.props.previous();\n } else if (evt.keyCode === 39) {\n this.props.next();\n }\n }\n }\n }, {\n key: \"handleTouchStart\",\n value: function handleTouchStart(e) {\n if (!this.props.enableTouch) {\n return;\n }\n this.touchStartX = e.changedTouches[0].screenX;\n this.touchStartY = e.changedTouches[0].screenY;\n }\n }, {\n key: \"handleTouchEnd\",\n value: function handleTouchEnd(e) {\n if (!this.props.enableTouch) {\n return;\n }\n var currentX = e.changedTouches[0].screenX;\n var currentY = e.changedTouches[0].screenY;\n var diffX = Math.abs(this.touchStartX - currentX);\n var diffY = Math.abs(this.touchStartY - currentY);\n\n // Don't swipe if Y-movement is bigger than X-movement\n if (diffX < diffY) {\n return;\n }\n if (diffX < SWIPE_THRESHOLD) {\n return;\n }\n if (currentX < this.touchStartX) {\n this.props.next();\n } else {\n this.props.previous();\n }\n }\n }, {\n key: \"getContextValue\",\n value: function getContextValue() {\n return {\n direction: this.state.direction\n };\n }\n }, {\n key: \"setInterval\",\n value: function (_setInterval) {\n function setInterval() {\n return _setInterval.apply(this, arguments);\n }\n setInterval.toString = function () {\n return _setInterval.toString();\n };\n return setInterval;\n }(function () {\n var _this2 = this;\n // make sure not to have multiple intervals going...\n this.clearInterval();\n if (this.props.interval) {\n this.cycleInterval = setInterval(function () {\n _this2.props.next();\n }, parseInt(this.props.interval, 10));\n }\n })\n }, {\n key: \"clearInterval\",\n value: function (_clearInterval) {\n function clearInterval() {\n return _clearInterval.apply(this, arguments);\n }\n clearInterval.toString = function () {\n return _clearInterval.toString();\n };\n return clearInterval;\n }(function () {\n clearInterval(this.cycleInterval);\n })\n }, {\n key: \"hoverStart\",\n value: function hoverStart() {\n if (this.props.pause === 'hover') {\n this.clearInterval();\n }\n if (this.props.mouseEnter) {\n var _this$props;\n (_this$props = this.props).mouseEnter.apply(_this$props, arguments);\n }\n }\n }, {\n key: \"hoverEnd\",\n value: function hoverEnd() {\n if (this.props.pause === 'hover') {\n this.setInterval();\n }\n if (this.props.mouseLeave) {\n var _this$props2;\n (_this$props2 = this.props).mouseLeave.apply(_this$props2, arguments);\n }\n }\n }, {\n key: \"renderItems\",\n value: function renderItems(carouselItems, className) {\n var _this3 = this;\n var slide = this.props.slide;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, carouselItems.map(function (item, index) {\n var isIn = index === _this3.state.activeIndex;\n return /*#__PURE__*/React.cloneElement(item, {\n \"in\": isIn,\n slide: slide\n });\n }));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n var _this$props3 = this.props,\n cssModule = _this$props3.cssModule,\n slide = _this$props3.slide,\n className = _this$props3.className,\n dark = _this$props3.dark,\n fade = _this$props3.fade;\n var attributes = omit(this.props, propsToOmit);\n var outerClasses = mapToCssModules(classNames(className, 'carousel', fade && 'carousel-fade', slide && 'slide', dark && 'carousel-dark'), cssModule);\n var innerClasses = mapToCssModules(classNames('carousel-inner'), cssModule);\n\n // filter out booleans, null, or undefined\n var children = this.props.children.filter(function (child) {\n return child !== null && child !== undefined && typeof child !== 'boolean';\n });\n var slidesOnly = children.every(function (child) {\n return child.type === CarouselItem;\n });\n\n // Rendering only slides\n if (slidesOnly) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n className: outerClasses,\n onMouseEnter: this.hoverStart,\n onMouseLeave: this.hoverEnd\n }), /*#__PURE__*/React.createElement(CarouselContext.Provider, {\n value: this.getContextValue()\n }, this.renderItems(children, innerClasses)));\n }\n\n // Rendering slides and controls\n if (children[0] instanceof Array) {\n var _carouselItems = children[0];\n var _controlLeft = children[1];\n var _controlRight = children[2];\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n className: outerClasses,\n onMouseEnter: this.hoverStart,\n onMouseLeave: this.hoverEnd\n }), /*#__PURE__*/React.createElement(CarouselContext.Provider, {\n value: this.getContextValue()\n }, this.renderItems(_carouselItems, innerClasses), _controlLeft, _controlRight));\n }\n\n // Rendering indicators, slides and controls\n var indicators = children[0];\n var wrappedOnClick = function wrappedOnClick(e) {\n if (typeof indicators.props.onClickHandler === 'function') {\n _this4.setState({\n indicatorClicked: true\n }, function () {\n return indicators.props.onClickHandler(e);\n });\n }\n };\n var wrappedIndicators = /*#__PURE__*/React.cloneElement(indicators, {\n onClickHandler: wrappedOnClick\n });\n var carouselItems = children[1];\n var controlLeft = children[2];\n var controlRight = children[3];\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n className: outerClasses,\n onMouseEnter: this.hoverStart,\n onMouseLeave: this.hoverEnd,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd\n }), /*#__PURE__*/React.createElement(CarouselContext.Provider, {\n value: this.getContextValue()\n }, wrappedIndicators, this.renderItems(carouselItems, innerClasses), controlLeft, controlRight));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var newState = null;\n var activeIndex = prevState.activeIndex,\n direction = prevState.direction,\n indicatorClicked = prevState.indicatorClicked;\n if (nextProps.activeIndex !== activeIndex) {\n // Calculate the direction to turn\n if (nextProps.activeIndex === activeIndex + 1) {\n direction = 'end';\n } else if (nextProps.activeIndex === activeIndex - 1) {\n direction = 'start';\n } else if (nextProps.activeIndex < activeIndex) {\n direction = indicatorClicked ? 'start' : 'end';\n } else if (nextProps.activeIndex !== activeIndex) {\n direction = indicatorClicked ? 'end' : 'start';\n }\n newState = {\n activeIndex: nextProps.activeIndex,\n direction: direction,\n indicatorClicked: false\n };\n }\n return newState;\n }\n }]);\n return Carousel;\n}(React.Component);\nCarousel.propTypes = propTypes;\nCarousel.defaultProps = defaultProps;\nexport default Carousel;","var _excluded = [\"items\", \"activeIndex\", \"cssModule\", \"onClickHandler\", \"className\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules } from './utils';\nfunction CarouselIndicators(props) {\n var items = props.items,\n activeIndex = props.activeIndex,\n cssModule = props.cssModule,\n onClickHandler = props.onClickHandler,\n className = props.className,\n attributes = _objectWithoutProperties(props, _excluded);\n var listClasses = mapToCssModules(classNames(className, 'carousel-indicators'), cssModule);\n var indicators = items.map(function (item, idx) {\n var indicatorClasses = mapToCssModules(classNames({\n active: activeIndex === idx\n }), cssModule);\n return /*#__PURE__*/React.createElement(\"button\", {\n \"aria-label\": item.caption,\n \"data-bs-target\": true,\n type: \"button\",\n key: \"\".concat(item.key || Object.values(item).join('')),\n onClick: function onClick(e) {\n e.preventDefault();\n onClickHandler(idx);\n },\n className: indicatorClasses\n });\n });\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: listClasses\n }, attributes), indicators);\n}\nCarouselIndicators.propTypes = {\n /** The current active index */\n activeIndex: PropTypes.number.isRequired,\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Array of items to show */\n items: PropTypes.array.isRequired,\n /** Function to be triggered on click */\n onClickHandler: PropTypes.func.isRequired\n};\nexport default CarouselIndicators;","var _excluded = [\"direction\", \"onClickHandler\", \"cssModule\", \"directionText\", \"className\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules } from './utils';\nfunction CarouselControl(props) {\n var direction = props.direction,\n onClickHandler = props.onClickHandler,\n cssModule = props.cssModule,\n directionText = props.directionText,\n className = props.className,\n attributes = _objectWithoutProperties(props, _excluded);\n var anchorClasses = mapToCssModules(classNames(className, \"carousel-control-\".concat(direction)), cssModule);\n var iconClasses = mapToCssModules(classNames(\"carousel-control-\".concat(direction, \"-icon\")), cssModule);\n var screenReaderClasses = mapToCssModules(classNames('visually-hidden'), cssModule);\n return (\n /*#__PURE__*/\n // We need to disable this linting rule to use an `` instead of\n // `\r\n
      \r\n )}\r\n
      \r\n \r\n ));\r\n useEffect(() => {\r\n getHomeBanners();\r\n }, [])\r\n //console.log(heroData)\r\n return (\r\n \r\n \r\n {slides}\r\n \r\n \r\n \r\n );\r\n};\r\nexport default Hero;","import React, { useContext, useEffect } from \"react\";\r\n//import { Button } from 'reactstrap';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { Context } from \"../helpers/Context\";\r\nimport { getCurrentDomain } from \"../helpers/Lookup\";\r\n\r\nconst ShopFor = () => {\r\n const navigate = useNavigate();\r\n const { getCategories, categories } = useContext(Context);\r\n\r\n const goToCategory = (data) => {\r\n navigate(data);\r\n };\r\n\r\n useEffect(() => {\r\n getCategories();\r\n }, [])\r\n //console.log(categories)\r\n return (\r\n
      \r\n

      Shop For

      \r\n
      \r\n {categories && categories.filter(item => item.isRestricted).map((category, index) => (\r\n
      goToCategory(`/products/category/${category.slug.trim().toLowerCase()}`)} style={{ cursor: \"pointer\" }} >\r\n {category.title}\r\n {category.title\r\n
      \r\n \r\n ))}\r\n
      \r\n
      \r\n );\r\n};\r\n\r\nexport default ShopFor;","import React, { Component } from 'react';\r\nimport { Context } from '../helpers/Context';\r\nimport { getCurrentDomain } from '../helpers/Lookup';\r\nimport FixedMessenger from './FixedMessenger';\r\nimport Hero from './HeroSection';\r\nimport { ProductCard } from './ProductCard';\r\nimport ShopFor from './ShopFor';\r\n\r\nexport class Home extends Component {\r\n static displayName = Home.name;\r\n static contextType = Context;\r\n\r\n state = {\r\n randomNewProducts: [],\r\n randomDealProducts: [],\r\n randomTopProducts: [],\r\n randomBestProducts: [],\r\n BrandList: [],\r\n };\r\n\r\n componentDidMount() {\r\n document.title = \"Home :: TriggerCraft\";\r\n const { getProducts, getCategories, getBrands } = this.context;\r\n getBrands();\r\n //getCategories();\r\n getProducts();\r\n }\r\n\r\n handleNavigation(data) {\r\n const { handleNavigate } = this.context;\r\n handleNavigate(data);\r\n }\r\n\r\n getRandomObjectsFromArray(arr, numObjects) {\r\n if (numObjects >= arr.length) {\r\n return arr.slice();\r\n }\r\n const randomObjects = [];\r\n const usedIndices = new Set();\r\n\r\n while (randomObjects.length < numObjects) {\r\n const randomIndex = Math.floor(Math.random() * arr.length);\r\n\r\n if (!usedIndices.has(randomIndex)) {\r\n usedIndices.add(randomIndex);\r\n randomObjects.push(arr[randomIndex]);\r\n }\r\n }\r\n\r\n return randomObjects;\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n const { products, brands } = this.context;\r\n\r\n if (prevState.randomNewProducts.length === 0 && products.length > 0) {\r\n const newProducts = products.filter(item => item.stock > 0).sort((a, b) => {\r\n const dateA = new Date(a.dateAdded);\r\n const dateB = new Date(b.dateAdded);\r\n\r\n return dateB - dateA;\r\n });\r\n const randomNewProducts = this.getRandomObjectsFromArray(newProducts, 4);\r\n this.setState({ randomNewProducts });\r\n }\r\n\r\n if (prevState.randomDealProducts.length === 0 && products.length > 0) {\r\n let randomDealProducts;\r\n const deals = products.filter(item => item.sPrice && item.stock && item.dateSPriceEnds)\r\n const noPriceDeals = products.filter(item => item.stock)\r\n if (deals.length)\r\n randomDealProducts = this.getRandomObjectsFromArray(deals, 4);\r\n else\r\n randomDealProducts = this.getRandomObjectsFromArray(noPriceDeals, 4);\r\n this.setState({ randomDealProducts });\r\n }\r\n\r\n if (prevState.randomTopProducts.length === 0 && products.length > 0) {\r\n const topRated = products.filter(item => item.avgRating > 3)\r\n const randomTopProducts = topRated.length ? this.getRandomObjectsFromArray(topRated, 4) : this.getRandomObjectsFromArray(products, 4);\r\n this.setState({ randomTopProducts });\r\n }\r\n\r\n if (prevState.randomBestProducts.length === 0 && products.length > 0) {\r\n const randomBestProducts = this.getRandomObjectsFromArray(products, 4);\r\n this.setState({ randomBestProducts });\r\n }\r\n\r\n if (brands.length > 0 && prevState.BrandList !== brands) {\r\n this.setState({ BrandList: brands });\r\n }\r\n }\r\n\r\n render() {\r\n const { randomNewProducts, randomDealProducts, randomTopProducts, randomBestProducts, BrandList } = this.state;\r\n //console.log(randomDealProducts)\r\n return (\r\n
      \r\n \r\n
      \r\n \r\n
      \r\n

      Recently Added

      \r\n
      \r\n {randomNewProducts.map((product) => {\r\n return (\r\n
      \r\n = new Date()\r\n ? product.sPrice\r\n : product.price\r\n }\r\n prevPrice={\r\n product.sPrice &&\r\n product.dateSPriceEnds &&\r\n new Date(product.dateSPriceEnds) >= new Date()\r\n ? product.price\r\n : product.sPrice\r\n }\r\n />\r\n
      \r\n )\r\n })}\r\n
      \r\n
      \r\n

      Deals

      \r\n
      \r\n {randomDealProducts.filter(item => item.stock).map((product) => {\r\n return (\r\n
      \r\n = new Date()) || (product.sPrice && product.ongoing) ? product.sPrice : product.price}\r\n prevPrice={(product.sPrice && product.dateSPriceEnds && new Date(product.dateSPriceEnds) >= new Date()) || (product.sPrice && product.ongoing) ? product.price : product.sPrice}\r\n />\r\n
      \r\n )\r\n })}\r\n
      \r\n
      \r\n

      Top Rated

      \r\n
      \r\n {randomTopProducts.map((product) => {\r\n return (\r\n
      \r\n = new Date() ? product.sPrice : product.price}\r\n prevPrice={product.sPrice && product.dateSPriceEnds && new Date(product.dateSPriceEnds) >= new Date() ? product.price : product.sPrice}\r\n />\r\n
      \r\n )\r\n })}\r\n
      \r\n
      \r\n

      Best Selling

      \r\n
      \r\n {randomBestProducts.map((product) => {\r\n return (\r\n
      \r\n = new Date() ? product.sPrice : product.price}\r\n prevPrice={product.sPrice && product.dateSPriceEnds && new Date(product.dateSPriceEnds) >= new Date() ? product.price : product.sPrice}\r\n />\r\n
      \r\n )\r\n })}\r\n
      \r\n
      \r\n

      Popular Brands

      \r\n
      \r\n {BrandList.filter(item => item.showOnHome).map((brand) => {\r\n return (\r\n
      this.handleNavigation(`/brands/products/${brand.slug}`)} key={brand.id}>\r\n {brand.title}\r\n
      {brand.title}
      \r\n
      \r\n )\r\n })}\r\n
      \r\n \r\n \r\n
      \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Button } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport { fieldRequired } from '../helpers/validation';\r\nimport { setAuthToken, setUserDetails } from '../helpers/authentication';\r\nimport ThrobbleHelper from '../helpers/ThrobbleHelper';\r\nimport { showToast } from '../helpers/ToastHelper';\r\nimport { setIsAdmin } from '../helpers/Lookup';\r\nimport { Context } from '../helpers/Context';\r\n//import { setIsPCLogin } from '../helpers/Lookup';\r\n\r\nexport class Login extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n Email: '',\r\n Password: '',\r\n Checked: false,\r\n };\r\n this.Login = this.Login.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"TriggerCraft :: Login\";\r\n }\r\n\r\n render() {\r\n return (\r\n
      \r\n
      \r\n
      \r\n
      \r\n \"Trigger-Craft\r\n
      \r\n
      \r\n
      \r\n

      Login

      \r\n\r\n
      \r\n\r\n \r\n\r\n this.setState({ Email: e.target.value }, () => fieldRequired(this.state.Email, \"errEmail\", \"required\"))} />\r\n
      \r\n\r\n \r\n\r\n
      \r\n this.setState({ Password: e.target.value }, () => fieldRequired(this.state.Password, \"errPassword\", \"required\"))} />\r\n { this.setState({ Checked: !this.state.Checked }) }} id=\"basic-addon\">{this.state.Checked ? : }\r\n
      \r\n
      \r\n \r\n
      \r\n {/*
      */}\r\n
      \r\n \r\n No account? Register\r\n \r\n \r\n Forgot password? \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n );\r\n }\r\n\r\n async Login() {\r\n\r\n let isValid = true;\r\n isValid &= fieldRequired(this.state.Email, \"errEmail\", \"required\");\r\n isValid &= fieldRequired(this.state.Password, \"errPassword\", \"required\");\r\n const { getCart, postToCart, cart } = this.context;\r\n //ThrobbleHelper.toggleThrobble(true, \"Logging in\")\r\n if (isValid) {\r\n this.setState({ loading: true });\r\n\r\n try {\r\n\r\n const response = await fetch(`api/login/UserLogin?username=${this.state.Email}&password=${btoa(this.state.Password)}`, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n });\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n setAuthToken(data.item1, data.item2);\r\n setIsAdmin(data.item3);\r\n setUserDetails(data.item4);\r\n const loadCart = await getCart(data.item4.id);\r\n showToast(\"success\", \"Login\", \"Login is successful\");\r\n this.setState({ loading: false });\r\n\r\n if (loadCart.id == 0 && cart.cartItems.length) {\r\n cart.userId = data.item4.id;\r\n postToCart(cart);\r\n localStorage.setItem('cart', JSON.stringify(cart));\r\n //console.log(\"first one \", cart, cart.cartItems);\r\n } else if (loadCart.id && cart.cartItems) {\r\n //loadCart.cartItems = [...loadCart.cartItems, ...cart.cartItems]\r\n loadCart.amount = loadCart.amount + cart.amount;\r\n loadCart.numItems = loadCart.numItems + cart.numItems;\r\n postToCart(loadCart);\r\n //console.log(\"second one \", loadCart, [...loadCart.cartItems, ...cart.cartItems]);\r\n localStorage.setItem('cart', JSON.stringify(loadCart));\r\n } else if (loadCart.id && !cart.cartItems) {\r\n localStorage.setItem('cart', JSON.stringify(loadCart));\r\n //console.log(\"last one \", loadCart);\r\n }\r\n //console.log(loadCart, cart, cart.cartItems);\r\n //console.log(cart, data.item4.id)\r\n if (data.item3) {\r\n window.location.href = \"/admin\";\r\n } else {\r\n window.location.href = \"/\";\r\n }\r\n }\r\n else {\r\n this.setState({ loading: false });\r\n if (response.status === 400)\r\n showToast(\"info\", \"Login\", \"Your account has been locked out\");\r\n else\r\n showToast(\"error\", \"Login\", \"Email/Password is invalid\");\r\n }\r\n } catch (e) {\r\n this.setState({ loading: false });\r\n console.error(e);\r\n showToast(\"error\", \"Login\", \"Email/Password is invalid\");\r\n }\r\n\r\n }\r\n }\r\n}","import React, { useContext, useEffect, useState } from \"react\";\r\nimport { useNavigate, Link } from \"react-router-dom\";\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { Context } from \"../helpers/Context\";\r\nimport FixedMessenger from \"./FixedMessenger\";\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { fieldRequired } from \"../helpers/validation\";\r\nimport { getDefaultAddressId, setDefaultAddressId } from \"../helpers/Lookup\";\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { getAuthToken, getUserDetails } from \"../helpers/authentication\";\r\nimport { Button, Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';\r\n\r\nconst OrderCompletion = () => {\r\n const navigate = useNavigate();\r\n const { getUserAddress, userAddresses, processPayment, cart } = useContext(Context);\r\n const [isButtonDisabled, setIsButtonDisabled] = useState(false);\r\n const [loading, setLoading] = useState(true);\r\n\r\n const [addressId, setAddressId] = useState(getDefaultAddressId());\r\n\r\n const [company, setCompany] = useState('');\r\n const [instructions, setInstructions] = useState('');\r\n const [province, setProvince] = useState('');\r\n const [address, setAddress] = useState('');\r\n const [postalCode, setPostalCode] = useState('');\r\n const [apartment, setApartment] = useState('');\r\n const [country, setCountry] = useState('');\r\n const [city, setCity] = useState('');\r\n const [suburb, setSuburb] = useState('');\r\n const [mobileNumber, setMobileNumber] = useState(getUserDetails().mobile);\r\n\r\n\r\n const [editModal, setEditModal] = useState(false);\r\n\r\n const toggle = () => setEditModal(!editModal);\r\n\r\n\r\n const provinces = [\r\n { id: 0, abbreviation: '', name: '-SELECT-' },\r\n { id: 1, abbreviation: 'EC', name: 'Eastern Cape' },\r\n { id: 2, abbreviation: 'FS', name: 'Free State' },\r\n { id: 3, abbreviation: 'GP', name: 'Gauteng' },\r\n { id: 4, abbreviation: 'KZN', name: 'KwaZulu-Natal' },\r\n { id: 5, abbreviation: 'LP', name: 'Limpopo' },\r\n { id: 6, abbreviation: 'MP', name: 'Mpumalanga' },\r\n { id: 7, abbreviation: 'NC', name: 'Northern Cape' },\r\n { id: 8, abbreviation: 'NW', name: 'North West' },\r\n { id: 9, abbreviation: 'WC', name: 'Western Cape' },\r\n ];\r\n\r\n const handleAddressChange = (address) => {\r\n setAddressId(address.id);\r\n setDefaultAddressId(address.id);\r\n };\r\n\r\n\r\n const handleSubmit = async (e) => {\r\n e.preventDefault();\r\n setIsButtonDisabled(true);\r\n if (addressId > 0) {\r\n if (getAuthToken()) {\r\n console.log(cart);\r\n let cartId = cart.cartId;\r\n // JSON.parse(localStorage.getItem('cart')).cartId;\r\n console.log(cartId);\r\n await processPayment(cartId, addressId, instructions);\r\n setIsButtonDisabled(false);\r\n } else {\r\n alert(\"Please login or register to complete order\");\r\n setIsButtonDisabled(false);\r\n }\r\n }\r\n else {\r\n alert(\"Please add a delivery address!\");\r\n setIsButtonDisabled(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.title = \"Order Completion :: TriggerCraft\";\r\n getUserAddress();\r\n setLoading(false);\r\n }, [])\r\n \r\n const renderAddress = (address) => {\r\n let result = \"\";\r\n if (!address?.company.isNullOrWhitespace())\r\n result += address.company + \"
      \";\r\n if (!address?.apartment.isNullOrWhitespace())\r\n result += address.apartment + \"
      \";\r\n if (!address?.address.isNullOrWhitespace())\r\n result += address.address + \"
      \";\r\n if (!address?.suburb.isNullOrWhitespace())\r\n result += address.suburb + \"
      \";\r\n return result;\r\n }\r\n\r\n const validateForm = () => {\r\n var valid = true;\r\n valid &= fieldRequired(address, 'tbAddressError', '* required');\r\n valid &= fieldRequired(city, 'tbCityError', '* required');\r\n valid &= fieldRequired(suburb, 'tbSuburbError', '* required');\r\n valid &= fieldRequired(province, 'ddProvinceError', '* required');\r\n valid &= fieldRequired(postalCode, 'tbPostalCodeError', '* required');\r\n //valid &= fieldRequired(country, 'ddCountryError', '* required');\r\n //valid &= fieldRequired(mobileNumber, 'tbMobileNumberError', '* required');\r\n return valid;\r\n }\r\n\r\n\r\n const saveItem = async (event) => {\r\n event.stopPropagation();\r\n\r\n if (validateForm()) {\r\n const data = { id: 0, userId: getUserDetails().id, company: company, province: province, address: address, postalCode: postalCode, apartment: apartment, country: country, city: city, suburb: suburb, mobileNumber: mobileNumber, };\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n\r\n try {\r\n const response = await fetch('/api/useraddress', {\r\n method: 'POST',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n console.log(\"after save: \", data)\r\n //loadData();\r\n const saveId = parseInt(data, 10);\r\n setAddressId(saveId);\r\n setDefaultAddressId(saveId);\r\n getUserAddress();\r\n ToastUtility.show({\r\n title: 'Address', content: 'Your address was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Bottom' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n window.location.href = \"/login\";\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n ToastUtility.show({\r\n title: 'Address', content: 'There was an error saving your address!', timeOut: 5000, position: { X: 'Right', Y: 'Bottom' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n toggle();\r\n }\r\n }\r\n\r\n\r\n if (loading) {\r\n return (\r\n <>\r\n

      Loading...
      \r\n \r\n )\r\n }\r\n\r\n return (\r\n <>\r\n \r\n

      Delivery Address

      \r\n
      \r\n
      \r\n \r\n\r\n {userAddresses?.map((item, index) => {\r\n const inputId = `address-${index}`; // Generate a unique ID for each radio button\r\n\r\n return (\r\n
      \r\n handleAddressChange(item)}\r\n />\r\n
      \r\n );\r\n })}\r\n\r\n\r\n
      \r\n \r\n\r\n
      \r\n
      \r\n\r\n
      \r\n setInstructions(e.value)} /> \r\n
      \r\n\r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n \r\n \r\n
      \r\n
      \r\n
      \r\n \r\n\r\n
      \r\n \r\n
      \r\n\r\n\r\n \r\n\r\n \r\n Add Address\r\n \r\n
      \r\n
      \r\n setAddress(e.value)} />\r\n
      \r\n
      \r\n\r\n
      \r\n setApartment(e.value)} />\r\n\r\n
      \r\n
      \r\n setCompany(e.value)} />\r\n
      \r\n
      \r\n setSuburb(e.value)} />\r\n
      \r\n
      \r\n
      \r\n setCity(e.value)} />\r\n
      \r\n
      \r\n
      \r\n setProvince(e.value)} />\r\n
      \r\n
      \r\n\r\n
      \r\n setPostalCode(e.value)} />\r\n
      \r\n
      \r\n
      \r\n setMobileNumber(e.value)} />\r\n
      \r\n\r\n
      \r\n\r\n\r\n
      \r\n setCountry(e.value)} />\r\n
      \r\n
      \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default OrderCompletion;","import React, { useContext, useEffect, useState } from \"react\";\r\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap';\r\nimport { Context } from \"../helpers/Context\";\r\nimport { getCurrentDomain } from \"../helpers/Lookup\";\r\n\r\nconst OrderHistoryItem = ({ items }) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n //console.log(items)\r\n //const allExtractedData = [];\r\n const { allProducts, getAllProducts, oldItems, getOldCartItems } = useContext(Context);\r\n \r\n const toggle = () => {\r\n getOldCartItems(items.id, () => {\r\n setIsOpen(!isOpen);\r\n });\r\n };\r\n\r\n const getImage = (productId) => {\r\n //productId = parseInt(productId, 10);\r\n const selectedProduct = allProducts.find(item => item.id === productId);\r\n return selectedProduct && selectedProduct.images ? selectedProduct.images.includes(\"DynamicData\") ? JSON.parse(selectedProduct.images)[0].includes(\"\\\\\") && JSON.parse(selectedProduct.images)[0].includes(\"[\") ? getCurrentDomain() + JSON.parse(JSON.parse(selectedProduct.images))[0].replace(/\\\\/g, \"/\") : getCurrentDomain() + JSON.parse(selectedProduct.images)[0].replace(/\\\\/g, \"/\") : selectedProduct.images.split(\", \")[0] : \"/assets/imgs/Trigger-Craft-Logo.png\";\r\n };\r\n\r\n useEffect(() => {\r\n getAllProducts();\r\n \r\n }, []);\r\n //console.log(oldItems)\r\n return (\r\n <>\r\n
      \r\n
      Order Number:  {\"TC\" + items.orderId.toString().padStart(4, '0')}
      \r\n
      Order Date:  {new Date(items.dateSubmitted).toDateString()}
      \r\n
      Paid Date:  {items.dateComplete ? new Date(items.dateComplete).toDateString() : \"\"}
      \r\n
      Status:  {items.statusMessage}
      \r\n
      Payment Method:  {items.paymentMethodTitle}
      \r\n
      Items:  {items.numItems}
      \r\n
      Total:  R {items.amount.toNumberString()}
      \r\n \r\n
      \r\n \r\n Product Information\r\n \r\n {oldItems && oldItems.map((data, index) => (\r\n
      \r\n
      \r\n {data.title}\r\n
      \r\n
      Product Name: {data.title}
      \r\n
      Product ID: {data.productId}
      \r\n
      SKU: {data.sku}
      \r\n
      Quantity: {data.qty}
      \r\n
      Sub Total: R {data.priceCharged.toNumberString()}
      \r\n
      Total: R {data.totalCharged.toNumberString()}
      \r\n {/*

      Tax: R {data.tax}

      */}\r\n
      \r\n
      \r\n ))}\r\n
      \r\n
      \r\n \r\n );\r\n};\r\n\r\nexport default OrderHistoryItem;","import React, { useContext, useEffect, useState } from 'react';\r\nimport OrderHistoryItem from './OrderHistoryItem';\r\nimport { Context } from \"../helpers/Context\";\r\nimport { Link, useNavigate } from 'react-router-dom';\r\nimport { getUserDetails } from '../helpers/authentication';\r\nimport FixedMessenger from './FixedMessenger';\r\n\r\nconst OrderHistory = () => {\r\n const { orders, getAllOrders } = useContext(Context);\r\n const [loading, setLoading] = useState(true)\r\n const navigate = useNavigate();\r\n const userId = getUserDetails().id\r\n\r\n\r\n useEffect(() => {\r\n document.title = \"Order History :: TriggerCraft\";\r\n getAllOrders(userId).then(() => setLoading(false));\r\n }, [])\r\n //console.log(orders)\r\n return (\r\n
      \r\n \r\n

      Order History

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

      {orders.length}

      \r\n

      Total Orders

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

      {orders.length && orders.filter(item => item.status === 10).length}

      \r\n

      Canceled

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

      {orders.length && orders.filter(item => item.status === 3).length}

      \r\n

      Successful

      \r\n
      \r\n
      \r\n
      \r\n {loading ?   Loading... : orders.length ?
      \r\n Order #\r\n Order Date\r\n Paid Date\r\n Status\r\n Payment Method\r\n Items\r\n Total\r\n Action\r\n
      : null}\r\n {!loading && orders.length ? orders.map((item) => (\r\n \r\n )) :\r\n
      \r\n \r\n

      No Previous Orders

      \r\n \r\n
      }\r\n \r\n
      \r\n );\r\n};\r\nexport default OrderHistory;","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\n\r\nexport class PayFastCancelled extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Payment Cancelled :: TriggerCraft\";\r\n }\r\n\r\n render() {\r\n return (\r\n
      \r\n
      \r\n
      \r\n

      PayFast Payment Cancelled!

      \r\n {/* Go to Checkout */}\r\n
      \r\n
      \r\n
      \r\n );\r\n }\r\n\r\n\r\n}","import React, { useContext, useEffect, useState } from 'react'\r\nimport { Context } from \"../../helpers/Context\";\r\nimport { BorderWidthIcon } from '@radix-ui/react-icons';\r\n\r\nfunction PayFastComplete() {\r\n\r\n const { CheckPaymentStatus, ResetUserCart } = useContext(Context);\r\n const [loading, setLoading] = useState(true);\r\n const [paymentStatus, setPaymentStatus] = useState(\"\");\r\n\r\n\r\n useEffect(() => {\r\n loadData();\r\n }, [loading]);\r\n\r\n const loadData = () => {\r\n CheckPaymentStatus().then(res => {\r\n //if (res === \"success\")\r\n ResetUserCart();\r\n\r\n setPaymentStatus(res);\r\n setLoading(false);\r\n });\r\n\r\n }\r\n\r\n const RenderSpinner = () => {\r\n return (\r\n <>\r\n

      Thank you your payment is currently being processed.
      \r\n You will shortly be notified of the order status...

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

      Thank you for transacting with TriggerCraft!

      \r\n \r\n )\r\n }\r\n\r\n const RenderPaymentStatus = () => {\r\n return (\r\n paymentStatus === \"success\" ?\r\n <>\r\n

      Thank you, your payment has been received!

      \r\n \r\n :\r\n <>\r\n

      Order processing,
      please check your email for confirmation.

      \r\n )\r\n }\r\n\r\n const content = loading ? RenderSpinner() : RenderPaymentStatus();\r\n\r\n\r\n return (\r\n
      \r\n
      \r\n
      \r\n {content}\r\n
      \r\n
      \r\n
      \r\n )\r\n}\r\n\r\nexport default PayFastComplete","var _excluded = [\"className\", \"cssModule\", \"row\", \"disabled\", \"check\", \"inline\", \"floating\", \"tag\", \"switch\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n row: PropTypes.bool,\n check: PropTypes.bool,\n \"switch\": PropTypes.bool,\n inline: PropTypes.bool,\n floating: PropTypes.bool,\n disabled: PropTypes.bool,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nfunction FormGroup(props) {\n var className = props.className,\n cssModule = props.cssModule,\n row = props.row,\n disabled = props.disabled,\n check = props.check,\n inline = props.inline,\n floating = props.floating,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n switchProp = props[\"switch\"],\n attributes = _objectWithoutProperties(props, _excluded);\n var formCheck = check || switchProp;\n var classes = mapToCssModules(classNames(className, row ? 'row' : false, formCheck ? 'form-check' : 'mb-3', switchProp ? 'form-switch' : false, formCheck && inline ? 'form-check-inline' : false, formCheck && disabled ? 'disabled' : false, floating && 'form-floating'), cssModule);\n if (Tag === 'fieldset') {\n attributes.disabled = disabled;\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nFormGroup.propTypes = propTypes;\nexport default FormGroup;","import { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Button, FormGroup, FormText, Input, Label } from \"reactstrap\";\r\nimport { getAuthToken, getUserDetails } from '../helpers/authentication';\r\nimport { fieldRequired } from '../helpers/validation';\r\nimport FixedMessenger from './FixedMessenger';\r\n//import { setIsPCLogin } from '../helpers/Lookup';\r\n\r\nexport class PersonalInformation extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n Id: 0,\r\n UserId: '',\r\n UserType: 0,\r\n FirstName: '',\r\n LastName: '',\r\n EmailAddress: '',\r\n EmailConfirmed: false,\r\n CurrentPassword: '',\r\n LastPassword: '',\r\n Mobile: '',\r\n Communication: 0,\r\n Credit: 0,\r\n Status: 0,\r\n DateAdded: new Date(),\r\n DateModified: new Date(),\r\n AddedBy: 0,\r\n DateVerified: new Date(),\r\n LastLogin: new Date(),\r\n FailedLogins: 0,\r\n LockedOut: false,\r\n LockOutDate: new Date(),\r\n ResetPassword: false,\r\n LastIP: '',\r\n LoginCookie: '',\r\n Checked: false,\r\n Checked2: false\r\n };\r\n this.saveData = this.saveData.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Pesonal Information :: TriggerCraft\";\r\n this.loadData();\r\n }\r\n\r\n passwordFieldRequired = (condition, errorId, errorMessage) => {\r\n const errorElement = document.getElementById(errorId);\r\n if (errorElement) {\r\n errorElement.style.display = condition ? 'none' : 'inline';\r\n errorElement.textContent = condition ? '' : errorMessage;\r\n }\r\n };\r\n\r\n render() {\r\n //console.log(this.state)\r\n return (\r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n

      Update Profile

      \r\n
      \r\n \r\n \r\n {\r\n this.setState({ FirstName: e.target.value })\r\n }}\r\n />\r\n \r\n \r\n \r\n {\r\n this.setState({ LastName: e.target.value })\r\n }}\r\n />\r\n \r\n \r\n \r\n {\r\n this.setState({ EmailAddress: e.target.value })\r\n }}\r\n />\r\n \r\n \r\n \r\n {\r\n this.setState({ Mobile: e.target.value })\r\n }}\r\n />\r\n \r\n \r\n \r\n
      \r\n {\r\n this.setState({ CurrentPassword: e.target.value })\r\n }}\r\n />\r\n { this.setState({ Checked: !this.state.Checked }) }} id=\"basic-addon\">{this.state.Checked ? : }\r\n
      \r\n
      \r\n \r\n \r\n
      \r\n {\r\n this.setState({ LastPassword: e.target.value === this.state.CurrentPassword });\r\n this.passwordFieldRequired(e.target.value === this.state.CurrentPassword, \"errConfirmPassword\", \"Password doesn't match\");\r\n }}\r\n />\r\n { this.setState({ Checked2: !this.state.Checked2 }) }} id=\"basic-addon\">{this.state.Checked2 ? : }\r\n
      \r\n {/*Password entered here should match the one in the above password field.*/}\r\n {/**/}\r\n {/* Password entered here should match the one in the above password field.*/}\r\n {/**/}\r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n {/*
      */}\r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n );\r\n }\r\n\r\n async loadData() {\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('api/userdata/' + getUserDetails().id, {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n let data = await response.json();\r\n console.log(data)\r\n /*data = data.find((item) => { return item.id == getUserDetails().id });*/\r\n\r\n this.setState({ Id: data.id, UserId: data.userId, UserType: data.userType, FirstName: data.firstName, LastName: data.lastName, EmailAddress: data.emailAddress, EmailConfirmed: data.emailConfirmed, Mobile: data.mobile, Communication: data.communication, Credit: data.credit, Status: data.status, DateAdded: data.dateAdded, DateModified: data.dateModified, AddedBy: data.addedBy, DateVerified: data.dateVerified, LastLogin: data.lastLogin, FailedLogins: data.failedLogins, LockedOut: data.lockedOut, LockOutDate: data.lockOutDate, ResetPassword: data.resetPassword, LastIP: data.lastIP, LoginCookie: data.loginCookie, loading: false });\r\n //this.setState({ editData: data, loading: false });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async saveData() {\r\n\r\n let isValid = true;\r\n isValid &= fieldRequired(this.state.FirstName, \"errFirstName\", \" required\");\r\n isValid &= fieldRequired(this.state.LastName, \"errLastName\", \" required\");\r\n\r\n if (isValid) {\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, UserId: this.state.UserId, UserType: this.state.UserType, FirstName: this.state.FirstName, LastName: this.state.LastName, EmailAddress: this.state.EmailAddress, EmailConfirmed: this.state.EmailConfirmed, CurrentPassword: this.state.CurrentPassword, LastPassword: this.state.LastPassword, Mobile: this.state.Mobile, Communication: this.state.Communication, Credit: this.state.Credit, Status: this.state.Status, DateAdded: this.state.DateAdded, DateModified: this.state.DateModified, AddedBy: this.state.AddedBy, DateVerified: this.state.DateVerified, LastLogin: this.state.LastLogin, FailedLogins: this.state.FailedLogins, LockedOut: this.state.LockedOut, LockOutDate: this.state.LockOutDate, ResetPassword: this.state.ResetPassword, LastIP: this.state.LastIP, LoginCookie: this.state.LoginCookie, }\r\n //console.log(data);\r\n try {\r\n const response = await fetch('api/userdata/updateuser', {\r\n method: 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n await response.json();\r\n this.loadData();\r\n ToastUtility.show({\r\n title: 'Pesonal Information', content: 'The user data was successfully updated!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Pesonal Information', content: 'There was an error updating the user data!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n }\r\n}","import React, { useContext, useEffect, useState } from 'react';\r\nimport { Link, useLocation, useParams } from \"react-router-dom\";\r\nimport { Context } from '../helpers/Context';\r\nimport { getCurrentDomain } from '../helpers/Lookup';\r\nimport FixedMessenger from './FixedMessenger';\r\nimport { ProductCard } from './ProductCard';\r\n\r\nconst ProductBrandPage = () => {\r\n const { products, getProducts, brands, getBrands } = useContext(Context);\r\n const [loading, setLoading] = useState(true);\r\n const [isHovered, setIsHovered] = useState(false);\r\n const [selectedOption, setSelectedOption] = useState('lowest');\r\n const [showOutOfStock, setShowOutOfStock] = useState(true);\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const productsPerPage = 12;\r\n const { slug } = useParams();\r\n const location = useLocation();\r\n const selectedBrand = brands.find(item => item.slug == slug);\r\n let filteredProducts = products.filter(item => { return item.productBrandId == selectedBrand.id });\r\n\r\n if (selectedOption === 'lowest') {\r\n filteredProducts = filteredProducts.sort((a, b) => {\r\n const aPrice = a.sPrice || a.price;\r\n const bPrice = b.sPrice || b.price;\r\n return aPrice - bPrice;\r\n});\r\n } else if (selectedOption === 'highest') {\r\n filteredProducts = filteredProducts.sort((a, b) => {\r\n const aPrice = a.sPrice || a.price;\r\n const bPrice = b.sPrice || b.price;\r\n return bPrice - aPrice;\r\n});\r\n } else if (selectedOption === 'a-z') {\r\n filteredProducts = filteredProducts.sort((a, b) => a.title.localeCompare(b.title));\r\n } else if (selectedOption === 'z-a') {\r\n filteredProducts = filteredProducts.sort((a, b) => b.title.localeCompare(a.title));\r\n }\r\n\r\n if (showOutOfStock) {\r\n filteredProducts = filteredProducts.filter(item => item.stock > 0);\r\n } else if (!showOutOfStock) {\r\n filteredProducts = filteredProducts.filter(item => item);\r\n }\r\n\r\n const totalPages = Math.ceil(filteredProducts.length / productsPerPage);\r\n const indexOfLastProduct = currentPage * productsPerPage;\r\n const indexOfFirstProduct = indexOfLastProduct - productsPerPage;\r\n const currentProducts = filteredProducts.slice(indexOfFirstProduct, indexOfLastProduct);\r\n const visiblePageCount = Math.min(7, totalPages);\r\n const handlePageChange = (pageNumber) => {\r\n setCurrentPage(pageNumber);\r\n };\r\n\r\n const getStartPage = () => {\r\n if (currentPage <= Math.ceil(visiblePageCount / 2)) {\r\n return 1;\r\n } else if (currentPage >= totalPages - Math.floor(visiblePageCount / 2)) {\r\n return totalPages - visiblePageCount + 1;\r\n } else {\r\n return currentPage - Math.floor(visiblePageCount / 2);\r\n }\r\n };\r\n\r\n const startPage = getStartPage();\r\n\r\n const beforePseudoStyle = {\r\n borderRadius: \"24px\",\r\n transition: \"all 0.2s\",\r\n };\r\n\r\n const handleOptionChange = (e) => {\r\n setSelectedOption(e.target.value);\r\n };\r\n\r\n const toggleStock = () => {\r\n setShowOutOfStock((prevShowOutOfStock) => !prevShowOutOfStock);\r\n };\r\n\r\n useEffect(() => {\r\n document.title = \"Product Brands :: TriggerCraft\";\r\n getBrands();\r\n getProducts();\r\n }, []);\r\n //console.log(brandId, selectedBrand && selectedBrand)\r\n //const textColor = selectedBrand && selectedBrand.accentBrandColour;\r\n return (\r\n <>\r\n
      \r\n
      \r\n \r\n
      \r\n\r\n {selectedBrand && selectedBrand.brandBannerImages ?\r\n
      \r\n {selectedBrand\r\n
      \r\n :\r\n
      \r\n {selectedBrand\r\n
      \r\n }\r\n
      \r\n
      \r\n
      \r\n All Products  \r\n
      \r\n \r\n \r\n
      \r\n   In Stock Only\r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n {filteredProducts.length === 0 ? (\r\n

      No products for {selectedBrand && selectedBrand.title}

      \r\n ) : (\r\n currentProducts.map((product) => (\r\n
      \r\n = new Date() && new Date(product.dateSPriceEnds) >= new Date()) || (product.sPrice && product.ongoing) ? product.sPrice : product.price}\r\n prevPrice={(product.sPrice && product.dateSPriceEnds && new Date(product.dateSPriceEnds) >= new Date() && new Date(product.dateSPriceEnds) >= new Date()) || (product.sPrice && product.ongoing) ? product.price : product.sPrice}\r\n title={product.title}\r\n description={product.shortDescription}\r\n />\r\n
      \r\n )))}\r\n {filteredProducts.length > productsPerPage && (
      \r\n \r\n {Array.from({ length: Math.min(visiblePageCount, totalPages) }).map((_, index) => {\r\n const pageNumber = startPage + index;\r\n return (\r\n pageNumber > 0 &&\r\n pageNumber <= totalPages && (\r\n handlePageChange(pageNumber)}\r\n disabled={currentPage === pageNumber}\r\n className={currentPage === pageNumber ? \"pagination-active ellipsis-button\" : \"ellipsis-button\"}\r\n >\r\n {pageNumber}\r\n \r\n )\r\n );\r\n })}\r\n\r\n \r\n
      )}\r\n
      \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ProductBrandPage;","import React, { useContext, useEffect, useState } from 'react';\r\nimport { Link, useLocation, useParams } from 'react-router-dom';\r\nimport { Context } from '../helpers/Context';\r\nimport FixedMessenger from './FixedMessenger';\r\nimport { ProductCard } from './ProductCard';\r\n\r\nconst ProductPage = (props) => {\r\n const [loading, setLoading] = useState(true);\r\n const [isDivVisible, setIsDivVisible] = useState(window.innerWidth >= 800);\r\n const [maxPrice, setMaxPrice] = useState(100000);\r\n const [selectedCategories, setSelectedCategories] = useState(JSON.parse(localStorage.getItem('selectedCategories')) || []);\r\n const [collapsedCategories, setCollapsedCategories] = useState(JSON.parse(localStorage.getItem('collapsedCategories')) || []);\r\n const [sort, setSort] = useState(null);\r\n const [showOutOfStock, setShowOutOfStock] = useState(true);\r\n const [selectedOption, setSelectedOption] = useState('lowest');\r\n const [productsPerPage] = useState(9);\r\n const location = useLocation();\r\n const [currentPage, setCurrentPage] = useState(1);\r\n\r\n const handleCategoryChange = (event) => {\r\n const categoryId = event.target.id;\r\n if (selectedCategories.includes(categoryId)) {\r\n localStorage.setItem('selectedCategories', JSON.stringify(selectedCategories.filter(id => id !== categoryId)));\r\n setSelectedCategories(selectedCategories.filter(id => id !== categoryId));\r\n } else {\r\n localStorage.setItem('selectedCategories', JSON.stringify([...selectedCategories, categoryId]));\r\n setSelectedCategories([...selectedCategories, categoryId]);\r\n }\r\n };\r\n\r\n const handleDeselectAll = () => {\r\n setSelectedCategories([]);\r\n setCollapsedCategories([]);\r\n localStorage.removeItem('selectedCategories');\r\n localStorage.removeItem('collapsedCategories');\r\n setMaxPrice(100000)\r\n };\r\n\r\n const toggleCategory = (categoryId) => {\r\n if (collapsedCategories.includes(categoryId)) {\r\n localStorage.setItem('collapsedCategories', JSON.stringify(collapsedCategories.filter(id => id !== categoryId)));\r\n setCollapsedCategories(collapsedCategories.filter((id) => id !== categoryId));\r\n } else {\r\n localStorage.setItem('collapsedCategories', JSON.stringify([...collapsedCategories, categoryId]));\r\n setCollapsedCategories([...collapsedCategories, categoryId]);\r\n }\r\n };\r\n\r\n const { products, categories, subcategories, getProducts, getCategories, getSubcategories } = useContext(Context);\r\n const indexOfLastProduct = currentPage * productsPerPage;\r\n const indexOfFirstProduct = indexOfLastProduct - productsPerPage;\r\n let filteredProducts = products\r\n .filter(product => selectedCategories.length === 0 || selectedCategories.some(categoryId => product.selectedCategories.includes(categoryId)));\r\n\r\n filteredProducts = filteredProducts.filter(\r\n (product) => product.price <= maxPrice || (product.sPrice && product.sPrice <= maxPrice)\r\n );\r\n\r\n if (selectedOption === 'lowest') {\r\n filteredProducts = filteredProducts.sort((a, b) => {\r\n const aPrice = a.sPrice || a.price;\r\n const bPrice = b.sPrice || b.price;\r\n return aPrice - bPrice;\r\n });\r\n } else if (selectedOption === 'highest') {\r\n filteredProducts = filteredProducts.sort((a, b) => {\r\n const aPrice = a.sPrice || a.price;\r\n const bPrice = b.sPrice || b.price;\r\n return bPrice - aPrice;\r\n });\r\n } else if (selectedOption === 'a-z') {\r\n filteredProducts = filteredProducts.sort((a, b) => a.title.localeCompare(b.title));\r\n } else if (selectedOption === 'z-a') {\r\n filteredProducts = filteredProducts.sort((a, b) => b.title.localeCompare(a.title));\r\n }\r\n\r\n if (showOutOfStock) {\r\n filteredProducts = filteredProducts.filter(item => item.stock > 0);\r\n } else if (!showOutOfStock) {\r\n filteredProducts = filteredProducts.filter(item => item);\r\n }\r\n\r\n const currentProducts = filteredProducts.slice(indexOfFirstProduct, indexOfLastProduct);\r\n\r\n\r\n const handlePageChange = (pageNumber) => {\r\n setCurrentPage(pageNumber);\r\n };\r\n const totalPages = Math.ceil(filteredProducts.length / productsPerPage);\r\n const visiblePageCount = 7;\r\n\r\n const getStartPage = () => {\r\n if (currentPage <= Math.ceil(visiblePageCount / 2)) {\r\n return 1;\r\n } else if (currentPage >= totalPages - Math.floor(visiblePageCount / 2)) {\r\n return totalPages - visiblePageCount + 1;\r\n } else {\r\n return currentPage - Math.floor(visiblePageCount / 2);\r\n }\r\n };\r\n\r\n const startPage = getStartPage();\r\n\r\n const handleOptionChange = (e) => {\r\n setSelectedOption(e.target.value);\r\n };\r\n\r\n const toggleDiv = () => {\r\n setIsDivVisible(!isDivVisible);\r\n };\r\n\r\n const toggleStock = () => {\r\n setShowOutOfStock((prevShowOutOfStock) => !prevShowOutOfStock);\r\n };\r\n useEffect(() => {\r\n document.title = \"Products :: TriggerCraft\";\r\n getProducts().then(() => setLoading(false));\r\n getCategories();\r\n getSubcategories();\r\n // getProducts().then(() => setLoading(false));\r\n\r\n const handleResize = () => {\r\n setIsDivVisible(window.innerWidth >= 768);\r\n };\r\n window.addEventListener(\"resize\", handleResize);\r\n\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, [])\r\n //console.log(selectedCategories)\r\n return (\r\n <>\r\n \r\n

      Products

      \r\n
      \r\n \r\n {isDivVisible && (
      \r\n

      Filter

      \r\n
      \r\n \r\n
      Product Categories
      \r\n {categories.map((category) => (\r\n
      \r\n
      toggleCategory(category.id)}>\r\n {category.title}{collapsedCategories.includes(category.id) ? '-' : '+'}\r\n
      \r\n
      \r\n {subcategories\r\n .filter((sub) => sub.categoryId === category.id)\r\n .map((sub) => (\r\n
      \r\n handleCategoryChange(e)}\r\n />\r\n \r\n
      \r\n ))}\r\n
      \r\n
      \r\n ))}\r\n
      \r\n\r\n
      \r\n
      Filter By Price
      \r\n
      \r\n 0\r\n setMaxPrice(e.target.value)} />\r\n {maxPrice}\r\n
      \r\n
      \r\n\r\n \r\n\r\n
      )}\r\n
      \r\n
      \r\n
      \r\n
      \r\n All Products  \r\n
      \r\n \r\n \r\n
      \r\n   In Stock Only\r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n {loading ?   Loading... : filteredProducts.length ? currentProducts.map((product) => (\r\n
      \r\n = new Date()) || (product.sPrice && product.ongoing) ? product.sPrice : product.price}\r\n prevPrice={(product.sPrice && product.dateSPriceEnds && new Date(product.dateSPriceEnds) >= new Date()) || (product.sPrice && product.ongoing) ? product.price : product.sPrice}\r\n />\r\n
      \r\n )) :

      No Products Found

      }\r\n {!loading && filteredProducts.length ?
      \r\n \r\n\r\n {Array.from({ length: Math.min(visiblePageCount, totalPages) }).map((_, index) => {\r\n const pageNumber = startPage + index;\r\n return (\r\n pageNumber > 0 &&\r\n pageNumber <= totalPages && (\r\n handlePageChange(pageNumber)}\r\n disabled={currentPage === pageNumber}\r\n className={currentPage === pageNumber ? \"pagination-active ellipsis-button\" : \"ellipsis-button\"}\r\n >\r\n {pageNumber}\r\n \r\n )\r\n );\r\n })}\r\n\r\n \r\n
      : \"\"}\r\n
      \r\n
      \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ProductPage;","import React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Button } from 'reactstrap';\r\nimport { Context } from '../helpers/Context';\r\nimport FixedMessenger from './FixedMessenger';\r\nimport { ProductCard } from './ProductCard';\r\n\r\nconst ProductSearch = () => {\r\n const { products, getProducts } = useContext(Context);\r\n const [loading, setLoading] = useState(true);\r\n const [keyword, setKeyword] = useState(JSON.parse(localStorage.getItem('productSearch')) || \"\");\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const inputRef = useRef(null);\r\n const productsPerPage = 12;\r\n\r\n const SplitKeyword = keyword.toLowerCase().split(\" \");\r\n const regPattern = SplitKeyword.map(word => { if (word) return `(?=.*${word})`; else return \"\"; }).join('');\r\n const regex = new RegExp(regPattern);\r\n\r\n const filterByKeyword = (array, keyword) => {\r\n const lowerCaseKeyword = keyword.toLowerCase(); // Convert the keyword to lowercase for case-insensitive search\r\n\r\n return array.filter(item => {\r\n // Get all values of the object and join them into a single string\r\n const combinedValues = Object.values(item)\r\n .map(value => value?.toString().toLowerCase()) // Convert each value to string and lowercase\r\n .join(' '); // Combine all values into a single string\r\n\r\n // Check if the keyword exists in the combined values\r\n return combinedValues.includes(lowerCaseKeyword);\r\n });\r\n };\r\n\r\n const filteredProducts = filterByKeyword(products, keyword);\r\n //const filteredProducts = products.filter(item => item.stock).filter(item => {\r\n // if (!keyword) {\r\n // return true;\r\n // } else {\r\n // return regex.test(item.title.toLowerCase()) || regex.test(item.tags.toLowerCase());\r\n // }\r\n //});\r\n\r\n const totalPages = Math.ceil(filteredProducts.length / productsPerPage);\r\n const indexOfLastProduct = currentPage * productsPerPage;\r\n const indexOfFirstProduct = indexOfLastProduct - productsPerPage;\r\n const currentProducts = filteredProducts.slice(indexOfFirstProduct, indexOfLastProduct);\r\n const visiblePageCount = Math.min(7, totalPages);\r\n\r\n const handlePageChange = (pageNumber) => {\r\n setCurrentPage(pageNumber);\r\n };\r\n\r\n const getStartPage = () => {\r\n if (currentPage <= Math.ceil(visiblePageCount / 2)) {\r\n return 1;\r\n } else if (currentPage >= totalPages - Math.floor(visiblePageCount / 2)) {\r\n return totalPages - visiblePageCount + 1;\r\n } else {\r\n return currentPage - Math.floor(visiblePageCount / 2);\r\n }\r\n };\r\n\r\n const startPage = getStartPage();\r\n\r\n useEffect(() => {\r\n document.title = \"Product Search :: TriggerCraft\";\r\n inputRef.current.focus();\r\n getProducts();\r\n console.log(products);\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n
      \r\n
      \r\n { setKeyword(e.target.value); localStorage.setItem('productSearch', JSON.stringify(e.target.value)); }} placeholder=\"Enter Keyword...\" aria-describedby=\"basic-addon\" />\r\n
      \r\n {filteredProducts.length === 0 ? (\r\n

      No results found for \"{keyword}\"

      \r\n ) : (\r\n currentProducts.map((product) => (\r\n
      \r\n = new Date()) || (product.sPrice && product.ongoing) ? product.sPrice : product.price}\r\n prevPrice={(product.sPrice && product.dateSPriceEnds && new Date(product.dateSPriceEnds) >= new Date()) || (product.sPrice && product.ongoing) ? product.price : product.sPrice}\r\n />\r\n
      \r\n )))}\r\n {filteredProducts.length > productsPerPage && (
      \r\n \r\n {Array.from({ length: Math.min(visiblePageCount, totalPages) }).map((_, index) => {\r\n const pageNumber = startPage + index;\r\n return (\r\n pageNumber > 0 &&\r\n pageNumber <= totalPages && (\r\n handlePageChange(pageNumber)}\r\n disabled={currentPage === pageNumber}\r\n className={currentPage === pageNumber ? \"pagination-active ellipsis-button\" : \"ellipsis-button\"}\r\n >\r\n {pageNumber}\r\n \r\n )\r\n );\r\n })}\r\n\r\n \r\n
      )}\r\n
      \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ProductSearch;","var _excluded = [\"className\", \"cssModule\", \"tabs\", \"pills\", \"vertical\", \"horizontal\", \"justified\", \"fill\", \"navbar\", \"card\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Adding card prop adds `.card-header-tabs` or `.card-header-pills` class */\n card: PropTypes.bool,\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** fills the nav to extend to full available width */\n fill: PropTypes.bool,\n /** Change the horizontal alignment of your nav */\n horizontal: PropTypes.oneOf(['center', 'end']),\n /** All horizontal space will be occupied by nav links, but unlike the `fill` above, every nav item will be the same width. */\n justified: PropTypes.bool,\n /** Add navbar for a full-height and lightweight navigation */\n navbar: PropTypes.bool,\n /** Make NavItems look like pills */\n pills: PropTypes.bool,\n /** Make NavItems look like tabs */\n tabs: PropTypes.bool,\n /** Set a custom element for this component */\n tag: tagPropType,\n /** Stack your navigation by changing the flex item direction */\n vertical: PropTypes.oneOfType([PropTypes.bool, PropTypes.string])\n};\nvar getVerticalClass = function getVerticalClass(vertical) {\n if (vertical === false) {\n return false;\n }\n if (vertical === true || vertical === 'xs') {\n return 'flex-column';\n }\n return \"flex-\".concat(vertical, \"-column\");\n};\nfunction Nav(props) {\n var className = props.className,\n cssModule = props.cssModule,\n tabs = props.tabs,\n pills = props.pills,\n _props$vertical = props.vertical,\n vertical = _props$vertical === void 0 ? false : _props$vertical,\n horizontal = props.horizontal,\n justified = props.justified,\n fill = props.fill,\n navbar = props.navbar,\n card = props.card,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'ul' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, navbar ? 'navbar-nav' : 'nav', horizontal ? \"justify-content-\".concat(horizontal) : false, getVerticalClass(vertical), {\n 'nav-tabs': tabs,\n 'card-header-tabs': card && tabs,\n 'nav-pills': pills,\n 'card-header-pills': card && pills,\n 'nav-justified': justified,\n 'nav-fill': fill\n }), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nNav.propTypes = propTypes;\nexport default Nav;","var _excluded = [\"className\", \"cssModule\", \"active\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add active class to element */\n active: PropTypes.bool,\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction NavItem(props) {\n var className = props.className,\n cssModule = props.cssModule,\n active = props.active,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'li' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'nav-item', active ? 'active' : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nNavItem.propTypes = propTypes;\nexport default NavItem;","function _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); }\nvar _excluded = [\"className\", \"cssModule\", \"active\", \"tag\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\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); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add active class to NavLink */\n active: PropTypes.bool,\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Disable the link */\n disabled: PropTypes.bool,\n href: PropTypes.any,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n /** Function to be triggered on click */\n onClick: PropTypes.func,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nvar NavLink = /*#__PURE__*/function (_React$Component) {\n _inherits(NavLink, _React$Component);\n var _super = _createSuper(NavLink);\n function NavLink(props) {\n var _this;\n _classCallCheck(this, NavLink);\n _this = _super.call(this, props);\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n _createClass(NavLink, [{\n key: \"onClick\",\n value: function onClick(e) {\n if (this.props.disabled) {\n e.preventDefault();\n return;\n }\n if (this.props.href === '#') {\n e.preventDefault();\n }\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n active = _this$props.active,\n _this$props$tag = _this$props.tag,\n Tag = _this$props$tag === void 0 ? 'a' : _this$props$tag,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutProperties(_this$props, _excluded);\n var classes = mapToCssModules(classNames(className, 'nav-link', {\n disabled: attributes.disabled,\n active: active\n }), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n onClick: this.onClick,\n className: classes\n }));\n }\n }]);\n return NavLink;\n}(React.Component);\nNavLink.propTypes = propTypes;\nexport default NavLink;","import React from 'react';\n\n/**\n * TabContext\n * {\n * activeTabId: PropTypes.any\n * }\n */\nexport var TabContext = /*#__PURE__*/React.createContext({});","function _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); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\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); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { TabContext } from './TabContext';\nimport { mapToCssModules, omit, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n activeTab: PropTypes.any,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar TabContent = /*#__PURE__*/function (_Component) {\n _inherits(TabContent, _Component);\n var _super = _createSuper(TabContent);\n function TabContent(props) {\n var _this;\n _classCallCheck(this, TabContent);\n _this = _super.call(this, props);\n _this.state = {\n activeTab: _this.props.activeTab\n };\n return _this;\n }\n _createClass(TabContent, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n _this$props$tag = _this$props.tag,\n Tag = _this$props$tag === void 0 ? 'div' : _this$props$tag;\n var attributes = omit(this.props, Object.keys(propTypes));\n var classes = mapToCssModules(classNames('tab-content', className), cssModule);\n return /*#__PURE__*/React.createElement(TabContext.Provider, {\n value: {\n activeTabId: this.state.activeTab\n }\n }, /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n })));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (prevState.activeTab !== nextProps.activeTab) {\n return {\n activeTab: nextProps.activeTab\n };\n }\n return null;\n }\n }]);\n return TabContent;\n}(Component);\nexport default TabContent;\nTabContent.propTypes = propTypes;","var _excluded = [\"className\", \"cssModule\", \"tabId\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { TabContext } from './TabContext';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n tabId: PropTypes.any\n};\nexport default function TabPane(props) {\n var className = props.className,\n cssModule = props.cssModule,\n tabId = props.tabId,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var getClasses = function getClasses(activeTabId) {\n return mapToCssModules(classNames('tab-pane', className, {\n active: tabId === activeTabId\n }), cssModule);\n };\n return /*#__PURE__*/React.createElement(TabContext.Consumer, null, function (_ref) {\n var activeTabId = _ref.activeTabId;\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: getClasses(activeTabId)\n }));\n });\n}\nTabPane.propTypes = propTypes;","var _excluded = [\"className\", \"cssModule\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction CardTitle(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'card-title'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nCardTitle.propTypes = propTypes;\nexport default CardTitle;","var _excluded = [\"className\", \"cssModule\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction CardText(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'p' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'card-text'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nCardText.propTypes = propTypes;\nexport default CardText;","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\n\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\n\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _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\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexport default HelmetExport;\nexport { HelmetExport as Helmet };\n","/* eslint-disable jsx-a11y/alt-text */\r\n/* eslint-disable jsx-a11y/img-redundant-alt */\r\n\r\nimport classnames from 'classnames';\r\nimport { useContext, useEffect, useState } from \"react\";\r\nimport { Link, useLocation, useNavigate, useParams } from \"react-router-dom\";\r\nimport { Card, CardText, CardTitle, Col, Nav, NavItem, NavLink, Row, TabContent, Table, TabPane } from 'reactstrap';\r\nimport { getAuthToken, getUserDetails } from \"../helpers/authentication\";\r\nimport { Context } from \"../helpers/Context\";\r\nimport { getCurrentDomain } from \"../helpers/Lookup\";\r\nimport FixedMessenger from \"./FixedMessenger\";\r\nimport { ProductCard } from \"./ProductCard\";\r\nimport { Helmet } from \"react-helmet\";\r\n//import moment from \"moment\";\r\nimport { getProductPrice } from \"../helpers/Global\";\r\n\r\nfunction scrollToSection(sectionId) {\r\n const element = document.getElementById(sectionId);\r\n\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'smooth' });\r\n }\r\n}\r\n\r\nconst ProductView = () => {\r\n const [hover, setHover] = useState(null);\r\n const [quantity, setQuantity] = useState(1);\r\n const [loading, setLoading] = useState(true);\r\n const [activeTab, setActiveTab] = useState('1');\r\n const [relatedProducts, setRelatedProducts] = useState([]);\r\n const [newReview, setNewReview] = useState({ name: getAuthToken() ? `${getUserDetails().firstName} ${getUserDetails().lastName}` : \"\", rating: null, comment: '' });\r\n const location = useLocation();\r\n const { sku } = useParams();\r\n const navigate = useNavigate();\r\n const [currentImage, setCurrentImage] = useState(null);\r\n const [CategoryList, SetCategoryList] = useState(null);\r\n const [productData, setProductData] = useState();\r\n\r\n const { handleAddToCart, sendCustomEvent, handleRemoveFromWishlist, handleAddToWishlist, isItemInWishlist, getProducts, subcategories, products, AddProductActivity, getRandomObjectsFromArray, getSubcategories, categories, getReviews, reviews, setReviews, getBrands, brands } = useContext(Context);\r\n //const productData = products.find(item => item.sku.toLowerCase() === sku.toLowerCase());\r\n\r\n const decrement = () => {\r\n setQuantity((prevState) => {\r\n if (prevState === 1) return 1;\r\n return prevState - 1;\r\n });\r\n };\r\n const increment = () => {\r\n //if (prevState < productData.stock)\r\n setQuantity((prevState) => (prevState < productData.stock) ? prevState + 1 : prevState);\r\n };\r\n\r\n const handleTabClick = (tabId) => {\r\n setActiveTab(tabId);\r\n };\r\n\r\n const changeImage = (newImage) => {\r\n setCurrentImage(newImage);\r\n };\r\n\r\n const scrollTo = (sectionId) => {\r\n scrollToSection(sectionId);\r\n };\r\n\r\n const addReview = async (e) => {\r\n var bearer = 'Bearer ' + getAuthToken();\r\n const data = {\r\n Id: 0,\r\n ProductId: productData.id,\r\n Name: newReview.name,\r\n Comment: newReview.comment,\r\n Rating: newReview.rating,\r\n DateAdded: new Date(),\r\n AddedBy: getUserDetails().id,\r\n Status: 1,\r\n }\r\n try {\r\n if (newReview.name && newReview.comment) {\r\n setLoading(true);\r\n const response = await fetch('/api/reviews', {\r\n method: 'POST',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n\r\n if (response.ok) {\r\n setReviews([...reviews, newReview]);\r\n sendCustomEvent(\"Product Review\", \"Reviewed A Product\", `${productData.title}`)\r\n setLoading(false);\r\n } else {\r\n\r\n setLoading(false);\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n setNewReview({ name: `${getUserDetails().firstName} ${getUserDetails().lastName}`, rating: null, comment: '' });\r\n };\r\n\r\n\r\n const loadData = async (sku) => {\r\n var bearer = 'Bearer ' + getAuthToken();\r\n try {\r\n const response = await fetch('/api/products/getbysku/' + sku, {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n setProductData(data);\r\n //setLoading(false);\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n window.location.href = \"/login\";\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n\r\n const fetchData = async () => {\r\n console.log(\"In fetch Data\");\r\n try {\r\n //await console.log(getProducts());\r\n //await getProducts();\r\n //let product = products.find(item => item.sku.toLowerCase() === sku.toLowerCase());\r\n if (!loading)\r\n document.title = `${productData.title} :: TriggerCraft`;\r\n //document.querySelector('meta[name=\"description\"]').setAttribute(\"content\", product.shortDescription.replace(/<\\/?[^>]+(>|$)/g, \"\"));\r\n //const productData = products.find(item => item.sku.toLowerCase() === sku.toLowerCase());\r\n //await setProductData(product);\r\n\r\n\r\n await getSubcategories();\r\n await getBrands();\r\n //console.log(product);\r\n //setLoading(false);\r\n } catch (error) {\r\n console.error(\"Error fetching data:\", error);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.title = \"Product View :: TriggerCraft\";\r\n //fetchData();\r\n loadData(sku)\r\n getProducts();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (productData) {\r\n //console.log(\"In got Product Data\");\r\n console.log(productData);\r\n getSubcategories();\r\n getBrands();\r\n AddProductActivity(productData.id, 1);\r\n getReviews(productData.id);\r\n setCurrentImage(\"/assets/imgs/Trigger-Craft-Logo.png\")\r\n\r\n const relatedProductList = getRandomObjectsFromArray(products, 4, productData)\r\n setRelatedProducts(relatedProductList);\r\n\r\n if (productData.images) {\r\n let images = productData.images;\r\n if (productData.images.includes(\"DynamicData\")) images = JSON.parse(productData.images);\r\n //console.log(images)\r\n if (Array.isArray(images)) {\r\n for (let i = 0; i < 1; i++) {\r\n if (images[i].includes(\"DynamicData\") && images[i].includes(\"[\")) {\r\n const parsedImage = JSON.parse(images[i]);\r\n setCurrentImage(getCurrentDomain() + parsedImage[0]);\r\n } else {\r\n setCurrentImage(getCurrentDomain() + images[i]);\r\n }\r\n };\r\n } else if (images.includes(\"https\") && images.includes(\"[\")) {\r\n setCurrentImage(JSON.parse(images.split(\", \")[0])[0]);\r\n } else {\r\n setCurrentImage(images.split(\", \")[0]);\r\n }\r\n }\r\n\r\n setLoading(false);\r\n }\r\n }, [productData]);\r\n\r\n\r\n const productImage = productData && productData.images ? productData.images.includes(\"DynamicData\") ? JSON.parse(productData.images)[0].includes(\"\\\\\") && JSON.parse(productData.images)[0].includes(\"[\") ? getCurrentDomain() + JSON.parse(JSON.parse(productData.images))[0].replace(/\\\\/g, \"/\") : getCurrentDomain() + JSON.parse(productData.images)[0].replace(/\\\\/g, \"/\") : productData.images.split(\", \")[0] : \"/assets/imgs/Trigger-Craft-Logo.png\";\r\n\r\n const productPrice = getProductPrice(productData && productData.dateSPriceStarts, productData && productData.dateSPriceEnds, productData && productData.sPrice, productData && productData.price);\r\n const prevProductPrice = (productPrice === productData?.price) ? 0 : productData?.price;\r\n\r\n const currentBrand = productData && brands.find(item => item.id === productData.productBrandId);\r\n\r\n let imageUrls = [\"/assets/imgs/Trigger-Craft-Logo.png\"];\r\n\r\n if (productData && productData.images) {\r\n let images = productData.images;\r\n if (productData.images.includes(\"DynamicData\")) images = JSON.parse(productData.images);\r\n\r\n if (Array.isArray(images)) {\r\n imageUrls = images.map((image) => {\r\n if (image.includes(\"DynamicData\") && image.includes(\"[\")) {\r\n const parsedImage = JSON.parse(image);\r\n return parsedImage;\r\n } else {\r\n return image;\r\n }\r\n });\r\n } else if (images.includes(\"https\") && images.includes(\"[\")) {\r\n imageUrls = JSON.parse(images.split(\", \")[0]);\r\n } else {\r\n imageUrls = images.split(\", \");\r\n }\r\n }\r\n \r\n const RenderCategoryLink = (CategoryIDs) => {\r\n if (!CategoryIDs || CategoryIDs === \"\" || JSON.parse(CategoryIDs).length === 0) {\r\n return No Categories;\r\n }\r\n\r\n CategoryIDs = JSON.parse(CategoryIDs);\r\n return <>|{CategoryIDs?.map(GetCategorySlug)};\r\n }\r\n\r\n const GetCategorySlug = (id, idx) => {\r\n const cat = subcategories.find(c => c.id == id);\r\n return cat?.title && cat?.slug && {cat?.title}|\r\n }\r\n\r\n const RenderTagLink = (TagLink) => {\r\n\r\n let tagArr = [];\r\n if (TagLink !== \"\")\r\n tagArr = TagLink.split(\",\");\r\n return (\r\n tagArr.length > 0 ?\r\n <>|\r\n {\r\n tagArr.map((item, idx) =>\r\n \r\n {item.trim()}|\r\n {(idx === 4 && tagArr.length > 5) && <>
      |}\r\n
      \r\n )\r\n }\r\n \r\n :\r\n No tags\r\n )\r\n }\r\n\r\n if (loading)\r\n return;\r\n\r\n return (\r\n <>\r\n {!loading ? (\r\n\r\n
      \r\n \r\n\r\n {productData.title} :: TriggerCraft\r\n ]+(>|$)/g, \"\")} />\r\n \r\n \r\n \r\n ]+(>|$)/g, \"\")} />\r\n \r\n \r\n \r\n ]+(>|$)/g, \"\")} />\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n {/*
      */}\r\n
      \r\n {imageUrls.map((imageUrl, index) => (\r\n changeImage(imageUrl.includes(\"DynamicData\") ? getCurrentDomain() + imageUrl : imageUrl)}\r\n />))}\r\n
      \r\n
      \r\n
      \r\n {productData.title}\r\n
      \r\n currentBrand.id ? navigate(`/brands/products/${currentBrand.slug}`) : null} src={currentBrand?.brandImages ? getCurrentDomain() + currentBrand.brandImages : \"/assets/imgs/Trigger-Craft-Logo.png\"} />\r\n availability: {productData.stock > 0 ? In Stock : Out Of Stock}\r\n
      \r\n {reviews.length ? < i className=\"fa-solid fa-star\" style={{ color: \"#ffc107\", fontSize: \"16px\" }}>  {productData.avgRating}  { handleTabClick('3'); scrollTo('reviewSection'); }}>{productData.reviews} {productData.reviews > 1 ? \"REVIEWS\" : \"REVIEW\"}\r\n : Be the first to { handleTabClick('3'); scrollTo('reviewSection'); }}>REVIEW}\r\n
      \r\n\r\n {prevProductPrice > 0 ? {prevProductPrice.toCurrencyString()} : \"\"}\r\n {productPrice.toCurrencyString()}\r\n\r\n
      \r\n
      \r\n -\r\n {quantity}\r\n +\r\n
      \r\n {productData.stock > 0 ?\r\n :\r\n }\r\n\r\n {isItemInWishlist(productData.id) ? handleRemoveFromWishlist(productData.id)} className=\"fa-solid fa-heart text-danger ms-3 fs-2\" title=\"Remove From Wishlist\"> : handleAddToWishlist({ product: productData, productId: productData.id, price: productPrice, img: productImage })} className=\"fa-regular fa-heart fw-light ms-3 fs-2\" title=\"Add To Wishlist\">}\r\n
      \r\n {productData.stock <= productData.lowStockAmount && productData.stock > 0 && (\r\n
      Low Stock
      \r\n )}\r\n {productData.stock === 0 && (\r\n
      Out of Stock
      \r\n )}\r\n \r\n
      \r\n \r\n Category:
      {productData.selectedCategories && RenderCategoryLink(productData.selectedCategories)}\r\n
      \r\n \r\n Tags
      {RenderTagLink(productData.tags)}\r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n \r\n \r\n \r\n\r\n {productData.about && <>
      \r\n \r\n
      \r\n }\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
      SKU{productData.sku}
      GTIN{productData.gtin}
      Width{productData.width}
      Height{productData.height}
      Weight{productData.weight}
      Length{productData.length}
      \r\n \r\n {productData.additionalInfo && <>
      \r\n \r\n
      \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n Review Product\r\n {!reviews.find(item => getAuthToken() && item.addedBy === getUserDetails().id) ? <>
      \r\n {[...Array(5)].map((star, index) => {\r\n const currentRating = index + 1;\r\n return ();\r\n })}\r\n
      \r\n
      \r\n \r\n
      \r\n setNewReview({ ...newReview, comment: e.target.value })}\r\n />\r\n
      \r\n : You already reviewed this product.}\r\n
      \r\n \r\n \r\n \r\n Customer Reviews\r\n
      \r\n {reviews.length ? (reviews.map((review, index) => {\r\n const stars = Array.from({ length: review.rating }, (_, i) => i + 1);\r\n\r\n return (\r\n
      \r\n
      \r\n {stars.map((starIndex) => (\r\n \r\n ))}\r\n
      \r\n
      \r\n

      {review.name}

      \r\n

      {new Date(review.dateAdded).toLocaleDateString()}

      \r\n
      \r\n

      {review.comment}

      \r\n
      \r\n );\r\n })\r\n ) : No reviews at the moment for this product, be the first to pull the trigger.}\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n

      Related Products

      \r\n
      \r\n {relatedProducts.map((product) => {\r\n return (\r\n
      \r\n \r\n
      \r\n )\r\n })}\r\n
      \r\n
      \r\n
      \r\n
      ) :
      Loading....
      }\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ProductView;","import React, { useContext } from \"react\";\r\nimport { useEffect } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Context } from \"../helpers/Context\";\r\nimport { getCurrentDomain } from \"../helpers/Lookup\";\r\nimport FixedMessenger from \"./FixedMessenger\";\r\nimport PromotionsCard from \"./PromotionsCard\";\r\n\r\nconst Promotions = () => {\r\n const { getUpcomingPromotions, currentPromotions, getPromoCode, promoCode } = useContext(Context);\r\n useEffect(() => {\r\n document.title = \"Promotions :: TriggerCraft\";\r\n getUpcomingPromotions();\r\n getPromoCode();\r\n }, []);\r\n return (\r\n
      \r\n \r\n

      Promotions

      \r\n
      \r\n {currentPromotions.length ?
      \r\n {currentPromotions.map((promo, index) => {\r\n const promoCodeItem = promoCode.find(item => item.id === promo.promoCodeId);\r\n const code = promoCodeItem ? promoCodeItem.code : '';\r\n return (\r\n \r\n );\r\n })}\r\n {/**/}\r\n
      :\r\n No promotions at the moment, be on the lookout for future promotions.}\r\n
      \r\n\r\n \r\n
      \r\n );\r\n};\r\n\r\nexport default Promotions;","var _excluded = [\"className\", \"cssModule\", \"inline\", \"color\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n inline: PropTypes.bool,\n tag: tagPropType,\n color: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nfunction FormText(props) {\n var className = props.className,\n cssModule = props.cssModule,\n inline = props.inline,\n _props$color = props.color,\n color = _props$color === void 0 ? 'muted' : _props$color,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'small' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, !inline ? 'form-text' : false, color ? \"text-\".concat(color) : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nFormText.propTypes = propTypes;\nexport default FormText;","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { FormGroup, Label, Input, FormText, Button } from \"reactstrap\";\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { fieldRequired } from '../helpers/validation';\r\nimport { setAuthToken, setUserDetails } from '../helpers/authentication';\r\nimport { setIsAdmin } from '../helpers/Lookup';\r\n\r\nexport class Register extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n Id: 0,\r\n UserId: '',\r\n UserType: 0,\r\n FirstName: '',\r\n LastName: '',\r\n EmailAddress: '',\r\n EmailConfirmed: false,\r\n CurrentPassword: '',\r\n LastPassword: '',\r\n Mobile: '',\r\n Communication: 0,\r\n Credit: 0,\r\n Status: 1,\r\n DateAdded: new Date(),\r\n DateModified: new Date(),\r\n AddedBy: 0,\r\n DateVerified: new Date(),\r\n LastLogin: new Date(),\r\n FailedLogins: 0,\r\n LockedOut: false,\r\n LockOutDate: new Date(),\r\n ResetPassword: false,\r\n LastIP: '',\r\n LoginCookie: '', \r\n };\r\n this.saveData = this.saveData.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Register :: TriggerCraft\";\r\n }\r\n\r\n fieldRequired = (value, errorId, errorClass) => {\r\n const showError = value.trim() === '';\r\n const errorElement = document.getElementById(errorId);\r\n if (errorElement) {\r\n errorElement.style.display = showError ? 'inline' : 'none';\r\n errorElement.className = showError ? errorClass : '';\r\n }\r\n };\r\n\r\n passwordFieldRequired = (condition, errorId, errorMessage) => {\r\n const errorElement = document.getElementById(errorId);\r\n if (errorElement) {\r\n errorElement.style.display = condition ? 'none' : 'inline';\r\n errorElement.textContent = condition ? '' : errorMessage;\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n
      \r\n
      \r\n
      \r\n
      \r\n \"Trigger-Craft\r\n
      \r\n
      \r\n
      \r\n

      Register

      \r\n\r\n \r\n \r\n {\r\n this.setState({ FirstName: e.target.value });\r\n this.fieldRequired(e.target.value, 'errFirstName', 'required');\r\n }}\r\n />\r\n \r\n \r\n \r\n {\r\n this.setState({ LastName: e.target.value });\r\n this.fieldRequired(e.target.value, 'errLastName', 'required');\r\n }}\r\n />\r\n \r\n \r\n \r\n {\r\n this.setState({ EmailAddress: e.target.value });\r\n this.fieldRequired(e.target.value, 'errEmail', 'required');\r\n }}\r\n />\r\n \r\n \r\n \r\n {\r\n this.setState({ CurrentPassword: e.target.value });\r\n this.fieldRequired(e.target.value, 'errPassword', 'required');\r\n }}\r\n />\r\n \r\n \r\n \r\n {\r\n //this.setState({ LastPassword: e.target.value === this.state.CurrentPassword });\r\n this.passwordFieldRequired(e.target.value === this.state.CurrentPassword, \"errConfirmPassword\", \"Password doesn't match\");\r\n }}\r\n />\r\n \r\n Password entered here should match the one in the above password\r\n field.\r\n \r\n \r\n \r\n \r\n {\r\n this.setState({ Mobile: e.target.value })\r\n }}\r\n />\r\n \r\n\r\n
      \r\n \r\n Already have account? Login\r\n \r\n \r\n
      \r\n {/*
      */}\r\n
      \r\n
      \r\n {/*
      Version: {getAppVersion()}
      */}\r\n
      \r\n
      \r\n
      \r\n );\r\n }\r\n\r\n async saveData() {\r\n \r\n let isValid = true;\r\n isValid &= fieldRequired(this.state.FirstName, \"errFirstName\", \" required\");\r\n isValid &= fieldRequired(this.state.LastName, \"errLastName\", \" required\");\r\n isValid &= fieldRequired(this.state.EmailAddress, \"errEmail\", \" required\");\r\n isValid &= fieldRequired(this.state.CurrentPassword, \"errPassword\", \" required\");\r\n //isValid &= fieldRequired(this.state.LastPassword, \"errConfirmPassword\", \" required\");\r\n\r\n if (isValid) {\r\n this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n //var bearer = 'Bearer ' + getAuthToken();\r\n var data = { Id: this.state.Id, Id: this.state.Id, UserId: this.state.UserId, UserType: this.state.UserType, FirstName: this.state.FirstName, LastName: this.state.LastName, EmailAddress: this.state.EmailAddress, EmailConfirmed: this.state.EmailConfirmed, CurrentPassword: this.state.CurrentPassword, LastPassword: this.state.LastPassword, Mobile: this.state.Mobile, Communication: this.state.Communication, Credit: this.state.Credit, Status: this.state.Status, DateAdded: this.state.DateAdded, DateModified: this.state.DateModified, AddedBy: this.state.AddedBy, DateVerified: this.state.DateVerified, LastLogin: this.state.LastLogin, FailedLogins: this.state.FailedLogins, LockedOut: this.state.LockedOut, LockOutDate: this.state.LockOutDate, ResetPassword: this.state.ResetPassword, LastIP: this.state.LastIP, LoginCookie: this.state.LoginCookie, }\r\n console.log(data);\r\n try {\r\n const response = await fetch('api/userdata/registeruser', {\r\n method: 'POST',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n //this.loadData();\r\n this.setState({ loading: false });\r\n console.log(data.item1);\r\n setAuthToken(data.item1, data.item2);\r\n setIsAdmin(data.item3);\r\n setUserDetails(data.item4);\r\n ToastUtility.show({\r\n title: 'Register', content: 'You have been successfully registered!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n\r\n window.location.href = \"/\";\r\n }\r\n else {\r\n this.setState({ loading: false });\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n if (response.status === 409) {\r\n ToastUtility.show({\r\n title: 'Register', content: 'A user with that email address already exists, login / go to forgot pasword!', timeOut: 8000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Register', content: 'There was an error registering you!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n }\r\n}","import React, { useEffect, useState } from 'react';\r\nimport { useNavigate, useParams } from 'react-router-dom';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport { FormGroup, Label, Input, FormText, Button } from \"reactstrap\";\r\n\r\nfunction ResetPassword() {\r\n const { id } = useParams();\r\n const [password, setPassword] = useState('');\r\n const [confirmPassword, setConfirmPassword] = useState('');\r\n const [passwordError, setPasswordError] = useState(null);\r\n const [confirmPasswordError, setConfirmPasswordError] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n const navigate = useNavigate();\r\n\r\n const fieldRequired = (value, errorState, errorMessage) => {\r\n if (!value) {\r\n setError(errorState, errorMessage);\r\n } else {\r\n setError(errorState, null);\r\n }\r\n };\r\n\r\n const setError = (errorState, errorMessage) => {\r\n switch (errorState) {\r\n case 'errPassword':\r\n setPasswordError(errorMessage);\r\n break;\r\n case 'errConfirmPassword':\r\n setConfirmPasswordError(errorMessage);\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const passwordFieldRequired = (isMatch, errorState, errorMessage) => {\r\n if (!isMatch) {\r\n setError(errorState, errorMessage);\r\n } else {\r\n setError(errorState, null);\r\n }\r\n };\r\n\r\n const handleResetPassword = async (e) => {\r\n //e.preventDefault();\r\n setLoading(true);\r\n const response = await fetch('/api/login/resetpassword', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n id,\r\n password,\r\n }),\r\n });\r\n\r\n if (response.ok) {\r\n setLoading(false);\r\n ToastUtility.show({\r\n title: 'Reset password', content: 'Password reset successfully', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n navigate(\"/login\");\r\n } else {\r\n setLoading(false);\r\n ToastUtility.show({\r\n title: 'Reset password', content: 'There was an error resetting password', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.title = \"Password Reset :: TriggerCraft\";\r\n }, []);\r\n\r\n return (\r\n\r\n
      \r\n
      \r\n
      \r\n
      \r\n \"Trigger-Craft\r\n
      \r\n
      \r\n
      \r\n

      Reset Password

      \r\n\r\n
      \r\n \r\n \r\n {\r\n setPassword(e.target.value);\r\n fieldRequired(e.target.value, 'errPassword', 'required');\r\n }}\r\n />\r\n \r\n \r\n \r\n {\r\n passwordFieldRequired(e.target.value === password, \"errConfirmPassword\", \"Password doesn't match\");\r\n }}\r\n />\r\n \r\n Password entered here should match the one in the above password\r\n field.\r\n \r\n \r\n \r\n
      \r\n\r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n );\r\n}\r\n\r\nexport default ResetPassword;","/* eslint-disable eqeqeq */\r\nimport React, { useState, useEffect, useContext } from 'react';\r\nimport { Link, useLocation, useParams } from 'react-router-dom';\r\nimport { Context } from '../helpers/Context';\r\nimport FixedMessenger from './FixedMessenger';\r\nimport { ProductCard } from './ProductCard';\r\n\r\nconst TagProducts = () => {\r\n\r\n const [loading, setLoading] = useState(true);\r\n const [isDivVisible, setIsDivVisible] = useState(window.innerWidth >= 800);\r\n const [maxPrice, setMaxPrice] = useState(40000);\r\n const [selectedBrands, setSelectedBrands] = useState(JSON.parse(localStorage.getItem('selectedBrands')) || []);\r\n // const [FilterBrands, setFilterBrands] = useState([]);\r\n const [sort, setSort] = useState(null);\r\n const [showOutOfStock, setShowOutOfStock] = useState(false);\r\n const [selectedOption, setSelectedOption] = useState('lowest');\r\n const [productsPerPage] = useState(9);\r\n const location = useLocation();\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const { tagName } = useParams();\r\n\r\n const FilterTagName = tagName.replace(/\\-|\\_/g, \" \");\r\n\r\n const handleCategoryChange = (event) => {\r\n const brandId = parseInt(event.target.id);\r\n if (selectedBrands.includes(brandId)) {\r\n localStorage.setItem('selectedBrands', JSON.stringify(selectedBrands.filter(id => id !== brandId)));\r\n setSelectedBrands(selectedBrands.filter(id => id !== brandId));\r\n } else {\r\n localStorage.setItem('selectedBrands', JSON.stringify([...selectedBrands, brandId]));\r\n setSelectedBrands([...selectedBrands, brandId]);\r\n }\r\n }\r\n\r\n const handleDeselectAll = () => {\r\n setSelectedBrands([]);\r\n localStorage.removeItem('selectedBrands');\r\n setMaxPrice(40000)\r\n };\r\n\r\n const { products, brands, getProducts, getBrands } = useContext(Context);\r\n const indexOfLastProduct = currentPage * productsPerPage;\r\n const indexOfFirstProduct = indexOfLastProduct - productsPerPage;\r\n const TagProducts = products.filter(product => product.tags.toLowerCase().includes(FilterTagName.toLowerCase()));\r\n let filteredProducts = TagProducts\r\n .filter(product => { return (selectedBrands.length === 0 || selectedBrands.some(productBrandId => product.productBrandId == productBrandId)) });\r\n\r\n filteredProducts = filteredProducts.filter(\r\n (product) => product.price <= maxPrice || (product.sPrice && product.sPrice <= maxPrice)\r\n );\r\n\r\n if (selectedOption === 'lowest') {\r\n filteredProducts = filteredProducts.sort((a, b) => {\r\n const aPrice = a.sPrice || a.price;\r\n const bPrice = b.sPrice || b.price;\r\n return aPrice - bPrice;\r\n });\r\n } else if (selectedOption === 'highest') {\r\n filteredProducts = filteredProducts.sort((a, b) => {\r\n const aPrice = a.sPrice || a.price;\r\n const bPrice = b.sPrice || b.price;\r\n return bPrice - aPrice;\r\n });\r\n } else if (selectedOption === 'a-z') {\r\n filteredProducts = filteredProducts.sort((a, b) => a.title.localeCompare(b.title));\r\n } else if (selectedOption === 'z-a') {\r\n filteredProducts = filteredProducts.sort((a, b) => b.title.localeCompare(a.title));\r\n }\r\n\r\n if (showOutOfStock) {\r\n filteredProducts = filteredProducts.filter(item => item.stock > 0);\r\n } else if (!showOutOfStock) {\r\n filteredProducts = filteredProducts.filter(item => item);\r\n }\r\n\r\n const currentProducts = filteredProducts.slice(indexOfFirstProduct, indexOfLastProduct);\r\n const handlePageChange = (pageNumber) => {\r\n setCurrentPage(pageNumber);\r\n };\r\n\r\n const totalPages = Math.ceil(filteredProducts.length / productsPerPage);\r\n const visiblePageCount = 7;\r\n const ProductBrandIDs = TagProducts.map(item => { return item.productBrandId });\r\n\r\n const FilteredBrands = brands.filter(c => ProductBrandIDs.includes(c.id));\r\n\r\n const getStartPage = () => {\r\n if (currentPage <= Math.ceil(visiblePageCount / 2)) {\r\n return 1;\r\n } else if (currentPage >= totalPages - Math.floor(visiblePageCount / 2)) {\r\n return totalPages - visiblePageCount + 1;\r\n } else {\r\n return currentPage - Math.floor(visiblePageCount / 2);\r\n }\r\n };\r\n\r\n const startPage = getStartPage();\r\n\r\n const handleOptionChange = (e) => {\r\n setSelectedOption(e.target.value);\r\n };\r\n\r\n const toggleDiv = () => {\r\n setIsDivVisible(!isDivVisible);\r\n };\r\n\r\n const toggleStock = () => {\r\n setShowOutOfStock((prevShowOutOfStock) => !prevShowOutOfStock);\r\n };\r\n\r\n useEffect(() => {\r\n document.title = \"Products :: TriggerCarft\";\r\n getBrands();\r\n getProducts().then(() => setLoading(false));\r\n // getCategories();\r\n\r\n const handleResize = () => {\r\n setIsDivVisible(window.innerWidth >= 768);\r\n };\r\n window.addEventListener(\"resize\", handleResize);\r\n\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, [])\r\n\r\n return (\r\n <>\r\n \r\n

      {FilterTagName[0].toUpperCase() + FilterTagName.substring(1)}

      \r\n
      \r\n \r\n {\r\n isDivVisible && (\r\n
      \r\n

      Filter

      \r\n
      \r\n \r\n
      Product Brands
      \r\n {FilteredBrands.map(brand => (\r\n
      \r\n handleCategoryChange(e)} />\r\n \r\n
      ))\r\n }\r\n
      \r\n\r\n
      \r\n
      Filter By Price
      \r\n
      \r\n 0\r\n setMaxPrice(e.target.value)} />\r\n {maxPrice}\r\n
      \r\n
      \r\n
      )\r\n }\r\n
      \r\n
      \r\n
      \r\n
      \r\n All Products  \r\n
      \r\n \r\n \r\n
      \r\n   In Stock Only\r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n {loading ?   Loading... : filteredProducts.length ? currentProducts.map((product) => (\r\n
      \r\n = new Date()) || (product.sPrice && product.ongoing) ? product.sPrice : product.price}\r\n prevPrice={(product.sPrice && product.dateSPriceEnds && new Date(product.dateSPriceEnds) >= new Date()) || (product.sPrice && product.ongoing) ? product.price : product.sPrice}\r\n />\r\n
      \r\n )) :

      No Products Found

      }\r\n {!loading && filteredProducts.length ?
      \r\n \r\n\r\n {Array.from({ length: Math.min(visiblePageCount, totalPages) }).map((_, index) => {\r\n const pageNumber = startPage + index;\r\n return (\r\n pageNumber > 0 &&\r\n pageNumber <= totalPages && (\r\n handlePageChange(pageNumber)}\r\n disabled={currentPage === pageNumber}\r\n className={currentPage === pageNumber ? \"pagination-active ellipsis-button\" : \"ellipsis-button\"}\r\n >\r\n {pageNumber}\r\n \r\n )\r\n );\r\n })}\r\n\r\n \r\n
      : \"\"}\r\n
      \r\n \r\n
      \r\n \r\n )\r\n}\r\n\r\nexport default TagProducts;","import React, { Component } from 'react';\r\nimport { Button, Modal, ModalFooter, ModalHeader, ModalBody, Label, Input, Row, Col } from 'reactstrap';\r\nimport { Context } from \"../helpers/Context\";\r\nimport { getAuthToken } from '../helpers/authentication';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport CartItem from \"./CartItem\";\r\n\r\nexport class TestPayments extends Component {\r\n \r\n constructor(props) {\r\n super(props);\r\n\r\n //const { cartItems, setShowCart, cartSubTotal, cart } = useContext(Context);\r\n //console.log(Context.)\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"Test Payments :: TriggerCraft\";\r\n }\r\n\r\n saveItem = async (event) => {\r\n event.stopPropagation();\r\n this.submitCart(19);\r\n \r\n }\r\n\r\n async submitCart(cartId) {\r\n\r\n //this.setState({ loading: true, showError: false, showSuccess: false });\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n //var data = { id: this.state.id, id: this.state.id, createdAt: this.state.createdAt, updatedAt: this.state.updatedAt, version: this.state.version, company: this.state.company, source: this.state.source, categoryCode: this.state.categoryCode, categoryName: this.state.categoryName, categoryDescription: this.state.categoryDescription, deleted: this.state.deleted, }\r\n\r\n\r\n /*const response = await fetch('api/cart', {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n }); */\r\n\r\n try {\r\n const response = await fetch('api/cart/ProcessPayment/' + cartId, {\r\n method: 'GET',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n if (response.ok) {\r\n const data = await response.json();\r\n \r\n console.log(data);\r\n //this.props.history.push(data.redirect);\r\n document.location.href = data.redirect;\r\n //this.loadData();\r\n //ToastUtility.show({\r\n // title: 'ME T_cap Categories', content: 'The me t_cap categories was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-success'\r\n //});\r\n }\r\n else {\r\n console.log(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n this.props.history.push(\"/login\");\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'ME T_cap Categories', content: 'There was an error saving the me t_cap categories!', timeOut: 5000, position: { X: 'Right', Y: 'Top' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <>\r\n

      Test Payments

      \r\n

      \r\n \r\n \r\n );\r\n }\r\n\r\n\r\n}","import React, { useContext } from \"react\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { getAuthToken } from \"../helpers/authentication\";\r\nimport { Context } from \"../helpers/Context\";\r\nimport { getCurrentDomain } from \"../helpers/Lookup\";\r\n\r\nconst WishListItem = ({ item }) => {\r\n const { handleAddToCart, handleRemoveFromWishlist } = useContext(Context);\r\n const navigate = useNavigate();\r\n let imageUrl = \"\"\r\n if (item.img) {\r\n let images = item.img;\r\n if (item.img.includes(\"DynamicData\")) images = JSON.parse(item.img);\r\n\r\n if (Array.isArray(images)) {\r\n images.map((pic) => {\r\n if (pic.includes(\"DynamicData\") && pic.includes(\"[\")) {\r\n const parsedImage = JSON.parse(pic);\r\n imageUrl = getCurrentDomain() + parsedImage[0];\r\n } else {\r\n imageUrl = getCurrentDomain() + pic;\r\n }\r\n });\r\n } else if (images.includes(\"https\") && images.includes(\"[\")) {\r\n imageUrl = JSON.parse(images.split(\", \")[0])[0];\r\n } else {\r\n imageUrl = images.split(\", \")[0];\r\n }\r\n }\r\n //console.log(item)\r\n return (\r\n
      \r\n handleRemoveFromWishlist(item.productId)}>\r\n
      navigate(`/products/product-view/${item.product.sku}`)}>\r\n
      \r\n {item.product.title}\r\n
      \r\n

      {item.product.title}

      \r\n
      \r\n

      R{item.price}.00

      \r\n

      0 ? \"text-success col-md-2\" : \"text-danger col-md-2\"}>{item.product.stock > 0 ? \"In Stock\" : \"Out Of Stock\"}

      \r\n {item.product.stock > 0 ?\r\n \r\n :
      }\r\n
      \r\n );\r\n};\r\n\r\nexport default WishListItem;","import React, { useContext, useEffect } from 'react';\r\nimport WishListItem from './WishListItem';\r\nimport { Context } from \"../helpers/Context\";\r\nimport { useNavigate, Link } from 'react-router-dom';\r\nimport FixedMessenger from './FixedMessenger';\r\n\r\nconst WishList = () => {\r\n const { wishlistItems } = useContext(Context);\r\n const navigate = useNavigate();\r\n\r\n useEffect(() => {\r\n document.title = \"Wish List :: TriggerCraft\";\r\n }, []);\r\n //console.log(wishlistItems)\r\n return (\r\n
      \r\n \r\n

      Wishlist

      \r\n {wishlistItems.length ? wishlistItems.map((item) => (\r\n \r\n )) : \r\n
      \r\n \r\n

      No Items In Wishlist

      \r\n \r\n
      }\r\n \r\n
      \r\n );\r\n};\r\nexport default WishList;","/* eslint-disable no-case-declarations */\nimport { ColumnDirective, ColumnsDirective, CommandColumn, Edit, GridComponent, Inject, Sort, Toolbar } from '@syncfusion/ej2-react-grids';\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\nimport { HtmlEditor, Image, Count, Link, Toolbar as rteToolbar, QuickToolbar, RichTextEditorComponent } from '@syncfusion/ej2-react-richtexteditor';\nimport { DatePickerComponent, TimePickerComponent } from '@syncfusion/ej2-react-calendars';\nimport { DropDownListComponent, ListBoxComponent } from '@syncfusion/ej2-react-dropdowns';\nimport { NumericTextBoxComponent, TextBoxComponent } from '@syncfusion/ej2-react-inputs';\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\nimport { useEffect, useState } from 'react';\nimport { confirm } from \"react-confirm-box\";\nimport { Button, Modal, ModalBody, ModalFooter, ModalHeader, Label } from 'reactstrap';\nimport { getAuthToken } from '../../helpers/authentication';\nimport { CommandTemplate, ConfirmDialogStyles, SearchGridToolbar, SimpleToolbarSettings } from '../../helpers/Global';\nimport { fieldRequired } from '../../helpers/validation';\nimport { BannerThumbnails } from '../BannerThumbnails';\n\nexport default function RazerBanners(props) {\n\n const [editData, setEditData] = useState();\n const [editId, setEditId] = useState(0);\n\n const [title, setTitle] = useState('');\n const [filename, setFilename] = useState('');\n\n\n const [startDate, setStartDate] = useState(new Date());\n const [endDate, setEndDate] = useState(new Date());\n const [actionType, setActionType] = useState('');\n const [actionData, setActionData] = useState('');\n const [displayOrder, setDisplayOrder] = useState(0);\n const [addedBy, setAddedBy] = useState(0);\n const [dateAdded, setDateAdded] = useState(new Date());\n const [modifiedBy, setModifiedBy] = useState(0);\n const [dateModified, setDateModified] = useState(new Date());\n const [status, setStatus] = useState(0);\n\n const [editModal, setEditModal] = useState(false);\n const [orderModal, setOrderModal] = useState(false);\n\n const toggle = () => setEditModal(!editModal);\n const toggleOrder = () => setOrderModal(!orderModal);\n\n\n\n const commandClick = async (args) => {\n switch (args.commandColumn.type) {\n case 'Delete':\n if (await confirm(\"Are you sure you want to delete this item?\", ConfirmDialogStyles)) {\n deleteItem(args.rowData.id);\n }\n break;\n default: //edit\n editItem(args.rowData.id);\n break;\n }\n }\n\n const loadData = async () => {\n var bearer = 'Bearer ' + getAuthToken();\n try {\n const response = await fetch('/api/razerbanners', {\n method: 'GET',\n withCredentials: true,\n credentials: 'include',\n headers: {\n 'Authorization': bearer,\n 'Content-Type': 'application/json'\n }\n });\n if (response.ok) {\n const data = await response.json();\n console.log(data);\n setEditData(data);\n }\n else {\n console.log(\"Loading error - \" + response.status + \": \" + response.statusText);\n if (response.status === 401)\n window.location.href = \"/login\";\n }\n\n } catch (e) {\n console.error(e);\n }\n }\n\n const addItem = () => { editItem(0); }\n\n const editItem = (id) => {\n if (id > 0) {\n const data = editData.find((item) => { return item.id === id });\n setEditId(data.id);\n \n setTitle(data.title);\n setFilename(data.filename);\n setStartDate(data.startDate);\n setEndDate(data.endDate);\n setActionType(data.actionType);\n setActionData(data.actionData);\n setDisplayOrder(data.displayOrder);\n setAddedBy(data.addedBy);\n setDateAdded(data.dateAdded);\n setModifiedBy(data.modifiedBy);\n setDateModified(data.dateModified);\n setStatus(data.status);\n\n }\n else {\n //clear state fields\n setEditId(0);\n\n setTitle('');\n setFilename('');\n setStartDate(new Date());\n setEndDate(new Date());\n setActionType('');\n setActionData('');\n setDisplayOrder(0);\n setAddedBy(0);\n setDateAdded(new Date());\n setModifiedBy(0);\n setDateModified(new Date());\n setStatus(0);\n\n }\n setEditModal(true);\n };\n\n const validateForm = () => {\n var valid = true;\n valid &= fieldRequired(title, 'tbTitleError', '* required');\n return valid;\n }\n\n const saveItem = async (event) => {\n event.stopPropagation();\n\n if (validateForm()) {\n const data = { id: editId, title: title, filename: filename };\n\n var bearer = 'Bearer ' + getAuthToken();\n\n //console.log(data);\n\n try {\n const response = await fetch('/api/razerbanners', {\n method: editId === 0 ? 'POST' : 'PUT',\n withCredentials: true,\n credentials: 'include',\n headers: {\n 'Authorization': bearer,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(data),\n\n });\n if (response.ok) {\n await response.json();\n loadData();\n ToastUtility.show({\n title: 'Razer Banners', content: 'The razer banners was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Bottom' }, showCloseButton: true, cssClass: 'toast-success'\n });\n }\n else {\n console.log(response.status + \": \" + response.statusText);\n if (response.status === 401)\n window.location.href = \"/login\";\n }\n\n } catch (e) {\n console.error(e);\n ToastUtility.show({\n title: 'Razer Banners', content: 'There was an error saving the razer banners!', timeOut: 5000, position: { X: 'Right', Y: 'Bottom' }, showCloseButton: true, cssClass: 'toast-danger'\n });\n }\n toggle();\n }\n }\n\n const deleteItem = async (dataId) => {\n\n var bearer = 'Bearer ' + getAuthToken();\n try {\n const response = await fetch('/api/razerbanners/' + dataId, {\n method: 'DELETE',\n withCredentials: true,\n credentials: 'include',\n headers: {\n 'Authorization': bearer,\n 'Content-Type': 'application/json'\n }\n });\n if (response.ok) {\n await response.json();\n loadData();\n ToastUtility.show({\n title: 'Razer Banners', content: 'The razer banners was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Bottom' }, showCloseButton: true, cssClass: 'toast-success'\n });\n }\n else {\n console.log(response.status + \": \" + response.statusText);\n if (response.status === 401)\n window.location.href = \"/login\";\n }\n } catch (e) {\n console.error(e);\n this.setState({ loading: false });\n ToastUtility.show({\n title: 'Razer Banners', content: 'There was an error deleting the razer banners!', timeOut: 5000, position: { X: 'Right', Y: 'Bottom' }, showCloseButton: true, cssClass: 'toast-danger'\n });\n }\n }\n\n const onItemDrop = (e) => {\r\n const orderedData = [];\r\n e.source.currentData.map((item, idx) =>\r\n orderedData.push({ ...item, displayOrder: (idx + 1) })\r\n );\r\n setEditData(orderedData);\r\n }\r\n\n const saveOrder = async () => {\r\n\r\n toggleOrder();\r\n\r\n\r\n var bearer = 'Bearer ' + getAuthToken();\r\n\r\n try {\r\n const response = await fetch('/api/razerbanners/savedisplayorder', {\r\n method: 'PUT',\r\n withCredentials: true,\r\n credentials: 'include',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(editData),\r\n });\r\n\r\n if (response.ok) {\r\n await response.json();\r\n loadData();\r\n ToastUtility.show({\r\n title: 'Razer Banners', content: 'The banner order was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Bottom' }, showCloseButton: true, cssClass: 'toast-success'\r\n });\r\n }\r\n else {\r\n console.error(response.status + \": \" + response.statusText);\r\n if (response.status === 401)\r\n window.location.href = \"/login\";\r\n }\r\n\r\n } catch (e) {\r\n console.error(e);\r\n //this.setState({ loading: false });\r\n ToastUtility.show({\r\n title: 'Razer Banners', content: 'There was an error saving the banner order!', timeOut: 5000, position: { X: 'Right', Y: 'Bottom' }, showCloseButton: true, cssClass: 'toast-danger'\r\n });\r\n }\r\n }\n\n\n useEffect(() => {\n loadData();\n }, []);\n\n return (\n <>\n
      \n

      Razer Banners

      \n
      \n Back To Admin\n \n \n
      \n
      \n\n \n \n \n \n \n \n \n\n \n Edit Razer Banners\n \n
      \n setTitle(e.value)} />\n
      \n
      \n
      \r\n \r\n setFilename(returned[0])} />
      \r\n
      \n \n \n \n \n \n \n \n\n \r\n Set Display Order\r\n \r\n Drag and Drop\r\n \r\n \r\n \r\n \r\n \r\n \r\n \n\n\n \n );\n}\n\r\n","/* eslint-disable no-case-declarations */\nimport { ColumnDirective, ColumnsDirective, CommandColumn, Edit, GridComponent, Inject, Sort, Toolbar } from '@syncfusion/ej2-react-grids';\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\nimport { HtmlEditor, Image, Count, Link, Toolbar as rteToolbar, QuickToolbar, RichTextEditorComponent } from '@syncfusion/ej2-react-richtexteditor';\nimport { DatePickerComponent, TimePickerComponent } from '@syncfusion/ej2-react-calendars';\nimport { DropDownListComponent, ListBoxComponent } from '@syncfusion/ej2-react-dropdowns';\nimport { NumericTextBoxComponent, TextBoxComponent } from '@syncfusion/ej2-react-inputs';\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\nimport { useEffect, useState } from 'react';\nimport { confirm } from \"react-confirm-box\";\nimport { Button, Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';\nimport { getAuthToken } from '../../helpers/authentication';\nimport { CommandTemplate, ConfirmDialogStyles, SearchGridToolbar, SimpleToolbarSettings } from '../../helpers/Global';\nimport { fieldRequired } from '../../helpers/validation';\n\n\nexport default function BestSellers(props) {\n\n const [editData, setEditData] = useState();\n const [editId, setEditId] = useState(0);\n\n const [site, setSite] = useState(0);\n const [productId, setProductId] = useState(0);\n const [displayOrder, setDisplayOrder] = useState(0);\n const [dateAdded, setDateAdded] = useState(new Date());\n const [addedBy, setAddedBy] = useState(0);\n\n const [editModal, setEditModal] = useState(false);\n\n const toggle = () => setEditModal(!editModal);\n\n\n const commandClick = async (args) => {\n switch (args.commandColumn.type) {\n case 'Delete':\n if (await confirm(\"Are you sure you want to delete this item?\", ConfirmDialogStyles)) {\n deleteItem(args.rowData.id);\n }\n break;\n default: //edit\n editItem(args.rowData.id);\n break;\n }\n }\n\n const loadData = async () => {\n var bearer = 'Bearer ' + getAuthToken();\n try {\n const response = await fetch('/api/bestsellers', {\n method: 'GET',\n withCredentials: true,\n credentials: 'include',\n headers: {\n 'Authorization': bearer,\n 'Content-Type': 'application/json'\n }\n });\n if (response.ok) {\n const data = await response.json();\n setEditData(data);\n }\n else {\n console.log(response.status + \": \" + response.statusText);\n if (response.status === 401)\n window.location.href = \"/login\";\n }\n\n } catch (e) {\n console.error(e);\n }\n }\n\n const addItem = () => { editItem(0); }\n\n const editItem = (id) => {\n if (id > 0) {\n const data = editData.find((item) => { return item.id === id });\n setEditId(data.id);\n //setId(data.id);\n setSite(data.site);\n setProductId(data.productId);\n setDisplayOrder(data.displayOrder);\n setDateAdded(data.dateAdded);\n setAddedBy(data.addedBy);\n\n }\n else {\n //clear state fields\n setEditId(0);\n\n setSite(0);\n setProductId(0);\n setDisplayOrder(0);\n setDateAdded(new Date());\n setAddedBy(0);\n\n }\n setEditModal(true);\n };\n\n const validateForm = () => {\n var valid = true;\n valid &= fieldRequired(site, 'tbSiteError', '* required');\n valid &= fieldRequired(productId, 'tbProductIdError', '* required');\n valid &= fieldRequired(displayOrder, 'tbDisplayOrderError', '* required');\n\n return valid;\n }\n\n const saveItem = async (event) => {\n event.stopPropagation();\n\n if (validateForm()) {\n const data = { id: editId, site: site, productId: productId, displayOrder: displayOrder, dateAdded: dateAdded, addedBy: addedBy, };\n\n var bearer = 'Bearer ' + getAuthToken();\n\n try {\n const response = await fetch('/api/bestsellers', {\n method: editId === 0 ? 'POST' : 'PUT',\n withCredentials: true,\n credentials: 'include',\n headers: {\n 'Authorization': bearer,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(data),\n });\n if (response.ok) {\n await response.json();\n loadData();\n ToastUtility.show({\n title: 'Best Sellers', content: 'The best sellers was successfully saved!', timeOut: 5000, position: { X: 'Right', Y: 'Bottom' }, showCloseButton: true, cssClass: 'toast-success'\n });\n }\n else {\n console.log(response.status + \": \" + response.statusText);\n if (response.status === 401)\n window.location.href = \"/login\";\n }\n\n } catch (e) {\n console.error(e);\n ToastUtility.show({\n title: 'Best Sellers', content: 'There was an error saving the best sellers!', timeOut: 5000, position: { X: 'Right', Y: 'Bottom' }, showCloseButton: true, cssClass: 'toast-danger'\n });\n }\n toggle();\n }\n }\n\n const deleteItem = async (dataId) => {\n\n var bearer = 'Bearer ' + getAuthToken();\n try {\n const response = await fetch('/api/bestsellers/' + dataId, {\n method: 'DELETE',\n withCredentials: true,\n credentials: 'include',\n headers: {\n 'Authorization': bearer,\n 'Content-Type': 'application/json'\n }\n });\n if (response.ok) {\n await response.json();\n loadData();\n ToastUtility.show({\n title: 'Best Sellers', content: 'The best sellers was successfully deleted!', timeOut: 5000, position: { X: 'Right', Y: 'Bottom' }, showCloseButton: true, cssClass: 'toast-success'\n });\n }\n else {\n console.log(response.status + \": \" + response.statusText);\n if (response.status === 401)\n window.location.href = \"/login\";\n }\n } catch (e) {\n console.error(e);\n this.setState({ loading: false });\n ToastUtility.show({\n title: 'Best Sellers', content: 'There was an error deleting the best sellers!', timeOut: 5000, position: { X: 'Right', Y: 'Bottom' }, showCloseButton: true, cssClass: 'toast-danger'\n });\n }\n }\n\n\n useEffect(() => {\n loadData();\n }, []);\n\n return (\n <>\n
      \n

      Best Sellers

      \n
      \n \n
      \n
      \n\n \n \n \n \n \n \n \n\n \n Edit Best Sellers\n \n
      \n setSite(e.value)} />\n
      \n
      \n\n
      \n setProductId(e.value)} />\n
      \n
      \n\n
      \n setDisplayOrder(e.value)} />\n
      \n
      \n\n\n \n \n \n \n \n \n\n \n );\n}\n\r\n","import { GoogleOAuthProvider } from '@react-oauth/google';\r\nimport { AboutUs } from \"./components/AboutUs\";\r\nimport { AdminDashboard } from \"./components/admin/AdminDashboard\";\r\nimport { AdminLanding } from \"./components/admin/AdminLanding\";\r\nimport { AdminOrders } from \"./components/admin/AdminOrders\";\r\nimport { AuditLog } from \"./components/admin/AuditLog\";\r\nimport { BannerLocations } from \"./components/admin/BannerLocations\";\r\nimport { Banners } from \"./components/admin/Banners\";\r\nimport { BannerSections } from \"./components/admin/BannerSections\";\r\nimport { ContactMessages } from \"./components/admin/ContactMessages\";\r\nimport { ContactReasons } from \"./components/admin/ContactReasons\";\r\nimport { FAQs as AdminFAQs } from \"./components/admin/FAQs\";\r\nimport { OrderDashboard } from \"./components/admin/OrderDashboard\";\r\nimport { PageContent } from \"./components/admin/PageContent\";\r\nimport { ProductBrands } from \"./components/admin/ProductBrands\";\r\nimport { ProductCategories } from \"./components/admin/ProductCategories\";\r\nimport { ProductRange } from \"./components/admin/ProductRange\";\r\nimport { Products } from \"./components/admin/Products\";\r\nimport { ProductSubCategories } from \"./components/admin/ProductSubCategories\";\r\nimport { ProductType } from \"./components/admin/ProductType\";\r\nimport { PromoCodes } from \"./components/admin/PromoCodes\";\r\nimport { Promotions } from \"./components/admin/Promotions\";\r\nimport { UserData } from \"./components/admin/UserData\";\r\nimport BrandPage from \"./components/BrandPage\";\r\nimport Categories from \"./components/Categories\";\r\nimport CategoryPage from \"./components/CategoryPage\";\r\nimport CheckoutPage from \"./components/CheckoutPage\";\r\nimport ContactUs from \"./components/ContactUs\";\r\nimport CustomerDeliveryAddresses from \"./components/CustomerDeliveryAddresses\";\r\nimport DeliveryDetails from \"./components/DeliveryDetails\";\r\nimport { FAQs } from \"./components/FAQs\";\r\nimport ForgotPassword from \"./components/ForgotPassword\";\r\nimport { Home } from \"./components/Home\";\r\nimport { Login } from \"./components/Login\";\r\nimport OrderCompletion from \"./components/OrderCompletion\";\r\nimport OrderHistory from \"./components/OrderHistory\";\r\nimport { PayFastCancelled } from \"./components/payfast/Cancelled\";\r\nimport PayFastComplete from \"./components/payfast/Complete\";\r\nimport { PersonalInformation } from \"./components/PersonalInformation\";\r\nimport ProductBrandPage from \"./components/ProductBrandPage\";\r\nimport ProductPage from \"./components/ProductPage\";\r\nimport ProductSearch from \"./components/ProductSearch\";\r\nimport ProductView from \"./components/ProductView\";\r\nimport PromotionPage from \"./components/PromotionPage\";\r\nimport { Register } from \"./components/Register\";\r\nimport ResetPassword from \"./components/ResetPassword\";\r\nimport TagProducts from \"./components/TagProducts\";\r\nimport { TestPayments } from \"./components/TestPayments\";\r\nimport WishList from \"./components/WishList\";\r\nimport RazerBanners from \"./components/admin/RazerBanners\";\r\nimport BestSellers from \"./components/admin/BestSellers\";\r\n\r\n\r\n\r\nconst AppRoutes = [\r\n { index: true, element: },\r\n //{ path: '*', element: },\r\n { path: '/personal-infomation', element: },\r\n { path: '/products/product-view/:sku', element: },\r\n { path: '/wish-list', element: },\r\n { path: '/products', element: },\r\n { path: '/brands', element: },\r\n { path: '/categories', element: },\r\n //{ path: '/categories/razer/:category', element: },\r\n { path: '/brands/products/:slug', element: },\r\n //{ path: '/brands/:slug', element: getAuthToken() ? : },\r\n { path: '/products/category/:category', element: },\r\n { path: '/products/tags/:tagName', element: },\r\n { path: '/products/category', element: },\r\n { path: '/faqs', element: },\r\n { path: '/product-search', element: },\r\n { path: '/order-history', element: },\r\n { path: '/delivery-details/:id', element: },\r\n { path: '/customer-delivery-addresses', element: },\r\n { path: '/promotions', element: },\r\n { path: '/test-payments', element: },\r\n { path: '/about-us', element: },\r\n { path: '/contact-us', element: },\r\n { path: '/checkout', element: },\r\n { path: '/checkout/complete', element: },\r\n { path: '/checkout/cancel', element: },\r\n { path: '/order-completion', element: },\r\n { path: '/login', element: },\r\n { path: '/register', element: },\r\n { path: '/forgot-password', element: },\r\n { path: '/reset-password/:id', element: },\r\n];\r\n\r\nexport const AdminRoutes = [\r\n { index: true, element: },\r\n { path: '/order-dashboard', element: },\r\n { path: '/administration', element: },\r\n { path: '/contact-reasons', element: },\r\n { path: '/users', element: },\r\n { path: '/banners', element: },\r\n { path: '/promo-codes', element: },\r\n { path: '/promotions', element: },\r\n { path: '/products', element: },\r\n { path: '/product-types', element: },\r\n { path: '/product-ranges', element: },\r\n { path: '/product-categories', element: },\r\n { path: '/product-sub-categories', element: },\r\n { path: '/product-brands', element: },\r\n { path: '/page-content', element: },\r\n { path: '/contact-messages', element: },\r\n { path: '/banner-sections', element: },\r\n { path: '/banner-locations', element: },\r\n { path: '/audit-log', element: },\r\n { path: '/faqs', element: },\r\n { path: '/admin-orders', element: },\r\n { path: '/razer-banners', element: },\r\n { path: '/best-sellers', element: },\r\n];\r\n\r\nexport default AppRoutes;\r\n","var _excluded = [\"className\", \"cssModule\", \"fluid\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\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; }\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; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n fluid: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nfunction Container(props) {\n var className = props.className,\n cssModule = props.cssModule,\n fluid = props.fluid,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var containerClass = 'container';\n if (fluid === true) {\n containerClass = 'container-fluid';\n } else if (fluid) {\n containerClass = \"container-\".concat(fluid);\n }\n var classes = mapToCssModules(classNames(className, containerClass), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nContainer.propTypes = propTypes;\nexport default Container;","import * as React from 'react';\nimport { IconProps } from './types';\n\nexport const CaretDownIcon = React.forwardRef(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n \n \n \n );\n }\n);\n\nexport default CaretDownIcon;\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import * as React from 'react';\n\nfunction createContext(\n rootComponentName: string,\n defaultContext?: ContextValueType\n) {\n const Context = React.createContext(defaultContext);\n\n function Provider(props: ContextValueType & { children: React.ReactNode }) {\n const { children, ...context } = props;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return {children};\n }\n\n function useContext(consumerName: string) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n Provider.displayName = rootComponentName + 'Provider';\n return [Provider, useContext] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/\n\ntype Scope = { [scopeName: string]: React.Context[] } | undefined;\ntype ScopeHook = (scope: Scope) => { [__scopeProp: string]: Scope };\ninterface CreateScope {\n scopeName: string;\n (): ScopeHook;\n}\n\nfunction createContextScope(scopeName: string, createContextScopeDeps: CreateScope[] = []) {\n let defaultContexts: any[] = [];\n\n /* -----------------------------------------------------------------------------------------------\n * createContext\n * ---------------------------------------------------------------------------------------------*/\n\n function createContext(\n rootComponentName: string,\n defaultContext?: ContextValueType\n ) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n\n function Provider(\n props: ContextValueType & { scope: Scope; children: React.ReactNode }\n ) {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName][index] || BaseContext;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return {children};\n }\n\n function useContext(consumerName: string, scope: Scope) {\n const Context = scope?.[scopeName][index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n Provider.displayName = rootComponentName + 'Provider';\n return [Provider, useContext] as const;\n }\n\n /* -----------------------------------------------------------------------------------------------\n * createScope\n * ---------------------------------------------------------------------------------------------*/\n\n const createScope: CreateScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope: Scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n\n createScope.scopeName = scopeName;\n return [createContext, composeContextScopes(createScope, ...createContextScopeDeps)] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/\n\nfunction composeContextScopes(...scopes: CreateScope[]) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n\n const createScope: CreateScope = () => {\n const scopeHooks = scopes.map((createScope) => ({\n useScope: createScope(),\n scopeName: createScope.scopeName,\n }));\n\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes, { useScope, scopeName }) => {\n // We are calling a hook inside a callback which React warns against to avoid inconsistent\n // renders, however, scoping doesn't have render side effects so we ignore the rule.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes, ...currentScope };\n }, {});\n\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nexport { createContext, createContextScope };\nexport type { CreateScope, Scope };\n","function composeEventHandlers(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (checkForDefaultPrevented === false || !((event as unknown) as Event).defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\nexport { composeEventHandlers };\n","import * as React from 'react';\n\ntype PossibleRef = React.Ref | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef(ref: PossibleRef, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n (ref as React.MutableRefObject).current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs(...refs: PossibleRef[]) {\n return (node: T) => refs.forEach((ref) => setRef(ref, node));\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs(...refs: PossibleRef[]) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from 'react';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotProps extends React.HTMLAttributes {\n children?: React.ReactNode;\n}\n\nconst Slot = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n\n if (slottable) {\n // the new element to render is the one passed as a child of `Slottable`\n const newElement = slottable.props.children as React.ReactNode;\n\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n // because the new element will be the one rendered, we are only interested\n // in grabbing its children (`newElement.props.children`)\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement)\n ? (newElement.props.children as React.ReactNode)\n : null;\n } else {\n return child;\n }\n });\n\n return (\n \n {React.isValidElement(newElement)\n ? React.cloneElement(newElement, undefined, newChildren)\n : null}\n \n );\n }\n\n return (\n \n {children}\n \n );\n});\n\nSlot.displayName = 'Slot';\n\n/* -------------------------------------------------------------------------------------------------\n * SlotClone\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotCloneProps {\n children: React.ReactNode;\n}\n\nconst SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n\n if (React.isValidElement(children)) {\n return React.cloneElement(children, {\n ...mergeProps(slotProps, children.props),\n ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref,\n });\n }\n\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n});\n\nSlotClone.displayName = 'SlotClone';\n\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/\n\nconst Slottable = ({ children }: { children: React.ReactNode }) => {\n return <>{children};\n};\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype AnyProps = Record;\n\nfunction isSlottable(child: React.ReactNode): child is React.ReactElement {\n return React.isValidElement(child) && child.type === Slottable;\n}\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps) {\n // all child props should override\n const overrideProps = { ...childProps };\n\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n // if the handler exists on both, we compose them\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args: unknown[]) => {\n childPropValue(...args);\n slotPropValue(...args);\n };\n }\n // but if it exists only on the slot, we use only this one\n else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n }\n // if it's `style`, we merge them\n else if (propName === 'style') {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === 'className') {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');\n }\n }\n\n return { ...slotProps, ...overrideProps };\n}\n\nconst Root = Slot;\n\nexport {\n Slot,\n Slottable,\n //\n Root,\n};\nexport type { SlotProps };\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Slot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\n// Temporary while we await merge of this fix:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396\n// prettier-ignore\ntype PropsWithoutRef

      = P extends any ? ('ref' extends keyof P ? Pick> : P) : P;\ntype ComponentPropsWithoutRef = PropsWithoutRef<\n React.ComponentProps\n>;\n\ntype Primitives = { [E in typeof NODES[number]]: PrimitiveForwardRefComponent };\ntype PrimitivePropsWithRef = React.ComponentPropsWithRef & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent\n extends React.ForwardRefExoticComponent> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Node = React.forwardRef((props: PrimitivePropsWithRef, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n React.useEffect(() => {\n (window as any)[Symbol.for('radix-ui')] = true;\n }, []);\n\n return ;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not nessesary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { ComponentPropsWithoutRef, PrimitivePropsWithRef };\n","import * as React from 'react';\n\n/**\n * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a\n * prop or avoid re-executing effects when passed as a dependency\n */\nfunction useCallbackRef any>(callback: T | undefined): T {\n const callbackRef = React.useRef(callback);\n\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n\n // https://github.com/facebook/react/issues/19240\n return React.useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);\n}\n\nexport { useCallbackRef };\n","import * as React from 'react';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\ntype UseControllableStateParams = {\n prop?: T | undefined;\n defaultProp?: T | undefined;\n onChange?: (state: T) => void;\n};\n\ntype SetStateFn = (prevState?: T) => T;\n\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {},\n}: UseControllableStateParams) {\n const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({ defaultProp, onChange });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n const handleChange = useCallbackRef(onChange);\n\n const setValue: React.Dispatch> = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const setter = nextValue as SetStateFn;\n const value = typeof nextValue === 'function' ? setter(prop) : nextValue;\n if (value !== prop) handleChange(value as T);\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, handleChange]\n );\n\n return [value, setValue] as const;\n}\n\nfunction useUncontrolledState({\n defaultProp,\n onChange,\n}: Omit, 'prop'>) {\n const uncontrolledState = React.useState(defaultProp);\n const [value] = uncontrolledState;\n const prevValueRef = React.useRef(value);\n const handleChange = useCallbackRef(onChange);\n\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n handleChange(value as T);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef, handleChange]);\n\n return uncontrolledState;\n}\n\nexport { useControllableState };\n","import * as React from 'react';\n\ntype Direction = 'ltr' | 'rtl';\nconst DirectionContext = React.createContext(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Direction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DirectionProviderProps {\n children?: React.ReactNode;\n dir: Direction;\n}\nconst DirectionProvider: React.FC = (props) => {\n const { dir, children } = props;\n return {children};\n};\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction useDirection(localDir?: Direction) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || 'ltr';\n}\n\nconst Provider = DirectionProvider;\n\nexport {\n useDirection,\n //\n Provider,\n //\n DirectionProvider,\n};\n","import * as React from 'react';\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */\nconst useLayoutEffect = Boolean(globalThis?.document) ? React.useLayoutEffect : () => {};\n\nexport { useLayoutEffect };\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useStateMachine } from './useStateMachine';\n\ninterface PresenceProps {\n children: React.ReactElement | ((props: { present: boolean }) => React.ReactElement);\n present: boolean;\n}\n\nconst Presence: React.FC = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n\n const child = (\n typeof children === 'function'\n ? children({ present: presence.isPresent })\n : React.Children.only(children)\n ) as React.ReactElement;\n\n const ref = useComposedRefs(presence.ref, (child as any).ref);\n const forceMount = typeof children === 'function';\n return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;\n};\n\nPresence.displayName = 'Presence';\n\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/\n\nfunction usePresence(present: boolean) {\n const [node, setNode] = React.useState();\n const stylesRef = React.useRef({} as any);\n const prevPresentRef = React.useRef(present);\n const prevAnimationNameRef = React.useRef('none');\n const initialState = present ? 'mounted' : 'unmounted';\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: 'unmounted',\n ANIMATION_OUT: 'unmountSuspended',\n },\n unmountSuspended: {\n MOUNT: 'mounted',\n ANIMATION_END: 'unmounted',\n },\n unmounted: {\n MOUNT: 'mounted',\n },\n });\n\n React.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n }, [state]);\n\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n\n if (present) {\n send('MOUNT');\n } else if (currentAnimationName === 'none' || styles?.display === 'none') {\n // If there is no exit animation or the element is hidden, animations won't run\n // so we unmount instantly\n send('UNMOUNT');\n } else {\n /**\n * When `present` changes to `false`, we check changes to animation-name to\n * determine whether an animation has started. We chose this approach (reading\n * computed styles) because there is no `animationrun` event and `animationstart`\n * fires after `animation-delay` has expired which would be too late.\n */\n const isAnimating = prevAnimationName !== currentAnimationName;\n\n if (wasPresent && isAnimating) {\n send('ANIMATION_OUT');\n } else {\n send('UNMOUNT');\n }\n }\n\n prevPresentRef.current = present;\n }\n }, [present, send]);\n\n useLayoutEffect(() => {\n if (node) {\n /**\n * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n * make sure we only trigger ANIMATION_END for the currently active animation.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n if (event.target === node && isCurrentAnimation) {\n // With React 18 concurrency this update is applied\n // a frame after the animation ends, creating a flash of visible content.\n // By manually flushing we ensure they sync within a frame, removing the flash.\n ReactDOM.flushSync(() => send('ANIMATION_END'));\n }\n };\n const handleAnimationStart = (event: AnimationEvent) => {\n if (event.target === node) {\n // if animation occurred, store its name as the previous animation.\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener('animationstart', handleAnimationStart);\n node.addEventListener('animationcancel', handleAnimationEnd);\n node.addEventListener('animationend', handleAnimationEnd);\n return () => {\n node.removeEventListener('animationstart', handleAnimationStart);\n node.removeEventListener('animationcancel', handleAnimationEnd);\n node.removeEventListener('animationend', handleAnimationEnd);\n };\n } else {\n // Transition to the unmounted state if the node is removed prematurely.\n // We avoid doing so during cleanup as the node may change but still exist.\n send('ANIMATION_END');\n }\n }, [node, send]);\n\n return {\n isPresent: ['mounted', 'unmountSuspended'].includes(state),\n ref: React.useCallback((node: HTMLElement) => {\n if (node) stylesRef.current = getComputedStyle(node);\n setNode(node);\n }, []),\n };\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getAnimationName(styles?: CSSStyleDeclaration) {\n return styles?.animationName || 'none';\n}\n\nexport { Presence };\nexport type { PresenceProps };\n","import * as React from 'react';\n\ntype Machine = { [k: string]: { [k: string]: S } };\ntype MachineState = keyof T;\ntype MachineEvent = keyof UnionToIntersection;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine(\n initialState: MachineState,\n machine: M & Machine>\n) {\n return React.useReducer((state: MachineState, event: MachineEvent): MachineState => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// We `toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)['useId'.toString()] || (() => undefined);\nlet count = 0;\n\nfunction useId(deterministicId?: string): string {\n const [id, setId] = React.useState(useReactId());\n // React versions older than 18 will have client-side ids only.\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : '');\n}\n\nexport { useId };\n","import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport type * as Radix from '@radix-ui/react-primitive';\n\ntype SlotProps = Radix.ComponentPropsWithoutRef;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\n// We have resorted to returning slots directly rather than exposing primitives that can then\n// be slotted like ``.\n// This is because we encountered issues with generic types that cannot be statically analysed\n// due to creating them dynamically via createCollection.\n\nfunction createCollection(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionRef: React.RefObject;\n itemMap: Map, { ref: React.RefObject } & ItemData>;\n };\n\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: new Map() }\n );\n\n const CollectionProvider: React.FC<{ children?: React.ReactNode; scope: any }> = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(new Map()).current;\n return (\n \n {children}\n \n );\n };\n\n CollectionProvider.displayName = PROVIDER_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return {children};\n }\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...(itemData as unknown as ItemData) });\n return () => void context.itemMap.delete(ref);\n });\n\n return (\n \n {children}\n \n );\n }\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const context = useCollectionContext(name + 'CollectionConsumer', scope);\n\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current!) - orderedNodes.indexOf(b.ref.current!)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n\n return getItems;\n }\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { Primitive, dispatchDiscreteCustomEvent } from '@radix-ui/react-primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useEscapeKeydown } from '@radix-ui/react-use-escape-keydown';\n\nimport type * as Radix from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * DismissableLayer\n * -----------------------------------------------------------------------------------------------*/\n\nconst DISMISSABLE_LAYER_NAME = 'DismissableLayer';\nconst CONTEXT_UPDATE = 'dismissableLayer.update';\nconst POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside';\nconst FOCUS_OUTSIDE = 'dismissableLayer.focusOutside';\n\nlet originalBodyPointerEvents: string;\n\nconst DismissableLayerContext = React.createContext({\n layers: new Set(),\n layersWithOutsidePointerEventsDisabled: new Set(),\n branches: new Set(),\n});\n\ntype DismissableLayerElement = React.ElementRef;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef;\ninterface DismissableLayerProps extends PrimitiveDivProps {\n /**\n * When `true`, hover/focus/click interactions will be disabled on elements outside\n * the `DismissableLayer`. Users will need to click twice on outside elements to\n * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n */\n disableOutsidePointerEvents?: boolean;\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `DismissableLayer`.\n * Can be prevented.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void;\n /**\n * Event handler called when the focus moves outside of the `DismissableLayer`.\n * Can be prevented.\n */\n onFocusOutside?: (event: FocusOutsideEvent) => void;\n /**\n * Event handler called when an interaction happens outside the `DismissableLayer`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n onInteractOutside?: (event: PointerDownOutsideEvent | FocusOutsideEvent) => void;\n /**\n * Handler called when the `DismissableLayer` should be dismissed\n */\n onDismiss?: () => void;\n}\n\nconst DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node) => setNode(node));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1); // prettier-ignore\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled); // prettier-ignore\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target as HTMLElement;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n\n const focusOutside = useFocusOutside((event) => {\n const target = event.target as HTMLElement;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = 'none';\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (\n disableOutsidePointerEvents &&\n context.layersWithOutsidePointerEventsDisabled.size === 1\n ) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n\n /**\n * We purposefully prevent combining this effect with the `disableOutsidePointerEvents` effect\n * because a change to `disableOutsidePointerEvents` would remove this layer from the stack\n * and add it to the end again so the layering order wouldn't be _creation order_.\n * We only want them to be removed from context stacks when unmounted.\n */\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n\n return (\n \n );\n }\n);\n\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DismissableLayerBranch\n * -----------------------------------------------------------------------------------------------*/\n\nconst BRANCH_NAME = 'DismissableLayerBranch';\n\ntype DismissableLayerBranchElement = React.ElementRef;\ninterface DismissableLayerBranchProps extends PrimitiveDivProps {}\n\nconst DismissableLayerBranch = React.forwardRef<\n DismissableLayerBranchElement,\n DismissableLayerBranchProps\n>((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n\n return ;\n});\n\nDismissableLayerBranch.displayName = BRANCH_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype PointerDownOutsideEvent = CustomEvent<{ originalEvent: PointerEvent }>;\ntype FocusOutsideEvent = CustomEvent<{ originalEvent: FocusEvent }>;\n\n/**\n * Listens for `pointerdown` outside a react subtree. We use `pointerdown` rather than `pointerup`\n * to mimic layer dismissing behaviour present in OS.\n * Returns props to pass to the node we want to check for outside events.\n */\nfunction usePointerDownOutside(\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside) as EventListener;\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {});\n\n React.useEffect(() => {\n const handlePointerDown = (event: PointerEvent) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n\n function handleAndDispatchPointerDownOutsideEvent() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n }\n\n /**\n * On touch devices, we need to wait for a click event because browsers implement\n * a ~350ms delay between the time the user stops touching the display and when the\n * browser executres events. We need to ensure we don't reactivate pointer-events within\n * this timeframe otherwise the browser may execute events that should have been prevented.\n *\n * Additionally, this also lets us deal automatically with cancellations when a click event\n * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.\n *\n * This is why we also continuously remove the previous listener, because we cannot be\n * certain that it was raised, and therefore cleaned-up.\n */\n if (event.pointerType === 'touch') {\n ownerDocument.removeEventListener('click', handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent;\n ownerDocument.addEventListener('click', handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent();\n }\n }\n isPointerInsideReactTreeRef.current = false;\n };\n /**\n * if this hook executes in a component that mounts via a `pointerdown` event, the event\n * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid\n * this by delaying the event listener registration on the document.\n * This is not React specific, but rather how the DOM works, ie:\n * ```\n * button.addEventListener('pointerdown', () => {\n * console.log('I will log');\n * document.addEventListener('pointerdown', () => {\n * console.log('I will also log');\n * })\n * });\n */\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener('pointerdown', handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener('pointerdown', handlePointerDown);\n ownerDocument.removeEventListener('click', handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => (isPointerInsideReactTreeRef.current = true),\n };\n}\n\n/**\n * Listens for when focus happens outside a react subtree.\n * Returns props to pass to the root (node) of the subtree we want to check.\n */\nfunction useFocusOutside(\n onFocusOutside?: (event: FocusOutsideEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const handleFocusOutside = useCallbackRef(onFocusOutside) as EventListener;\n const isFocusInsideReactTreeRef = React.useRef(false);\n\n React.useEffect(() => {\n const handleFocus = (event: FocusEvent) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false,\n });\n }\n };\n ownerDocument.addEventListener('focusin', handleFocus);\n return () => ownerDocument.removeEventListener('focusin', handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n\n return {\n onFocusCapture: () => (isFocusInsideReactTreeRef.current = true),\n onBlurCapture: () => (isFocusInsideReactTreeRef.current = false),\n };\n}\n\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\n\nfunction handleAndDispatchCustomEvent(\n name: string,\n handler: ((event: E) => void) | undefined,\n detail: { originalEvent: OriginalEvent } & (E extends CustomEvent ? D : never),\n { discrete }: { discrete: boolean }\n) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler as EventListener, { once: true });\n\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\n\nconst Root = DismissableLayer;\nconst Branch = DismissableLayerBranch;\n\nexport {\n DismissableLayer,\n DismissableLayerBranch,\n //\n Root,\n Branch,\n};\nexport type { DismissableLayerProps };\n","import * as React from 'react';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\n/**\n * Listens for when the escape key is down\n */\nfunction useEscapeKeydown(\n onEscapeKeyDownProp?: (event: KeyboardEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener('keydown', handleKeyDown);\n return () => ownerDocument.removeEventListener('keydown', handleKeyDown);\n }, [onEscapeKeyDown, ownerDocument]);\n}\n\nexport { useEscapeKeydown };\n","import * as React from 'react';\n\nfunction usePrevious(value: T) {\n const ref = React.useRef({ value, previous: value });\n\n // We compare values before making an update to ensure that\n // a change has been made. This ensures the previous value is\n // persisted correctly between renders.\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\n\nexport { usePrevious };\n","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type * as Radix from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * VisuallyHidden\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'VisuallyHidden';\n\ntype VisuallyHiddenElement = React.ElementRef;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef;\ninterface VisuallyHiddenProps extends PrimitiveSpanProps {}\n\nconst VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return (\n \n );\n }\n);\n\nVisuallyHidden.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = VisuallyHidden;\n\nexport {\n VisuallyHidden,\n //\n Root,\n};\nexport type { VisuallyHiddenProps };\n","/// \n\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { Primitive, dispatchDiscreteCustomEvent } from '@radix-ui/react-primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { composeRefs, useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { Presence } from '@radix-ui/react-presence';\nimport { useId } from '@radix-ui/react-id';\nimport { createCollection } from '@radix-ui/react-collection';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport * as VisuallyHiddenPrimitive from '@radix-ui/react-visually-hidden';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\ntype Orientation = 'vertical' | 'horizontal';\ntype Direction = 'ltr' | 'rtl';\n\n/* -------------------------------------------------------------------------------------------------\n * NavigationMenu\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAVIGATION_MENU_NAME = 'NavigationMenu';\n\nconst [Collection, useCollection, createCollectionScope] = createCollection<\n NavigationMenuTriggerElement,\n { value: string }\n>(NAVIGATION_MENU_NAME);\n\nconst [FocusGroupCollection, useFocusGroupCollection, createFocusGroupCollectionScope] =\n createCollection(NAVIGATION_MENU_NAME);\n\ntype ScopedProps

      = P & { __scopeNavigationMenu?: Scope };\nconst [createNavigationMenuContext, createNavigationMenuScope] = createContextScope(\n NAVIGATION_MENU_NAME,\n [createCollectionScope, createFocusGroupCollectionScope]\n);\n\ntype ContentData = {\n ref?: React.Ref;\n} & ViewportContentMounterProps;\n\ntype NavigationMenuContextValue = {\n isRootMenu: boolean;\n value: string;\n previousValue: string;\n baseId: string;\n dir: Direction;\n orientation: Orientation;\n rootNavigationMenu: NavigationMenuElement | null;\n indicatorTrack: HTMLDivElement | null;\n onIndicatorTrackChange(indicatorTrack: HTMLDivElement | null): void;\n viewport: NavigationMenuViewportElement | null;\n onViewportChange(viewport: NavigationMenuViewportElement | null): void;\n onViewportContentChange(contentValue: string, contentData: ContentData): void;\n onViewportContentRemove(contentValue: string): void;\n onTriggerEnter(itemValue: string): void;\n onTriggerLeave(): void;\n onContentEnter(): void;\n onContentLeave(): void;\n onItemSelect(itemValue: string): void;\n onItemDismiss(): void;\n};\n\nconst [NavigationMenuProviderImpl, useNavigationMenuContext] =\n createNavigationMenuContext(NAVIGATION_MENU_NAME);\n\nconst [ViewportContentProvider, useViewportContentContext] = createNavigationMenuContext<{\n items: Map;\n}>(NAVIGATION_MENU_NAME);\n\ntype NavigationMenuElement = React.ElementRef;\ntype PrimitiveNavProps = Radix.ComponentPropsWithoutRef;\ninterface NavigationMenuProps\n extends Omit,\n PrimitiveNavProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n dir?: Direction;\n orientation?: Orientation;\n /**\n * The duration from when the pointer enters the trigger until the tooltip gets opened.\n * @defaultValue 200\n */\n delayDuration?: number;\n /**\n * How much time a user has to enter another trigger without incurring a delay again.\n * @defaultValue 300\n */\n skipDelayDuration?: number;\n}\n\nconst NavigationMenu = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const {\n __scopeNavigationMenu,\n value: valueProp,\n onValueChange,\n defaultValue,\n delayDuration = 200,\n skipDelayDuration = 300,\n orientation = 'horizontal',\n dir,\n ...NavigationMenuProps\n } = props;\n const [navigationMenu, setNavigationMenu] = React.useState(null);\n const composedRef = useComposedRefs(forwardedRef, (node) => setNavigationMenu(node));\n const direction = useDirection(dir);\n const openTimerRef = React.useRef(0);\n const closeTimerRef = React.useRef(0);\n const skipDelayTimerRef = React.useRef(0);\n const [isOpenDelayed, setIsOpenDelayed] = React.useState(true);\n const [value = '', setValue] = useControllableState({\n prop: valueProp,\n onChange: (value) => {\n const isOpen = value !== '';\n const hasSkipDelayDuration = skipDelayDuration > 0;\n\n if (isOpen) {\n window.clearTimeout(skipDelayTimerRef.current);\n if (hasSkipDelayDuration) setIsOpenDelayed(false);\n } else {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => setIsOpenDelayed(true),\n skipDelayDuration\n );\n }\n\n onValueChange?.(value);\n },\n defaultProp: defaultValue,\n });\n\n const startCloseTimer = React.useCallback(() => {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => setValue(''), 150);\n }, [setValue]);\n\n const handleOpen = React.useCallback(\n (itemValue: string) => {\n window.clearTimeout(closeTimerRef.current);\n setValue(itemValue);\n },\n [setValue]\n );\n\n const handleDelayedOpen = React.useCallback(\n (itemValue: string) => {\n const isOpenItem = value === itemValue;\n if (isOpenItem) {\n // If the item is already open (e.g. we're transitioning from the content to the trigger)\n // then we want to clear the close timer immediately.\n window.clearTimeout(closeTimerRef.current);\n } else {\n openTimerRef.current = window.setTimeout(() => {\n window.clearTimeout(closeTimerRef.current);\n setValue(itemValue);\n }, delayDuration);\n }\n },\n [value, setValue, delayDuration]\n );\n\n React.useEffect(() => {\n return () => {\n window.clearTimeout(openTimerRef.current);\n window.clearTimeout(closeTimerRef.current);\n window.clearTimeout(skipDelayTimerRef.current);\n };\n }, []);\n\n return (\n {\n window.clearTimeout(openTimerRef.current);\n if (isOpenDelayed) handleDelayedOpen(itemValue);\n else handleOpen(itemValue);\n }}\n onTriggerLeave={() => {\n window.clearTimeout(openTimerRef.current);\n startCloseTimer();\n }}\n onContentEnter={() => window.clearTimeout(closeTimerRef.current)}\n onContentLeave={startCloseTimer}\n onItemSelect={(itemValue) => {\n setValue((prevValue) => (prevValue === itemValue ? '' : itemValue));\n }}\n onItemDismiss={() => setValue('')}\n >\n \n \n );\n }\n);\n\nNavigationMenu.displayName = NAVIGATION_MENU_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * NavigationMenuSub\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_NAME = 'NavigationMenuSub';\n\ntype NavigationMenuSubElement = React.ElementRef;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef;\ninterface NavigationMenuSubProps\n extends Omit,\n PrimitiveDivProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n orientation?: Orientation;\n}\n\nconst NavigationMenuSub = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const {\n __scopeNavigationMenu,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = 'horizontal',\n ...subProps\n } = props;\n const context = useNavigationMenuContext(SUB_NAME, __scopeNavigationMenu);\n const [value = '', setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue,\n });\n\n return (\n setValue(itemValue)}\n onItemSelect={(itemValue) => setValue(itemValue)}\n onItemDismiss={() => setValue('')}\n >\n \n \n );\n }\n);\n\nNavigationMenuSub.displayName = SUB_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ninterface NavigationMenuProviderPrivateProps {\n isRootMenu: boolean;\n scope: Scope;\n children: React.ReactNode;\n orientation: Orientation;\n dir: Direction;\n rootNavigationMenu: NavigationMenuElement | null;\n value: string;\n onTriggerEnter(itemValue: string): void;\n onTriggerLeave?(): void;\n onContentEnter?(): void;\n onContentLeave?(): void;\n onItemSelect(itemValue: string): void;\n onItemDismiss(): void;\n}\n\ninterface NavigationMenuProviderProps extends NavigationMenuProviderPrivateProps {}\n\nconst NavigationMenuProvider: React.FC = (\n props: ScopedProps\n) => {\n const {\n scope,\n isRootMenu,\n rootNavigationMenu,\n dir,\n orientation,\n children,\n value,\n onItemSelect,\n onItemDismiss,\n onTriggerEnter,\n onTriggerLeave,\n onContentEnter,\n onContentLeave,\n } = props;\n const [viewport, setViewport] = React.useState(null);\n const [viewportContent, setViewportContent] = React.useState>(new Map());\n const [indicatorTrack, setIndicatorTrack] = React.useState(null);\n\n return (\n {\n setViewportContent((prevContent) => {\n prevContent.set(contentValue, contentData);\n return new Map(prevContent);\n });\n }, [])}\n onViewportContentRemove={React.useCallback((contentValue) => {\n setViewportContent((prevContent) => {\n if (!prevContent.has(contentValue)) return prevContent;\n prevContent.delete(contentValue);\n return new Map(prevContent);\n });\n }, [])}\n >\n \n \n {children}\n \n \n \n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * NavigationMenuList\n * -----------------------------------------------------------------------------------------------*/\n\nconst LIST_NAME = 'NavigationMenuList';\n\ntype NavigationMenuListElement = React.ElementRef;\ntype PrimitiveUnorderedListProps = Radix.ComponentPropsWithoutRef;\ninterface NavigationMenuListProps extends PrimitiveUnorderedListProps {}\n\nconst NavigationMenuList = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeNavigationMenu, ...listProps } = props;\n const context = useNavigationMenuContext(LIST_NAME, __scopeNavigationMenu);\n\n const list = (\n \n );\n\n return (\n \n \n {context.isRootMenu ? {list} : list}\n \n \n );\n }\n);\n\nNavigationMenuList.displayName = LIST_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * NavigationMenuItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'NavigationMenuItem';\n\ntype FocusProxyElement = React.ElementRef;\n\ntype NavigationMenuItemContextValue = {\n value: string;\n triggerRef: React.RefObject;\n contentRef: React.RefObject;\n focusProxyRef: React.RefObject;\n wasEscapeCloseRef: React.MutableRefObject;\n onEntryKeyDown(): void;\n onFocusProxyEnter(side: 'start' | 'end'): void;\n onRootContentClose(): void;\n onContentFocusOutside(): void;\n};\n\nconst [NavigationMenuItemContextProvider, useNavigationMenuItemContext] =\n createNavigationMenuContext(ITEM_NAME);\n\ntype NavigationMenuItemElement = React.ElementRef;\ntype PrimitiveListItemProps = Radix.ComponentPropsWithoutRef;\ninterface NavigationMenuItemProps extends PrimitiveListItemProps {\n value?: string;\n}\n\nconst NavigationMenuItem = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeNavigationMenu, value: valueProp, ...itemProps } = props;\n const autoValue = useId();\n // We need to provide an initial deterministic value as `useId` will return\n // empty string on the first render and we don't want to match our internal \"closed\" value.\n const value = valueProp || autoValue || 'LEGACY_REACT_AUTO_VALUE';\n const contentRef = React.useRef(null);\n const triggerRef = React.useRef(null);\n const focusProxyRef = React.useRef(null);\n const restoreContentTabOrderRef = React.useRef(() => {});\n const wasEscapeCloseRef = React.useRef(false);\n\n const handleContentEntry = React.useCallback((side = 'start') => {\n if (contentRef.current) {\n restoreContentTabOrderRef.current();\n const candidates = getTabbableCandidates(contentRef.current);\n if (candidates.length) focusFirst(side === 'start' ? candidates : candidates.reverse());\n }\n }, []);\n\n const handleContentExit = React.useCallback(() => {\n if (contentRef.current) {\n const candidates = getTabbableCandidates(contentRef.current);\n if (candidates.length) restoreContentTabOrderRef.current = removeFromTabOrder(candidates);\n }\n }, []);\n\n return (\n \n \n \n );\n }\n);\n\nNavigationMenuItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * NavigationMenuTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'NavigationMenuTrigger';\n\ntype NavigationMenuTriggerElement = React.ElementRef;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef;\ninterface NavigationMenuTriggerProps extends PrimitiveButtonProps {}\n\nconst NavigationMenuTrigger = React.forwardRef<\n NavigationMenuTriggerElement,\n NavigationMenuTriggerProps\n>((props: ScopedProps, forwardedRef) => {\n const { __scopeNavigationMenu, disabled, ...triggerProps } = props;\n const context = useNavigationMenuContext(TRIGGER_NAME, props.__scopeNavigationMenu);\n const itemContext = useNavigationMenuItemContext(TRIGGER_NAME, props.__scopeNavigationMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, itemContext.triggerRef, forwardedRef);\n const triggerId = makeTriggerId(context.baseId, itemContext.value);\n const contentId = makeContentId(context.baseId, itemContext.value);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const wasClickCloseRef = React.useRef(false);\n const open = itemContext.value === context.value;\n\n return (\n <>\n \n \n {\n wasClickCloseRef.current = false;\n itemContext.wasEscapeCloseRef.current = false;\n })}\n onPointerMove={composeEventHandlers(\n props.onPointerMove,\n whenMouse(() => {\n if (\n disabled ||\n wasClickCloseRef.current ||\n itemContext.wasEscapeCloseRef.current ||\n hasPointerMoveOpenedRef.current\n )\n return;\n context.onTriggerEnter(itemContext.value);\n hasPointerMoveOpenedRef.current = true;\n })\n )}\n onPointerLeave={composeEventHandlers(\n props.onPointerLeave,\n whenMouse(() => {\n if (disabled) return;\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n })\n )}\n onClick={composeEventHandlers(props.onClick, () => {\n context.onItemSelect(itemContext.value);\n wasClickCloseRef.current = open;\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n const verticalEntryKey = context.dir === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n const entryKey = { horizontal: 'ArrowDown', vertical: verticalEntryKey }[\n context.orientation\n ];\n if (open && event.key === entryKey) {\n itemContext.onEntryKeyDown();\n // Prevent FocusGroupItem from handling the event\n event.preventDefault();\n }\n })}\n />\n \n \n\n {/* Proxy tab order between trigger and content */}\n {open && (\n <>\n {\n const content = itemContext.contentRef.current;\n const prevFocusedElement = event.relatedTarget as HTMLElement | null;\n const wasTriggerFocused = prevFocusedElement === ref.current;\n const wasFocusFromContent = content?.contains(prevFocusedElement);\n\n if (wasTriggerFocused || !wasFocusFromContent) {\n itemContext.onFocusProxyEnter(wasTriggerFocused ? 'start' : 'end');\n }\n }}\n />\n\n {/* Restructure a11y tree to make content accessible to screen reader when using the viewport */}\n {context.viewport && }\n \n )}\n \n );\n});\n\nNavigationMenuTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * NavigationMenuLink\n * -----------------------------------------------------------------------------------------------*/\n\nconst LINK_NAME = 'NavigationMenuLink';\nconst LINK_SELECT = 'navigationMenu.linkSelect';\n\ntype NavigationMenuLinkElement = React.ElementRef;\ntype PrimitiveLinkProps = Radix.ComponentPropsWithoutRef;\ninterface NavigationMenuLinkProps extends Omit {\n active?: boolean;\n onSelect?: (event: Event) => void;\n}\n\nconst NavigationMenuLink = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeNavigationMenu, active, onSelect, ...linkProps } = props;\n\n return (\n \n {\n const target = event.target as HTMLElement;\n const linkSelectEvent = new CustomEvent(LINK_SELECT, {\n bubbles: true,\n cancelable: true,\n });\n target.addEventListener(LINK_SELECT, (event) => onSelect?.(event), { once: true });\n dispatchDiscreteCustomEvent(target, linkSelectEvent);\n\n if (!linkSelectEvent.defaultPrevented && !event.metaKey) {\n const rootContentDismissEvent = new CustomEvent(ROOT_CONTENT_DISMISS, {\n bubbles: true,\n cancelable: true,\n });\n dispatchDiscreteCustomEvent(target, rootContentDismissEvent);\n }\n },\n { checkForDefaultPrevented: false }\n )}\n />\n \n );\n }\n);\n\nNavigationMenuLink.displayName = LINK_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * NavigationMenuIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'NavigationMenuIndicator';\n\ntype NavigationMenuIndicatorElement = NavigationMenuIndicatorImplElement;\ninterface NavigationMenuIndicatorProps extends NavigationMenuIndicatorImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst NavigationMenuIndicator = React.forwardRef<\n NavigationMenuIndicatorElement,\n NavigationMenuIndicatorProps\n>((props: ScopedProps, forwardedRef) => {\n const { forceMount, ...indicatorProps } = props;\n const context = useNavigationMenuContext(INDICATOR_NAME, props.__scopeNavigationMenu);\n const isVisible = Boolean(context.value);\n\n return context.indicatorTrack\n ? ReactDOM.createPortal(\n \n \n ,\n context.indicatorTrack\n )\n : null;\n});\n\nNavigationMenuIndicator.displayName = INDICATOR_NAME;\n\ntype NavigationMenuIndicatorImplElement = React.ElementRef;\ninterface NavigationMenuIndicatorImplProps extends PrimitiveDivProps {}\n\nconst NavigationMenuIndicatorImpl = React.forwardRef<\n NavigationMenuIndicatorImplElement,\n NavigationMenuIndicatorImplProps\n>((props: ScopedProps, forwardedRef) => {\n const { __scopeNavigationMenu, ...indicatorProps } = props;\n const context = useNavigationMenuContext(INDICATOR_NAME, __scopeNavigationMenu);\n const getItems = useCollection(__scopeNavigationMenu);\n const [activeTrigger, setActiveTrigger] = React.useState(\n null\n );\n const [position, setPosition] = React.useState<{ size: number; offset: number } | null>(null);\n const isHorizontal = context.orientation === 'horizontal';\n const isVisible = Boolean(context.value);\n\n React.useEffect(() => {\n const items = getItems();\n const triggerNode = items.find((item) => item.value === context.value)?.ref.current;\n if (triggerNode) setActiveTrigger(triggerNode);\n }, [getItems, context.value]);\n\n /**\n * Update position when the indicator or parent track size changes\n */\n const handlePositionChange = () => {\n if (activeTrigger) {\n setPosition({\n size: isHorizontal ? activeTrigger.offsetWidth : activeTrigger.offsetHeight,\n offset: isHorizontal ? activeTrigger.offsetLeft : activeTrigger.offsetTop,\n });\n }\n };\n useResizeObserver(activeTrigger, handlePositionChange);\n useResizeObserver(context.indicatorTrack, handlePositionChange);\n\n // We need to wait for the indicator position to be available before rendering to\n // snap immediately into position rather than transitioning from initial\n return position ? (\n \n ) : null;\n});\n\n/* -------------------------------------------------------------------------------------------------\n * NavigationMenuContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'NavigationMenuContent';\n\ntype NavigationMenuContentElement = NavigationMenuContentImplElement;\ninterface NavigationMenuContentProps\n extends Omit {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst NavigationMenuContent = React.forwardRef<\n NavigationMenuContentElement,\n NavigationMenuContentProps\n>((props: ScopedProps, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useNavigationMenuContext(CONTENT_NAME, props.__scopeNavigationMenu);\n const itemContext = useNavigationMenuItemContext(CONTENT_NAME, props.__scopeNavigationMenu);\n const composedRefs = useComposedRefs(itemContext.contentRef, forwardedRef);\n const open = itemContext.value === context.value;\n\n const commonProps = {\n value: itemContext.value,\n triggerRef: itemContext.triggerRef,\n focusProxyRef: itemContext.focusProxyRef,\n wasEscapeCloseRef: itemContext.wasEscapeCloseRef,\n onContentFocusOutside: itemContext.onContentFocusOutside,\n onRootContentClose: itemContext.onRootContentClose,\n ...contentProps,\n };\n\n return !context.viewport ? (\n \n \n \n ) : (\n \n );\n});\n\nNavigationMenuContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ViewportContentMounterElement = NavigationMenuContentImplElement;\ninterface ViewportContentMounterProps extends NavigationMenuContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst ViewportContentMounter = React.forwardRef<\n ViewportContentMounterElement,\n ViewportContentMounterProps\n>((props: ScopedProps, forwardedRef) => {\n const context = useNavigationMenuContext(CONTENT_NAME, props.__scopeNavigationMenu);\n const { onViewportContentChange, onViewportContentRemove } = context;\n\n useLayoutEffect(() => {\n onViewportContentChange(props.value, {\n ref: forwardedRef,\n ...props,\n });\n }, [props, forwardedRef, onViewportContentChange]);\n\n useLayoutEffect(() => {\n return () => onViewportContentRemove(props.value);\n }, [props.value, onViewportContentRemove]);\n\n // Content is proxied into the viewport\n return null;\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst ROOT_CONTENT_DISMISS = 'navigationMenu.rootContentDismiss';\n\ntype MotionAttribute = 'to-start' | 'to-end' | 'from-start' | 'from-end';\ntype NavigationMenuContentImplElement = React.ElementRef;\ntype DismissableLayerProps = Radix.ComponentPropsWithoutRef;\n\ninterface NavigationMenuContentImplPrivateProps {\n value: string;\n triggerRef: React.RefObject;\n focusProxyRef: React.RefObject;\n wasEscapeCloseRef: React.MutableRefObject;\n onContentFocusOutside(): void;\n onRootContentClose(): void;\n}\ninterface NavigationMenuContentImplProps\n extends Omit,\n NavigationMenuContentImplPrivateProps {}\n\nconst NavigationMenuContentImpl = React.forwardRef<\n NavigationMenuContentImplElement,\n NavigationMenuContentImplProps\n>((props: ScopedProps, forwardedRef) => {\n const {\n __scopeNavigationMenu,\n value,\n triggerRef,\n focusProxyRef,\n wasEscapeCloseRef,\n onRootContentClose,\n onContentFocusOutside,\n ...contentProps\n } = props;\n const context = useNavigationMenuContext(CONTENT_NAME, __scopeNavigationMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const getItems = useCollection(__scopeNavigationMenu);\n const prevMotionAttributeRef = React.useRef(null);\n\n const { onItemDismiss } = context;\n\n React.useEffect(() => {\n const content = ref.current;\n\n // Bubble dismiss to the root content node and focus its trigger\n if (context.isRootMenu && content) {\n const handleClose = () => {\n onItemDismiss();\n onRootContentClose();\n if (content.contains(document.activeElement)) triggerRef.current?.focus();\n };\n content.addEventListener(ROOT_CONTENT_DISMISS, handleClose);\n return () => content.removeEventListener(ROOT_CONTENT_DISMISS, handleClose);\n }\n }, [context.isRootMenu, props.value, triggerRef, onItemDismiss, onRootContentClose]);\n\n const motionAttribute = React.useMemo(() => {\n const items = getItems();\n const values = items.map((item) => item.value);\n if (context.dir === 'rtl') values.reverse();\n const index = values.indexOf(context.value);\n const prevIndex = values.indexOf(context.previousValue);\n const isSelected = value === context.value;\n const wasSelected = prevIndex === values.indexOf(value);\n\n // We only want to update selected and the last selected content\n // this avoids animations being interrupted outside of that range\n if (!isSelected && !wasSelected) return prevMotionAttributeRef.current;\n\n const attribute = (() => {\n // Don't provide a direction on the initial open\n if (index !== prevIndex) {\n // If we're moving to this item from another\n if (isSelected && prevIndex !== -1) return index > prevIndex ? 'from-end' : 'from-start';\n // If we're leaving this item for another\n if (wasSelected && index !== -1) return index > prevIndex ? 'to-start' : 'to-end';\n }\n // Otherwise we're entering from closed or leaving the list\n // entirely and should not animate in any direction\n return null;\n })();\n\n prevMotionAttributeRef.current = attribute;\n return attribute;\n }, [context.previousValue, context.value, context.dir, getItems, value]);\n\n return (\n \n {\n const rootContentDismissEvent = new Event(ROOT_CONTENT_DISMISS, {\n bubbles: true,\n cancelable: true,\n });\n ref.current?.dispatchEvent(rootContentDismissEvent);\n }}\n onFocusOutside={composeEventHandlers(props.onFocusOutside, (event) => {\n onContentFocusOutside();\n const target = event.target as HTMLElement;\n // Only dismiss content when focus moves outside of the menu\n if (context.rootNavigationMenu?.contains(target)) event.preventDefault();\n })}\n onPointerDownOutside={composeEventHandlers(props.onPointerDownOutside, (event) => {\n const target = event.target as HTMLElement;\n const isTrigger = getItems().some((item) => item.ref.current?.contains(target));\n const isRootViewport = context.isRootMenu && context.viewport?.contains(target);\n if (isTrigger || isRootViewport || !context.isRootMenu) event.preventDefault();\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n const isMetaKey = event.altKey || event.ctrlKey || event.metaKey;\n const isTabKey = event.key === 'Tab' && !isMetaKey;\n if (isTabKey) {\n const candidates = getTabbableCandidates(event.currentTarget);\n const focusedElement = document.activeElement;\n const index = candidates.findIndex((candidate) => candidate === focusedElement);\n const isMovingBackwards = event.shiftKey;\n const nextCandidates = isMovingBackwards\n ? candidates.slice(0, index).reverse()\n : candidates.slice(index + 1, candidates.length);\n\n if (focusFirst(nextCandidates)) {\n // prevent browser tab keydown because we've handled focus\n event.preventDefault();\n } else {\n // If we can't focus that means we're at the edges\n // so focus the proxy and let browser handle\n // tab/shift+tab keypress on the proxy instead\n focusProxyRef.current?.focus();\n }\n }\n })}\n onEscapeKeyDown={composeEventHandlers(props.onEscapeKeyDown, (event) => {\n // prevent the dropdown from reopening\n // after the escape key has been pressed\n wasEscapeCloseRef.current = true;\n })}\n />\n \n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * NavigationMenuViewport\n * -----------------------------------------------------------------------------------------------*/\n\nconst VIEWPORT_NAME = 'NavigationMenuViewport';\n\ntype NavigationMenuViewportElement = NavigationMenuViewportImplElement;\ninterface NavigationMenuViewportProps\n extends Omit {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst NavigationMenuViewport = React.forwardRef<\n NavigationMenuViewportElement,\n NavigationMenuViewportProps\n>((props: ScopedProps, forwardedRef) => {\n const { forceMount, ...viewportProps } = props;\n const context = useNavigationMenuContext(VIEWPORT_NAME, props.__scopeNavigationMenu);\n const open = Boolean(context.value);\n\n return (\n \n \n \n );\n});\n\nNavigationMenuViewport.displayName = VIEWPORT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype NavigationMenuViewportImplElement = React.ElementRef;\ninterface NavigationMenuViewportImplProps extends PrimitiveDivProps {}\n\nconst NavigationMenuViewportImpl = React.forwardRef<\n NavigationMenuViewportImplElement,\n NavigationMenuViewportImplProps\n>((props: ScopedProps, forwardedRef) => {\n const { __scopeNavigationMenu, children, ...viewportImplProps } = props;\n const context = useNavigationMenuContext(VIEWPORT_NAME, __scopeNavigationMenu);\n const composedRefs = useComposedRefs(forwardedRef, context.onViewportChange);\n const viewportContentContext = useViewportContentContext(\n CONTENT_NAME,\n props.__scopeNavigationMenu\n );\n const [size, setSize] = React.useState<{ width: number; height: number } | null>(null);\n const [content, setContent] = React.useState(null);\n const viewportWidth = size ? size?.width + 'px' : undefined;\n const viewportHeight = size ? size?.height + 'px' : undefined;\n const open = Boolean(context.value);\n // We persist the last active content value as the viewport may be animating out\n // and we want the content to remain mounted for the lifecycle of the viewport.\n const activeContentValue = open ? context.value : context.previousValue;\n\n /**\n * Update viewport size to match the active content node.\n * We prefer offset dimensions over `getBoundingClientRect` as the latter respects CSS transform.\n * For example, if content animates in from `scale(0.5)` the dimensions would be anything\n * from `0.5` to `1` of the intended size.\n */\n const handleSizeChange = () => {\n if (content) setSize({ width: content.offsetWidth, height: content.offsetHeight });\n };\n useResizeObserver(content, handleSizeChange);\n\n return (\n \n {Array.from(viewportContentContext.items).map(([value, { ref, forceMount, ...props }]) => {\n const isActive = activeContentValue === value;\n return (\n \n {\n // We only want to update the stored node when another is available\n // as we need to smoothly transition between them.\n if (isActive && node) setContent(node);\n })}\n />\n \n );\n })}\n \n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst FOCUS_GROUP_NAME = 'FocusGroup';\n\ntype FocusGroupElement = React.ElementRef;\ninterface FocusGroupProps extends PrimitiveDivProps {}\n\nconst FocusGroup = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeNavigationMenu, ...groupProps } = props;\n const context = useNavigationMenuContext(FOCUS_GROUP_NAME, __scopeNavigationMenu);\n\n return (\n \n \n \n \n \n );\n }\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_KEYS = ['ArrowRight', 'ArrowLeft', 'ArrowUp', 'ArrowDown'];\nconst FOCUS_GROUP_ITEM_NAME = 'FocusGroupItem';\n\ntype FocusGroupItemElement = React.ElementRef;\ninterface FocusGroupItemProps extends PrimitiveButtonProps {}\n\nconst FocusGroupItem = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeNavigationMenu, ...groupProps } = props;\n const getItems = useFocusGroupCollection(__scopeNavigationMenu);\n const context = useNavigationMenuContext(FOCUS_GROUP_ITEM_NAME, __scopeNavigationMenu);\n\n return (\n \n {\n const isFocusNavigationKey = ['Home', 'End', ...ARROW_KEYS].includes(event.key);\n if (isFocusNavigationKey) {\n let candidateNodes = getItems().map((item) => item.ref.current!);\n const prevItemKey = context.dir === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n const prevKeys = [prevItemKey, 'ArrowUp', 'End'];\n if (prevKeys.includes(event.key)) candidateNodes.reverse();\n if (ARROW_KEYS.includes(event.key)) {\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n /**\n * Imperative focus during keydown is risky so we prevent React's batching updates\n * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332\n */\n setTimeout(() => focusFirst(candidateNodes));\n\n // Prevent page scroll while navigating\n event.preventDefault();\n }\n })}\n />\n \n );\n }\n);\n\n/**\n * Returns a list of potential tabbable candidates.\n *\n * NOTE: This is only a close approximation. For example it doesn't take into account cases like when\n * elements are not visible. This cannot be worked out easily by just reading a property, but rather\n * necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n * Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1\n */\nfunction getTabbableCandidates(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n const isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden';\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n // we do not take into account the order of nodes with positive `tabIndex` as it\n // hinders accessibility to have tab order different from visual order.\n return nodes;\n}\n\nfunction focusFirst(candidates: HTMLElement[]) {\n const previouslyFocusedElement = document.activeElement;\n return candidates.some((candidate) => {\n // if focus is already where we want to go, we don't want to keep going through the candidates\n if (candidate === previouslyFocusedElement) return true;\n candidate.focus();\n return document.activeElement !== previouslyFocusedElement;\n });\n}\n\nfunction removeFromTabOrder(candidates: HTMLElement[]) {\n candidates.forEach((candidate) => {\n candidate.dataset.tabindex = candidate.getAttribute('tabindex') || '';\n candidate.setAttribute('tabindex', '-1');\n });\n return () => {\n candidates.forEach((candidate) => {\n const prevTabIndex = candidate.dataset.tabindex as string;\n candidate.setAttribute('tabindex', prevTabIndex);\n });\n };\n}\n\nfunction useResizeObserver(element: HTMLElement | null, onResize: () => void) {\n const handleResize = useCallbackRef(onResize);\n useLayoutEffect(() => {\n let rAF = 0;\n if (element) {\n /**\n * Resize Observer will throw an often benign error that says `ResizeObserver loop\n * completed with undelivered notifications`. This means that ResizeObserver was not\n * able to deliver all observations within a single animation frame, so we use\n * `requestAnimationFrame` to ensure we don't deliver unnecessary observations.\n * Further reading: https://github.com/WICG/resize-observer/issues/38\n */\n const resizeObserver = new ResizeObserver(() => {\n cancelAnimationFrame(rAF);\n rAF = window.requestAnimationFrame(handleResize);\n });\n resizeObserver.observe(element);\n return () => {\n window.cancelAnimationFrame(rAF);\n resizeObserver.unobserve(element);\n };\n }\n }, [element, handleResize]);\n}\n\nfunction getOpenState(open: boolean) {\n return open ? 'open' : 'closed';\n}\n\nfunction makeTriggerId(baseId: string, value: string) {\n return `${baseId}-trigger-${value}`;\n}\n\nfunction makeContentId(baseId: string, value: string) {\n return `${baseId}-content-${value}`;\n}\n\nfunction whenMouse(handler: React.PointerEventHandler): React.PointerEventHandler {\n return (event) => (event.pointerType === 'mouse' ? handler(event) : undefined);\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = NavigationMenu;\nconst Sub = NavigationMenuSub;\nconst List = NavigationMenuList;\nconst Item = NavigationMenuItem;\nconst Trigger = NavigationMenuTrigger;\nconst Link = NavigationMenuLink;\nconst Indicator = NavigationMenuIndicator;\nconst Content = NavigationMenuContent;\nconst Viewport = NavigationMenuViewport;\n\nexport {\n createNavigationMenuScope,\n //\n NavigationMenu,\n NavigationMenuSub,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuContent,\n NavigationMenuViewport,\n //\n Root,\n Sub,\n List,\n Item,\n Trigger,\n Link,\n Indicator,\n Content,\n Viewport,\n};\nexport type {\n NavigationMenuProps,\n NavigationMenuSubProps,\n NavigationMenuListProps,\n NavigationMenuItemProps,\n NavigationMenuTriggerProps,\n NavigationMenuLinkProps,\n NavigationMenuIndicatorProps,\n NavigationMenuContentProps,\n NavigationMenuViewportProps,\n};\n","import React, { useContext, useState } from \"react\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { getAuthToken } from \"../helpers/authentication\";\r\nimport { Context } from \"../helpers/Context\";\r\nimport { getCurrentDomain } from \"../helpers/Lookup\";\r\nimport CartItem from \"./CartItem\";\r\n\r\nconst Cart = () => {\r\n const [couponCode, setCouponCode] = useState('');\r\n const navigate = useNavigate();\r\n const { cartItems, setShowCart, cartSubTotal, cart, applyCoupon, couponError, appliedCoupon } = useContext(Context);\r\n\r\n\r\n const handlePayment = async () => {\r\n var bearer = 'Bearer ' + getAuthToken();\r\n var data = {\r\n Id: cart.id,\r\n CartTotal: cartSubTotal,\r\n FirstName: \"\",\r\n LastName: \"\",\r\n Email: \"\",\r\n ReturnUrl: getCurrentDomain() + \"/return-payment\",\r\n CancelUrl: getCurrentDomain() + \"/cancel-payment\",\r\n NotifyUrl: getCurrentDomain() + \"/notify-payment\",\r\n }\r\n try {\r\n const response = await fetch('/api/payfast/processpayment', {\r\n method: 'POST',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n\r\n if (response.ok) {\r\n console.log(\"done\")\r\n } else {\r\n console.log(\"oh no\")\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n };\r\n\r\n return (\r\n

      \r\n setShowCart(false)}\r\n >
      \r\n
      \r\n
      \r\n Shopping Cart\r\n setShowCart(false)} >\r\n \r\n close\r\n \r\n
      \r\n\r\n {!cartItems?.length && (\r\n
      \r\n \r\n No products in the cart.\r\n \r\n
      \r\n )}\r\n\r\n {!!cartItems?.length && (\r\n <>\r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n Subtotal:\r\n \r\n {cartSubTotal.toCurrencyString()}\r\n \r\n
      \r\n \r\n
      \r\n \r\n \r\n
      \r\n
      \r\n \r\n )}\r\n
      \r\n
      \r\n );\r\n};\r\n\r\nexport default Cart;","import { CaretDownIcon } from '@radix-ui/react-icons';\r\nimport * as NavigationMenu from '@radix-ui/react-navigation-menu';\r\nimport classNames from 'classnames';\r\nimport React, { Component } from 'react';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport { Link } from 'react-router-dom';\r\nimport { NavItem, NavLink } from 'reactstrap';\r\nimport { clearUserDetails, getAuthToken } from '../helpers/authentication';\r\nimport { Context } from '../helpers/Context';\r\nimport { getCurrentDomain, getIsAdmin } from '../helpers/Lookup';\r\nimport Cart from './Cart';\r\nimport './NavMenu.css';\r\n\r\nexport class NavMenu extends Component {\r\n static displayName = NavMenu.name;\r\n static contextType = Context;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n\r\n this.state = {\r\n collapsed: true,\r\n CategoryList: [],\r\n SubcategoryList: [],\r\n isSticky: false,\r\n isLoggedIn: false,\r\n dropdownOpen: false,\r\n menuOpen: false,\r\n size: {\r\n width: undefined,\r\n height: undefined,\r\n },\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const { getCategories, getSubcategories } = this.context;\r\n getCategories();\r\n getSubcategories();\r\n this.handleScroll();\r\n const handleResize = () => {\r\n this.setState({\r\n size: {\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n },\r\n });\r\n };\r\n window.addEventListener(\"resize\", handleResize);\r\n this.handleResize = handleResize;\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n const { categories, subcategories } = this.context;\r\n if (prevState.CategoryList !== categories) {\r\n this.setState({ CategoryList: categories });\r\n }\r\n if (prevState.SubcategoryList !== subcategories) {\r\n this.setState({ SubcategoryList: subcategories });\r\n }\r\n if (this.state.size.width > 768 && this.state.menuOpen) {\r\n this.setState({ menuOpen: false });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('scroll', this.handleScroll);\r\n window.removeEventListener(\"resize\", this.handleResize);\r\n }\r\n\r\n menuToggleHandler = () => {\r\n this.setState((prevState) => ({\r\n menuOpen: !prevState.menuOpen,\r\n }));\r\n };\r\n\r\n handleScroll = () => {\r\n const { isSticky } = this.state;\r\n const scrollPosition = window.pageYOffset;\r\n\r\n if (scrollPosition > 60 && !isSticky) {\r\n this.setState({ isSticky: true });\r\n } else if (scrollPosition <= 60 && isSticky) {\r\n this.setState({ isSticky: false });\r\n }\r\n\r\n requestAnimationFrame(this.handleScroll);\r\n };\r\n\r\n async handleLogout() {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to log out?\", confirmStyles);\r\n if (result) {\r\n window.location.href = \"/login\";\r\n clearUserDetails();\r\n }\r\n }\r\n\r\n render() {\r\n const { isSticky, menuOpen, size, CategoryList, SubcategoryList } = this.state;\r\n const { cartCount, wishCount, showCart, setShowCart, getCategories, categories, setSelectedBrands } = this.context;\r\n //console.log(CategoryList, SubcategoryList);\r\n const renderedCategories = CategoryList\r\n .filter(category => SubcategoryList.some(sub => sub.categoryId === category.id) && category.showOnMenu === 1)\r\n .map((category, index) => {\r\n const matchingSubcategories = SubcategoryList.filter(sub => sub.categoryId === category.id);\r\n\r\n return (\r\n \r\n \r\n { localStorage.removeItem('selectedBrands1'); setSelectedBrands([]); }} to={`/products/category/${category.slug}`}>{category.title}\r\n \r\n \r\n \r\n \r\n
        \r\n {matchingSubcategories.map((sub, id) => (\r\n { localStorage.removeItem('selectedBrands1'); setSelectedBrands([]); }} to={`/products/category/${sub.slug}`}>\r\n {sub.title}\r\n \r\n ))}\r\n
      \r\n
      \r\n
      \r\n );\r\n });\r\n\r\n const navigationContent = renderedCategories.length > 0 ? renderedCategories : Loading...;\r\n\r\n //console.log(CategoryList, SubcategoryList)\r\n return (\r\n
      \r\n \r\n\r\n
      \r\n
      \r\n
      \r\n \r\n \"logo\"\r\n \r\n \r\n
      \r\n {!menuOpen ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
      \r\n
      \r\n
      \r\n \r\n \r\n {navigationContent}\r\n \r\n
      \r\n \r\n \r\n\r\n
      \r\n \r\n
      \r\n \r\n
      \r\n {showCart && }\r\n
      \r\n );\r\n }\r\n}\r\n\r\nconst ListItem = React.forwardRef(({ className, children, title, ...props }, forwardedRef) => (\r\n
    • \r\n \r\n \r\n
      {title}
      \r\n

      {children}

      \r\n
      \r\n
      \r\n
    • \r\n));","import React, { Component } from 'react';\r\nimport jsonp from 'jsonp';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport GreptchaHelper from '../../helpers/GreptchaHelper';\r\nimport { fieldRequired } from '../../helpers/validation';\r\n\r\nexport class Footer extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n collapsed: true,\r\n subSubscribeEmail: \"\",\r\n CaptchaToken: false\r\n };\r\n //this.toggleNavbar = this.toggleNavbar.bind(this);\r\n this.handleSubscribe = this.handleSubscribe.bind(this);\r\n this.handleCaptchaChange = this.handleCaptchaChange.bind(this);\r\n }\r\n\r\n toggleNavbar() {\r\n //this.setState({\r\n // collapsed: !this.state.collapsed\r\n //});\r\n }\r\n\r\n handleSubscribe() {\r\n const url = 'https://triggercraft.us18.list-manage.com/subscribe/post-json?u=6c3c5d86e0bcce73964102b87&id=9a9eac6a55&f_id=009d0de7f0'\r\n\r\n let IsValid = true;\r\n\r\n IsValid &= fieldRequired(this.state.subSubscribeEmail, \"errSubscribeEmail\", \"* Required\");\r\n IsValid &= fieldRequired(this.state.CaptchaToken, \"errSubscribeCaptcha\", \"* Required\");\r\n\r\n if (IsValid) {\r\n const errorCallback = () => {\r\n ToastUtility.show({\r\n title: 'Newsletter',\r\n content: 'An error occurred while subscribing to the newsletter.',\r\n timeOut: 5000,\r\n position: { X: 'Right', Y: 'Top' },\r\n showCloseButton: true,\r\n cssClass: 'toast-danger'\r\n });\r\n this.setState({ subSubscribeEmail: \"\" })\r\n };\r\n\r\n jsonp(`${url}&EMAIL=${this.state.subSubscribeEmail}`, { param: 'c' }, (_, { msg, result }) => {\r\n if (result !== 'success') {\r\n errorCallback();\r\n this.setState({ subSubscribeEmail: \"\" })\r\n } else {\r\n ToastUtility.show({\r\n title: 'Newsletter',\r\n content: msg,\r\n timeOut: 5000,\r\n position: { X: 'Right', Y: 'Top' },\r\n showCloseButton: true,\r\n cssClass: 'toast-success'\r\n });\r\n this.setState({ subSubscribeEmail: \"\" })\r\n }\r\n });\r\n }\r\n };\r\n\r\n\r\n handleCaptchaChange(CaptchaToken) {\r\n this.setState({ CaptchaToken }, () => fieldRequired(this.state.CaptchaToken, \"errSubscribeCaptcha\", \"* Required\"));\r\n }\r\n render() {\r\n var currentYear = new Date().getFullYear();\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

      About TriggerCraft

      \r\n

      TriggerCraft is a proudly South African electronics supplier that offers a variety of the latest tech gear, ranging from speakers or a mouse for your desk to gifting options for both young and old. With pricing focused on your pocket, we will always be just an email away ready to cater to all your tech needs.

      \r\n
      \r\n © {currentYear} TriggerCraft. All Rights Reserved.\r\n
      \r\n
      \r\n
      \r\n

      Newsletter

      \r\n

      Subscribe to the TriggerCraft Newsletter to get special offers and once-in-a-lifetime deals but also the latest news and updates.

      \r\n\r\n
      \r\n
      \r\n this.setState({ subSubscribeEmail: e.target.value }, () => fieldRequired(this.state.subSubscribeEmail, \"errSubscribeEmail\", \"* Required\"))} aria-describedby=\"basic-addon\" />\r\n this.handleSubscribe()} id=\"basic-addon\">SUBSCRIBE\r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n

      Contact Us

      \r\n

      Support Hotline: +27 10 220 5737
      Email: support@triggercraft.co.za

      \r\n

      277 Stirrup Rd, Bridle Park AH, Midrand, 1685

      \r\n
      \r\n\r\n\r\n
      \r\n
      \r\n
      \r\n );\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\n\r\nconst ScrollToTopButton = () => {\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n window.addEventListener('scroll', toggleVisibility);\r\n\r\n return () => {\r\n window.removeEventListener('scroll', toggleVisibility);\r\n };\r\n }, []);\r\n\r\n const toggleVisibility = () => {\r\n if (window.pageYOffset > 300) {\r\n setIsVisible(true);\r\n } else {\r\n setIsVisible(false);\r\n }\r\n };\r\n\r\n const scrollToTop = () => {\r\n window.scrollTo({\r\n top: 0,\r\n behavior: 'smooth',\r\n });\r\n };\r\n\r\n return (\r\n
      \r\n \r\n
      \r\n );\r\n};\r\n\r\nexport default ScrollToTopButton;","import React, { Component } from 'react';\r\nimport { Collapse, Navbar, UncontrolledDropdown, Dropdown, Nav, DropdownMenu, DropdownItem, DropdownToggle, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport * as NavigationMenu from '@radix-ui/react-navigation-menu';\r\nimport { confirm } from \"react-confirm-box\";\r\nimport './NavMenu.css';\r\nimport classNames from 'classnames';\r\nimport { CaretDownIcon } from '@radix-ui/react-icons';\r\nimport { getCurrentDomain, getIsAdmin } from '../helpers/Lookup';\r\nimport { IsUserAdmin, IsUserAuthorized, getAuthToken, clearUserDetails } from '../helpers/authentication';\r\nimport { Context } from '../helpers/Context';\r\nimport Cart from './Cart';\r\n\r\nexport class BrandNavMenu extends Component {\r\n static displayName = BrandNavMenu.name;\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n\r\n\r\n this.state = {\r\n collapsed: true,\r\n CategoryList: [],\r\n SubcategoryList: [],\r\n BrandList: [],\r\n isSticky: false,\r\n isLoggedIn: false,\r\n dropdownOpen: false,\r\n menuOpen: false,\r\n size: {\r\n width: undefined,\r\n height: undefined,\r\n },\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const { getCategories, getSubcategories, getBrands } = this.context;\r\n //getCategories();\r\n //getSubcategories();\r\n getBrands();\r\n this.handleScroll();\r\n const handleResize = () => {\r\n this.setState({\r\n size: {\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n },\r\n });\r\n };\r\n window.addEventListener(\"resize\", handleResize);\r\n this.handleResize = handleResize;\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n const { categories, subcategories, brands } = this.context;\r\n //if (prevState.CategoryList !== categories) {\r\n // this.setState({ CategoryList: categories });\r\n //}\r\n //if (prevState.SubcategoryList !== subcategories) {\r\n // this.setState({ SubcategoryList: subcategories });\r\n //}\r\n if (prevState.BrandList !== brands) {\r\n this.setState({ BrandList: brands });\r\n }\r\n if (this.state.size.width > 768 && this.state.menuOpen) {\r\n this.setState({ menuOpen: false });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('scroll', this.handleScroll);\r\n window.removeEventListener(\"resize\", this.handleResize);\r\n }\r\n\r\n menuToggleHandler = () => {\r\n this.setState((prevState) => ({\r\n menuOpen: !prevState.menuOpen,\r\n }));\r\n };\r\n\r\n handleScroll = () => {\r\n const { isSticky } = this.state;\r\n const scrollPosition = window.pageYOffset;\r\n\r\n if (scrollPosition > 60 && !isSticky) {\r\n this.setState({ isSticky: true });\r\n } else if (scrollPosition <= 60 && isSticky) {\r\n this.setState({ isSticky: false });\r\n }\r\n\r\n requestAnimationFrame(this.handleScroll);\r\n };\r\n\r\n async handleLogout() {\r\n const confirmStyles = {\r\n classNames: {\r\n confirmButton: 'btn btn-sm confirm-button',\r\n cancelButton: 'btn btn-sm cancel-button',\r\n }\r\n }\r\n const result = await confirm(\"Are you sure you want to log out?\", confirmStyles);\r\n if (result) {\r\n window.location.href = \"/login\";\r\n clearUserDetails();\r\n }\r\n }\r\n\r\n render() {\r\n //console.log(this.state)\r\n const { isSticky, menuOpen, size, CategoryList, SubcategoryList, BrandList } = this.state;\r\n const { cartCount, wishCount, showCart, setShowCart, getCategories, categories } = this.context;\r\n //const renderedCategories = CategoryList\r\n // .filter(category => SubcategoryList.some(sub => sub.categoryId === category.id))\r\n // .map((category, index) => {\r\n // const matchingSubcategories = SubcategoryList.filter(sub => sub.categoryId === category.id);\r\n\r\n // return (\r\n // \r\n // \r\n // {category.title}\r\n // \r\n // \r\n // \r\n // \r\n //
        \r\n // {matchingSubcategories.map((sub, id) => (\r\n // \r\n // {sub.title}\r\n // \r\n // ))}\r\n //
      \r\n //
      \r\n //
      \r\n // );\r\n // });\r\n\r\n //const navigationContent = renderedCategories.length > 0 ? renderedCategories : Loading...;\r\n const parts = window.location.href.split(\"/\");\r\n let lastWord;\r\n if (parts[parts.length - 1]) {\r\n lastWord = parts[parts.length - 1];\r\n } else {\r\n lastWord = parts[parts.length - 2];\r\n }\r\n const selectedBrand = BrandList.find(item => item.slug == \"razer\");\r\n //console.log(selectedBrand, lastWord, BrandList)\r\n return (\r\n
      \r\n
      \r\n
      \r\n \r\n Support Hotline: +27 10 220 5737\r\n \r\n
      \r\n \r\n \r\n {/**/}\r\n \r\n \r\n {/**/}\r\n
      \r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n
      \r\n \r\n \"logo\"\r\n \r\n \r\n
      \r\n {!menuOpen ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
      \r\n
      \r\n
      \r\n {/**/}\r\n {/* */}\r\n {/* {navigationContent}*/}\r\n {/* */}\r\n {/*
      */}\r\n {/* */}\r\n {/* */}\r\n\r\n {/*
      */}\r\n {/* */}\r\n {/*
      */}\r\n {/**/}\r\n
      \r\n {showCart && }\r\n
      \r\n );\r\n }\r\n}\r\nconst ListItem = React.forwardRef(({ className, children, title, ...props }, forwardedRef) => (\r\n
    • \r\n \r\n \r\n
      {title}
      \r\n

      {children}

      \r\n
      \r\n
      \r\n
    • \r\n));","import React, { Component } from 'react';\r\nimport jsonp from 'jsonp';\r\nimport { ToastUtility } from '@syncfusion/ej2-react-notifications';\r\nimport GreptchaHelper from '../../helpers/GreptchaHelper';\r\nimport { fieldRequired } from '../../helpers/validation';\r\n\r\nexport class BrandFooter extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n collapsed: true,\r\n subSubscribeEmail: \"\",\r\n CaptchaToken: false\r\n };\r\n //this.toggleNavbar = this.toggleNavbar.bind(this);\r\n this.handleSubscribe = this.handleSubscribe.bind(this);\r\n this.handleCaptchaChange = this.handleCaptchaChange.bind(this);\r\n }\r\n\r\n toggleNavbar() {\r\n //this.setState({\r\n // collapsed: !this.state.collapsed\r\n //});\r\n }\r\n\r\n handleSubscribe() {\r\n const url = 'https://triggercraft.us18.list-manage.com/subscribe/post-json?u=6c3c5d86e0bcce73964102b87&id=9a9eac6a55&f_id=009d0de7f0'\r\n\r\n let IsValid = true;\r\n\r\n IsValid &= fieldRequired(this.state.subSubscribeEmail, \"errSubscribeEmail\", \"* Required\");\r\n IsValid &= fieldRequired(this.state.CaptchaToken, \"errSubscribeCaptcha\", \"* Required\");\r\n\r\n if (IsValid) {\r\n const errorCallback = () => {\r\n ToastUtility.show({\r\n title: 'Newsletter',\r\n content: 'An error occurred while subscribing to the newsletter.',\r\n timeOut: 5000,\r\n position: { X: 'Right', Y: 'Top' },\r\n showCloseButton: true,\r\n cssClass: 'toast-danger'\r\n });\r\n this.setState({ subSubscribeEmail: \"\" })\r\n };\r\n\r\n jsonp(`${url}&EMAIL=${this.state.subSubscribeEmail}`, { param: 'c' }, (_, { msg, result }) => {\r\n if (result !== 'success') {\r\n errorCallback();\r\n this.setState({ subSubscribeEmail: \"\" })\r\n } else {\r\n ToastUtility.show({\r\n title: 'Newsletter',\r\n content: msg,\r\n timeOut: 5000,\r\n position: { X: 'Right', Y: 'Top' },\r\n showCloseButton: true,\r\n cssClass: 'toast-success'\r\n });\r\n this.setState({ subSubscribeEmail: \"\" })\r\n }\r\n });\r\n }\r\n };\r\n\r\n\r\n handleCaptchaChange(CaptchaToken) {\r\n this.setState({ CaptchaToken }, () => fieldRequired(this.state.CaptchaToken, \"errSubscribeCaptcha\", \"* Required\"));\r\n }\r\n render() {\r\n var currentYear = new Date().getFullYear();\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

      About

      \r\n

      Powered by TriggerCraft.

      \r\n
      \r\n © {currentYear} TriggerCraft. All Rights Reserved.\r\n
      \r\n
      \r\n
      \r\n

      Newsletter

      \r\n

      Subscribe to the Razer South Africa Newsletter to get special offers and once-in-a-lifetime deals but also the latest news and updates.

      \r\n\r\n
      \r\n
      \r\n this.setState({ subSubscribeEmail: e.target.value }, () => fieldRequired(this.state.subSubscribeEmail, \"errSubscribeEmail\", \"* Required\"))} aria-describedby=\"basic-addon\" />\r\n this.handleSubscribe()} id=\"basic-addon\">SUBSCRIBE\r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n

      Contact Us

      \r\n

      Support Hotline: +27 10 220 5737
      Email: support@triggercraft.co.za

      \r\n {/*

      Email support@triggercraft.co.za

      */}\r\n

      Stand 359, Olympic Duel Avenue, Northlands Business Park, 29, New Market, Road, Northriding, Randburg, 2162

      \r\n
      \r\n\r\n\r\n
      \r\n
      \r\n
      \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport { NavMenu } from './NavMenu';\r\nimport { Footer } from './nav/Footer';\r\nimport ScrollToTopButton from './ScrollToTopButton';\r\nimport FixedMessenger from './FixedMessenger';\r\nimport { BrandNavMenu } from './BrandNavMenu';\r\nimport { BrandFooter } from './nav/BrandFooter';\r\n\r\nexport class BrandLayout extends Component {\r\n static displayName = BrandLayout.name;\r\n\r\n render() {\r\n return (\r\n
      \r\n \r\n \r\n {this.props.children}\r\n \r\n \r\n {/**/}\r\n \r\n
      \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { getAuthToken } from '../helpers/authentication';\r\nimport { Context } from '../helpers/Context';\r\nimport { getCurrentDomain } from '../helpers/Lookup';\r\nimport QuickViewModal from './QuickViewModal';\r\n\r\nexport class ProductBrandCard extends Component {\r\n static contextType = Context;\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n isQuickViewOpen: false,\r\n quickViewProduct: null,\r\n };\r\n }\r\n\r\n calculateSavingsPercentage(originalPrice, discountedPrice) {\r\n const savingsAmount = originalPrice - discountedPrice;\r\n const savingsPercentage = (savingsAmount / originalPrice) * 100;\r\n return savingsPercentage.toFixed(0);\r\n };\r\n\r\n view = (productData) => {\r\n this.setState({ isQuickViewOpen: true, quickViewProduct: productData });\r\n };\r\n\r\n toggleQuickView = () => {\r\n this.setState({ isQuickViewOpen: !this.state.isQuickViewOpen });\r\n };\r\n\r\n handleShare = async (productLink) => {\r\n try {\r\n await navigator.share({\r\n title: 'Check out this product!',\r\n url: productLink,\r\n });\r\n console.log('Shared successfully');\r\n } catch (error) {\r\n console.error('Error sharing:', error);\r\n }\r\n };\r\n\r\n render() {\r\n const { product, imageURL, prevPrice, currPrice, accentColour, mainColour, cardColour, textColour } = this.props;\r\n const { handleAddToCart, handleAddToWishlist, handleRemoveFromWishlist, isItemInWishlist } = this.context;\r\n const { quickViewProduct, isQuickViewOpen } = this.state;\r\n const productData = { ...this.props }\r\n let image = \"/assets/imgs/Trigger-Craft-Logo.png\";\r\n //console.log(productData.imageURL)\r\n if (productData && productData.imageURL) {\r\n let images = productData.imageURL;\r\n if (productData.imageURL.includes(\"DynamicData\")) images = JSON.parse(productData.imageURL);\r\n\r\n if (Array.isArray(images)) {\r\n let pic = images[0];\r\n if (pic.includes(\"DynamicData\") && pic.includes(\"[\")) {\r\n const parsedImage = JSON.parse(pic);\r\n image = getCurrentDomain() + parsedImage[0];\r\n } else {\r\n image = getCurrentDomain() + pic;\r\n }\r\n \r\n } else if (images.includes(\"https\") && images.includes(\"[\")) {\r\n image = JSON.parse(images.split(\", \")[0])[0];\r\n } else if (images.includes(\"https\") || images.includes(\"assets\")){\r\n image = images.split(\", \")[0];\r\n } else {\r\n image = getCurrentDomain() + images;\r\n }\r\n }\r\n\r\n //console.log(image, productData)\r\n return (\r\n
      \r\n \r\n \"product\r\n \r\n {prevPrice && prevPrice > currPrice ?
      -{this.calculateSavingsPercentage(prevPrice, currPrice)}%
      : \"\"}\r\n
      \r\n {/*{isItemInWishlist(product.id) ? handleRemoveFromWishlist(product.id)} className=\"fa-solid fa-heart text-danger fs-5\" title=\"Remove From Wishlist\"> : handleAddToWishlist({ product, productId: product.id, price: currPrice, img: imageURL })} className=\"fa-regular fa-heart fw-light fs-5\" title=\"Add To Wishlist\">}*/}\r\n {/*
      */}\r\n this.handleShare(\"/products/razer-product-view/\" + productData.product.sku)}>\r\n
      \r\n this.view(productData)} className=\"fas fa-search fw-light fs-5\" title=\"Quick View\">\r\n
      \r\n {/*
      */}\r\n {/* {product.stock > 0 ?*/}\r\n {/* */}\r\n {/* :*/}\r\n {/* */}\r\n {/* }*/}\r\n {/*
      */}\r\n
      \r\n \r\n
      {product.title}
      \r\n
      \r\n {/**/}\r\n {/*

      {description}

      */}\r\n
      \r\n \r\n
      \r\n
      \r\n {/*{prevPrice ? R {prevPrice.toLocaleString('en-ZA')}.00 : \"\"}*/}\r\n
      \r\n View details\r\n {new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', }).format(currPrice)}\r\n
      \r\n \r\n
      \r\n {quickViewProduct && (\r\n \r\n )}\r\n
      \r\n );\r\n }\r\n\r\n\r\n}","import React, { useContext, useEffect, useState } from 'react';\r\nimport { Link, useLocation, useParams, useNavigate } from \"react-router-dom\";\r\nimport { Context } from '../helpers/Context';\r\nimport { getCurrentDomain } from '../helpers/Lookup';\r\nimport FixedMessenger from './FixedMessenger';\r\nimport { ProductBrandCard } from './ProductBrandCard';\r\n\r\nconst BrandSpecificPage = () => {\r\n const { products, getProducts, brands, getBrands } = useContext(Context);\r\n const navigate = useNavigate();\r\n const [loading, setLoading] = useState(true);\r\n const [isHovered, setIsHovered] = useState(false);\r\n const [selectedOption, setSelectedOption] = useState('lowest');\r\n const [showOutOfStock, setShowOutOfStock] = useState(true);\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const location = useLocation();\r\n const productsPerPage = 12;\r\n const { slug } = useParams();\r\n const parts = window.location.href.split(\"/\");\r\n const lastWord = parts[parts.length - 1];\r\n const brandSlug = slug || lastWord.trim();\r\n const selectedBrand = brands.find(item => item.slug == brandSlug);\r\n let filteredProducts = products.filter(item => { return item.productBrandId == selectedBrand.id });\r\n\r\n if (selectedOption === 'lowest') {\r\n filteredProducts = filteredProducts.sort((a, b) => {\r\n const aPrice = a.sPrice || a.price;\r\n const bPrice = b.sPrice || b.price;\r\n return aPrice - bPrice;\r\n });\r\n } else if (selectedOption === 'highest') {\r\n filteredProducts = filteredProducts.sort((a, b) => {\r\n const aPrice = a.sPrice || a.price;\r\n const bPrice = b.sPrice || b.price;\r\n return bPrice - aPrice;\r\n });\r\n } else if (selectedOption === 'a-z') {\r\n filteredProducts = filteredProducts.sort((a, b) => a.title.localeCompare(b.title));\r\n } else if (selectedOption === 'z-a') {\r\n filteredProducts = filteredProducts.sort((a, b) => b.title.localeCompare(a.title));\r\n }\r\n\r\n if (showOutOfStock) {\r\n filteredProducts = filteredProducts.filter(item => item.stock > 0);\r\n } else if (!showOutOfStock) {\r\n filteredProducts = filteredProducts.filter(item => item);\r\n }\r\n\r\n const totalPages = Math.ceil(filteredProducts.length / productsPerPage);\r\n const indexOfLastProduct = currentPage * productsPerPage;\r\n const indexOfFirstProduct = indexOfLastProduct - productsPerPage;\r\n const currentProducts = filteredProducts.slice(indexOfFirstProduct, indexOfLastProduct);\r\n const visiblePageCount = Math.min(7, totalPages);\r\n const handlePageChange = (pageNumber) => {\r\n setCurrentPage(pageNumber);\r\n };\r\n\r\n const getStartPage = () => {\r\n if (currentPage <= Math.ceil(visiblePageCount / 2)) {\r\n return 1;\r\n } else if (currentPage >= totalPages - Math.floor(visiblePageCount / 2)) {\r\n return totalPages - visiblePageCount + 1;\r\n } else {\r\n return currentPage - Math.floor(visiblePageCount / 2);\r\n }\r\n };\r\n\r\n const first20Items = filteredProducts.sort((a, b) => new Date(b.dateAdded) - new Date(a.dateAdded)).slice(0, 20);\r\n\r\n const startPage = getStartPage();\r\n\r\n const beforePseudoStyle = {\r\n //zIndex: \"-1\",\r\n //position: \"absolute\",\r\n //height: \"100%\",\r\n //width: \"100%\",\r\n //content: \"\",\r\n //top: 0,\r\n //left: 0,\r\n backgroundColor: selectedBrand && selectedBrand.accentBrandColour,\r\n borderRadius: \"24px\",\r\n //transform: \"scale(0)\",\r\n transition: \"all 0.2s\",\r\n };\r\n\r\n const goToCategory = (data) => {\r\n navigate(data);\r\n };\r\n\r\n const hoverStyle = {\r\n transform: \"scale(1)\",\r\n };\r\n\r\n const handleOptionChange = (e) => {\r\n setSelectedOption(e.target.value);\r\n };\r\n\r\n const toggleStock = () => {\r\n setShowOutOfStock((prevShowOutOfStock) => !prevShowOutOfStock);\r\n };\r\n\r\n const dynamicGridStyleNew = {\r\n display: 'grid',\r\n gridTemplateColumns: `repeat(${first20Items.length}, 1fr)`,\r\n gap: '18px',\r\n fontSize: 0,\r\n listStyle: 'none',\r\n marginBottom: '30px',\r\n overflowX: 'auto',\r\n scrollbarWidth: 'none',\r\n };\r\n\r\n const dynamicGridStyle = {\r\n display: 'grid',\r\n gridTemplateColumns: `repeat(${filteredProducts.length}, 1fr)`,\r\n gap: '18px',\r\n fontSize: 0,\r\n listStyle: 'none',\r\n marginBottom: '30px',\r\n overflowX: 'auto',\r\n scrollbarWidth: 'none',\r\n };\r\n\r\n useEffect(() => {\r\n document.title = \"Product Brands :: TriggerCraft\";\r\n getBrands();\r\n getProducts();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const initSlider = () => {\r\n const imageListNew = document.querySelector(\".slider-wrapper-new .image-list-new\");\r\n const imageList = document.querySelector(\".slider-wrapper .image-list\");\r\n const slideButtonsNew = document.querySelectorAll(\".slider-wrapper-new .slide-button-new\");\r\n const slideButtons = document.querySelectorAll(\".slider-wrapper .slide-button\");\r\n const maxScrollLeft = imageList.scrollWidth - imageList.clientWidth;\r\n\r\n slideButtonsNew.forEach(button => {\r\n button.addEventListener(\"click\", () => {\r\n let direction;\r\n if (button.id === \"prev-slide-new\")\r\n direction = -1;\r\n if (button.id === \"next-slide-new\")\r\n direction = 1;\r\n \r\n const scrollAmount = 1104 * direction;\r\n imageListNew.scrollBy({ left: scrollAmount, behavior: \"smooth\" });\r\n });\r\n });\r\n\r\n const handleNewSlideButtons = () => {\r\n slideButtonsNew[0].style.display = imageListNew.scrollLeft <= 0 ? \"none\" : \"flex\";\r\n slideButtonsNew[1].style.display = imageListNew.scrollLeft >= maxScrollLeft ? \"none\" : \"flex\";\r\n };\r\n imageListNew.addEventListener(\"scroll\", () => {\r\n handleNewSlideButtons();\r\n });\r\n\r\n slideButtons.forEach(button => {\r\n button.addEventListener(\"click\", () => {\r\n let direction;\r\n if (button.id === \"prev-slide\")\r\n direction = -1;\r\n if (button.id === \"next-slide\")\r\n direction = 1;\r\n \r\n const scrollAmount = 1104 * direction;\r\n imageList.scrollBy({ left: scrollAmount, behavior: \"smooth\" });\r\n });\r\n });\r\n\r\n const handleSlideButtons = () => {\r\n slideButtons[0].style.display = imageList.scrollLeft <= 0 ? \"none\" : \"flex\";\r\n slideButtons[1].style.display = imageList.scrollLeft >= maxScrollLeft ? \"none\" : \"flex\";\r\n };\r\n imageList.addEventListener(\"scroll\", () => {\r\n handleSlideButtons();\r\n });\r\n };\r\n\r\n initSlider();\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", initSlider);\r\n window.removeEventListener(\"load\", initSlider);\r\n };\r\n }, []);\r\n\r\n /*const first20Items = filteredProducts.sort((a, b) => new Date(b.dateAdded) - new Date(a.dateAdded)).slice(0, 20);*/\r\n\r\n const textColor = selectedBrand && selectedBrand.accentBrandColour;\r\n //console.log(filteredProducts)\r\n return (\r\n <>\r\n
      \r\n
      \r\n {}\r\n
      \r\n\r\n {selectedBrand && selectedBrand.brandBannerImages ?\r\n
      \r\n {selectedBrand\r\n
      \r\n :\r\n
      \r\n {selectedBrand\r\n
      \r\n }\r\n {/*
      */}\r\n
      \r\n
      goToCategory(`/categories/razer/${\"Accessories\".replace(\" \", \"_\").toLowerCase()}`)}>\r\n \r\n
      Accessories
      \r\n
      \r\n
      goToCategory(`/categories/razer/${\"Audio\".replace(\" \", \"_\").toLowerCase()}`)}>\r\n \r\n
      Audio
      \r\n
      \r\n
      goToCategory(`/categories/razer/${\"Controllers\".replace(\" \", \"_\").toLowerCase()}`)}>\r\n \r\n
      Controllers
      \r\n
      \r\n
      goToCategory(`/categories/razer/${\"Headsets\".replace(\" \", \"_\").toLowerCase()}`)}>\r\n \r\n
      Headsets
      \r\n
      \r\n
      goToCategory(`/categories/razer/${\"Keyboards\".replace(\" \", \"_\").toLowerCase()}`)}>\r\n \r\n
      Keyboards
      \r\n
      \r\n
      goToCategory(`/categories/razer/${\"Mice and Mousepads\".replaceAll(\" \", \"_\").toLowerCase()}`)}>\r\n \r\n
      Mice and Mousepads
      \r\n
      \r\n
      goToCategory(`/categories/razer/${\"Office Essentials\".replace(\" \", \"_\").toLowerCase()}`)}>\r\n \r\n
      Office Essentials
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n All Products  \r\n
      \r\n \r\n \r\n
      \r\n   In Stock Only\r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n {/*
      */}\r\n
      \r\n

      THE LATEST AND GREATEST GAMING GEAR

      \r\n

      Razer mice, keyboards, headsets, laptops & more

      \r\n
      \r\n {/*
      */}\r\n
      \r\n

      FRESH OFF THE LINE

      \r\n

      Check out our latest releases to secure the most up-to-date upgrades for your setup

      \r\n
      \r\n\r\n
      \r\n
      \r\n \r\n
        \r\n {first20Items.map((product) => (\r\n = new Date() ? product.sPrice : product.price}\r\n prevPrice={product.sPrice && product.dateSPriceEnds && new Date(product.dateSPriceEnds) >= new Date() ? product.price : product.sPrice}\r\n title={product.title}\r\n description={product.shortDescription}\r\n />\r\n ))}\r\n
      \r\n \r\n
      \r\n
      \r\n\r\n
      \r\n

      BEST SELLERS

      \r\n

      Join the hype train with the hottest products in our arsenal

      \r\n
      \r\n\r\n
      \r\n
      \r\n \r\n
        \r\n {filteredProducts.map((product) => (\r\n = new Date() ? product.sPrice : product.price}\r\n prevPrice={product.sPrice && product.dateSPriceEnds && new Date(product.dateSPriceEnds) >= new Date() ? product.price : product.sPrice}\r\n title={product.title}\r\n description={product.shortDescription}\r\n />\r\n ))}\r\n
      \r\n \r\n
      \r\n
      \r\n\r\n
      \r\n \"Razer\r\n
      \r\n
      \r\n \r\n \r\n );\r\n};\r\n\r\nexport default BrandSpecificPage;","import React, { Component } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport { Footer } from './nav/Footer';\r\nimport { NavMenu } from './NavMenu';\r\nimport ScrollToTopButton from './ScrollToTopButton';\r\n\r\nexport class Layout extends Component {\r\n static displayName = Layout.name;\r\n\r\n render() {\r\n return (\r\n
      \r\n \r\n \r\n {this.props.children}\r\n \r\n \r\n \r\n
      \r\n
      \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Routes, Route, Navigate } from 'react-router-dom';\r\nimport { getAuthToken, getUserDetails } from '../helpers/authentication';\r\nimport { getIsAdmin } from '../helpers/Lookup';\r\n\r\nconst ProtectedRoute = ({ element: Element, ...rest }) => {\r\n const isLoggedIn = getAuthToken();\r\n const isAdmin = getIsAdmin();\r\n return (\r\n \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default ProtectedRoute;","import React, { useContext, useEffect, useState } from 'react';\r\nimport { Link, useLocation, useParams } from \"react-router-dom\";\r\nimport { Context } from '../helpers/Context';\r\nimport { getCurrentDomain } from '../helpers/Lookup';\r\nimport FixedMessenger from './FixedMessenger';\r\nimport { ProductBrandCard } from './ProductBrandCard';\r\n\r\nconst RazerCategoryPage = () => {\r\n const [loading, setLoading] = useState(true);\r\n const [isDivVisible, setIsDivVisible] = useState(window.innerWidth >= 800);\r\n const [selectedCategories, setSelectedCategories] = useState([]);\r\n const [collapsedCategories, setCollapsedCategories] = useState([]);\r\n const [isHovered, setIsHovered] = useState(false);\r\n const [maxPrice, setMaxPrice] = useState(100000);\r\n const [selectedBrands, setSelectedBrands] = useState([]);\r\n const [sort, setSort] = useState(null);\r\n const [showOutOfStock, setShowOutOfStock] = useState(true);\r\n const [selectedOption, setSelectedOption] = useState('lowest');\r\n const [productsPerPage] = useState(9);\r\n const location = useLocation();\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const { category } = useParams();\r\n\r\n let FilterCatName = category.replace(/_/g, \" \");\r\n\r\n const handleCategoryChange = (event) => {\r\n const categoryId = event.target.id;\r\n if (selectedCategories.includes(categoryId)) {\r\n setSelectedCategories(selectedCategories.filter(id => id !== categoryId));\r\n } else {\r\n setSelectedCategories([...selectedCategories, categoryId]);\r\n }\r\n };\r\n\r\n const handleDeselectAll = () => {\r\n setSelectedBrands([]);\r\n setMaxPrice(100000)\r\n };\r\n\r\n const toggleCategory = (categoryId) => {\r\n if (collapsedCategories.includes(categoryId)) {\r\n setCollapsedCategories(collapsedCategories.filter((id) => id !== categoryId));\r\n } else {\r\n setCollapsedCategories([...collapsedCategories, categoryId]);\r\n }\r\n };\r\n\r\n const parts = window.location.href.split(\"/\");\r\n const lastWord = parts[parts.length - 1];\r\n\r\n const { products, brands, categories, subcategories, getProducts, getBrands, getCategories, getSubcategories } = useContext(Context);\r\n const selectedBrand = brands.find(item => item.slug == \"razer\");\r\n const indexOfLastProduct = currentPage * productsPerPage;\r\n const indexOfFirstProduct = indexOfLastProduct - productsPerPage;\r\n let filteredProducts = products.filter(item => { return item.productBrandId == selectedBrand.id });\r\n\r\n let scategory = categories.find(c => c.slug === lastWord);\r\n if (scategory) {\r\n FilterCatName = scategory && scategory.title;\r\n let FilterSubcategories = subcategories ? subcategories.filter(c => c.categoryId === scategory.id).map(c => { return c.id; }) : [];\r\n filteredProducts = filteredProducts?.filter((product) => {\r\n if (product.selectedCategories !== \"\" || product.selectedCategories) {\r\n const selectedCategoriesArr = JSON.parse(product.selectedCategories);\r\n if (selectedCategoriesArr || Array.isArray(selectedCategoriesArr)) {\r\n return selectedCategoriesArr?.some(id => FilterSubcategories.includes(id));\r\n } else {\r\n return false;\r\n }\r\n } else\r\n return false;\r\n }).filter(product => selectedCategories.length === 0 || selectedCategories.some(categoryId => product.selectedCategories.includes(categoryId)));\r\n } else {\r\n\r\n scategory = subcategories.find(c => c.slug === lastWord);\r\n FilterCatName = scategory && scategory.title;\r\n try {\r\n filteredProducts = filteredProducts.filter((product) => {\r\n if (product.selectedCategories !== \"\" || product.selectedCategories) {\r\n const selectedCategoriesArr = JSON.parse(product.selectedCategories);\r\n return selectedCategoriesArr.includes(scategory.id);\r\n } else\r\n return false;\r\n }).filter(product => selectedCategories.length === 0 || selectedCategories.some(categoryId => product.selectedCategories.includes(categoryId)));\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n filteredProducts = filteredProducts.filter(\r\n (product) => product.price <= maxPrice || (product.sPrice && product.sPrice <= maxPrice)\r\n );\r\n\r\n if (selectedOption === 'lowest') {\r\n filteredProducts = filteredProducts.sort((a, b) => {\r\n const aPrice = a.sPrice || a.price;\r\n const bPrice = b.sPrice || b.price;\r\n return aPrice - bPrice;\r\n });\r\n } else if (selectedOption === 'highest') {\r\n filteredProducts = filteredProducts.sort((a, b) => {\r\n const aPrice = a.sPrice || a.price;\r\n const bPrice = b.sPrice || b.price;\r\n return bPrice - aPrice;\r\n });\r\n } else if (selectedOption === 'a-z') {\r\n filteredProducts = filteredProducts.sort((a, b) => a.title.localeCompare(b.title));\r\n } else if (selectedOption === 'z-a') {\r\n filteredProducts = filteredProducts.sort((a, b) => b.title.localeCompare(a.title));\r\n }\r\n\r\n if (showOutOfStock) {\r\n filteredProducts = filteredProducts.filter(item => item.stock > 0);\r\n } else if (!showOutOfStock) {\r\n filteredProducts = filteredProducts.filter(item => item);\r\n }\r\n\r\n const ProductBrandIDs = filteredProducts.map(item => { return item.productBrandId });\r\n const FilteredBrands = brands.filter(c => ProductBrandIDs.includes(c.id));\r\n\r\n filteredProducts = filteredProducts.filter((product) =>\r\n selectedBrands.length === 0 || selectedBrands.some((productBrandId) => product.productBrandId === productBrandId)\r\n );\r\n\r\n const currentProducts = filteredProducts.slice(indexOfFirstProduct, indexOfLastProduct);\r\n const handlePageChange = (pageNumber) => {\r\n setCurrentPage(pageNumber);\r\n };\r\n const totalPages = Math.ceil(filteredProducts.length / productsPerPage);\r\n const visiblePageCount = 7;\r\n\r\n const getStartPage = () => {\r\n if (currentPage <= Math.ceil(visiblePageCount / 2)) {\r\n return 1;\r\n } else if (currentPage >= totalPages - Math.floor(visiblePageCount / 2)) {\r\n return totalPages - visiblePageCount + 1;\r\n } else {\r\n return currentPage - Math.floor(visiblePageCount / 2);\r\n }\r\n };\r\n\r\n const beforePseudoStyle = {\r\n backgroundColor: selectedBrand && selectedBrand.accentBrandColour,\r\n borderRadius: \"24px\",\r\n transition: \"all 0.2s\",\r\n };\r\n\r\n const startPage = getStartPage();\r\n\r\n const handleOptionChange = (e) => {\r\n setSelectedOption(e.target.value);\r\n };\r\n\r\n const toggleDiv = () => {\r\n setIsDivVisible(!isDivVisible);\r\n };\r\n\r\n const toggleStock = () => {\r\n setShowOutOfStock((prevShowOutOfStock) => !prevShowOutOfStock);\r\n };\r\n useEffect(() => {\r\n document.title = \"Razer Categories :: TriggerCraft\";\r\n getBrands();\r\n getCategories();\r\n getSubcategories();\r\n getProducts().then(() => setLoading(false));\r\n\r\n const handleResize = () => {\r\n setIsDivVisible(window.innerWidth >= 768);\r\n };\r\n window.addEventListener(\"resize\", handleResize);\r\n\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, [])\r\n console.log(scategory)\r\n return (\r\n <>\r\n
      \r\n
      \r\n \r\n\r\n
      \r\n {/**/}\r\n {isDivVisible && (\r\n
      \r\n
      \r\n

      FILTER BY

      \r\n
      Product Categories
      \r\n {categories.map((category) => ( category.id == scategory.id &&\r\n
      \r\n
      toggleCategory(category.id)}>\r\n {category.title}{collapsedCategories.includes(category.id) ? '-' : '+'}\r\n
      \r\n
      \r\n {subcategories\r\n .filter((sub) => sub.categoryId === category.id)\r\n .map((sub) => (\r\n
      \r\n handleCategoryChange(e)}\r\n />\r\n \r\n
      \r\n ))}\r\n
      \r\n
      \r\n ))}\r\n
      \r\n
      )}\r\n
      \r\n

      {FilterCatName}

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

      {filteredProducts.length} products

      \r\n
      \r\n
      \r\n
      \r\n \r\n \r\n
      \r\n
      \r\n
      \r\n {/*
      */}\r\n {loading ?   Loading... : filteredProducts.length ? currentProducts.map((product) => (\r\n
      \r\n = new Date() ? product.sPrice : product.price}\r\n prevPrice={product.sPrice && product.dateSPriceEnds && new Date(product.dateSPriceEnds) >= new Date() ? product.price : product.sPrice}\r\n title={product.title}\r\n description={product.shortDescription}\r\n />\r\n
      \r\n )) :

      No Products Found

      }\r\n\r\n {!loading && filteredProducts.length > productsPerPage ? (
      \r\n \r\n {/*{console.log(currentProducts, visiblePageCount, totalPages, filteredProducts, lastWord, brandId)}*/}\r\n {Array.from({ length: Math.min(visiblePageCount, totalPages) }).map((_, index) => {\r\n const pageNumber = startPage + index;\r\n return (\r\n pageNumber > 0 &&\r\n pageNumber <= totalPages && (\r\n handlePageChange(pageNumber)}\r\n disabled={currentPage === pageNumber}\r\n className={currentPage === pageNumber ? \"pagination-active ellipsis-button\" : \"ellipsis-button\"}\r\n >\r\n {pageNumber}\r\n \r\n )\r\n );\r\n })}\r\n\r\n \r\n
      )\r\n : \"\"}\r\n
      \r\n
      \r\n \r\n \r\n );\r\n};\r\n\r\nexport default RazerCategoryPage;","/* eslint-disable jsx-a11y/alt-text */\r\n/* eslint-disable jsx-a11y/img-redundant-alt */\r\nimport { useContext, useEffect, useState } from \"react\";\r\nimport { useParams, Link, useLocation, useNavigate } from \"react-router-dom\";\r\nimport { TabContent, TabPane, Nav, NavItem, NavLink, Card, Button, CardTitle, CardText, Row, Col, Table } from 'reactstrap';\r\nimport { Context } from \"../helpers/Context\";\r\nimport { ProductCard } from \"./ProductCard\";\r\nimport { getCurrentDomain } from \"../helpers/Lookup\";\r\nimport { getAuthToken, getUserDetails } from \"../helpers/authentication\";\r\nimport classnames from 'classnames';\r\nimport FixedMessenger from \"./FixedMessenger\";\r\nimport { ProductBrandCard } from \"./ProductBrandCard\";\r\n\r\nfunction scrollToSection(sectionId) {\r\n const element = document.getElementById(sectionId);\r\n\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'smooth' });\r\n }\r\n}\r\n\r\nconst RazerProductView = () => {\r\n const [hover, setHover] = useState(null);\r\n const [quantity, setQuantity] = useState(1);\r\n const [loading, setLoading] = useState(true);\r\n const [activeTab, setActiveTab] = useState('1');\r\n const [relatedProducts, setRelatedProducts] = useState([]);\r\n const [newReview, setNewReview] = useState({ name: getAuthToken() ? `${getUserDetails().firstName} ${getUserDetails().lastName}` : \"\", rating: null, comment: '' });\r\n const location = useLocation();\r\n const { sku } = useParams();\r\n const navigate = useNavigate();\r\n const [currentImage, setCurrentImage] = useState(null);\r\n const [CategoryList, SetCategoryList] = useState(null);\r\n\r\n const { handleAddToCart, sendCustomEvent, handleRemoveFromWishlist, handleAddToWishlist, isItemInWishlist, getProducts, subcategories, products, AddProductActivity, getRandomObjectsFromArray, getSubcategories, categories, getReviews, reviews, setReviews, getBrands, brands } = useContext(Context);\r\n const productData = products.find(item => item.sku === sku);\r\n\r\n const decrement = () => {\r\n setQuantity((prevState) => {\r\n if (prevState === 1) return 1;\r\n return prevState - 1;\r\n });\r\n };\r\n const increment = () => {\r\n setQuantity((prevState) => prevState + 1);\r\n };\r\n\r\n const selectedBrand = brands.find(item => item.slug == \"razer\");\r\n const handleTabClick = (tabId) => {\r\n setActiveTab(tabId);\r\n };\r\n\r\n const changeImage = (newImage) => {\r\n setCurrentImage(newImage);\r\n };\r\n\r\n const scrollTo = (sectionId) => {\r\n scrollToSection(sectionId);\r\n };\r\n\r\n const addReview = async (e) => {\r\n var bearer = 'Bearer ' + getAuthToken();\r\n const data = {\r\n Id: 0,\r\n ProductId: productData.id,\r\n Name: newReview.name,\r\n Comment: newReview.comment,\r\n Rating: newReview.rating,\r\n DateAdded: new Date(),\r\n AddedBy: getUserDetails().id,\r\n Status: 1,\r\n }\r\n try {\r\n if (newReview.name && newReview.comment) {\r\n setLoading(true);\r\n const response = await fetch('/api/reviews', {\r\n method: 'POST',\r\n headers: {\r\n 'Authorization': bearer,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n\r\n if (response.ok) {\r\n setReviews([...reviews, newReview]);\r\n sendCustomEvent(\"Product Review\", \"Reviewed A Product\", `${productData.title}`)\r\n setLoading(false);\r\n } else {\r\n\r\n setLoading(false);\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n setNewReview({ name: `${getUserDetails().firstName} ${getUserDetails().lastName}`, rating: null, comment: '' });\r\n };\r\n\r\n useEffect(() => {\r\n document.title = \"Product View :: TriggerCraft\";\r\n\r\n const fetchData = async () => {\r\n try {\r\n await getProducts();\r\n await getSubcategories();\r\n await getBrands();\r\n\r\n setLoading(false);\r\n } catch (error) {\r\n console.error(\"Error fetching data:\", error);\r\n }\r\n };\r\n\r\n fetchData();\r\n\r\n }, [loading]);\r\n\r\n useEffect(() => {\r\n if (productData) {\r\n AddProductActivity(productData.id, 1);\r\n getReviews(productData.id);\r\n setCurrentImage(\"/assets/imgs/Trigger-Craft-Logo.png\")\r\n const razerProducts = products.filter(item => item.productBrandId === 17)\r\n const relatedProductList = getRandomObjectsFromArray(razerProducts, 4, productData)\r\n setRelatedProducts(relatedProductList);\r\n\r\n if (productData.images) {\r\n let images = productData.images;\r\n if (productData.images.includes(\"DynamicData\")) images = JSON.parse(productData.images);\r\n if (Array.isArray(images)) {\r\n images.map((image) => {\r\n if (image.includes(\"DynamicData\") && image.includes(\"[\")) {\r\n const parsedImage = JSON.parse(image);\r\n setCurrentImage(getCurrentDomain() + parsedImage[0]);\r\n } else {\r\n setCurrentImage(getCurrentDomain() + image);\r\n }\r\n });\r\n } else if (images.includes(\"https\") && images.includes(\"[\")) {\r\n setCurrentImage(JSON.parse(images.split(\", \")[0])[0]);\r\n } else {\r\n setCurrentImage(images.split(\", \")[0]);\r\n }\r\n }\r\n }\r\n }, [productData]);\r\n\r\n const productImage = productData && productData.images ? productData.images.includes(\"DynamicData\") ? JSON.parse(productData.images)[0].includes(\"\\\\\") && JSON.parse(productData.images)[0].includes(\"[\") ? getCurrentDomain() + JSON.parse(JSON.parse(productData.images))[0].replace(/\\\\/g, \"/\") : getCurrentDomain() + JSON.parse(productData.images)[0].replace(/\\\\/g, \"/\") : productData.images.split(\", \")[0] : \"/assets/imgs/Trigger-Craft-Logo.png\";\r\n\r\n const productPrice = productData && productData.sPrice ? productData.sPrice : productData && productData.price;\r\n\r\n const currentBrand = productData && brands.find(item => item.id === productData.productBrandId);\r\n // let related = [];\r\n // if (relatedProducts.length) {\r\n // related = relatedProducts;\r\n // } else {\r\n // getRelatedProducts(productData, products);\r\n // related = RelatedProducts;\r\n // }\r\n\r\n //const selectedCategoryNames = productData && productData.selectedCategories ? JSON.parse(productData.selectedCategories).map(categoryId => {\r\n // const matchedCategory = categories.find(category => category.id === categoryId);\r\n // return matchedCategory ? matchedCategory.title : \"Category Not Found\";\r\n //}) : [];\r\n let imageUrls = [\"/assets/imgs/Trigger-Craft-Logo.png\"];\r\n\r\n if (productData && productData.images) {\r\n let images = productData.images;\r\n if (productData.images.includes(\"DynamicData\")) images = JSON.parse(productData.images);\r\n\r\n if (Array.isArray(images)) {\r\n imageUrls = images.map((image) => {\r\n if (image.includes(\"DynamicData\") && image.includes(\"[\")) {\r\n const parsedImage = JSON.parse(image);\r\n return parsedImage;\r\n } else {\r\n return image;\r\n }\r\n });\r\n } else if (images.includes(\"https\") && images.includes(\"[\")) {\r\n imageUrls = JSON.parse(images.split(\", \")[0]);\r\n } else {\r\n imageUrls = images.split(\", \");\r\n }\r\n }\r\n // console.log(productData && productData);\r\n\r\n const RenderCategoryLink = (CategoryIDs) => {\r\n if (CategoryIDs === \"\")\r\n return No Categories\r\n\r\n CategoryIDs = JSON.parse(CategoryIDs);\r\n return (\r\n <>|{CategoryIDs?.map(GetCategorySlug)}\r\n )\r\n }\r\n\r\n const GetCategorySlug = (id, idx) => {\r\n const cat = subcategories.find(c => c.id == id);\r\n return cat?.title && cat?.slug && {cat?.title}|\r\n }\r\n\r\n const RenderTagLink = (TagLink) => {\r\n\r\n let tagArr = [];\r\n if (TagLink !== \"\")\r\n tagArr = TagLink.split(\",\");\r\n return (\r\n tagArr.length > 0 ?\r\n <>|\r\n {\r\n tagArr.map((item, idx) =>\r\n \r\n {item.trim()}|\r\n {(idx === 4 && tagArr.length > 5) && <>
      |}\r\n
      \r\n )\r\n }\r\n \r\n :\r\n No tags\r\n )\r\n }\r\n\r\n return (\r\n <>\r\n
      \r\n
      \r\n {!loading ? (
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n {/*
      */}\r\n
      \r\n {imageUrls.slice(0, 6).map((imageUrl, index) => (\r\n changeImage(imageUrl.includes(\"DynamicData\") ? getCurrentDomain() + imageUrl : imageUrl)}\r\n />))}\r\n
      \r\n
      \r\n
      \r\n {productData.title}\r\n
      \r\n currentBrand.id ? navigate(`/brands/products/${currentBrand.slug}`) : null} src={currentBrand?.brandImages ? getCurrentDomain() + currentBrand.brandImages : \"/assets/imgs/Trigger-Craft-Logo.png\"} />\r\n availability: {productData.stock > 0 ? In Stock : Out Of Stock}\r\n
      \r\n {reviews.length ? < i className=\"fa-solid fa-star\" style={{ color: \"#44D62C\", fontSize: \"16px\" }}>  {productData.avgRating}  { handleTabClick('3'); scrollTo('reviewSection'); }}>{productData.reviews} {productData.reviews > 1 ? \"REVIEWS\" : \"REVIEW\"}\r\n : Be the first to { handleTabClick('3'); scrollTo('reviewSection'); }}>REVIEW}\r\n
      \r\n\r\n {new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', }).format(productPrice)}\r\n\r\n
      \r\n
      \r\n -\r\n {quantity}\r\n +\r\n
      \r\n {productData.stock > 0 ?\r\n :\r\n }\r\n\r\n {/*{isItemInWishlist(productData.id) ? handleRemoveFromWishlist(productData.id)} className=\"fa-solid fa-heart text-danger ms-3 fs-2\" title=\"Remove From Wishlist\"> : handleAddToWishlist({ product: productData, productId: productData.id, price: productPrice, img: productImage })} className=\"fa-regular fa-heart fw-light ms-3 fs-2\" title=\"Add To Wishlist\">}*/}\r\n
      \r\n\r\n \r\n
      \r\n \r\n Category:
      {productData.selectedCategories && RenderCategoryLink(productData.selectedCategories)}\r\n
      \r\n \r\n Tags
      {RenderTagLink(productData.tags)}\r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n \r\n \r\n \r\n \r\n
      \r\n \r\n {productData.about && <>
      \r\n \r\n
      \r\n }\r\n {productData.AdditionalInfo && <>
      \r\n \r\n
      \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
      SKU{productData.sku}
      GTIN{productData.gtin}
      Width{productData.width}
      Height{productData.height}
      Weight{productData.weight}
      Length{productData.length}
      \r\n \r\n
      \r\n
      \r\n \r\n \r\n \r\n \r\n Review Product\r\n {!reviews.find(item => getAuthToken() && item.addedBy === getUserDetails().id) ? <>
      \r\n {[...Array(5)].map((star, index) => {\r\n const currentRating = index + 1;\r\n return ();\r\n })}\r\n
      \r\n
      \r\n \r\n
      \r\n setNewReview({ ...newReview, comment: e.target.value })}\r\n />\r\n
      \r\n : You already reviewed this product.}\r\n
      \r\n \r\n \r\n \r\n Customer Reviews\r\n
      \r\n {reviews.length ? (reviews.map((review, index) => {\r\n const stars = Array.from({ length: review.rating }, (_, i) => i + 1);\r\n\r\n return (\r\n
      \r\n
      \r\n {stars.map((starIndex) => (\r\n \r\n ))}\r\n
      \r\n
      \r\n

      {review.name}

      \r\n

      {new Date(review.dateAdded).toLocaleDateString()}

      \r\n
      \r\n

      {review.comment}

      \r\n
      \r\n );\r\n })\r\n ) : No reviews at the moment for this product, be the first to pull the trigger.}\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n

      Related Products

      \r\n
      \r\n {relatedProducts.map((product) => {\r\n return (\r\n
      \r\n = new Date() ? product.sPrice : product.price}\r\n prevPrice={product.sPrice && product.dateSPriceEnds && new Date(product.dateSPriceEnds) >= new Date() ? product.price : product.sPrice}\r\n title={product.title}\r\n description={product.shortDescription}\r\n />\r\n
      \r\n )\r\n })}\r\n
      \r\n
      \r\n
      \r\n
      ) :
      Loading....
      }\r\n \r\n \r\n );\r\n};\r\n\r\nexport default RazerProductView;","import React, { Component } from 'react';\r\nimport { GoogleApiProvider } from 'react-gapi';\r\nimport { Route, Routes } from 'react-router-dom';\r\nimport AppRoutes, { AdminRoutes } from './AppRoutes';\r\nimport { BrandLayout } from './components/BrandLayout';\r\nimport BrandSpecificPage from './components/BrandSpecificPage';\r\nimport { Layout } from './components/Layout';\r\nimport ProtectedRoute from './components/ProtectedRoutes';\r\nimport RazerCategoryPage from './components/RazerCategoryPage';\r\nimport RazerProductView from './components/RazerProductView';\r\nimport './css/app.css';\r\nimport './helpers/NumberExtension';\r\nimport './helpers/string-prototypes';\r\n\r\n\r\nexport default class App extends Component {\r\n static displayName = App.name;\r\n\r\n render() {\r\n //const isLoggedIn = getAuthToken();\r\n\r\n return (\r\n \r\n \r\n \r\n {AppRoutes.map((route, index) => {\r\n const { element, ...rest } = route;\r\n return ;\r\n })}\r\n \r\n }\r\n />\r\n \r\n {AdminRoutes.map((route, index) => {\r\n const { element, ...rest } = route;\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","// 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://cra.link/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(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\r\n);\r\n\r\nexport function register(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(process.env.PUBLIC_URL, window.location.href);\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://cra.link/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, 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://cra.link/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, 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('No internet connection found. App is running in offline mode.');\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","const reportWebVitals = (onPerfEntry) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\nimport 'mdb-react-ui-kit/dist/css/mdb.min.css';\r\nimport React from 'react';\r\nimport { createRoot } from 'react-dom/client';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport { registerLicense } from '@syncfusion/ej2-base';\r\nimport AppContext from './helpers/Context';\r\nimport ReactGA from \"react-ga4\";\r\nimport { getCurrentDomain } from './helpers/Lookup';\r\n\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\nconst root = createRoot(rootElement);\r\n\r\nregisterLicense('Mgo+DSMBaFt9QHFqVkFrXVNbdV5dVGpAd0N3RGlcdlR1fUUmHVdTRHRcQlpiSH9TckFjWH1deXE=;ORg4AjUWIQA/Gnt2V1hhQlJDfV5AQmBIYVp/TGpJfl96cVxMZVVBJAtUQF1hSn5Ud0RiWXtacHVXQ2ZZ;Mgo+DSMBMAY9C3t2V1hhQlJDfV5AQmBIYVp/TGpJfl96cVxMZVVBJAtUQF1hSn5Ud0RiWXtacHVXQWFZ');\r\n//ReactGA.initialize(\"G-NF5W2C349C\");\r\nReactGA.initialize(\"G-EN16VLWYV6\");\r\n//ReactGA.send({ hitType: \"pageview\", page: getCurrentDomain() + \"/\", title: \"Home Page\" });\r\nroot.render(\r\n \r\n \r\n \r\n \r\n );\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://cra.link/PWA\r\nserviceWorkerRegistration.unregister();\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"names":["Number","prototype","toTwoDecimalString","this","toFixed","toOrdinal","number","suffix","ones","Math","floor","toNumericString","value","options","minimumFractionDigits","maximumFractionDigits","toLocaleString","replace","toPercentage","NumDecimals","toNumberString","useGrouping","toCurrencyString","in","_len","arguments","length","values","Array","_key","includes","valueOf","String","ChangeDateFormat","format","toIsoDateTime","console","log","isNullOrWhitespace","undefined","trim","hasOwn","hasOwnProperty","classNames","classes","i","arg","argType","push","isArray","inner","apply","toString","Object","key","call","join","module","exports","default","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","token","count","result","tokenValue","addSuffix","comparison","buildFormatLongFn","args","width","defaultWidth","formats","formatLong","date","full","long","medium","short","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","context","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","match","matchedString","parsePatterns","defaultParseWidth","array","predicate","findIndex","pattern","test","object","findKey","valueCallback","rest","slice","code","formatDistance","formatRelative","_date","_baseDate","_options","localize","ordinalNumber","dirtyNumber","rem100","era","narrow","abbreviated","wide","quarter","month","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","parseInt","parseResult","any","index","weekStartsOn","firstWeekContainsDate","defaultOptions","getDefaultOptions","dateLongFormatter","timeLongFormatter","p","P","dateTimeFormat","datePattern","timePattern","getTimezoneOffsetInMilliseconds","utcDate","Date","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","getTime","getUTCISOWeekYear","dirtyDate","requiredArgs","toDate","year","getUTCFullYear","fourthOfJanuaryOfNextYear","setUTCHours","startOfNextYear","startOfUTCISOWeek","fourthOfJanuaryOfThisYear","startOfThisYear","MILLISECONDS_IN_WEEK","getUTCISOWeek","diff","fourthOfJanuary","startOfUTCISOWeekYear","round","getUTCWeekYear","_ref","_ref2","_ref3","_options$firstWeekCon","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","toInteger","locale","RangeError","firstWeekOfNextYear","startOfUTCWeek","firstWeekOfThisYear","getUTCWeek","firstWeek","startOfUTCWeekYear","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","indexOf","isProtectedWeekYearToken","throwProtectedError","input","concat","required","TypeError","getUTCDay","setUTCDate","getUTCDate","_options$weekStartsOn","NaN","isNaN","ceil","addDays","dirtyAmount","amount","setDate","MILLISECONDS_IN_HOUR","addHours","addMilliseconds","timestamp","MILLISECONDS_IN_MINUTE","addMinutes","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","setFullYear","addQuarters","months","addWeeks","days","addYears","pow","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","MILLISECONDS_IN_DAY","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDay","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarMonths","dateLeft","dateRight","differenceInCalendarYears","endOfDay","setHours","endOfMonth","endOfWeek","getDay","endOfYear","addLeadingZeros","targetLength","sign","output","abs","y","signedYear","M","getUTCMonth","d","a","dayPeriodEnumValue","getUTCHours","toUpperCase","h","H","m","getUTCMinutes","s","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","dayPeriodEnum","formatTimezoneShort","offset","dirtyDelimiter","absOffset","hours","minutes","delimiter","formatTimezoneWithOptionalMinutes","formatTimezone","G","unit","lightFormatters","Y","signedWeekYear","weekYear","R","u","Q","q","L","w","week","I","isoWeek","D","dayOfYear","setUTCMonth","difference","getUTCDayOfYear","E","dayOfWeek","e","localDayOfWeek","c","isoDayOfWeek","toLowerCase","b","B","K","k","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","x","O","z","t","originalDate","T","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","isValid","subMilliseconds","formatterOptions","map","substring","firstCharacter","longFormatter","longFormatters","matched","cleanEscapedString","formatter","formatters","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","startOfISOWeek","startOfWeek","startOfISOWeekYear","getISOWeekYear","getISOWeek","getQuarter","getYear","isAfter","dirtyDateToCompare","dateToCompare","isBefore","isDate","_typeof","isEqual","dirtyLeftDate","dirtyRightDate","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","isSameMonth","isSameQuarter","dateLeftStartOfQuarter","startOfQuarter","dateRightStartOfQuarter","isSameYear","isWithinInterval","interval","startTime","start","endTime","end","max","dirtyDatesArray","datesArray","forEach","currentDate","min","parseISO","argument","_options$additionalDi","additionalDigits","dateStrings","dateString","timeString","split","patterns","dateTimeDelimiter","timeZoneDelimiter","substr","timezone","exec","splitDateString","parseYearResult","regex","RegExp","captures","restDateString","century","parseYear","dateRegex","isWeekDate","parseDateUnit","_year","validateWeekDate","isoWeekYear","fourthOfJanuaryDay","dayOfISOWeekYear","daysInMonths","isLeapYearIndex","validateDate","validateDayOfYearDate","parseDate","timeRegex","parseTimeUnit","seconds","validateTime","parseTime","timezoneString","timezoneRegex","_hours","validateTimezone","parseTimezone","parseFloat","_arrayLikeToArray","arr","len","arr2","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","minLen","n","constructor","name","from","F","done","_e","f","err","normalCompletion","didErr","step","next","_e2","assign","target","property","_assertThisInitialized","self","ReferenceError","_inherits","subClass","superClass","create","writable","configurable","defineProperty","setPrototypeOf","_getPrototypeOf","getPrototypeOf","bind","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","Super","NewTarget","_classCallCheck","instance","Constructor","_toPropertyKey","hint","prim","toPrimitive","res","_defineProperties","props","descriptor","enumerable","_createClass","protoProps","staticProps","_defineProperty","obj","Setter","_utcDate","ValueSetter","_Setter","_super","validateValue","setValue","priority","subPriority","_this","flags","DateToSystemTimezoneSetter","_Setter2","_super2","_this2","timestampIsSet","convertedDate","Parser","parse","setter","validate","set","_value","EraParser","_Parser","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","YearParser","isTwoDigitYear","normalizedTwoDigitYear","LocalWeekYearParser","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","LocalWeekParser","dirtyWeek","setUTCWeek","ISOWeekParser","dirtyISOWeek","setUTCISOWeek","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","setUTCDay","dirtyDay","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","ISODayParser","setUTCISODay","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","setUTCMinutes","SecondParser","setUTCSeconds","FractionOfSecondParser","setUTCMilliseconds","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","formatString","_step","subFnOptions","setters","tokens","usedTokens","_iterator","_loop","parser","incompatibleTokens","incompatibleToken","find","usedToken","fullToken","run","v","_ret","uniquePrioritySetters","sort","filter","setterArray","_step2","_iterator2","dirtyHours","setMinutes","dirtyMinutes","dirtyMonth","dateWithDesiredMonth","daysInMonth","monthIndex","lastDayOfMonth","getDaysInMonth","setQuarter","dirtyQuarter","setSeconds","dirtySeconds","setYear","dirtyYear","setMilliseconds","startOfMonth","currentMonth","startOfYear","cleanDate","subDays","subMonths","subQuarters","subWeeks","subYears","argStr","warn","Error","stack","r","Promise","resolve","then","l","extend","fs","exists","true","false","error","workbook","worksheet","_regeneratorRuntime","mark","wrap","prev","sent","createReadStream","read","close","abrupt","stop","addWorksheet","sheetName","dateFormats","reduce","parserOptions","on","addRow","emit","pipe","getWorksheet","sheetId","dateFormat","dateUTC","text","hyperlink","formula","utc","JSON","stringify","includeEmptyRows","eachRow","write","shift","encoding","createWriteStream","dayjs","decodeAddress","nativeCol","col","nativeColOff","nativeRow","row","nativeRowOff","get","colWidth","rowHeight","getColumn","isCustomWidth","getRow","height","slideFormula","_row","_column","validateAddress","_address","Types","Null","style","_mergeStyle","_mergeCount","numFmt","font","alignment","border","fill","protection","toCsvString","release","Merge","type","isMergedTo","Hyperlink","definedNames","addEx","fullAddress","removeEx","removeAllNames","letter","effectiveType","master","getType","_comment","note","escapeHtml","formulaType","address","names","getNamesEx","dataValidations","_dataValidations","add","model","comment","fromModel","ValueType","richText","RichText","toISOString","tooltip","_master","addMergeRef","releaseMergeRef","g","cell","Formula","shareType","ref","sharedFormula","_translatedFormula","findCell","_copyModel","ranges","cells","_getTranslatedFormula","FormulaType","Master","Shared","None","SharedString","_","rawValue","sharedString","types","_worksheet","_number","defn","isDefault","equivalentTo","hidden","outlineLevel","collapsed","headers","getCell","eachCell","n2l","header","_header","_hidden","getColumnKey","deleteColumnKey","setColumnKey","_outlineLevel","properties","outlineLevelCol","_applyStyle","matrixMap","decodeEx","getMatrix","top","left","right","bottom","addCellEx","removeCellEx","each","findCellEx","findCellAt","_explore","$shortRange","forEachInSheet","spliceRows","normaliseMatrix","spliceColumns","getRanges","pop","addCell","RelationshipType","OfficeDocument","Worksheet","CalcChain","SharedStrings","Styles","Theme","DocumentType","Xlsx","ReadingOrder","LeftToRight","RightToLeft","ErrorValue","NotApplicable","Ref","Name","DivZero","Value","Num","imageId","hyperlinks","range","tl","br","ext","editAs","decode","texts","deepMerge","DEFAULT_CONFIGS","keys","margins","insetmode","inset","locked","lockText","setTLBR","dimensions","expand","containsEx","encodeAddress","_serialisedSheetName","$t$l","$b$r","$range","_cells","_commitRow","l2n","getCellEx","includeEmpty","id","man","rowBreaks","eachColumnKey","some","outlineLevelRow","$col$row","table","column","cacheState","_set","filterButton","totalsRowLabel","totalsRowFunction","totalsRowResult","totalsRowFormula","store","columns","rows","filterHeight","tableHeight","autoFilterRef","encode","tableRef","getFormula","headerRow","totalsRow","_cache","splice","_assign","displyName","displayName","showFirstColumn","showLastColumn","showRowStripes","showColumnStripes","category","company","created","description","keywords","manager","modified","calcProperties","_worksheets","subject","title","views","media","_definedNames","nextId","trace","tabColor","argb","theme","indexed","orderNo","destroy","worksheets","_themes","_xlsx","_csv","creator","lastModifiedBy","lastPrinted","sheets","language","revision","contentStatus","themes","state","getOwnPropertySymbols","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","_rows","_columns","_keys","_merges","_workbook","defaultRowHeight","dyDescent","pageSetup","footer","orientation","horizontalDpi","verticalDpi","fitToPage","fitToWidth","fitToHeight","scale","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","freeze","merge","hasValues","getAddress","_mergeCellsInternal","intersects","unmerge","_unMergeMaster","sheet","spinCount","isFinite","algorithmName","saltValue","randomBytes","hashValue","convertPasswordToHash","Function","mergeCells","mergeCellsWithoutStyle","_headerRowCount","columnCount","cellCount","_lastRowNumber","cols","toModel","merges","_parseRows","_parseMergeCells","Workbook","TextDecoder","bufferToString","TextEncoder","Buffer","stringToBuffer","buffer","template","getCellAt","findSheet","findSheetRow","findRowCell","return","_dictionary","_l2nFill","_l2n","_n2l","_level","_fill","_hash","charCodeAt","startsWith","inRange","hash","createHash","update","digest","getHashes","alloc","writeUInt32LE","crypto","wrapped","reject","_invoke","asyncIterator","throw","SaxesParser","PassThrough","eventType","t0","catch","finish","saxes","_data","_encoding","toBuffer","copy","_buffer","_buf","size","iRead","iWrite","bufSize","buffers","batch","corked","inPos","outPos","pipes","paused","inherits","Duplex","_getWritableBuffer","_pipe","all","_writeToBuffers","nop","ArrayBuffer","nextTick","cork","_flush","uncork","eod","setEncoding","pause","resume","isPaused","unpipe","unshift","_process","_inPos","_grow","capacity","every","keyBy","charAt","strcmp","isUndefined","isObject","promiseImmediate","setImmediate","setTimeout","super_","dateToExcel","excelToDate","parsePath","lastIndexOf","path","getRelsPath","xmlEncode","xmlDecode","validInt","isDateFmt","access","constants","F_OK","toIsoDateString","toIsoString","subsstr","global","window","timers","_xml","_stack","_rollbacks","tos","open","leaf","openNode","writeText","closeNode","xml","cursor","closeAll","StdDocAttributes","version","standalone","compression","zip","stream","base64","file","browser","generateAsync","EventEmitter","ZipWriter","events","jszip","Image","CoreProperties","ExtenderProperties","Comments","VmlDrawing","Table","reset","xform","parseOpen","parseText","parseClose","t1","render","toXml","toAttribute","localSheetId","_parsedName","attributes","_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","xmlns","$","appName","lastEdited","lowestEdited","rupBuild","richTextXform","_richTextXform","authorId","COMMENTS_ATTRIBUTES","comments","_model","anchor","getAnchorRect","getDefaultRect","refAddress","ObjectType","normalizeModel","DRAWING_ATTRIBUTES","data","coordsize","joinstyle","gradientshapeok","anchors","reconcile","V_SHAPE_ATTRIBUTES","color2","color","obscured","fillcolor","strokecolor","conversionUnit","reverseConversionUnit","createNewModel","onParserClose","baseType","Company","Manager","HeadingPairs","TitleOfParts","PROPERTY_ATTRIBUTES","DateFormat","DateAttrs","extension","Extension","ContentType","PartName","sharedStrings","drawings","commentRefs","commentName","attrs","CORE_PROPERTY_ATTRIBUTES","identifier","contentType","Relationship","_values","RELATIONSHIPS_ATTRIBUTES","rels","mediaIndex","cstate","noChangeAspect","zero","anchorType","prepare","uri","addAttribute","cx","cy","picture","reconcilePicture","mergeModel","prst","always","empty","$count","maxItems","to","richTextXForm","styles","addStyleModel","styleId","ssId","si","siFormulae","formulae","expandToAddress","renderFormula","currentNode","getStyleModel","getString","hyperlinkMap","commentsMap","iconSet","iconId","toIntValue","v4","databarXform","iconSetXform","isExt","custom","x14Id","renderDataBar","renderIconSet","uuid","fExtXform","sqRef","cfRule","rules","cfXform","hasExtContent","hasContent","cfvoXform","borderColorXform","negativeBorderColorXform","negativeFillColorXform","axisColorXform","gradient","minLength","toIntAttribute","maxLength","toBoolAttribute","negativeBarColorSameAsPositive","negativeBarBorderColorSameAsPositive","axisPosition","direction","cfvo","borderColor","negativeBorderColor","negativeFillColor","axisColor","toBoolValue","toStringValue","cfIconXform","toStringAttribute","reverse","showValue","icons","dataBar","extLst","extLstRefXform","formulaXform","colorScale","colorScaleXform","renderExpression","renderCellIs","renderTop10","renderAboveAverage","renderColorScale","renderText","renderTimePeriod","dxfId","operator","percent","rank","aboveAverage","isPrimitive","timePeriod","val","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","gridLines","numRowsSeen","spans","ht","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","view","selections","topLeft","j","C","A","N","maxRows","maxCols","sheetPr","dimension","sheetViews","sheetFormatPr","sheetData","pageMargins","printOptions","drawing","tableParts","conditionalFormatting","Type","TargetMode","vmlDrawing","background","image","drawingsCount","preImageId","WORKSHEET_ATTRIBUTES","relationships","vmlDrawings","attr","_format","_parse","addAttributes","writeXml","sb","eb","fontXform","textXform","_textXform","_fontXform","FONT_OPTIONS","tagName","fontNameTag","rPh","rich","addRichText","addText","sharedStringXform","uniqueCount","_sharedStringXform","_text","fromCharCode","horizontalValues","horizontal","verticalValues","vertical","wrapText","shrinkToFit","textRotation","indent","readingOrder","defaultColor","validStyleValues","diagonal","up","down","diagonalUp","diagonalDown","tint","rgb","position","fgColor","bgColor","patternType","degree","center","stops","patternFill","gradientFill","validPatternValues","StopXform","PatternFillXform","GradientFillXform","OPTIONS","prop","charset","condense","family","outline","vertAlign","scheme","shadow","strike","sz","formatCode","numFmtId","getDefaultFmtId","getDefaultFmtCode","xfId","fontId","fillId","borderId","numFmts","fonts","fills","borders","cellStyleXfs","cellXfs","dxfs","cellStyles","tableStyles","init","numFmtNextId","initIndex","_addBorder","_addStyle","_addFill","weakMap","WeakMap","STYLESHEET_ATTRIBUTES","_addFont","has","_addNumFmtStr","builtinId","defaultTableStyle","defaultPivotStyle","defaultSlicerStyle","defaultTimelineStyle","autodrain","dateStyleId","_dateStyleId","Mock","Attributes","single","double","singleAccounting","doubleAccounting","filterColumn","colId","hiddenButton","tableColumns","tableStyleInfo","TABLE_ATTRIBUTES","totalsRowCount","totalsRowShown","headerRowCount","readFile","U","V","W","Z","J","tt","et","parseStream","drawingRels","worksheetRels","sheetNo","globalRels","sheetDefs","load","loadAsync","files","dir","async","writableObjectMode","readableObjectMode","t2","t3","t4","parseRels","parseWorkbook","_processWorksheetEntry","_processWorksheetRelsEntry","_processThemeEntry","_processMediaEntry","_processDrawingEntry","_processCommentEntry","_processTableEntry","_processDrawingRelsEntry","_processVmlDrawingEntry","filename","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","FieldFormatter","_headers","REPLACE_REGEXP","ESCAPE_REGEXP","quoteField","search","shouldQuote","rowCount","fieldFormatter","hasWrittenHeaders","transform","isHashArray","isSyncTransform","callTransformer","checkHeaders","shouldFormatColumns","gatherColumns","gatherHeaders","_rowTransform","createTransform","writeToPath","writeToString","writeToBuffer","writeToStream","promisify","Writable","util","CsvParserStream","lines","parsedRowCount","parsedLineCount","endEmitted","headersEmitted","headerTransformer","HeaderTransformer","decoder","StringDecoder","rowTransformerValidator","RowTransformerValidator","rowValidator","hasHitRowLimit","processRows","line","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","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","define","base","decoders","encoders","body","_createNamed","_initNamed","_getDecoder","_getEncoder","Reporter","isBuffer","isEncoderBuffer","byteLength","DecoderBuffer","isDecoderBuffer","save","restore","isEmpty","readUInt8","skip","raw","reporter","_reporterState","EncoderBuffer","Node","_baseState","enc","parent","children","reverseArgs","choice","optional","use","useDecoder","explicit","implicit","contains","_wrap","clone","_init","equal","_useArgs","def","_decode","wrapResult","enterKey","_peekTag","isError","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","track","_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","cls","primitive","tagStr","_skipUntilEnd","unused","readUInt16BE","pem","label","writeUInt16BE","toArray","defaultBuffer","isBN","negative","words","red","BN","wordSize","cmp","_initNumber","_initArray","_parseHex","_parseBase","strip","imuln","_iaddn","_expand","_normSign","inspect","isZero","modn","idivn","toNumber","toJSON","toArrayLike","andln","iushrn","clz32","_countBits","_zeroBits","bitLength","zeroBits","toTwos","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","setn","iadd","isub","sub","rt","nt","ot","at","st","ut","ct","ft","lt","dt","pt","mt","yt","imul","bt","vt","gt","wt","_t","kt","xt","St","Ot","jt","Et","Rt","Tt","Ct","Pt","Mt","At","It","mulp","mulTo","makeRBT","revBin","permute","cos","PI","sin","guessLen13b","conjugate","normalize13b","convert13b","stub","mul","mulf","muln","sqr","isqr","iushln","ishln","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","div","mod","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","sqrt","redInvm","redNeg","redPow","k256","p224","p192","p25519","tmp","_tmp","_prime","prime","r2","imod","rinv","minv","ireduce","imulK","_strip","mont","toByteArray","fromByteArray","Uint8Array","_move","for","modrn","allocUnsafe","_toArrayLikeLE","_toArrayLikeBE","rand","generate","Rand","_rand","getBytes","getByte","getRandomValues","msCrypto","readUInt32BE","SBOX","INV_SBOX","SUB_MIX","INV_SUB_MIX","_reset","blockSize","keySize","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","writeUInt32BE","decryptBlock","scrub","AES","_cipher","_ghash","_finID","writeUIntBE","_prev","_secCache","_decrypt","_alen","_mode","_authTag","_called","_update","encrypt","_final","final","getAuthTag","setAuthTag","setAAD","createCipher","Cipher","createCipheriv","Cipheriv","createDecipher","Decipher","createDecipheriv","Decipheriv","listCiphers","getCiphers","_last","_autopadding","cache","mode","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","curve","keyFromPrivate","privateKey","toDER","params","priv_key","getKey","makeKey","elliptic","algorithm","subjectPrivateKey","pub_key","signature","allocUnsafeSlow","SlowBuffer","isEncoding","isView","INSPECT_MAX_BYTES","kMaxLength","TYPED_ARRAY_SUPPORT","foo","byteOffset","species","poolSize","_isBuffer","compare","swap16","swap32","swap64","_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","entries","proto","forced","document","createElement","process","versions","v8","stat","noTargetGet","globalThis","propertyIsEnumerable","inspectSource","enforce","getterFor","normalize","NATIVE","POLYFILL","stopped","MutationObserver","WebKitMutationObserver","domain","exit","fn","enter","createTextNode","observe","characterData","promise","ActiveXObject","parentWindow","display","appendChild","src","contentWindow","getOwnPropertyNames","unsafe","source","copyright","location","clearImmediate","MessageChannel","Dispatch","postMessage","protocol","host","now","port2","port1","onmessage","addEventListener","importScripts","onreadystatechange","removeChild","clear","random","withoutSetter","kind","Arguments","createEvent","dispatchEvent","PromiseRejectionEvent","finally","notified","reactions","ok","fail","rejection","initEvent","fetch","race","fromCodePoint","QObject","findChild","keyFor","useSetter","useSimple","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isRegExp","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","startOf","endOf","$g","unix","$locale","weekStart","$set","subtract","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","HH","hh","mm","ss","SSS","toUTCString","isDayjs","en","Ls","zone","SS","Do","ordinal","ZZ","dayjs_plugin_customParseFormat","local","isUTC","dayjs_plugin_utc","utils","_cbcInit","_cbcState","bufferOff","_updateDecrypt","_updateEncrypt","_flushBuffer","_finalEncrypt","_finalDecrypt","_pad","_unpad","_desState","deriveKeys","pc1","r28shl","pc2","ip","_encrypt","substitute","rip","ciphers","_edeState","padSplit","binary","hex","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","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","redN","_maxwellTrick","precomputed","point","_fixedNafMul","_getDoubles","jpoint","mixedAdd","points","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","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","nonce","_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","toHex","zero2","_from","_id","_inBundle","_integrity","_location","_phantomChildren","_requested","registry","escapedName","rawSpec","saveSpec","fetchSpec","_requiredBy","_resolved","_shasum","_spec","_where","author","email","bugs","url","bundleDependencies","dependencies","deprecated","devDependencies","brfs","coveralls","grunt","istanbul","jscs","jshint","mocha","homepage","license","main","repository","scripts","lint","_events","_eventsCount","_maxListeners","defaultMaxListeners","newListener","listener","warned","emitter","fired","removeListener","wrapFn","setMaxListeners","getMaxListeners","addListener","prependListener","once","prependOnceListener","removeAllListeners","listeners","rawListeners","listenerCount","eventNames","ownKeys","_block","_blockSize","_blockOffset","_length","_finalized","_digest","common","sha","ripemd","hmac","sha1","pending","pendingTotal","outSize","padLength","endian","_delta8","_delta32","BlockHash","join32","outer","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","parentNode","documentElement","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","meta","processChunk","_createPako","transformTo","cleanUp","level","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","previous","registerPrevious","generatedError","lock","generateWorker","platform","_compressWorker","root","support","defaults","external","decompressed","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","prepareContent","fileNameStr","fileCommentStr","_upstreamEnded","_bindStream","_stream","_helper","_read","newBufferFrom","allocBuffer","folder","remove","generateInternalStream","mimeType","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","delay","isFinished","_tick","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","nodestream","_internalType","_outputType","_mimeType","newBlob","_worker","arraybuffer","nodebuffer","blob","Blob","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","FileReader","onload","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","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_dataBinary","internalStream","_decompressWorker","nodeStream","queue","outcome","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","status","immediate","nodeType","binding","isTypedArray","IE_PROTO","Nt","__data__","Ht","Ut","zt","delete","Yt","Vt","$t","Xt","Zt","qt","Gt","Wt","Kt","Lt","Dt","Bt","Ft","Cache","toStringTag","_a","_b","_c","_d","_randbelow","_randrange","getDivisor","method","chunkSize","windowBits","memLevel","strategy","gzip","msg","ended","chunks","strm","avail_out","deflateInit2","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","next_in","avail_in","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","head","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","matches","bi_buf","bi_valid","data_type","_tr_init","deflateInit","deflateReset","deflateResetKeep","hcrc","extra","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","sane","last","havedict","check","total","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","parameters","subtle","importKey","deriveBits","iterations","md5","rmd160","ipad1","ipad2","opad","alg","blocksize","clearTimeout","fun","env","argv","off","cwd","chdir","umask","padding","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","first","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","callback","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","bufferedRequest","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","isBuf","allBuffers","chunk","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","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","opt","fragmentOpt","fragment","xmlnsOpt","trackPosition","nameStartCheck","nameCheck","isName","processAttribs","processAttribsNS","pushAttrib","pushAttribNS","ns","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","prefix","attributeHandler","endHandler","resolvePrefix","Set","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","active","_onTimeout","localStorage","noDeprecation","throwDeprecation","traceDeprecation","seen","stylize","colors","showHidden","_extend","NODE_DEBUG","pid","bold","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","yellow","special","boolean","null","regexp","unescape","encodeURIComponent","node","clockseq","msecs","nsecs","DNS","URL","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","navigator","userAgent","saveAs","HTMLAnchorElement","webkitURL","download","rel","href","origin","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","innerText","HTMLElement","safari","onloadend","readAsDataURL","reactIs","require","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","factory","noGlobal","getProto","flat","class2type","fnToString","ObjectFunctionString","item","isWindow","preservedScriptAttributes","noModule","DOMEval","doc","script","getAttribute","setAttribute","toType","rhtmlSuffix","jQuery","selector","isArrayLike","nodeName","elem","jquery","num","pushStack","ret","prevObject","even","grep","_elem","odd","copyIsArray","deep","isPlainObject","expando","isReady","noop","Ctor","isEmptyObject","globalEval","textContent","nodeValue","makeArray","results","inArray","isXMLDoc","namespace","namespaceURI","docElem","ownerDocument","second","invert","callbackExpect","guid","_i","whitespace","rtrimCSS","bup","compareDocumentPosition","rcssescape","fcssescape","ch","asCodePoint","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","nonHex","high","unloadHandler","setDocument","inDisabledFieldset","addCombinator","disabled","childNodes","els","seed","nid","groups","newSelector","newContext","getElementById","getElementsByTagName","getElementsByClassName","testContext","scope","tokenize","toSelector","querySelectorAll","qsaError","removeAttribute","select","cacheLength","markFunction","el","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","getById","getElementsByName","disconnectedMatch","cssHas","querySelector","attrId","getAttributeNode","className","innerHTML","sortDetached","expr","elements","matchesSelector","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","what","_argument","simple","forward","ofType","_context","outerCache","nodeIndex","useCache","firstChild","lastChild","pseudo","setFilters","idx","not","matcher","compile","unmatched","lang","elemLang","focus","activeElement","safeActiveElement","hasFocus","tabIndex","enabled","checked","selected","selectedIndex","nextSibling","button","_matchIndexes","nth","radio","checkbox","password","submit","parseOnly","soFar","preFilters","cached","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","filters","unique","getText","isXML","selectors","until","truncate","is","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","contents","sibling","cur","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","Callbacks","flag","createOptions","firing","memory","list","firingIndex","fire","stopOnFalse","disable","fireWith","Deferred","tuples","deferred","fns","newDefer","tuple","returned","progress","notify","onProgress","maxDepth","handler","that","mightThrow","notifyWith","resolveWith","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","camelCase","acceptData","owner","Data","uid","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","getData","removeData","_removeData","dequeue","startLength","hooks","_queueHooks","clearQueue","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","css","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","show","hide","toggle","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","defaultValue","option","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","rhtml","buildFragment","selection","ignored","attached","nodes","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","origFn","event","leverageNative","isSetup","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","isImmediatePropagationStopped","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","originalEvent","noBubble","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","offsetWidth","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","cssProps","capName","vendorPropName","rdisplayswap","cssShow","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","boxModelAdjustment","box","isBorderBox","computedVal","delta","marginDelta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","aspectRatio","borderImageSlice","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","setProperty","getBoundingClientRect","scrollboxSizeBuggy","margin","expanded","parts","propHooks","eased","duration","pos","fx","scrollTop","scrollLeft","linear","swing","fxNow","inProgress","rfxtypes","rrun","schedule","requestAnimationFrame","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","prefilters","currentTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","speeds","fadeTo","animate","optall","doAnimation","stopQueue","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","timeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","addClass","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","processData","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","statusText","finalText","crossDomain","ifModified","beforeSend","success","nativeStatusText","responses","isSuccess","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","xhrSuccessStatus","xhrSupported","cors","errorCallback","username","xhrFields","onabort","ontimeout","responseText","scriptAttrs","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","undelegate","hover","fnOver","fnOut","proxy","holdReady","parseJSON","isNumeric","_jQuery","_$","noConflict","debug","cleanup","storage","DEBUG","formatArgs","useColors","humanize","lastC","removeItem","WebkitAppearance","firebug","exception","$1","chrome","localstorage","enable","prevTime","createDebug","curr","coerce","selectColor","skips","plural","str","fmtShort","hookCallback","setHookCallback","hasOwnProp","isObjectEmpty","arrLen","createUTC","strict","createLocalOrUTC","defaultParsingFlags","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","suppressDeprecationWarnings","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","lastDay","sameElse","calendar","mom","_calendar","zeroFill","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","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","getPrioritizedUnits","unitsObj","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","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","p1","p2","p3","p4","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","getSetMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","createUTCDate","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","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","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","chooseLocale","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","defineLocale","abbr","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","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekdayOverflow","curWeek","GG","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","weeks","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","offsetFromString","chunkOffset","cloneWithOffset","setTime","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","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","zoneDelta","monthDiff","wholeMonthDiff","keepOffset","datetime","inputString","defaultFormatUtc","defaultFormat","postformat","fromNow","toNow","newLocaleData","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","localeErasParse","eraName","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","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","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","listMonthsImpl","out","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","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","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","propIsEnumerable","test1","test2","test3","shouldUseNative","symbols","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","componentName","propFullName","getShim","isRequired","ReactPropTypes","bigint","symbol","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","mountRootId","Portal","React","useEffect","ReactDOM","createPortal","___$insertStyle","ConfirmBox","resolver","useState","React__default","confirmButton","cancelButton","onClick","role","labels","confirmable","cancellable","closeOnOverlayClick","__generator","ReactDOM__default","ee","te","re","ae","ne","oe","se","ie","pe","le","ce","de","ue","fe","he","me","ye","ve","De","ge","we","ke","be","Se","Ce","Me","Ee","Pe","Ye","Ne","xe","Oe","Ie","Te","Re","Le","Fe","Ae","qe","Qe","Ke","Be","We","He","je","Ve","Ue","ze","$e","Ge","Je","Xe","Ze","Qt","awareOfUnicodeTokens","er","Jt","__localeId__","__localeData__","rr","ar","nr","minDate","maxDate","excludeDates","excludeDateIntervals","includeDates","includeDateIntervals","filterDate","ur","sr","ir","pr","lr","cr","dr","fr","hr","excludeTimes","includeTimes","filterTime","mr","minTime","maxTime","yr","vr","Dr","gr","wr","kr","Map","Sr","Cr","_r","startPeriod","endPeriod","Mr","Er","yearsList","onChange","incrementYears","decrementYears","onCancel","setState","shiftYears","yearDropdownItemNumber","scrollableYearDropdown","dropdownRef","createRef","ariaSelected","offsetTop","clientHeight","scrollHeight","renderOptions","Component","Pr","Yr","dropdownVisible","onSelectChange","renderSelectOptions","toggleDropdown","renderReadView","renderDropdown","adjustDateOnChange","handleYearChange","onSelect","setOpen","dropdownMode","renderScrollMode","renderSelectMode","Nr","monthNames","isSelectedMonth","xr","Or","useShortMonthInDropdown","Ir","Tr","Rr","monthYearsList","scrollableMonthYearDropdown","Lr","Fr","Ar","onMouseEnter","handleOnKeyDown","disabledKeyboardNavigation","preSelection","highlightDates","startDate","endDate","selectsStart","selectsEnd","selectsRange","selectsDisabledDaysInRange","selectingDate","isInSelectingRange","dayClassName","isExcluded","isSelected","isKeyboardSelected","isRangeStart","isRangeEnd","isInRange","isSelectingRangeStart","isSelectingRangeEnd","isCurrentDay","isWeekend","isAfterMonth","isBeforeMonth","getHighLightedClass","ariaLabelPrefixWhenEnabled","ariaLabelPrefixWhenDisabled","getTabIndex","isInputFocused","inline","shouldFocusDayInline","containerRef","classList","monthShowsDuplicateDaysEnd","monthShowsDuplicateDaysStart","dayEl","preventScroll","renderDayContents","getClassNames","onKeyDown","handleClick","handleMouseEnter","getAriaLabel","handleFocusDay","qr","weekNumber","ariaLabelPrefix","Qr","onDayClick","onDayMouseEnter","onWeekSelect","shouldCloseOnSelect","formatWeekNumber","calendarStartDay","showWeekNumber","handleWeekClick","chooseDayAriaLabelPrefix","disabledDayAriaLabelPrefix","handleDayClick","handleDayMouseEnter","renderDays","Kr","Br","Wr","Hr","grid","verticalNavigationOffset","jr","Vr","orderInDisplay","onMouseLeave","isInSelectingRangeMonth","fixedHeight","weekAriaLabelPrefix","showWeekNumbers","isWeekInMonth","peekNextMonth","setPreSelection","MONTH_REFS","showTwoColumnMonthYearPicker","showFourColumnMonthYearPicker","onMonthClick","handleMonthNavigation","QUARTER_REFS","onQuarterClick","handleQuarterNavigation","monthClassName","isRangeStartMonth","isRangeEndMonth","isSelectingMonthRangeStart","isSelectingMonthRangeEnd","isCurrentMonth","isSelectedQuarter","isInSelectingRangeQuarter","isRangeStartQuarter","isRangeEndQuarter","showFullMonthYearPicker","renderMonthContent","renderQuarterContent","onMonthKeyDown","onMonthMouseEnter","getMonthClassNames","getMonthContent","onQuarterKeyDown","onQuarterMouseEnter","getQuarterClassNames","getQuarterTabIndex","isCurrentQuarter","getQuarterContent","showMonthYearPicker","showQuarterYearPicker","handleMouseLeave","renderMonths","renderQuarters","renderWeeks","Ur","timeClassName","isSelectedTime","injectTimes","intervals","openToDate","liClasses","centerLi","calcCenterPosition","monthRef","todayButton","showTimeSelectOnly","timeCaption","renderTimes","onTimeChange","zr","yearItemNumber","YEAR_REFS","updateFocusOnPaginate","handleYearClick","onYearClick","handleYearNavigation","isCurrentYear","renderYearContent","onYearMouseEnter","onYearMouseLeave","onYearKeyDown","getYearTabIndex","getYearClassNames","getYearContent","getYearContainerClassNames","clearSelectingDate","$r","customTimeInput","cloneElement","placeholder","timeInputLabel","renderTimeInput","Gr","showPopperArrow","arrowProps","Jr","Xr","onClickOutside","onDropdownFocus","handleMonthChange","onMonthMouseLeave","onYearChange","isRenderAriaLiveMessage","handleCustomMonthChange","onMonthChange","handleMonthYearChange","weekLabel","formatWeekday","weekDayClassName","formatWeekDay","useWeekdaysShort","showYearPicker","renderCustomHeader","forceShowMonthNavigation","showDisabledMonthNavigation","decreaseMonth","decreaseYear","previousMonthButtonLabel","previousYearButtonLabel","previousMonthAriaLabel","previousYearAriaLabel","showTimeSelect","increaseMonth","increaseYear","nextMonthButtonLabel","nextYearButtonLabel","nextMonthAriaLabel","nextYearAriaLabel","showYearDropdown","showMonthDropdown","showMonthYearDropdown","changeYear","changeMonth","changeMonthYear","handleTodayButtonClick","monthDate","renderCurrentMonth","onFocus","handleDropdownFocus","renderMonthDropdown","renderMonthYearDropdown","renderYearDropdown","monthContainer","customHeaderCount","prevMonthButtonDisabled","nextMonthButtonDisabled","prevYearButtonDisabled","nextYearButtonDisabled","renderYearHeader","renderDefaultHeader","showPreviousMonths","monthsShown","monthSelectedIn","renderHeader","monthAriaLabelPrefix","handleOnDayKeyDown","handleMonthMouseLeave","handleYearMouseEnter","handleYearMouseLeave","timeIntervals","withPortal","showTimeInput","getDateInView","assignMonthContainer","renderAriaLiveRegion","renderPreviousButton","renderNextButton","renderYears","renderTodayButton","renderTimeSection","renderInputTimeSection","renderChildren","Zr","portalRoot","portalHost","portalId","ea","ta","tabLoopRef","getTabChildren","enableTabLoop","handleFocusStart","handleFocusEnd","ra","wrapperClassName","hidePopper","popperComponent","popperModifiers","popperPlacement","popperProps","popperOnKeyDown","Popper","modifiers","placement","popperContainer","Reference","aa","na","oa","sa","getPreSelection","startOpen","preventFocus","focused","preventFocusTimeout","cancelFocusInput","calcInitialState","lastPreSelectChange","pa","setBlur","inputValue","readOnly","preventOpenOnFocus","inputFocusTimeout","setFocus","onBlur","onChangeRaw","ia","strictParsing","setSelected","showDateSelect","allowSameDay","focusSelectedMonth","onInputClick","componentNode","inputOk","handleSelect","onInputError","onClearClick","closeOnScroll","isCalendarOpen","dateFormatCalendar","handleCalendarClickOutside","outsideClickIgnoreClass","handleTimeChange","calendarClassName","calendarContainer","excludeScrollbar","onDayKeyDown","customInput","customInputRef","handleBlur","handleChange","handleFocus","onInputKeyDown","form","autoFocus","placeholderText","autoComplete","ariaDescribedBy","ariaInvalid","ariaLabelledBy","ariaRequired","isClearable","clearButtonTitle","clearButtonClassName","ariaLabelClose","onScroll","onCalendarOpen","onCalendarClose","clearPreventFocusTimeout","showIcon","viewBox","renderDateInput","renderClearButton","renderCalendar","onPortalKeyDown","renderInputContainer","popperClassName","onPopperKeyDown","CalendarContainer","getDefaultLocale","registerLocale","setDefaultLocale","ca","da","fa","ha","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","qa","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Pa","Qa","$$typeof","_payload","Ra","Sa","Ta","Va","_valueTracker","getValue","stopTracking","Ua","Wa","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","fb","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","nb","MSApp","execUnsafeLocalFunction","ob","pb","borderImageOutset","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","flex","flexPositive","flexNegative","flexOrder","gridRowSpan","gridColumnSpan","lineClamp","tabSize","strokeDasharray","strokeDashoffset","strokeWidth","qb","rb","tb","menuitem","area","embed","img","keygen","link","wbr","ub","vb","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","Wb","memoizedState","dehydrated","Xb","Zb","child","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","pc","qc","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","ed","transition","fd","gd","hd","Uc","jd","kd","ld","md","nd","od","pd","qd","rd","_reactName","_targetInst","cancelBubble","persist","isPersistent","wd","xd","yd","sd","isTrusted","ud","vd","Ad","getModifierState","zd","fromElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","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","isPrimary","Vd","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","tel","oninput","detachEvent","attachEvent","HTMLIFrameElement","contentEditable","focusedElem","selectionRange","selectionStart","selectionEnd","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","animationend","animationiteration","animationstart","transitionend","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","of","pf","qf","rf","sf","capture","passive","tf","uf","vf","wf","xa","$a","ba","char","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","bh","eventTime","lane","payload","dh","eh","fh","gh","ih","jh","refs","kh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","_owner","_stringRef","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","gi","hi","ji","ki","getSnapshot","li","mi","ni","lastEffect","stores","oi","pi","qi","ri","deps","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onclick","createElementNS","Hj","Ij","Jj","Kj","Lj","WeakSet","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","pk","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","supportsFiber","inject","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","hasElementType","Element","hasMap","hasSet","hasArrayBuffer","titleCase","redactingEmail","_str","smallWords","mightBeEmail","redacted","redactEmail","GA4","_gtag","_interopRequireDefault","_excluded","_excluded2","_excluded3","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","enumerableOnly","sym","_objectSpread","_slicedToArray","_arrayWithHoles","_s","_x","_n","_iterableToArrayLimit","_nonIterableRest","_toPrimitive","isInitialized","_testMode","_currentMeasurementId","_hasLoadedGA","_isQueuing","_queueGtag","GA_MEASUREMENT_ID","gtagUrl","dataLayer","gtag","gaOptions","mapFields","cookieUpdate","cookieExpires","cookieDomain","cookieFlags","userId","clientId","anonymizeIp","contentGroup1","contentGroup2","contentGroup3","contentGroup4","contentGroup5","allowAdFeatures","allowAdPersonalizationSignals","nonInteraction","page","hitCallback","initConfigs","trackingId","gtagOptions","_options$testMode","testMode","_loadGA","mergedGtagOptions","_toGtagOptions","queues","fieldsObject","_gaCommand","eventCategory","eventAction","eventLabel","eventValue","event_category","event_label","non_interaction","_len2","_key2","_gaCommandSendEvent","_args$","hitType","timingCategory","timingVar","timingValue","timingLabel","_this$_toGtagOptions","page_path","page_title","page_location","_len3","_key3","_gaCommandSendPageview","_args$2","_len4","_key4","_gaCommandSendEventParameters","_gaCommandSendPageviewParameters","_gaCommandSendTiming","_len5","_key5","command","_len6","_key6","_gaCommandSend","_gaCommandSet","_len7","_key7","readyCallback","ga","optionsOrName","fieldObject","_window","_ga","nodeInterop","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc","_interopRequireWildcard","cacheBabelInterop","cacheNodeInterop","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","_setPrototypeOf","isNodeFound","ignoreClass","correspondingElement","passiveEventSupport","handlersMap","enabledInstances","touchEvents","IGNORE_CLASS_NAME","getEventHandlerOptions","eventName","handlerOptions","WrappedComponent","_class","_temp","_Component","__outsideClickHandler","__clickOutsideHandlerProp","getInstance","handleClickOutside","__getComponentNode","setClickOutsideRef","enableOnClickOutside","_uid","testPassiveEventSupport","eventTypes","clientWidth","findHighest","composedPath","disableOnClickOutside","getRef","instanceRef","_proto","_this$props","wrappedRef","ManagerReferenceNodeContext","ManagerReferenceNodeSetterContext","_React$useState","referenceNode","setReferenceNode","hasUnmounted","handleSetReferenceNode","Provider","unwrapArray","safeInvoke","setRef","fromEntries","acc","useIsomorphicLayoutEffect","getWindow","isHTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","userAgentData","brands","brand","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","offsetLeft","getWindowScroll","getNodeName","getDocumentElement","getWindowScrollBarX","isScrollParent","_getComputedStyle","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","scroll","offsets","getNodeScroll","clientLeft","clientTop","getLayoutRect","getParentNode","assignedSlot","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","isFirefox","perspective","contain","willChange","getContainingBlock","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","placements","modifierPhases","visited","modifier","requires","requiresIfExists","dep","depModifier","debounce","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","orderedModifiers","modifiersData","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","merged","existing","mergeByName","_ref$options","effect","cleanupFn","noopFn","forceUpdate","_state$elements","rects","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","dpr","devicePixelRatio","roundOffsetsByDPR","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets","getOppositePlacement","getOppositeVariationPlacement","rootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","within","mathMax","mathMin","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","referenceRect","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowElement","arrow","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","axisProp","centerOffset","_options$element","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","createPopper","_options$scroll","_options$resize","resize","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","initialStyles","_skip","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","fittingPlacement","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","EMPTY_MODIFIERS","usePopper","referenceElement","popperElement","prevOptions","optionsWithDefaults","updateStateModifier","popperOptions","newOptions","popperInstanceRef","popperInstance","defaultCreatePopper","NOOP","NOOP_PROMISE","_ref$placement","_ref$strategy","_ref$modifiers","innerRef","setPopperElement","_React$useState2","setArrowElement","_usePopper","childrenProps","refHandler","warning","canUseDOM","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","mountedInstances","emitChange","SideEffect","_PureComponent","peek","rewind","recordedState","PureComponent","getDisplayName","__self","__source","jsx","jsxs","_status","_result","Children","only","createContext","_currentValue2","_threadCount","Consumer","_defaultValue","_globalName","createFactory","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","expirationTime","priorityLevel","scheduling","isInputPending","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","S2","select2","amd","requirejs","undef","makeMap","defined","waiting","defining","aps","jsSuffixRegExp","hasProp","baseName","nameParts","nameSegment","foundMap","foundI","foundStarMap","starI","part","baseParts","starMap","nodeIdCompat","makeRequire","relName","forceSync","makeNormalize","makeLoad","depName","callDep","splitPrefix","makeRelParts","makeConfig","relParts","plugin","relResourceName","cjsModule","usingExports","callbackType","alt","cfg","_defined","Utils","getMethods","theClass","methods","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","argCount","calledConstructor","ctr","superMethod","calledMethod","originalMethod","decoratedMethod","Observable","_type","invoke","generateChars","chars","_convertData","originalKey","dataLevel","hasScroll","$el","innerHeight","innerWidth","escapeMarkup","markup","replaceMap","__cache","GetUniqueElementId","select2Id","StoreData","GetData","RemoveData","copyNonInternalCssClasses","destinationClasses","clazz","sourceClasses","replacements","Results","$element","dataAdapter","$results","displayMessage","hideLoading","$message","hideMessages","$options","$option","$dropdown","sorter","highlightFirstItem","$selected","ensureHighlightVisible","setClasses","selectedIds","showLoading","loading","loadingMore","$loading","_resultId","$children","$child","$childrenContainer","$container","isOpen","$highlighted","getHighlightedResults","currentIndex","nextIndex","$next","currentOffset","nextTop","nextOffset","outerHeight","nextBottom","mousewheel","isAtTop","isAtBottom","$this","offsetDelta","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","_attachCloseHandler","_detachCloseHandler","$select","isEnabled","SingleSelection","$rendered","selectionContainer","formatted","MultipleSelection","$selections","selectionIdPrefix","selectionId","$remove","Placeholder","decorated","normalizePlaceholder","createPlaceholder","$placeholder","placeholderTitle","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","searchLabel","$search","$searchContainer","_transferTabIndex","resizeSearch","_keyUpPrevented","$previousChoice","searchRemoveChoice","msie","disableInputEvents","handleSearch","searchHadFocus","term","SelectionCSS","selectionCssClass","EventRelay","relayEvents","preventableEvents","Translation","dict","translation","loadPath","translations","BaseAdapter","query","generateResultId","SelectAdapter","selectedElement","currentData","unselect","addOptions","normalizedData","_normalizeItem","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","failure","$request","_request","request","_queryTimeout","Tags","createTag","insertTag","wrapper","checkChildren","_removeOldTags","Tokenizer","tokenizer","dropdown","createAndSelect","tokenData","separators","termChar","MinimumInputLength","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","enoughRoomAbove","enoughRoomBelow","$offsetParent","isConnected","outerWidth","countResults","MinimumResultsForSearch","minimumResultsForSearch","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","DropdownCSS","dropdownCssClass","TagsSearchHighlight","$firstOption","firstElement","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","tokenSeparators","resultsAdapter","selectOnClose","dropdownAdapter","SearchableDropdown","closeOnSelect","selectionAdapter","allowClear","_resolveLanguage","uniqueLanguages","_processTranslations","stripDiacritics","amdLanguageBase","autocomplete","dropdownAutoWidth","scrollAfterSelect","templateResult","templateSelection","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","resolvedLanguages","baseLanguage","languageData","convertedData","Options","excludedData","upperCaseLetter","dataName","dataValue","Select2","_generateId","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","_resolveWidth","WIDTH","styleWidth","elementWidth","_syncA","_syncS","_syncSubtree","_observer","mutations","childList","subtree","nonRelayEvents","_isChangeMutation","addedNodes","removedNodes","mutation","changed","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","newVal","disconnect","thisMethods","instanceOptions","shallowEqualFuzzy","objA","objB","valA","iLen","equalityMap","kLen","keysA","keysB","Generator","Context","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","callInvokeWithMethodAndArg","maybeInvokeDelegate","pushTryEntry","resetTryEntry","runtime","accidentalStrictMode","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","leafPrototypes","definition","chunkId","promises","miniCssF","dataWebpackPrefix","needAttach","nc","onScriptComplete","doneFns","nmd","paths","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal","Action","PopStateEventType","invariant","cond","getHistoryState","usr","createLocation","_extends","pathname","createPath","parsedPath","hashIndex","searchIndex","getUrlBasedHistory","getLocation","createHref","validateLocation","v5Compat","globalHistory","history","Pop","getIndex","handlePop","createURL","replaceState","listen","encodeLocation","Push","historyState","pushState","DOMException","Replace","go","ResultType","matchRoutes","routes","locationArg","basename","stripBasename","branches","flattenRoutes","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","safelyDecodeURI","parentsMeta","parentPath","flattenRoute","route","relativePath","caseSensitive","joinPaths","computeScore","_route$path","exploded","explodeOptionalSegments","segments","isOptional","endsWith","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","paramNames","regexpSource","paramName","compilePath","captureGroups","splatValue","decodeURIComponent","safelyDecodeURIComponent","decodeURI","startIndex","nextChar","getInvalidPathError","getPathContributingMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","isRouteErrorResponse","internal","validMutationMethodsArr","validRequestMethodsArr","DataRouterContext","DataRouterStateContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useInRouterContext","useLocation","UNSAFE_invariant","static","useNavigate","router","useDataRouterContext","DataRouterHook","UseNavigateStable","useCurrentRouteId","DataRouterStateHook","activeRef","navigate","fromRouteId","useNavigateStable","dataRouterContext","routePathnamesJson","UNSAFE_getPathContributingMatches","useNavigateUnstable","useParams","routeMatch","useResolvedPath","_temp2","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","renderedMatches","_renderMatches","navigationType","DefaultErrorComponent","_state$errors","useDataRouterState","UseRouteError","routeId","useRouteError","lightgrey","preStyles","backgroundColor","fontStyle","defaultErrorElement","RenderErrorBoundary","super","revalidation","errorInfo","routeContext","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","_dataRouterState2","_dataRouterState","errorIndex","reduceRight","getChildren","hookName","ctx","useRouteContext","thisRoute","Navigate","jsonPath","Route","_props","Router","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","createRoutesFromChildren","treePath","loader","hasErrorBoundary","shouldRevalidate","startTransitionImpl","BrowserRouter","historyRef","setStateImpl","v7_startTransition","newState","isBrowser","ABSOLUTE_URL_REGEX","Link","absoluteHref","reloadDocument","preventScrollReset","UNSAFE_NavigationContext","isExternal","currentUrl","targetUrl","joinedPathname","useHref","internalOnClick","replaceProp","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","getFromWindow","varName","GoogleApiContext","gapi","GoogleApiProvider","library","setStatus","tryAgain","useLibrary","requested","modules","discoveryDocs","scopes","configure","options1","state1","missingModules","loadModules","auth","auth2","getAuthInstance","missingScopes","grantedScopes","currentUser","getGrantedScopes","missingDiscoveryDocs","missingScopesNotDone","requestScopes","doInitScopes","requestDiscoveryDocs","doInitDiscoveryDocs","loadScopes","client_id","isSignedIn","grant","signIn","loadDiscoveryDocs","client","doConfigure","GoogleOAuthContext","GoogleOAuthProvider","onScriptLoadSuccess","onScriptLoadError","scriptLoadedSuccessfully","setScriptLoadedSuccessfully","onScriptLoadSuccessRef","onScriptLoadErrorRef","scriptTag","useLoadGsiScript","contextValue","factoryWithThrowingShims","isValidString","TawkMessenger","propertyId","widgetId","Tawk_API","Tawk_LoadStart","embedId","basePath","embedded","firstScript","loadScript","customStyle","mapCallbacks","maximize","minimize","popup","showWidget","hideWidget","toggleVisibility","endChat","getWindowType","getStatus","isChatMaximized","isChatMinimized","isChatHidden","isChatOngoing","isVisitorEngaged","onLoaded","onBeforeLoaded","widgetPosition","visitor","setAttributes","addEvent","metadata","addTags","removeTags","onLoad","onStatusChange","onBeforeLoad","onChatMaximized","onChatMinimized","onChatHidden","onChatStarted","onChatEnded","onPrechatSubmit","onOfflineSubmit","onChatMessageVisitor","onChatMessageAgent","onChatMessageSystem","onAgentJoinChat","onAgentLeaveChat","satisfaction","onChatSatisfaction","visitorName","onVisitorNameChanged","onFileUpload","onTagsUpdated","onUnreadCountChanged","FixedMessenger","_jsx","TawkMessengerReact","setDefaultAddressId","setItem","getIsAdmin","getItem","setIsAdmin","setAddingActivity","AboutUs","PageContent","Banners","loadData","withCredentials","credentials","RenderPageContent","Content","_jsxs","banners","_Fragment","instances","isBlazorPlatform","createInstance","classFunction","arrayParam","combineArray","messageHandler","nameSpace","splits","fromObj","deleteObject","containerObject","getEnumValue","enumObject","enumValue","destination","temrObj","tempProp","deepmerge","keys_1","copied","_loop_1","arguments_1","obj1","isArrayChanged","blazorEventExtend","isBlazor","getUniqueID","definedName","eventFunction","compareElementParent","throwError","print","printWindow","links","blinks","outerHTML","formatUnit","inst","HijriParser","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","getMainObject","cName","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","mapper","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","toGregorian","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","timeZone","intDateFormatter","dateParseRegex","dObject","getCurrentDateValue","matches_1","length_1","curval","curvalstr","processNumber","curstr","curlength","desig","dec","retu","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","getWeekOfYear","checkTwodigitNumber","latnParseRegex","tVal","curPattern","no","ishour","errorText","NumberFormat","numberFormatter","symbolPattern","fOptions","cOptions","dOptions","numericObject","numberMapper","currencySymbol","getCurrencySymbol","currency","defaultCurrencyCode","altSymbol","percentSymbol","minusSymbol","formatRegex","customFormat","getProperNumericSkeleton","isCurrency","isPercent","getSymbolPattern","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","fractionDigits","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","decimalPart","toExponential","customPivotFormat","groupNumbers","nlead","nend","toPrecision","level1","sep","decimalSymbol","level2","lead","decimal","latnRegex","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","tKeys_1","tValue","pDate","lDate","tzValue","retOptions","props_1","curObject","matchString","internalNumberParser","tmatch","getZoneValue","splitStr","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","symbolpattern","symbolRegex","infinity","getParsedNumber","isNegative","tempValue","exponent","convertMaxFracDigits","decimalSplitValue","Observer","ranArray","boundedEvents","cntxt","notExist","isHandlerPresent","indexLocation","successHandler","blazorCallback","curObject_1","objs","obj_1","isJson","dateReviver","boundedEvents_1","onIntlChange","cldrData","defaultCulture","Internationalization","cultureName","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","formatDate","parseNumber","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","fraction","fmatch","currencyCode","customNumberFormat","integerPart","spaceCapture","spaceGrouping","fractionPart","isCurrencyPercent","actual","loc","fractionDigitsPattern","minDigits","maxDigits","minimumIntegerPattern","integer","groupingPattern","formatSplit","dateObj","actualPattern","tLength","timeZonePattern","options_1","minFrac","numrericObject","curMatch","curCode","hasNegativePattern","cPattern","processSymbol","firstDay","iCulture","aCurrency","rCurrency","iCurrency","pData_1","weeknum","newYear","daynum","nday","headerRegex","Ajax","emitError","eventArgs","cancel","httpRequest","stateChange","onprogress","onAbort","onUploadProgress","upload","onSuccess","failureHandler","onFailure","REGX_MOBILE","Fetch","isNOU","contentTypes","fetchRequest","Request","triggerEvent","fetchResponse","returnVal","REGX_IE","REGX_IE11","REGX_IOS","REGX_IOS7","REGX_ANDROID","REGX_WINDOWS","REGX_VERSION","REGX_BROWSER","OPERA","EDGE","CHROME","PANTHOMEJS","SAFARI","WEBKIT","MSIE","MOZILLA","browserDetails","Browser","extractBrowserDetail","browserInfo","clientInfo","getEvent","isPointer","isTouch","isDevice","move","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","isSafari","isIos","regX","maxTouchPoints","uA","info","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","bindTo","intDebounce","debounceListener","eventData","isIE","clearEvents","copyData","eventProp","eventData_1","event_1","SVG_REG","getClassList","ele","classList_1","curClass","classList_2","classArr","isVisible","fromElements","isEval","docFrag","executeScript","NodeList","iKey","needsVDOM","querySelectId","selectAll","charRegex","idList","splitId","setId","setStyleAttribute","addClasses","removeClasses","isColEName","Base","isRendered","isComplexArraySetter","allowServerDataBinding","isProtectedOnChange","changedProperties","oldProperties","bulkChanges","refreshing","ignoreCollectionWatch","finalUpdate","childChangedProperties","modelObserver","addInstance","setProperties","muteOnChange","prevDetection","dataBind","serverDataBind","callChildDataBind","clearChanges","newChanges","oldChanges","onPropertyChanged","sfBlazor","updateModel","saveChanges","newValue","oldValue","moduleClass","getModuleName","ej2_instances","getComponent","comp","getObject","curKey","getObjectArray","isSetter","isFactory","curType","propertyGetter","propertySetter","oldVal","complexGetter","complexSetter","complexArrayGetter","defCollection","ignore","controlParent","extendFunc","complexArrayDefinedCallback","complexArraySetter","oldValueCollection","newValCollection","dFunc","keyString","getParentKey","model_1","getArrayModel","ejsAction","isControlParent","arrayFunction","modelObject","Property","propertyDescriptor","addPropertyCollection","Complex","Collection","eventDescriptor","finalContext","getParentContext","NotifyPropertyChanges","classConstructor","propertyType","propList","complexProps","colProps","propNames","complexPropNames","colPropNames","curText","__extends","extendStatics","__","__decorate","decorators","decorate","ease","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","getModel","elements_1","element_1","delayAnimation","animationId","frameId","cancelAnimationFrame","animationMode","begin","applyAnimation","timerId","prevTimeStamp","startAnimation","avg","timingFunction","newProp","oldProp","rippleEffect","rippleOptions","rippleModel","rippleFlag","isCenterRipple","getRippleModel","isRippleEnabled","rippleHandler","rippleUpHandler","rippleLeaveHandler","radius","diameter","rippleElement","removeRipple","rippleElements","accountURL","ModuleLoader","loadedModules","requiredModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","modName","member","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","usedModules","removableModule_1","ChildProperty","parentObj","isParentArray","updateChange","updateTimeOut","changeTime_1","curIndex","restrictServerDataBind","isSaveChanges","parent_1","parentKey","complexKeys","isFinal","valueLength","componentList","bypassKey","LicenseValidator","isValidated","isLicensed","noLicense","trailExpired","versionMismatched","platformMismatched","invalidKey","licKey","setKey","npxManager","convertToChar","validateMsg","validateURL","getInfoFromKey","result_1","invalidPlatform","expiryDate","expDate","currDate","licenseContent","errorDiv","getDecryptedData","atob","pkey","decryptedStr","resultArray","isNpxKey","licKeySplit","licKeySplit_1","lKey","decodeStr","buffr","decryptedKey","licenseValidator","cArr","cArr_1","registerLicense","lastPageID","componentCount","lastHistoryLen","instancecount","isvalid","isBannerAdded","versionBasedStatePersistence","randomId","uniqueID","isStringTemplate","needsID","isReactHybrid","enableRtl","moduleLoader","localObserver","detectFunction","enablePersistence","setPersistData","detachUnloadEvent","refresh","preRender","injectModules","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","ej2StatePersistenceVersion","attachUnloadEvent","handleUnload","mergePersistData","bannerTemplate","errorBackground","createLicenseOverlay","renderComplete","wrapperElement","event_2","getInjectedModules","injectedModules","Inject","isVDOM","triggerStateChange","currentContext","calls","getPersistData","renderReactTemplates","clearTemplate","templateName","isHistoryChanged","pageID","addOnPersist","persistObj","objValue","getActualProperties","ignoreOnPersist","iterateJsonProperties","ignoreList","newList","this_1","defaultPosition","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","diffX","prevLeft","prevTop","dragProcessStarted","eleTop","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","isUnWire","enableTapHold","mobileInitialize","initialize","removeTapholdTimer","tapHoldThreshold","getScrollableParent","tempScrollHeight","tempScrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abortSelectors","intCoord","getCoordinates","initialPosition","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","isChangeTouch","intCordinate","styleProp","marginTop","marginRight","marginBottom","dragTarget","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","getMousePosition","isDragScroll","getHelperElement","dragTargetElement","helperElement","parentClientRect","dragStart","getProperTargetElement","bindEvents","bindDragEvents","dragElement","dragArea","setDragArea","enableTailMode","enableScrollHandler","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","queryPositionInfo","docHeight","getDocumentWidthHeight","docWidth","drag","eleObj","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","helper","tLeft","tTop","pagex","pagey","dLeft","dTop","enableAutoScroll","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","isDialogEle","tempDraEleTop","dragValue","scrollIntoView","getPathElements","getScrollPosition","nodeEl","scrollingElement","nodeEle","elementTop","elementLeft","elementsFromPoint","intOut","docBody","docEle","dragStop","dragStopCalled","intDrop","change","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","pointerEvents","elementFromPoint","oldEle","isdragscroll","dragEle","isOffsetParent","isVerticalScroll","cursorAt","sender","draggable","draggedElement","dropIns","getDropInstance","parentElement","drop","eleInst","eleInst_1","Droppable","mouseOver","wireEvents","accept","isDrag","isDropArea","canDrop","droppedElement","coord","KeyboardEvents","keyPressHandler","isAltKey","isCtrlKey","isShiftKey","curkeyCode","keyConfigs","configCollection_1","rconfig","rKeyObj","KeyboardEvents_1","getKeyConfigData","keyAction","unwireEvents","configCache","keyData","getKeyCode","keyVal","L10n","controlName","localeStrings","setLocale","intLocale","intGetControlConstant","currentLocale","localeObject","getConstant","SwipeSettings","swipeRegex","Touch","touchAction","tapCount","startEvent","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","cancelEvent","movedPoint","eScrollArgs","calcScrollPoints","startEvents","startX","startY","distanceX","distanceY","scrollDirection","velocity","getVelocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","endPoint","calcPoints","swipeArgs","swipeDirection","eSwipeArgs","tDistance","swipeSettings","swipeThresholdDistance","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","eleStyle","eTapArgs","pnt","newX","newY","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","exp","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","ignorePrefix","argName","evalExpResult","varCOunt","localKeys","isClass","singleSpace","cnt","matchStr","SPECIAL_CHAR","rlStr","addNameSpace","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","splRegexp","arrObj","SlashReplace","NameSpaceForspecialChar","evalExp","addNS","tempStr","nameSpaceNew","quotes","NameSpaceArrObj","HAS_ROW","HAS_SVG","blazorTemplates","templateString","compiler","engineObj","templateId","blazorTemplateId","blazorId","updateBlazorTemplate","callBack","updateTemplate","resetBlazorTemplate","templateDiv","innerTemplates","tempId","tempElement","initializeCSPTemplate","boundFunc","CSPTemplate","elementRect","popupRect","parentDocument","targetContainer","Engine","removeAttrs","jsEvents","SanitizeHtmlHelper","beforeSanitize","sanitize","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","localName","hasAttribute","OTHERMONTH","OTHERDECADE","ROOT","DEVICE","RTL","DECADE","ICON","DISABLED","OVERLAY","WEEKNUMBER","SELECTED","FOCUSEDDATE","OTHERMONTHROW","TODAY","LINK","CELL","ZOOMIN","DAYHEADERLONG","dayMilliSeconds","CalendarBase","isPopupClicked","isDateSelected","isTodayClicked","preventChange","isAngular","previousDates","rangeValidation","calendarEleCopy","calendarMode","globalize","todayDisabled","todayDate","calendarElement","createHeader","createContent","getDefaultKeyConfig","defaultKeyConfigs","controlUp","controlDown","moveDown","moveUp","moveLeft","moveRight","home","pageUp","pageDown","shiftPageUp","shiftPageDown","controlHome","controlEnd","altUpArrow","spacebar","altRightArrow","altLeftArrow","checkDateValue","checkValue","setOverlayIndex","popupWrapper","popupElement","modal","minMaxUpdate","headerElement","iconContainer","previousIcon","nextIcon","headerTitleElement","adjustLongHeaderSize","contentElement","createContentHeader","createContentBody","showTodayButton","createContentFooter","getCultureValues","cldrObj","culShortNames","dayFormat","dayHeaderFormat","getCultureObjects","toCapitalize","tableHeadElement","shortNames","shiftArray","renderDecades","updateFooter","todayElement","l10","todayButtonClick","keyConfig","moduleName","navigateTitle","keyboardModule","keyActionHandle","dateWireEvents","serverModuleName","isCustomDate","currentView","getViewNumber","navigateTo","resetCalendar","tableBodyElement","renderDayCellArgs","multiSelection","selectedDate","focusedDate","depthValue","levelRestrict","keyboardNavigate","selectDate","contentClick","isMonthYearRange","addDay","isMinMaxRange","navigatePreviousHandler","navigatePrevious","navigateNextHandler","navigateNext","navigateHandler","triggerNavigate","minMaxDate","localDate","tdEles","numCells","islamicModule","islamicRenderDays","renderTemplate","islamicRenderTemplate","isTodayDate","titleUpdate","setStartDate","weekEle","weekAnchor","numberOfDays","weekRule","finalDate","getWeek","dateFormatOptions","tdEle","dayCell","dayLink","isOutOfRange","renderDayCellEvent","argsDate","otherMnthBool","disabledCls","clickHandler","getDateVal","copyValues","formatOptions_1","updateFocus","otherMonth","tableElement","removeTableHeadElement","valueUtil","curDate","mon","curYrs","minYr","minMonth","maxYr","maxMonth","localMonth","localYr","startYr","endYr","startFullYr","endFullYr","startHdrYr","endHdrYr","startYear","rowIterator","lastDate","timeOffset","findLastDay","classNm","trEle","otherMonthCell","iconHandler","islamicIconHandler","setAriaActiveDescendant","clickEventEmitter","eve","getIdValue","islamicPreviousHeader","islamicDate","getIslamicDate","switchView","validateValues","checkView","skipIndex","tempValueString","minFormatOption","minString","maxFormatOption","maxString","setValueUpdate","dayFormatOptions","monthFormatOptions","setActiveDescendant","focusedEle","selectedEle","previousIconHandler","compareMonth","nextIconHandler","compareYear","compareDecade","stringVal","islamicPrevious","islamicNext","gregorianFormat","islamicFormat","tzOffset","tzOffsetDiff","getMaxDays","setDateDecade","setDateYear","checkPresentDate","previousValue","checkPrevious","navigatedEvent","navigatedArgs","findNextTD","rangeValue","tmpDate","inValue","Calendar","isMultiSelection","tempValues","copyDate","previousValues","setEnable","setClass","cssClass","formResetHandler","setTimeZone","serverTimezoneOffset","newCssClass","oldCssClass","isDayLightSaving","secondOffset","firstOffset","offsetValue","timeZoneDiff","changedArgs","generateTodayVal","todayButtonEvent","changeHandler","triggerChange","previousDate","previousDateTime","isMultiSelect","tempDays","islamicRenderYears","islamicRenderDecade","storeView","tempDate","addDate","tempDates","removeDate","setTodayDate","changeEvent","isInteracted","fixedParent","calculateRelativeBasedPosition","fixedElement","anchorPos","tempAnchor","calculatePosition","currentElement","positionX","positionY","targetValues","posX","posY","setPosx","getElementHCenter","setPosy","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","updatePosition","getBodyScrollTop","getBodyScrollLeft","popupWidth","fit","viewPortElement","zoomingFactor","parentWithZoomStyle","containerWidth","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","containerHeight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","isCollide","elemOffset","yAxis","topCollideCheck","xAxis","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","flip","tEdge","TL","TR","BL","BR","eEdge","oldVisibility","removeProperty","edge","updateElementData","setPosition","leftFlip","topFlip","transformStyle","matrix","DOMMatrix","setPopup","eStatus","deepCheck","collideSide","getTargetContainerLeft","getTargetContainerTop","documentReact","PositionData","CLASSNAMES","Popup","setEnableRtl","refreshPosition","setContent","actionOnScroll","wireScrollEvents","unwireScrollEvents","resolveCollision","checkCollision","relateTo","orientationOnChange","getRelateToElement","scrollRefresh","parent_2","relateToElement","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollElement","parent_3","isElementVisible","checkGetBoundingClientRect","windowView","scrollY","scrollX","elementView","parent_4","reposition","relateToElem","collision","checkFixedParent","parentDisplay","getAnchorPosition","anchorEle","eleRect","anchorRect","targetType","callFlip","callFit","viewPortRect","horz","vert","animationOptions","relativeElement","fmDialogContainer","zIndexElement","getZindexPartial","showAnimation","hideAnimation","parentStyle","overflowRegex","parentZindex","childrenZindex","isEqualNode","siblingsZindex","currentZindexValue","wrapperInitialize","WRAPPER","ejInstance","getTextNode","childnode","createCheckBox","enableRipple","rippleSpan","frameSpan","labelSpan","disableHtmlEncode","rippleMouseHandler","IconPosition","Input","cssClassName","Button","removeRippleEffect","tempContent","enableHtmlSanitizer","setIconCss","controlStatus","iconCss","span","iconPosition","isToggle","btnClickHandler","unWireEvents","focusIn","floatType","isBindClearAction","bindInitialEvent","checkInputValue","floatLabelType","calculateWidth","inputElement","_focusFn","_blurFn","wireFloatingEvents","createFloatingInput","internalCreateElement","makeElement","createInputContainer","customTag","floatLinelement","floatLabelElement","encodePlaceHolder","inputWrap","updateLabelState","checkFloatLabelType","updateIconState","readonly","wireClearBtnEvents","validateLabel","spanEle","setCssClass","oldClass","setPlaceholder","setReadonly","isReadonly","isRtl","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","createInput","bindClearAction","showClearButton","setPropertyValue","setWidth","removeFloating","inputEle","addFloating","iconEle","inputObj","isPrependIcon","floatLine","floatText","setRipple","addIcon","internalCreate","result_2","ListBase","consts","GroupGuid","Adaptor","ds","requestType","sortBy","group","take","where","aggregates","dataSource","pvt","processResponse","JsonAdaptor","processQuery","dataManager","countFlg","lazyLoad","keyCount","agg","queries","lazyLoadData","lazyLoadGroup","isCountRequired","getAggregate","onDemandGroupInfo","fieldName","DataUtil","comparer","onPage","formGroupResult","onWhere","childLevel","records","aggQuery","Query","filterQueries","batchRequest","dm","changes","deletedRecordsLen","deletedRecords","addedRecords","changedRecords","onAggregates","onSearch","fieldNames","getFieldList","searchKey","ignoreCase","ignoreAccent","onSortBy","fnCompare","fnSort","onGroup","pageSize","pageIndex","onRange","onTake","nos","onSkip","tableName","keyField","UrlAdaptor","hierarchyFilters","getQueryRequest","singles","filterQueryLists","sorts","searches","callAdaptorFunction","getFiltersFrom","toJson","fields","getRequestQuery","reqParams","keys_2","jsonDateReplacer","pvtData","convertToQueryString","request1","fromTable","distincts","selects","expands","handleTimeZone","timeZoneHandling","parseJson","requests","groupDs","isExpand","formRemoteGroupedData","getAggregateResult","items","getGroupedRecords","hasRecords","childGroupedRecords","batchUrl","crudUrl","removeUrl","added","deleted","getAddParams","insertUrl","keyColumn","updateUrl","fKey","pKey","predicats","Predicate","aggregateData","aggregate","isServerGrouping","groupQuery","addParams","ODataAdaptor","multipartAccept","changeSet","batchPre","contentId","batchContent","changeSetContent","batchChangeSetContentType","updateType","onPredicate","requiresCast","getField","replacer","isGuid","odBiOperator","odUniOperator","odv4UniOperator","splittedStringValue","splittedValue","onComplexPredicate","predicates","onEachWhere","condition","isComplex","onEachSearch","onEachSort","onCount","metaCheck","rootUrl","dataUrls","resourceTableName","dataCopy","metaData","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","RemoteSaveAdaptor","ODataV4Adaptor","onExpand","exArr","close_1","combineVal","expandQueryIndex","onDistinct","distinctFields","metaName","metaV4Name","dataUrl","dataCount","dataV4Count","WebApiAdaptor","_loop_2","_loop_3","Count","Items","WebMethodAdaptor","updateKey","CustomDataAdaptor","addRecord","updateRecord","deleteRecord","batchUpdate","CacheAdaptor","GraphQLAdaptor","schema","getVariables","getQuery","datamanager","urlQuery","vars","variables","resData","inserted","generateCrudData","bData","crudData","getMutation","adaptor","isCrudAction","isInsertAction","cacheAdaptor","guidId","forDel","requestTime","generateKey","currentFilter","newQuery","cachedItems","DataManager","persistQuery","isInitialLoad","offline","timeTillExpiration","cachingPageSize","enableCaching","isCors","defaultQuery","isDataAvailable","executeQuery","getPersistedData","persistedData","persistData","setPersistQuery","persistedQuery","keyword","allPredicates","predicateObj","nestedPredicates","nestedPredicate","matchCase","setDefaultQuery","executeLocal","subQuery","lookup","lookups","buildHierarchy","makeRequest","deffered","isCustomDataAdaptor","getDeferedArgs","extendRequest","fnSuccess","fnFail","isSelector","subQuerySelector","virtualSelectRecords","fnQueryChild","subDeffer","childArgs","isChild","subUrl","childReq","subData","isGraphQLAdaptor","ajaxReqOption","virtualRecords","ajax_1","pResult","cResult","doAjaxRequest","deff_1","ajax_2","successFunc","record","failureFunc","ajaxDeffered","ajaxFunc","ajax_3","clearPersistence","notEndsWith","notStartsWith","wildCard","asteriskSplit","optionalSplit","like","fnAscending","fnDescending","localeCompare","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","distinct","requiresCompleteRecord","prepareQuery","sampledata","requiresCounts","requiresCount","pred","predicateList","getPredicate","sorted","mainPred","childPred","cpre","sum","average","truecount","falsecount","operatorSymbols","fnOperators","expected","notequal","lessthan","greaterthan","lessthanorequal","greaterthanorequal","doesnotcontain","isnotnull","isnull","startswith","doesnotstartwith","isempty","isnotempty","wildcard","endswith","doesnotendwith","processSymbols","processOperator","jsonText","jsonReviver","iterateAndReviveArray","iterateAndReviveJson","offSet","toTimeZone","secondsMs","utcFormat","hrs","mins","addSelfOffset","jsonReplacer","arrayReplacer","keys_3","toUTC","datefn","differenceString","localtimefn","norm","sortedColumns","groupedColumns","execute","cloned","isFromGroup","sortByForeignKey","sortByDesc","hierarchy","selectorFn","foreignKey","filtered","combinePredicates","combine","ornot","andnot","fromJson","fromJSONData","isAnd","preds","icon","hasChild","collapsible","iconWrapper","anchorWrap","navigable","getFieldValues","dataItem","fieldData","isHeader","dataField","compileTemplate","defaultMappedFields","isChecked","hasChildren","htmlAttributes","urlAttributes","imageAttributes","imageUrl","groupBy","defaultAriaAttributes","listRole","itemRole","groupItemRole","itemText","wrapperRole","defaultListBaseOptions","showCheckBox","expandCollapse","ariaAttributes","listClass","itemClass","processSubChild","groupTemplate","headerTemplate","expandIconClass","expandIconPosition","itemNavigable","createListFromArray","isSingleLevel","componentInstance","generateUL","createListItemFromArray","subChild","curOpt","getModuleClass","generateId","itemCreating","generateSingleLevelLI","generateLI","itemCreated","createListItemFromJson","checkboxElement","anchorElement","typeofData","curItem","innerEle","imageElemnt","iconElement","createListFromJson","elementArray","addSorting","getDataSource","typeof","elementAttributes","class","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","i_1","hasChildNodes","attributes_1","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","headerItems_1","headerData","generateIcon","INPUTCONTAINER","POPUP","LEFTCALENDER","RIGHTCALENDER","ERROR","ACTIVE","STARTDATE","ENDDATE","STARTBUTTON","INPUTFOCUS","RANGEHOVER","STARTLABEL","ENDLABEL","CALENDAR","NEXTICON","PREVICON","HEADER","TITLE","ICONCONTAINER","RANGECONTAINER","PRESETS","FOCUSDATE","CONTENT","DAYSPAN","DATEDISABLED","ICONDISABLED","LISTCLASS","HOVER","OVERFLOW","FLAT","CSS","NONEDITABLE","HIDDENELEMENT","wrapperAttr","Presets","DateRangePicker","isCustomRange","isCustomWindow","presetsItem","previousEleValue","isKeyPopup","dateDisabled","isRangeIconClicked","isMaxDaysClicked","disabledDays","preventBlur","invalidValueString","dateRangeOptions","startValue","endValue","setModelValue","setDataAttribute","inputWrapper","keyInputConfigs","altDownArrow","tab","defaultConstant","startLabel","endLabel","customRange","applyText","cancelText","selectedDays","isMobile","matchMedia","angularTag","updateHtmlAttributeToElement","checkInvalidRange","rangeArray","initProperty","navNextFunction","navNextMonth","navPrevFunction","navPrevMonth","deviceNavNextFunction","deviceNavNext","deviceNavPrevFunction","deviceNavPrevious","initStartDate","initEndDate","formElement","updateValue","checkFormat","skeletonString","validationAttribute","checkHtmlAttributes","shiftTab","l10n","processPresets","updateHtmlAttributeToWrapper","setRangeAllowEdit","isDynamic","pro","firstHiddenChild","secondHiddenChild","allowEdit","updateClearIconState","updatedClassValue","dateRangeStyle","updateCssClass","cssNewClass","cssOldClass","presets","activeIndex","rangeIconHandler","inputFocusHandler","inputBlurHandler","inputChangeHandler","resetHandler","inputKeyboardModule","inputHandler","unBindEvents","updateHiddenInput","bindClearEvent","valueType","clearedArgs","changeTrigger","clearRange","keyupEvent","restoreValue","previousStartValue","previousEndValue","startCopy","endCopy","errorClass","applyButton","removeSelection","targetElement","isPopupOpen","popupObj","applyFunction","leftCalendar","calendarFocus","dateValue","minDays","maxDays","createPopup","adjustLongHeaderWidth","isPreset","createPresets","listRippleEffect","renderPopup","renderControl","createControl","bindCalendarEvents","updateRange","rightCalendar","disabledDateRender","updateHeader","clearCalendarEvents","leftCalPrevIcon","leftCalNextIcon","rightCalPrevIcon","rightCalNextIcon","updateNavIcons","calendarIconEvent","deviceCalendarEvent","startButton","deviceHeaderClick","endButton","calendarIconRipple","leftKeyboardModule","keyInputHandler","rightKeyboardModule","bindCalendarCellEvents","removeFocusedDate","updateDeviceCalendar","deviceNavigation","deviceCalendar","removeClassDisabled","updateMinMaxDays","selectableDates","focusArguments","openOnFocus","dateOptions","getStartEndDate","prevStartVal","prevEndVal","refreshControl","blurArguments","strictMode","updateInput","isEnd","inputStr","isDateDisabled","keyCalendarUpdate","isLeftCalendar","isRemoveFocus","leftCalCurrentDate","rightCalCurrentDate","updateCalendarElement","navInCalendar","leftLimit","rightLimit","keyNavigation","tabKeyValidation","firstCellToFocus","focusAbleEle","focusEleID","currentFirstDay","rightDateLimit","leftDateLimit","presetElement","selectRange","yearDate","calendarNavigation","checkMinMaxDays","presetHeight","calendarPos","rightHeader","leftHeader","isRightMonth","isLeftMonth","isRightYear","isLeftYear","isRightDecade","isLeftDecade","tdCells_1","hoverSelection","focusedDate_1","eleDate","tdCells_2","isDisabledCell","startDateValue","isSameStartEnd","startVal","endVal","elementCollection","elementCollection_1","tdCells_3","eleDateValue","eleDateValue_1","addSelectedAttributes","endDateValue","rangeArgs","removeTimeValueFromDate","daySpan","otherMonthSelect","isStartDate","sameDate","dateIdString","tdCell","firstMonth","lastMonth","endEle","endEle_1","ele_1","endEle_2","ele_2","removeSelectedAttributes","tdCells","tdCells_4","tdCells_5","startMonth","startValueSelected","maxEle","tdCells_6","calendar_1","tdCells_7","disabledDayCnt","start_1","end_1","updateControl","customDate","createRangeHeader","labelContainer","endBtn","startBtn","changeIcon","disableInput","validateMinMax","validateRangeStrict","validateMinMaxDays","validateRange","isSameDecade","endYear","startMonthCurrentDate","selectNextMonth","selectNextYear","selectNextDecade","decyr","selectStartMonth","createCalendar","prevIcon","leftTitle","leftContainer","rightContainer","leftNavTitle","rightTitle","rightNavTitle","getCalendarView","controlContainer","headerContainer","fullScreenMode","modelHeaderIconWrapper","modelCloseIcon","modelRangeCloseHandler","modelApplyButton","footerSection","cancelBtn","CANCEL","applyBtn","cancelFunction","deviceHeaderUpdate","isValueChanged","closeEventArgs","focusOut","popupKeyboardModule","popupKeyActionHandle","onMouseClick","isClick","setListSelection","onMouseOver","renderCustomPopup","removeListSelection","applyPresetRange","modelValue","showPopup","openEventArgs","listTag","customElement","wireListEvents","modelWrapper","modelHeader","modelTitleSpan","presetContent","unWireListEvents","iconRangeRight","cssFloat","touchRangeModule","swipe","dateRangeSwipeHandler","touchStartRangeHandler","btnKeyboardModule","presetKeyboardModule","presetKeyActionHandler","popupKeyBoardHandler","popupCloseHandler","targetExitViewport","documentHandler","touchRangeStart","rangeContainer","listMoveDown","setScrollPosition","listMoveUp","hvrItem","getHoverLI","actItem","getActiveLI","nextElementSibling","previousElementSibling","listHeight","nextEle","liHeight","updatedCssClassValue","setEleWidth","disabledDates","formatOption","startinvalue","endinvalue","startString","endString","valueString","startObject","endObject","invalidobject","getstringvalue","checkInvalidValue","toLocaleDateString","stringValue","formatOpt","basISOString","virtualRenderCellArgs","virtualRenderCellEvent","isStartDisabled","isEndDisabled","createHiddenInput","isBlur","ariaAttrs","ensureInputAttribute","getSelectedRange","mobileRangePopupWrap","refreshChange","enableInput","clearModelvalue","setMinMaxDays","getStartEndValue","defaulthtmlkeys","delayUpdate","ComponentBase","mountingState","attrKeys","cachedTimeOut","isAppendCalled","initRenderCalled","isReactForeceUpdate","isReact","isshouldComponentUpdateCalled","isCreated","refreshChild","canDelayUpdate","renderReactComponent","portals","refreshProperties","reactElement","nextProps","updateProperties","silent","dProps","statelessTemplates","propkey","isClassName","htmlattributes","compareValues","clsName","propsClsName","dpropsClsName","processComplexTemplate","compTemplate","complexTemplate","PropVal","getDefaultAttributes","propKeys","controlAttributes","reactUid","clsList","syntheticEvent","value1","value2","tempVal","tempVal2","compareObjects","oldProps","newProps","lenSimilarity","diffArray","templateProps","_j","checkInjectedModules","prevModule","curModule_1","getInjectedServices","directivekeys","changedProps","directiveValue","validateChildren","skipRefresh","prevProperties","dKeys","compareOutput","_c1","allColumns","propInstance","changedProps_1","propInstance_1","appendReactElement","portal","templateNames","tempPortal","propIndexCount","childCache","childs_1","ifield","getChildType","childProps","getChildProps","isDirective","subChild_1","accessProp","cacheVal","cachedValue","childs_2","isService","services","applyMixins","derivedClass","baseClass","classObj","ComplexBase","stringCompiler","templateElement","cEle","actTemplate","actData","rele","DateRangePickerComponent","statelessTemplateProps","immediateRender","globalTimeOut","DEFT_MAT_WIDTH","DEFT_MAT3_WIDTH","DEFT_FAB_WIDTH","DEFT_FLUENT_WIDTH","DEFT_BOOT_WIDTH","DEFT_BOOT4_WIDTH","DEFT_BOOT5_WIDTH","CLS_SHOWSPIN","CLS_HIDESPIN","CLS_MATERIALSPIN","CLS_MATERIAL3SPIN","CLS_FABRICSPIN","CLS_FLUENTSPIN","CLS_TAILWINDSPIN","CLS_BOOTSPIN","CLS_BOOT4SPIN","CLS_BOOT5SPIN","CLS_HIGHCONTRASTSPIN","CLS_SPINWRAP","CLS_SPININWRAP","CLS_SPINCIRCLE","CLS_SPINARC","CLS_SPINLABEL","CLS_SPINTEMPLATE","spinTemplate","spinCSSClass","createSpinner","spinnerContainer","spinnerInnerContainer","inner_wrap","create_spinner_container","getTheme","defaultSize","calculateRadius","setTheme","labelEle","createLabel","replaceContent","innerContainer","svg","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","rad","startArc","defineArcPoints","circleEle","boot_calculate_attributes","createBootstrapSpinner","createHighContrastSpinner","createBootstrap4Spinner","createBootstrap5Spinner","createTailwindSpinner","generateSeries","series","increment","formSeries","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","svgMaterial","matCirclePath","animateMaterial","spinnerInfo","globalInfo","previousId","strokeSize","getStrokeSize","rotate","mat_animation","updatePath","getDashOffset","createCircle","easeAnimation","transformOrigin","drawArc","timecount","innerConainer","trgClass","centerX","centerY","circle","defineCircle","endArc","defineArc","angle","radians","showSpinner","showHideSpinner","isHide","spinnerWrap","spinWrapCollection","svgEle","isAnimate","globalObject","globalVariables","timeOutVar","startMatAnimate","rotation","boot_animate","animateBootstrap","hideSpinner","queryString","prevString","prevElementId","inputVal","searchType","listItems","itemData","strLength","queryStr","itemsData","filterValue","checkField_1","fieldValue_1","state_1","FieldSettings","dropDownBaseClasses","DropDownBase","isPreventChange","isDynamicDataChange","addedNewItem","isAddNewItemTemplate","isRequesting","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","getTextByValue","allowCustomValue","enableRtlElements","bindEvent","jsonElement","resetList","setListData","renderItemsBySelect","updateDataAttribute","invalidAttr","getJSONfromOption","optionGroup","updateFields","scrollTimer","isRequested","isDataFetched","itemTemplateId","displayTemplateId","spinnerTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","isActive","emptyDataRequest","renderItems","onActionComplete","bindChildItems","onActionFailure","localDataArgs","itemTemplate","childElementCount","updateDataList","remainingItems","sortedData","updateListValues","raiseDataBound","findListElement","findNode","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","listOption","fixedHeaderElement","postRender","listElement","focusItem","selectedItem","listEle","groupcheck","groupValue","tempHeaders","isGroupChecking","createListItems","getSortedDataSource","fieldValues","setFloatingHeader","setFixedHeader","scrollStop","getValidLi","topIndex","currentLi","itemcheck","liWidth","firstLi","textField","getIndexByValue","getItems","setFields","selectData","updateSelectElementData","isFiltering","updateSelection","renderList","updateDataSource","setUpdateInitial","updateData","setZIndex","isEmptyData","rippleFun","addItem","itemIndex","itemsCount","selectedItemValue","itemCheck","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","itemCount","getDataByValue","dropDownListClasses","rtl","inputFocus","iconAnimation","device","backIcon","filterBarClearIcon","filterInput","filterParent","mobileFilter","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","DropDownList","isListSearched","valueTempElement","initializeData","isDocumentClick","isFilterFocus","beforePopupOpen","initRemoteRender","isNotSearchList","isTyped","preventAutoFill","isValidKey","typedString","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isCustomFilter","isSecondClick","keyConfigure","space","floatLabelChange","floatElement","clearAll","resetFocusElement","removeHover","removeFocus","previousItemData","resetSelection","getItemData","onChangeEvent","allowFiltering","selectedLI","setSelection","cloneElements","setHTMLAttributes","htmlAttr","defaultAttr","getAriaAttributes","hidePopup","preventTabIndex","getNgDirective","getElementByText","getElementByValue","listItems_1","liItem","initValue","updateValues","setHiddenValue","onBlurHandler","isFilterLayout","focusOutAction","onFocusOut","resetValueHandler","wireEvent","dropDownClick","windowResize","bindCommonEvent","mobileKeyActionHandler","keyActionHandler","unBindCommonEvent","searchKeyEvent","onServerIncrementalSearch","incrementalSearch","isValidLI","closePopup","setHover","hoveredItem","elementId","spinnerElement","filterInputObj","preventAction","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","getPageCount","pageDownSelection","updateHomeEndAction","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","focusEle","isSelectFocusItem","nextItem","findLi","steps","previousItem","unWireEvent","checkSelector","onDocumentClick","activeStateChange","proxy_1","updateSelectedItem","preventSelect","isSelection","selectedData","selectEventCallback","setSelectOptions","detachChanges","checkFieldValue","focusedItem","activeItem","valueTemplate","setValueTemplate","clearElement","previousSelectedLI","dropdownCompiler","dropdownTemplate","valuecheck","valueCompTemp","selectedItems","dataText","detachChangeEvent","preItems","onFilterUp","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","setSelectionRange","filterQuery","filterType","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","focusIndexItem","setSearchBox","filterBarPlaceholder","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","setInputValue","updateActionCompleteDataValues","addNewItem","fieldValue","checkField","newElement","value_1","actionCompleteDataUpdate","highlightedItem","refreshPopup","popupEle","searchBox","popupHeight","setHeaderTemplate","footerTemplate","setFooterTemplate","searchBoxHeight","maxHeight","getOffsetValue","firstItem","isEmptyList","textIndent","paddingLeft","borderLeftWidth","getFocusElement","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","scrollHandler","selectedElementID","destroyPopup","popupStyles","borderTop","borderBottom","setPopupPosition","actionList","popupOffset","lastItem","paddingBottom","scrollBottom","isInitial","paddingTop","boxRange","isPopupButton","scrollableParentElements_1","animModel","fixedHeader","updatedCssClassValues","setReadOnly","selectElement","onselect","onchange","footercheck","footerCompTemp","headercheck","headerCompTemp","contentEle","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","checkValidLi","setSelectionData","listLength_1","listLength_2","ddlProps","newClass","invokeRenderPopup","proxy_2","onpopstate","renderHightSearch","isSelectVal","isFocused","attrArray","DropDownListComponent","globalCssModule","setScrollbarWidth","paddingRight","conditionallyUpdateScrollbar","scrollbarWidth","scrollDiv","getScrollbarWidth","fixedContent","bodyPadding","mapToCssModules","cssModule","omit","omitKeys","warnOnce","targetPropType","tagPropType","TransitionTimeouts","TransitionPropTypeKeys","TransitionStatuses","keyCodes","getTag","findDOMElements","isReactRefObj","isArrayOrNodeList","focusableElements","propType","explanation","rowColWidths","rowColsPropType","noGutters","xs","sm","xl","xxl","widths","Row","_props$tag","Tag","_props$widths","colClasses","colSize","isXs","colWidths","stringOrNumberProp","columnProps","getColumnSizeClass","Col","_getColumnClasses","modifiedAttributes","columnProp","_classNames","colSizeInterfix","colClass","_colClass","getColumnClasses","variant","CloseButton","block","ariaLabel","_props$color","btnOutlineColor","Label","htmlFor","colFormLabel","formLabel","getAuthToken","authToken","setAuthToken","expiry","authExpires","getUserDetails","setUserDetails","clearUserDetails","sessionStorage","ToastUtility","CONTAINER","WIDTHFULL","MESSAGE","PROGRESS","CLOSEBTN","ToastPosition","ButtonModelProps","ToastAnimations","ToastAnimationSettings","Toast","toastCollection","refElement","isBlazorServer","screen","progressObj","intervalId","contentTemplate","toastTemplate","initRenderClass","toastObj","collectionObj","templateChanges","toastContainer","getContainer","setPositioning","isToastModel","toastEle","setWidthHeight","setCSSClass","personalizeToast","templateRendering","setProgress","setCloseButton","setAria","appendToTarget","swipeHandler","showToast","lastElementChild","hideToast","clearContentTemplate","clearToastTemplate","fetchEle","sanitizeHelper","interactionType","newestOnTop","destroyToast","prob","templateFn","tempVar","tmpArray","clo","clearProgress","removeToastContainer","isClosed","clearContainerPos","customPosition","toastBeforeClose","hideAnimate","toastClose","toastBeforeCloseArgs","progressEle","setIcon","setTitle","actionButtons","showCloseButton","closeIconTitle","closeBtn","hideEta","maxHideTime","timeOutId","extendedTimeout","toastHoverAction","delayedToastProgress","showProgressBar","progressBarEle","updateProgressBar","percentage","progressDirection","titleEle","msgContainer","isContent","tempEle_1","appendMessageContainer","actionBtnContainer","actionBtn","btnDom","toastBeforeOpen","toastBeforeOpenArgs","keyDownHandler","displayToast","clickArgs","clickToClose","isCloseIcon","toastClickArgs","showAnimate","toastOpen","toastContainerElement","untilToastsModel","ArraysHaveCommonItems","Arr1","Arr2","capitalizeObjectKeys","getProductPrice","SaleStart","SaleEnd","SalePrice","NormalPrice","moment","saleStartDate","saleEndDate","ConfirmDialogStyles","CommandTemplate","buttonOption","SearchGridToolbar","_getUserDetails","CartObject","cartId","orderType","dateStarted","dateSubmitted","dateComplete","numItems","orderId","deliveryFee","vat","promoCode","useCredit","stockCheck","deliveryAddressId","instructions","statusMessage","paymentMessage","paymentMeta","deliveryMessage","deliveryMeta","cartItems","products","setProducts","allProducts","setAllProducts","categories","setCategories","subcategories","setSubcategories","setBrands","orders","setOrders","oldItems","setOldItems","userAddress","setUserAddress","userAddresses","setUserAddresses","currentPromotions","setCurrentPromotions","heroData","setHeroData","reviews","setReviews","setPromoCode","showCart","setShowCart","appliedCoupon","setAppliedCoupon","couponError","setCouponError","adminAppliedCoupon","setAdminAppliedCoupon","adminCouponError","setAdminCouponError","cart","setCart","setCartItems","cartCount","setCartCount","cartSubTotal","setCartSubTotal","cartTotal","setCartTotal","discountAmount","setDiscountAmount","wishlistItems","setWishlistItems","selectedBrands","setSelectedBrands","wishCount","setWishCount","storedCart","product","quantity","subTotal","price","getProducts","filterName","sku","postToCart","newCartObject","cartItemsData","updatedItems","updatedCartItems","currentCart","bearer","updatedCart","item1","item2","localCartItems","responseCartItem","BuyType","Qty","PriceCharged","TotalCharged","Status","ProductImage","responseData","updatedItem","deleteFromCart","removeId","ResetUserCart","sendCustomEvent","ReactGA","getAllProducts","AddProductActivity","ProductId","_getUserDetails2","ActivityBy","getCategories","getSubcategories","getBrands","getCart","newCartItems","productData","filteredCartItems","cartItem","matchingProduct","productId","totalCharged","qty","getCartItems","adminPostToCart","handleAddToCart","_items","_items2","updatedNumItems","handleRemoveFromCart","_items3","_items4","removedItem","updatedAmount","prevCart","handleCartProductQuantity","stock","prevCartItems","handleAddToWishlist","wishItem","updatedWishlist","handleRemoveFromWishlist","itemId","isItemInWishlist","storedWishlist","getRandomObjectsFromArray","numObjects","GetFilterRelatedProducts","ProductData","Products","ProductTags","ProductCats","FilteredProducts","selectedCategories","ItemTags","ItemCats","productBrandId","randomObjects","usedIndices","randomIndex","handleNavigate","getAllOrders","customerId","getUserAddressAdmin","getUserAddress","getReviews","applyAdminCoupon","couponCode","applyCoupon","_getUserDetails5","discount","applyDiscount","postNewAddress","formData","Address","Apartment","apartment","City","city","Country","country","MobileNumber","mobileNumber","PostalCode","postalCode","Province","province","Suburb","suburb","DateAdded","DateModified","OldId","oldId","UserId","getUpcomingPromotions","getHomeBanners","getPromoCode","processPayment","addressId","_getUserDetails3","emailAddress","redirect","getOldCartItems","CheckPaymentStatus","_getUserDetails4","bordered","borderless","dark","responsive","responsiveTag","striped","_props$responsiveTag","ResponsiveTag","responsiveClassName","listClassName","Pagination","_props$listTag","ListTag","_props$ariaLabel","listClasses","PaginationItem","PaginationLink","defaultAriaLabel","defaultCaret","RevenueSources","handlePageChange","pageNumber","currentPage","RevenueData","itemsPerPage","indexOfLastItem","indexOfFirstItem","currentItems","totalPages","purchases","productRevenue","Connector","Font","Border","Offset","ChartArea","Margin","ContainerPadding","Indexes","CornerRadius","EmptyPointSettings","DragSettings","TooltipSettings","CenterLabel","fontFamily","Periods","StockTooltipSettings","SvgRenderer","PeriodSelectorSettings","rootID","svgLink","rootId","getOptionValue","createSvg","svgObj","setElementAttributes","setSVGSize","drawPath","drawLine","drawRectangle","rectangle","drawCircle","drawPolyline","polyline","drawEllipse","ellipse","drawPolygon","polygon","drawImage","preserveAspectRatio","createText","createTSpan","tSpan","createTitle","createDefs","createClipPath","clipPath","createForeignObject","foreignObject","createGroup","createPattern","createRadialGradient","colorName","colorStop","fy","drawGradient","createLinearGradient","x1","y1","x2","y2","gradientType","defs","stop_1","drawClipPath","drawCircularClipPath","createCanvas","CanvasRenderer","canvasObj","getContext","setCanvasSize","lineWidth","dashArray","dashArrayString","setLineDash","strokeStyle","beginPath","stroke","moveTo","lineTo","canvasTranslate","canvasCtx","cornerRadius","rx","translate","globalAlpha","drawCornerRadius","fillStyle","fillRect","arcTo","closePath","dataSplit","innerR","q1","q2","quadraticCurveTo","c1","c3","c4","bezierCurveTo","arc","counterClockWise","transX","transY","dy","isTSpan","fontSize","textAlign","baseline","textBaseline","txtlngth","labelRotation","fillText","circumference","ry","imageObj","myGradient","setGradientValues","newColorStop","stopColor","addColorStop","updateCanvasAttributes","img_1","clearRect","canvasClip","clip","canvasRestore","measureText","themeFontStyle","breakText","htmlObject","textArray","whiteSpace","Size","withInAreaBounds","areaBounds","Rect","Side","isRight","isBottom","CustomizeOption","TextOption","baseLine","getElement","drawSymbol","renderer","functionName","locX","locY","xValue","yValue","renderOption","calculateShapes","PathOption","TooltipLocation","TextStyle","TooltipBorder","AreaBounds","ToolLocation","Tooltip","initPrivateVariable","isCanvas","removeSVG","createTooltipElement","themeStyle","tooltipFill","tooltipBoldLabel","tooltipLightLabel","tooltipHeaderLine","textStyle","getTooltipThemeColor","formattedText","highlightPadding","areaMargin","isFirst","markerPoint","svgObject","templateObject","blazorTemplate","fadeOuted","updateTemplateFn","createTemplate","argsData","markerSide","renderTooltipElement","drawMarker","markerSize","textElements","enableRTL","groupElement","pathElement","shapes","shapeOption","markerGroup","elementSize","marginX","arrowPadding","palette","tooltipDiv","arrowLocation","tipLocation","isTop","isLeft","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","headerContent","isBoldTag","headerWidth","isLeftSpace","isRightSpace","headerSpace","isRow","isColumn","subStringLength","markerPadding","labelColor","contentWidth","textElement","withoutHeader","pointsLength","isTextWrap","len_1","isRTLText","textFont","getTooltipTextContent","width_1","renderContentRTL","contentWidthIndex","tooltipText","characterCollection","isRtlText","isValidHTMLElement","tooltipContent","sharedTemplateElement","controlInstance","tooltipRect","tooltipRendered","rect1","thisObject_1","tooltipRect1","bounds","getCurrentPosition","symbolLocation","clipX","clipY","markerHeight","boundsX","boundsY","outOfBounds","currenDiff","templateComplier","tooltipElement","tooltipGroup_1","ELEMENT_NODE","opacity_1","progressAnimation","endAnimation","tooltipGroup","DoubleRange","mStart","mEnd","Double","chart","isStacking","calculateNumericNiceInterval","actualDesiredIntervalsCount","getActualDesiredIntervalsCount","niceInterval","desiredIntervals","isAutoIntervalOnBothAxis","minInterval","logBase","intervalDivs","currentInterval","zoomFactor","zoomPosition","enableAutoIntervalOnZooming","getActualRange","initializeDoubleRange","startFromZero","actualRange","doubleRange","POSITIVE_INFINITY","NEGATIVE_INFINITY","calculateRangeAndInterval","calculateRange","applyRangePadding","calculateVisibleLabels","setRange","paddingInterval","maxPointLength","rangePadding","getMinPointsDelta","requireInvertedAxis","yAxisRange","findMinMax","xMin","xMax","drawType","dragSettings","dragY","visibleRange","yMax","yMin","getRangePadding","findAdditional","findNormal","updateActualRange","calculateVisibleRange","chartAreaType","zoomingScrollBar","calculateVisibleRangeOnZooming","duplicateTempInterval","tempInterval","triggerRangeRender","visibleLabels","labelStyle","getFormat","isCustom","intervalDigits","formatDigits","labelFormat","intl","useGroupingSeparator","withIn","triggerLabelRender","formatValue","getMaxLabelWidth","isStack100","labelValue","legendClick","legendRender","textRender","pointRender","sharedTooltipRender","seriesRender","axisLabelRender","axisRangeCalculated","tooltipRender","resized","beforePrint","regSub","regSup","afterExport","ChartAnnotationSettings","LabelBorder","MultiLevelCategories","StripLineSettings","MultiLevelLabels","ScrollbarSettingsRange","ScrollbarSettings","axes","nearSizes","farSizes","insideFarSizes","insideNearSizes","computeSize","scrollBarHeight","innerPadding","labelPosition","internalVisibility","findTickSize","crossInAxis","findLabelSize","lineStyle","isAxisOpposedPosition","Column","MajorGridLines","MinorGridLines","AxisLine","MajorTickLines","MinorTickLines","CrosshairTooltip","Axis","axisBottomLine","crossAt","updatedRect","multiLevelLabelHeight","isChart","isIntervalInDecimal","titleCollection","titleSize","isRTLEnabled","crossAxis","tickPosition","isInside","majorTickLines","inside","isHorizontal","titleRotation","titleStyle","axisTitleFont","rotateTextSize","getTitle","legendLabelFont","labelSize","titlePadding","labelPadding","maxLabelSize","placeNextToAxisLine","findDifference","updateCrossValue","valueToCoefficient","isAxisInverse","isZoomSet","baseRange","baseModule","stockChart","pointX","isAxisLabelBreak","previousEnd","isIntersect","labelIntersectAction","isBreakLabel","originalText","axisLabelFont","breakLabelSize","enableTrim","rotatedLabel","width1","edgeLabelPlacement","findMultiRows","result1","textWrap","height_1","isHorizontalAngle","multiLevelLabelModule","multiLevelLabels","getMultilevelLabelsHeight","currentX","currentLabel","isBreakLabels","width2","getModule","firstToLowerCase","setIsInversedAndOpposedPosition","isPolar","opposedPosition","isInversed","VisibleLabels","isDescending","sortData","getVisiblePoints","tempPoint","tempPoints","pointIndex","labelText","initialClipRect","delayRedraw","redraw","enableCanvas","textWidth","textHeight","angleInRadians","rotatedTextWidth","rotatedTextHeight","showTooltip","areaWidth","isTitleOrLegendEnabled","logWithIn","withInRange","previousPoint","currentPoint","nextPoint","mX2","mX1","mX3","xStart","xEnd","values_1","subtractThickness","thickness","degreeToLocation","radian","ChartLocation","degreeToRadian","getRotatedRectangleCoordinates","actualPoints","coordinatesAfterRotation","tempX","tempY","rotatedX","rotatedY","isRotatedRectIntersect","minA","maxA","projected","i1","minB","maxB","polygons","i2","normal","subArray","TransformToVisible","isInverted","labelPlacement","startAngle","CoefficientToVector","valueToPolarCoefficient","primaryXAxis","clipRect","dateTimeInterval","findCrosshairDirection","withInBounds","findClipRect","seriesCollection","xValues","minVal","seriesMin","minDelta","MAX_VALUE","xAxisName","index_1","getAnimationFunction","markerAnimate","isLabel","pathAnimation","previousDirection","animateDuration","currentDireciton","startDirections","splitDirections","endDirections","startPath","endPath","directions","appendClipElement","clipElement","redrawElement","isLineBreakLabels","text_1","labelCollection","breakLabels","lineBreakLabelTrim","maximumLabelWidth","textTrim","availableSize","desiredIntervalsCount","maximumLabels","templateAnimate","isRemove","isChartControl","control","chartRenderer","xVal","yVal","isBulletChart","sizeBullet","targetWidth","lx","ly","cartesianlarge","cartesiansmall","getAccumulationLegend","calculateLegendShapes","accReactTemplate","childElement","isTemplate","datalabelGroup","dataLabel","accumulationDataLabelModule","calculateLabelSize","chartReactTemplate","labelIndex","dataLabelCollections","dataLabelModule","calculateTemplateLabelSize","marker","dataLabelId","getTemplateFunction","tempObject","elementData","reactCallback","getPoint","xLength","yLength","appendChildElement","forceAnimate","isRect","previousRect","existChild","currentRect","setStyle","animateRectElement","isDiv","animateRedrawElement","getLabelText","customLabelFormat","seriesType","stackedValues","endValues","low","median","upperQuartile","lowerQuartile","outliers","liers","stopTimer","collections","isOverlap","calculateRect","textSize","convertToHexCode","componentToHex","convertHexToColor","ColorValue","colorNameToHex","isRGBValue","getSaturationColor","factor","colorCode","stringToNumber","containerSize","isMinus","seriesClipRect","isRotatedLabelIntersect","isDataLabelWrap","dx","canvasRender","marginHeight","tooltipSpace","periodHeight","periodSelectorSettings","periods","enableGrouping","disableRangeSelector","transformValue","scaleValue","calculateSize","chartObject","selectorObject","textOverflow","titlePositionX","textAlignment","maximumWidth","wrapAnyWhere","textWrapAnyWhere","getUnicodeText","digit","digitSpecific","convertedText","unicodeSub","unicodeSup","blazorTemplatesReset","annotations","StackValues","startValues","RectOption","ImageOption","CircleOption","Thickness","PointData","lierIndex","getColorByValue","colorMap","rbgColorValue","previousColor","nextColor","previousOffset","length_2","splitColorValueOffset","splitColor","prevColor","getPercentage","getPercentageColor","getGradientColor","getTextAnchor","stockEventFont","PdfPageOrientation","PdfPageRotateAngle","PdfNumberStyle","PdfDockStyle","PdfAlignmentStyle","TemplateType","CartesianAxisLayoutPanel","chartModule","measureAxis","chartAreaWidth","chartArea","leftSize","rightSize","topSize","bottomSize","measureRowAxis","measureColumnAxis","calculateAxisSize","calculateFixedChartArea","refreshAxis","legendSettings","legendModule","legendBounds","calculateRowSize","arrangeAxis","measureDefinition","computedHeight","calculateColumnSize","computedWidth","scrollbarSettings","scrollBarModule","zoomModule","zoomSettings","enableScrollbar","enableScrollbarOnZooming","isZoomed","axisOffset","nearCount","farCount","plotOffset","len_2","computedTop","plotOffsetTop","getAxisOffsetValue","plotOffsetBottom","len_3","len_4","computedLeft","plotOffsetLeft","plotOffsetRight","actualIndex","axisCollections","verticalAxes","getActualRow","pushAxis","horizontalAxes","getActualColumn","position1","position2","crossesAt","crossesInAxis","updateCrossAt","primaryYAxis","dateFormatter","axisCollection","actualLength","columnIndex","rowIndex","rowTop","remainingHeight","columnLeft","remainingWidth","renderAxes","outsideElement","axisElement","axisLineElement","axisVisibility","yAxisName","paretoOptions","showAxis","findAxisPosition","drawAxisLine","majorGridLines","minorTickLines","minorGridLines","drawXAxisGridLine","drawXAxisLabels","drawXAxisBorder","drawXAxisTitle","drawYAxisGridLine","drawYAxisLabels","drawYAxisBorder","drawYAxisTitle","renderScrollbar","drawBottomLine","isScrollUI","optionsLine","definitionName","plotX","plotY","plotBottom","plotTop","plotLeft","plotRight","axisLine","minorGridDirection","isLogAxis","isCategoryAxis","pointY","majorGrid","majorTick","isOpposed","tickSize","axisLineSize","ticksbwtLabel","isTickInside","ticks","chartThemeStyle","isBorder","renderGridLine","majorGridLine","majorTickLine","minorTicksPerInterval","renderMinorGridOnZooming","drawAxisMinorLine","minorGridLine","minorTickLine","endIndex","isAxisBreakLabel","RotatedWidth","labelSpace","isLabelInside","isVerticalAngle","textPadding","maxLineWidth","intervalLength","labelHeight","yAxisLabelX","labelElement","isInverse","isLabelOnAxisLineLeft","sizeWidth","breakLabelSizeWidth","LabelMaxWidth","breakLabelMaxWidth","previousYValue","currentYValue","createZoomingLabel","getAxisLabelXvalue","lineBreakAlignment","gap","endY","labelBorder","endX","createAxisBorderElement","renderYAxisMultiLevelLabels","isRotated","minorDirection","isFirstLabel","logStart","coor","logInterval","logPosition","ticksX","ticksY","minorGird","minorTick","findLogNumeric","labelWidth","rotatedLabelSize","islabelInside","tickSpace","newPoints","textPoints","isLabelUnderAxisLine","isEndAnchor","paddingForBreakLabel","getAnchor","isRtlEnabled","breakLabelWidth","xValue2","rect_1","xAdjustment","yAdjustment","rectCoordinates","getRectanglePoints","rectCenterX","rectCenterY","rotateAngle","textRect","textRectCoordinates","rectPoints","newRect","interSectPoint","calculateIntersection","rectPoint1","rectPoint2","trimValue","c2x","c3x","c2y","c3y","u1","u4","findAxisLabel","axisRect","renderXAxisMultiLevelLabels","borderElement","gridDirection","gridModel","gridId","gridIndex","themeColor","findParentNode","zoomElement","chartRect","crosshairFill","crosshairLabelFont","createZoomingLabels","ChartData","currentPoints","previousPoints","insideRegion","commonXvalues","mouseX","mouseY","visibleSeries","isRectSeries","isTransposed","markerWidth","getRectPoint","selectionMode","selectionModule","fromCenterX","fromCenterY","clickAngle","endAngle","distanceFromCenter","arcAngle","isScrolling","regionData","regions","currentXPosition","atan2","innerRadius","isPointInThresholdRegion","checkRegionContainsPoint","regionRect","region","isBar","heightValue","getClosest","xvalues","xData","binarySearch","found","getClosestX","getValueYByPoint","getValueXByPoint","mergeXvalues","getDistinctValues","commonXValue","commonXValues","symbolLocations","intial","DataLabelSettings","MarkerSettings","ParetoOptions","Points","isSelect","isPointInRange","verticalError","verticalNegativeError","horizontalError","horizontalNegativeError","verticalPositiveError","horizontalPositiveError","Trendline","setDataSource","trendLineModule","initDataSource","visibleSeriesCount","ErrorBarCapSettings","ChartSegment","ErrorBarSettings","SeriesBase","rangeColorPoints","isAdvancedColor","currentViewData","isRectTypeSeries","processJsonData","xName","Series","textMappingName","processInternalData","yName","paretoSeriesModule","performCumulativeCalculation","sizeMax","getSeriesType","dataPoint","pushCategoryData","pushData","setEmptyPoint","rangeColorsInterior","isArea","isRange","findSplinePoint","calculateBinValues","histogramValues","binWidth","rangeColorSettings","interior","getObjectValueByMappingString","enableComplexProperty","getObjectValue","volume","pointColorMapping","errorBar","errorBarColor","errorBarColorMapping","tooltipMappingName","isAdvancedColorSupported","rangeColorName","colorValue","getPointFillColor","pointFill","rangeMap","mappingName","findVisibility","emptyPointSettings","yData","getAverage","yValues","yAxisMin","yAxisMax","setXYMinMax","setHiloMinMax","seriesMinY","isNegativeValue","isIndexed","indexLabels","refreshDataManager","dataModule","generateQuery","dataManagerSuccess","isRemoteData","localData","findCurrentData","recordsCount","refreshChart","refreshTechnicalIndicator","trendlines","refreshBound","initialRender","stockChartDataManagerSuccess","drawPoints","lowDrawPoints","delayedAnimation","refreshAxisLabel","findSeriesCollection","isStack","rowSeries","rectSeriesInChart","calculateStackedValue","isStacking100","columnItem","calculateStackingValues","stackingGroup","lastValue","lastPositive","lastNegative","frequencies","findFrequencies","groupingValues","visiblePoints","stackingSeies","seriesCollection_1","isColumnBarType","findPercentageOfStacking","stackingSeies_1","seriesCollection_3","renderSeries","createSeriesElements","errorBarModule","appendSeriesElement","seriesElements","performAnimation","explodeValue","svgRenderer","markerMaxValue","clipRectElement","symbolElement","seriesElement","errorBarElement","dataLabelElements","shapeElement","animateSeries","doErrorBarAnimation","markerRender","doMarkerAnimation","doDataLabelAnimation","setPointColor","setBorderColor","initDataManager","dataQuery","dataManagerDeferred_1","MarkerExplode","mouseMoveHandler","mouseUpHandler","markerMove","highlightMode","startMove","explodeSeries","chartAxisLayoutPanel","pointData","chartSeries","enableTooltip","isPointMouseDown","removeHighlightedMarker","data_1","markerExplode","drawTrackBall","animationDuration","maxPointCount","seriesMarker","highlightModule","generateStyle","symbolId","markerShadow","markerElement","trackElement","seletionElem","endAnimate","rectElements","trackballAnimate","delays","durations","reducedHeight","point_1","trackballElements","markerShapes","Marker","renderMarker","seriesIndex","previousLocation","previousPath","circlePath","isBoxPlot","isFilled","findlElement","markerFill","markerBorder","markerOpacity","markerShape","imageURL","markerClipRect","getRangeLowPoint","markerElements","incFactor","lowPoint","Location","LegendSettings","BaseLegend","maxItemHeight","rowHeights","pageHeights","columnHeights","pageXCollections","chartRowCount","legendTitleCollections","legendRegions","pagingRegions","legend","legendID","isAccChartControl","isBulletChartControl","isStockChartControl","bulletChart","fivePixel","pageButtonSize","maxColumns","backwardArrowOpacity","forwardArrowOpacity","arrowWidth","arrowHeight","isTitle","currentPageNumber","calculateLegendBounds","getPosition","itemPadding","getLegendBounds","containerPadding","accumulation","setBounds","titleHeight","titlePosition","legendTitleSize","isPaging","enablePages","calculateLegendTitle","labelIns","ticklIns","categoryFieldValue","categoryField","legendHeight","legendWidth","alignLegend","axisTextSize","legendSize","renderLegend","titlePlusArrowWidth","requireLegendBounds","firstLegend","findFirstLegendPosition","legendCollections","upArrowHeight","legendGroup","legendTranslateGroup","createLegendElements","pageCount","shapeHeight","isRtlEnable","getLinearLegend","legendSeriesGroup","previousLegend","startPadding","shapeWidth","xLocation","textOptions","shapePadding","legendIndex","bottomSapce","legendOption","isReverse","accessbilityText","getRenderPoint","renderSymbol","renderPagingElements","nextLegend","linerGradientEle","fillColors","numberItems","diffValue","colorsLength","calculatedValue","fillColor","stopEle","startLabelY","endLabelY","startLabelX","endLabelX","startTextSize","endTextSize","otherSpaces","linearBarWidth","linearBarHeight","diffWidth","diffHeight","fontcolor","translatePage","gradientLegend","legendCollection","legendCollection_1","legendTitleFont","maximumTitleWidth","renderLegendTitle","topPadding","legendTitleTextOptions","legendItemsGroup","clippath","pagingClipRect","regionPadding","symbolColor","isStrokeWidth","isCustomBorder","strokewidth","seriesBorder","isLineShapemarker","symbolOption","markerVisibility","textOption","pageTextElement","paginggroup","grayColor","iconSize","titleWidth","clipPathHeight","translateX","totalNoOfPages","calTotalPage","getPageHeight","pagingText","changePage","backwardArrow","forwardArrow","pageText","hideArrow","showArrow","targetId","clearTooltip","LegendOptions","TechnicalIndicator","targetSeries","PdfWriter","streamWriter","pdfDocument","overload","tempOverload","defaultToString","ObjectStatus","Dictionary","toStringFunction","nElements","toStr","pair","previousElement","keysArray","namesOfKeys","index1","pair1","namesOfValues","index2","pair2","containsKey","PdfMainObjectCollection","objectCollections","mainObjectCollection","primitiveObjectCollection","isNew","objInfo","ObjectInfo","Registered","lookFor","getReference","wasNew","trySetReference","setReference","pdfObject","isSaving","objectCollectionIndex","pdfReference","Encoding","includeBom","emitBOM","encodingType","initBOM","getByteCount","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","Save","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","cTable","setCatalog","catalog","SW","encoding_1","SW_1","blobData","docSave","PdfName","stringStartMark","internalValue","isSaving6","position6","normalizeValue","status6","index6","writer","escapeString","crossTable","newName","delimiters","Operators","forTest","endObj","slash","newLine","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","setText","setTextWithFormatting","setTextOnNewLine","selectcolorspaceforstroking","selectcolorspacefornonstroking","setrbgcolorforstroking","setrbgcolorfornonstroking","setcmykcolorforstroking","setcmykcolorfornonstroking","setgraycolorforstroking","setgraycolorfornonstroking","clipPathEvenOdd","setGraphicsState","evenOdd","setMiterLimit","setColorAndPattern","setColorAndPatternStroking","DictionaryProperties","pages","kids","resources","mediaBox","decodeParms","type1","baseFont","subtype","procset","colorSpace","extGState","xObject","bitsPerComponent","dctdecode","blackIs1","predictor","deviceRgb","annot","annots","CA","xyz","BM","flatedecode","bBox","cIDFontType2","cIDToGIDMap","identity","dw","fontDescriptor","cIDSystemInfo","fontName","fontBBox","missingWidth","stemV","italicAngle","capHeight","ascent","descent","leading","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","isFont","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","SaveSectionEventHandler","SaveTemplateEventHandler","PdfNumber","position5","status5","isSaving5","index5","intValue","floatToString","returnString","PdfArray","startMark","endMark","position9","clonedObject9","internalElements","tempArray","tempNumberArray","pdfNumber","status9","isSaving9","index9","markedChange","newArray","fromRectangle","tempElements","markChanged","removeAt","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","CompressedStreamWriter","noWrap","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","prevLen","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","lastBlock","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","isClose","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","childIndex","checksum","checksum_uint","s1","s2","checkSumBitOffset","checksumIterationCount","checksumBase","PdfStream","dicPrefix","dicSuffix","clonedObject2","bCompress","isImageStream","isFontStream","dataStream2","bCompress2","clearStream","writeBytes","onCmapBeginSave","cmapBeginSave","onFontProgramBeginSave","fontProgramBeginSave","compressContent","byteArray","dataArray","sw","getCompressedString","addFilter","PdfReferenceHolder","isImage","bytesToString","SaveCmapEventHandler","SaveFontProgramEventHandler","SourceType","ForceEncoding","PdfString","bHex","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","layout","OneColumn","TwoColumnLeft","TwoColumnRight","TwoPageLeft","TwoPageRight","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","PdfCatalog","sections","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","tempOffset","offsetNumber","tempReference","Normal","PointF","SizeF","RectangleF","arg1","arg2","arg3","arg4","pointf","sizef","Rectangle","PdfPageSize","legal","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","b0","b1","b2","b3","b4","b5","archE","archD","archC","archB","archA","flsa","halfLetter","letter11x17","ledger","PdfMargins","pdfMargin","setMargins","leftMargin","topMargin","rightMargin","bottomMargin","margin1","margin2","margin3","margin4","PdfPageSettings","RotateAngle0","pageOrientation","Portrait","pageOrigin","isRotation","setSize","updateSize","Landscape","getActualSize","LineType","PdfStreamWriter","dictionaryName","writeOperator","executeObject","useEvenOddRule","fillStrokePath","fillPath","closeFillPath","textScaling","strokePath","restoreGraphicsState","saveGraphicsState","startNextLine","writePoint","showText","checkTextParam","setLeading","setTextRenderingMode","renderingMode","setCharacterSpacing","charSpacing","setWordSpacing","wordSpacing","showNextLineText","setColorSpace","temparg1","op","temparg2","opcode","updateY","builder","writeComment","setColorAndSpace","forStroking","setLineDashPattern","patternOffset","setLineDashPatternHelper","tempPattern","miterLimit","setLineCap","lineCapStyle","setLineJoin","lineJoinStyle","appendBezierSegment","arg5","arg6","setColourWithPattern","colours","patternName","PdfColor","color1","color3","color4","assignRGB","filled","redColor","greenColor","blueColor","gray","alpha","maxColourChannelValue","cyanColor","magentaColor","yellowColor","blackColor","assignCMYK","Rgb","rgbToString","GrayScale","grayScaleToString","Cmyk","cmykToString","ifStroking","colour","grayStringsSroke","grayStringsFill","rgbStrings","PdfBrush","PdfSolidBrush","pdfColor","monitorChanges","brush","getResources","currentColorSpace","resetChanges","PdfPen","dashOffsetValue","penDashPattern","pdfDashStyle","Solid","pdfLineCap","pdfLineJoin","penWidth","internalMiterLimit","setBrush","Custom","Dash","Dot","DashDot","DashDotDot","sBrush","pdfBrush","currentPen","dashControl","lineJoin","lineCap","pen","getPattern","dashOffset","dashPattern","PdfStringFormat","scalingFactor","wordWrapType","Word","internalLineLimit","verticalAlignment","Top","isRightToLeft","internalCharacterSpacing","internalWordSpacing","pdfSubSuperScript","internalParagraphIndent","firstLineIndent","trailingSpaces","isNoClip","initialLineIndent","StringTokenizer","textValue","getCharsCount","numSymbols","readLine","text2","peekLine","readWord","peekWord","word","readToEnd","spaces","whiteSpacePattern","PdfStringLayouter","isOverloadWithPosition","arg7","doLayout","rectSize","pageHeight","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","wordWrap","Character","ln","LayoutBreak","LastParagraphLine","layoutLines","breakType","LineInfo","actualSize","allowPartialLines","lineLimit","expHeight","trimLine","size1","PdfLayoutType","PdfLayoutBreakType","PathPointType","PdfFont","Regular","metrics","getHeight","Bold","Italic","Strikeout","Underline","fontMetrics","pdfFontInternals","measureString","layoutArea","temparg3","equalsTo","equalsToFont","getInternals","setInternals","internals","applyFormatSettings","realWidth","characterSpacing","charSizeMultiplier","syncObject","PdfTransformationMatrix","radDegFactor","transformationMatrix","Matrix","degreesToRadians","degreesX","degRadFactor","radiansToDegrees","metrixElements","tempMatrix","dispose","ProcedureSets","pdf","imageB","imageC","imageI","TemporaryDictionary","mKeys","mValues","PdfTransparency","PdfAutomaticFieldInfoCollection","automaticFieldsInformation","fieldInfo","automaticFields","PdfGraphicsElement","drawHelper","graphics","bNeedSave","gState","translateTransform","drawInternal","PdfAutomaticField","internalBounds","internalTemplateSize","internalFont","internalBrush","internalPen","internalStringFormat","performDrawHelper","scalingX","scalingY","getFont","stringFormat","draw","location_1","PdfAutomaticFieldInfo","getSize","getBrush","defaultFont","getPageFromGraphics","pageNumberFieldLocation","pageNumberField","ByteArray","mPosition","dataView","DataView","readByte","writeFromBase64String","encodedString","chr1","chr2","chr3","enc2","enc3","keyStr","resultIndex","totalLength","readNextTwoBytes","TtfTableInfo","TtfNameTable","TtfNameRecord","TtfHeadTable","TtfMetrics","macStyle","TtfHorizontalHeaderTable","TtfOS2Table","TtfPostTable","TtfLongHorMetric","TtfCmapSubTable","TtfCmapTable","TtfGlyphInfo","compareTo","glyph","TtfLocaTable","TtfAppleCmapSubTable","TtfMicrosoftCmapSubTable","TtfTrimmedCmapSubTable","TtfGlyphHeader","BigEndianWriter","int32Size","int16Size","int64Size","bufferLength","internalPosition","writeShort","writeInt","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","tableKeys","tableInfo","getTable","formatSelector","readUInt16","nameRecords","platformID","encodingID","languageID","nameID","unicode","readFixed","fontRevision","checkSumAdjustment","readUInt32","magicNumber","unitsPerEm","readInt64","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","tablesCount","subTables","subTable","readCmapSubTable","getCmapEncoding","Macintosh","Microsoft","Unknown","Apple","readAppleCmapTable","readMicrosoftCmapTable","Trimmed","readTrimmedCmapTable","maxMacIndex","glyphInfo","getWidth","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","align","nextGlyphOffset","nextGlyphIndex","oldGlyphOffset","oldNextGlyphOffset","glyphTableSize","updateLocaTable","bLocaIsShort","newLocaTableOut","newLocaUpdated","newLocaSize","getFontProgram","locaTableSize","getFontProgramLength","fontProgramLength","writeCheckSums","writeGlyphs","usedTablesSize","nextTableSize","calculateCheckSum","byte1","byte2","byte3","byte4","createInternals","bIsLocaShort","isFontPresent","getGlyphChars","charKeys","getAllGlyphs","allGlyphInfo","readFontProgram","result2","convertString","getCharWidth","isUnicode","written","PdfFontMetrics","getAscent","getDescent","getLineGap","clearTypeFonts","clearTypeFontCollection","subSuperScript","SubScript","SuperScript","WidthTable","internalWidthTable","StandardWidthTable","UnicodeTrueTypeFont","base64String","nameString","isCompress","isEmbedFont","cmapPrefix","cmapEndCodespaceRange","cmapBeginRange","cmapEndRange","cmapSuffix","fontString","Initialize","ttfReader","internalBuffer","ttfMetrics","fontDictionary","fontProgram","cmap","descendantFont","subsetName","getFontName","createDescendantFont","createCmap","createFontDictionary","createFontProgram","isBold","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","indexes","indexLevels","mirroringShapeCharacters","doMirrorShaping","getLogicalToVisualString","inputText","rtlCharacters","RtlCharacters","getVisualOrder","setDefaultIndexLevel","doOrder","resultBuilder","sIndex","eIndex","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","preview","preType","checkNSM","checkEmbeddedCharacters","startType","endType","charType","checkEuropeanDigits","checkArabicCharacters","checkEuropeanNumberSeparator","checkEuropeanNumberTerminator","getLength","checkOtherNeutrals","checkOtherCharacters","pst","checkCommanCharacters","validSet","byte","RtlRenderer","openBracket","closeBracket","wordSpace","customLayout","splitLayout","customSplitLayout","getGlyphIndex","glyphs","fontInternal","textDirection","layouted","txt","addChars","ImageFormat","PdfGradientBrush","mbackground","mbStroking","mfunction","mpatternDictionary","mcolorSpace","csValue","colorSpaceToDeviceName","mshading","patternDictionary","mmatrix","resetFunction","name_1","getName","resetPatternDictionary","cloneAntiAliasingValue","cloneBackgroundValue","PdfTemplate","writeTransformation","tempSize","templateSize","pdfGraphics","GetResourceEventHandler","PdfGraphics","initializeCoordinates","PdfResources","addType","addSubType","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","imageWidth","imageHeight","imagePhysicalDimension","getPointSize","dpiX","dpiY","ucX","ucY","ptWidth","Pixel","Point","ptHeight","PdfBitmap","imageStatus","loadImage","initializeAsync","baseDictionary","getNames","sName","generateName","PdfTilingBrush","pdfNames","requireProcedureSet","procedureSetName","procSets","removeFont","Guid","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","arg8","arg9","temparg4","temparg5","temparg6","temparg7","temparg8","temparg9","checkCorrectLayoutRectangle","drawStringLayoutResult","stateControl","xOffset","yOffset","layer","drawPathHelper","Winding","isPen","isBrush","isEvenOdd","Alternate","physicalDimension","name_2","setResources","resource","getLineBounds","lineIndex","layoutRectangle","lineCount","getTextVerticalAlignShift","hShift","getHorizontalAlignShift","shouldJustify","layoutedRectangle","Center","lineAlignment","Middle","Bottom","setLayer","pageSave","performDraw","applyStringSettings","horizontalScalingFactor","resultHeight","remainingString","drawLayoutResult","underlineStrikeoutText","getNextPage","section","getPages","setClip","tm","getTextRenderingMode","cs","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","clipArea","scaleTransform","rotateTransform","getRotateTransform","mediaBoxUpperRightBound","cropBox","PdfGraphicsState","textRenderingMode","doRestoreState","buildUpPath","pathPoints","pathTypes","fillMode","constructArcPath","typeValue","pathTypesValuesMask","Start","Bezier3","getBezierPoints","Line","checkFlags","CloseSubpath","startAng","sweepAngle","getBezierArc","numX1","numY1","numX2","numY2","e1","fragAngle1","numFragments","xcen","ycen","halfAng","kappa","pointsList","thetaValue0","thetaValue1","cos0","cos1","sin0","sin1","transparencyObject","internalTextRenderingMode","internalTextScaling","pdfColorSpace","pdfPen","pdfFont","alphaPen","alphaBrush","blendMode","PdfPageLayer","streamClipPageTemplates","sublayer","contentLength","pdfPage","clipPageTemplates","layerid","layerName","initializeGraphics","PdfPageLayerCollection","oPage","getActualBounds","pageSettings","PdfCollection","parentLayerCount","optionalContent","PdfPageBase","lPage","parseLayers","firstArgument","secondArgument","addLayer","insertLayer","loadedPage","saveStream","restoreStream","saveData","defLayerIndex","pageDictionary","pdfSection","layers","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","leftValue","topValue","rightValue","bottomValue","stampValue","PdfSection","pageAdded","pdfPages","initialSettings","sectionCollection","pagesReferences","pageTemplate","pagesCollection","pointToNativePdf","setPageSettings","PageSettingsState","foreground","documentHeaders","getDocumentTemplates","sectionTemplates","getSectionTemplates","templates","applyDocumentTopTemplate","applyDocumentBottomTemplate","applyDocumentLeftTemplate","applyDocumentRightTemplate","page_1","checkPresence","pageAddedMethod","onPageAdded","document_1","getLeftIndentWidth","top_1","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","fixedWidth","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","convert","getCharWidthInternal","stFont","fontFamilyEqual","lineReducer","styleEqual","WinAnsiEncoding","charOffset","isMerging","defaultMargin","isMerge","cacheCollection","documentPageCollection","defaultStandardFont","isCacheEnabled","checkPagesPresence","PdfPageTemplateElement","InitiateBounds","dockStyle","resetAlignment","alignmentStyle","setAlignment","isForeground","currentLocation","pdfTemplate","templateType","updateDocking","dock","canBeSet","TopLeft","MiddleLeft","BottomLeft","TopCenter","TopRight","MiddleRight","BottomRight","BottomCenter","MiddleCenter","calculateBounds","getAlignmentBounds","getDockBounds","getSimpleAlignmentBounds","getTemplateAlignmentBounds","actualBounds","getSimpleDockBounds","getTemplateDockBounds","ExportUtils","resizeTo","availWidth","availHeight","htmlContent","getHTMLContent","export","controls","controlValue","getControlsValue","isDownload","svgData","XMLSerializer","serializeToString","triggerDownload","canvas","toDataURL","exportPdf","doexport","image_1","ctx_1","toBlob","getDataUrl","image_2","ctx_2","blobUrl","groupEle","stockLegendModule","pdfDefaultWidth","pdfDefaultHeight","imageString","exactWidth","exactHeight","pdfHeader","pdfFooter","images","fileType","exportImage","image1","byteString","intArray","RangeColorSetting","CrosshairSettings","ZoomSettings","titleSettings","Chart","rotatedDataLabelCollections","checkResize","clickCount","singleClickTimer","chartid","isLegendClicked","previousTargetId","currentPointIndex","currentSeriesIndex","currentLegendIndex","previousPageX","previousPageY","allowPan","mergePersistChartData","dataObj","isIdHasSpecialCharacter","numberRegex","childElementId","markerIndex","setCulture","refreshDefinition","tooltipModule","svgId","loadEventData","cartesianChartRendering","applyZoomkit","beforeRenderData","createChartSvg","calculateAreaType","calculateVisibleSeries","initTechnicalIndicators","initTrendLines","calculateVisibleAxis","mouseMoveEvent","getLocalizedLabel","getLegendOptions","calculateStackValues","rangeFound","enablePeriodSelector","enableSelector","renderElements","isCalculateStacking","rectCount","filterArray","calculateDragSelectedElements","renderBorder","renderTitle","renderAreaBorder","renderSeriesElements","performSelection","setSecondaryElementPosition","renderAnnotation","yAxisElements","stripLineModule","renderStripLine","mainObject","svgRect","initializeModuleElements","indicators","indicatorElements","hasTrendlines","trendLineElements","isTrendline","tooltipdiv","initializeIndicator","initializeTrendLine","appendElementsAfterSeries","sourceIndex","renderCanvasSeries","seriesSvg","svgElement","indicator","createIndicatorElements","getTrendLineElements","calculateStockEvents","enablePan","performedUI","showToolbar","applyZoomToolkit","annotationModule","renderAnnotations","selectedDataIndexes","invokeSelection","invokeHighlight","redrawSelection","prevPointCount","initializeDataModule","techIndicator","subTitleHeight","elementSpacing","subTitleCollection","chartTitleFont","subTitle","chartSubTitleFont","subTitleStyle","exportChart","trendIndex","trendLine","initSeriesCollection","polarSeriesModule","radarSeriesModule","paretoAxes","isPanning","isAxisZoomed","scrollSettingEnabled","initAxis","injectTo","isSeries","seriesName","palettes","getSeriesColor","zOrder","isSecondaryAxis","initSeries","renderSubTitle","subTitleElementSize","subTitleOptions","backGroundImage","backgroundImage","areaBorder","addSeries","removeSeries","clearSeries","addAxes","axisCollection_1","removeAxis","highlightElement","removeSvg","stopEvent","chartOnMouseDown","mouseMove","mouseEnd","chartOnMouseClick","chartOnDoubleClick","chartRightClick","mouseLeave","chartKeyDown","documentKeyHandler","chartKeyUp","resizeBound","touchObject","chartResize","longPressBound","longPress","tapHold","crosshairModule","zooming","disableScroll","enableSelectionZooming","enablePinchZooming","msTouchAction","msContentZooming","msUserSelect","webkitUserSelect","isOrientation","setMouseXY","exportModule","currentSize","previousSize","beforeResizeArgs","cancelResizedEvent","touchArg","chartOnMouseMove","onPanning","chartOnMouseLeave","isChartDrag","actionKey","removeLegendHighlightStyles","enableDeferredZooming","enableMouseWheelZooming","chartKeyboardNavigations","titleElement","legendElement","pagingElement","setTabIndex","focusChild","legendElement_1","getActualIndex","currentLegend","seriesIndexes","pointRegion","highlightChart","completeSelection","legendItemsId","legendSelection","calculateSelectedElements","removeTooltip","toolkit","zoomInOutCalculation","performZoomRedraw","yArrowPadding","xArrowPadding","doPan","timeInterval","pointDoubleClick","pointClick","triggerPointEvent","axisLabelClick","triggerAxisLabelClickEvent","clickEvt","axisIndex","currentAxis","labelID","pointMove","titleTooltip","axisTooltip","dataEditingModule","pointMouseMove","mouseDownX","previousMouseMoveX","mouseDownY","previousMouseMoveY","isDoubleTap","pointMouseDown","chartOnMouseUp","pointMouseUp","setLocaleConstants","defaultLocalConstants","setAnnotationValue","annotationIndex","processAnnotation","ZoomIn","Zoom","ZoomOut","Pan","Reset","ResetZoom","darkBackground","axisLabel","axisTitle","chartTitle","legendLabel","crosshairLine","crosshairLabel","selectionRectFill","selectionRectStroke","selectionCircleStroke","bearFillColor","bullFillColor","toolkitSelectionColor","toolkitFill","toolkitIconRectOverFill","toolkitIconRectSelectionFill","toolkitIconRect","tooltipLabelFont","datalabelFont","stripLineLabelFont","histogram","getThemeColor","enableAnnotation","errorBarVisible","isPointDrag","dataLabelEnable","isLegend","currentModule","findIndicatorModules","findTrendLineModules","findAxisModule","enableExport","allowExport","enableHighlight","datetimeEnabled","categoryEnabled","logarithmicEnabled","striplineEnabled","dateTimeCategoryEnabled","multiLevelEnabled","axisCollections_1","findStriplineVisibility","stripLines","macdEnable","bandEnable","isLine","isSpline","markerEnable","trendline","striplines","striplines_1","removeLength","pinchTarget","containerCollection","definitions","definitions_1","axisChange","getVisibleSeries","visibleSeries_1","refreshLiveData","removeStyles","mousemove","refreshBounds","crosshairTooltip","seriesRefresh","blazorProp","boxPlotMode","showMean","currentMode","ChartComponent","ColumnBase","getSideBySideInfo","enableSideBySidePlacement","getSideBySidePositions","columnWidthInPixel","seriesSpacing","columnSpacing","pointSpacing","columnWidth","minimumPointDelta","groupName","mainColumnWidth_1","mainWidth","mainDoubleRange","getRectangle","point1","point2","findRectPosition","vSeries","updateSymbolLocation","updateYRegion","updateXRegion","getRegion","calculateRoundedRectPath","topRight","bottomLeft","bottomRight","visiblePoints_1","animateRect","isPlot","elementHeight","ColumnSeries","sideBySideInfo","pointColumn","NiceInterval","calculateDateTimeNiceInterval","totalDays","actualIntervalType","intervalType","getSkeleton","findCustomFormats","Category","DataLabel","errorHeight","initPrivateVariables","commonId","calculateErrorHeight","chartBackground","positiveHeight","negativeHeight","rgbValue","contrast","labelLocation","yAxisInversed","isDataLabelOverlap","showZero","labelLength","xPos","yPos","shapeRect","enableRotation","argsFont","fontBackground","isDataLabelShape","createDataLabelTemplate","calculateTextPosition","visibleAxisLabelRect","rectRegion","actualRect","isDataLabelOverlapWithChartBound","isShape","textAnchor","isReactCallback","measureElementRect","vAxis","hAxis","labelRegion","getLabelLocation","locationY","alignmentValue","calculateAlignment","calculateRectPosition","locationX","calculatePathPosition","calculatePolarRectPosition","dataLabelOutRegion","columnRadius","chartWidth","alignmentSign","textLength","extraSpace","calculateRectActualPosition","calculateTopAndOuterPosition","seriesLength","nextSeries","nextSeriesPoint","calculatePathActualPosition","labelRect","isOverLap","finalPosition","actualPosition","updateLabelLocation","yLocation","positionIndex","slope","intersectY","shapeElements","textNode","Legend","legendItemsId_1","visibleSeriesCollection","visibleSeriesCollection_1","legendShape","legendImageUrl","extraHeight","extraWidth","verticalArrowSpace","titleSpace","legendEventArgs","rowWidth","columnHeight","titlePlusArrowSpace","getLegendHeight","prevLegend","previousBound","isWithinBounds","availwidth","LegendClick","changeDetection","legendClickArgs","legendText","changeSeriesVisiblity","refreshLegendToggle","points_1","redrawSeriesElements","refreshSeries","series_1","legendRegion","legendItemsId_2","checkWithinBounds","cRender","canvasRect","canvasPageUp","canvasPageDown","LineBase","tempPoints2","xVisibleRange","yVisibleRange","seriesPoints","xTolerance","yTolerance","prevXValue","prevYValue","seriesPoints_1","getLineDirection","firstPoint","secondPoint","getPointLocation","appendLinePath","doProgressiveAnimation","strokeDashArray","pathLength","getTotalLength","storePointLocation","withinYRange","getFirstLastVisiblePoint","getBorderDirection","coordinates","stackingAreaSeriesModule","stackingStepAreaSeriesModule","removeEmptyPointsBorder","borderDirection","doLinearAnimation","xCenter","yCenter","LineSeries","prevPoint","isDrop","getCoordinate","BaseTooltip","getTooltipElement","isTooltip","isStockChart","stopAnimation","removeHighlight","highlightPoint","highlight","accumulationSelectionModule","isSelectedElement","highlightColor","highlightPoints","createTooltip","clipLocation","crosshairEnabled","extraPoints","templatePoint","customTemplate","accumulationTooltipModule","svgTooltip","SVGTooltip","headerText","findPalette","enableTextWrap","updatePreviousPoint","animationComplete","findColor","valueX","valueY","removeText","toolTipInterval","tooltipTemplate","mouseLeaveHandler","fadeOutMode","fadeOutDuration","findData","disableTrackTooltip","isStockSvg","renderGroupedTooltip","renderSeriesTooltip","findHeader","parseTemplate","findShapes","enableMarker","isPointDragging","triggerTooltipRender","getTooltipText","findMouseValue","pointText","chartTooltipSuccess","getSymbolLocation","findMarkerHeight","getTemplateText","getBoxLocation","getWaterfallRegion","getRangeArea","formatPointValue","lastData","dataCollection","pointXValue","pointYValue","tempData","closestXValue","closetYValue","showNearest","showNearestPoint","triggerSharedTooltip","toolbarHeight","sharedTooltip","findSharedLocation","isXPoint","isYPoint","tooltipFormat","getIndicatorTooltipFormat","textX","AxisDirective","AxesDirective","SeriesDirective","SeriesCollectionDirective","SalesGraphs","SalesData","renderChart","SalesPerfomance","PerformanceData","renderTableRows","renderChangeStatus","totalViews","totalUniquePurchase","totalQuantity","totalProductRevenue","totalAvgPrice","productViewsTotalChange","startProductViews","startUniquePurchases","quantityTotalChange","startQuantity","productRevenueTotalChange","startProductRevenue","avgPriceTotalChange","startAvgPrice","productViewsPercentage","uniquePurchasesPercentage","quantityPercentage","productRevenuePercentage","avgPricePercentage","prevProps","prevState","isMoney","BarSeries","pointBar","ShoppingFunnel","renderCharts","FunnelData","TOOLTIP_WRAP","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","mouseMoveTarget","isBodyContainer","formatPosition","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","tipClass","tooltipEle","elePos","mouseTrail","getTooltipPosition","openPopupHandler","closePopupHandler","getScalingFactor","xScalingFactor","yScalingFactor","scalingFactors","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionLeft","collisionTop","collisionFlipFit","findTarget","needTemplateReposition","tooltipEventArgs","opensOn","tipWidth","tipHeight","tooltipEleWidth","tooltipEleHeight","arrowEle","tipAdjust","tipHeightAdjust","tipWidthAdjust","tooltipEleRect","arrowEleRect","showTipPointer","updateTipPosition","selEle","adjustArrow","tipPosExclude","tooltipWidth","tooltipHeight","arrowInnerELe","tipPointerPosition","POINTER_ADJUST","renderContent","tempArr","tempFunction","enableHtmlParse","nodeList","templateFunction","renderCloseIcon","isSticky","tipClose","onStickyClose","addDataTooltipId","removeDataTooltipId","tapHoldHandler","autoCloseTimer","targetHover","touchEndHandler","targetClick","hideTooltip","closeDelay","targetList_1","ctrlId","target_1","restoreElement","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showTimer","hideTimer","openDelay","beforeRenderArgs","beforeRenderCallback","tooltipBeforeRender","tooltipAfterRender","PopupAnimation","appendContainer","ctrlObj","observedArgs","beforeOpenCallback","openAnimation_1","onMouseMove","wireMouseEvents","viewContainerRef","affectedPos","checkCollideTarget","newpos","collidedPosition","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","eleOffset","windowCollision","arrowleft","positionString","newPos","offsetType","isTooltipOpen","tooltipHide","popupHide","closeAnimation","unwireMouseEvents","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","colpos","keyDown","targetsList","touchEnd","triggerList_1","getTriggerList","wireFocusEvents","touchModule","targetList","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","currentTarget_1","ValueFormatter","getFormatFunction","getParserFunction","fromView","toView","allowSorting","allowResizing","allowGrouping","allowReordering","showColumnMenu","enableGroupByFormat","allowEditing","showInColumnChooser","edit","allowSearching","autoFit","sortDirection","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","editType","getUid","valueFormatter","setFormatter","setParser","commands","commandsTemplate","headerTemplateFn","fltrTemplateFn","editTemplate","filterTemplate","isForeignColumn","ddEditedData","foreignKeyField","foreignKeyValue","sortComparer","a_1","xObj","yObj","getForeignData","getSortDirection","setSortDirection","getFreezeTableName","freezeTable","refreshReactColumnTemplateByUid","refreshReactHeaderTemplateByUid","getFormatter","formatFn","getParser","parserFn","getColumnTemplate","getHeaderTemplate","getFilterItemTemplate","getDomSetter","GridColumn","CommandColumnModel","StackedColumn","rowDataBound","queryCellInfo","headerCellInfo","actionBegin","actionComplete","dataBound","rowSelecting","rowSelected","rowDeselecting","rowDeselected","cellSelecting","cellSelected","cellDeselecting","cellDeselected","columnSelecting","columnSelected","printComplete","batchAdd","batchCancel","batchDelete","cellSaved","beforeDataBound","beforeOpenAdaptiveDialog","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","initialLoad","initialEnd","dataReady","contentReady","uiUpdate","onEmpty","inBoundModelChanged","modelChanged","colGroupRefresh","headerRefreshed","filterComplete","searchComplete","groupAggregates","refreshFooterRenderer","beforeCellFocused","cellFocused","keyPressed","columnVisibilityChanged","columnWidthChanged","columnPositionChanged","rowsAdded","rowsRemoved","dataSourceModified","dblclick","toolbarRefresh","bulkSave","autoCol","tooltipDestroy","saveComplete","deleteComplete","preventBatch","dialogDestroy","crudAction","addDeleteAction","destroyForm","doubleTap","freezeRender","filterOpen","filterDialogCreated","filterMenuClose","getForeignKeyData","showEmptyGrid","foreignKeyData","dataStateChange","dataSourceChanged","beforeFragAppend","frozenHeight","textWrapRefresh","recordAdded","cancelBegin","editNextValCell","hierarchyPrint","partialRefresh","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","restoreFocus","detailIndentCellInfo","virtualScrollEditActionBegin","virtualScrollEditSuccess","refreshVirtualCache","editReset","virtualScrollAddActionBegin","getVirtualData","refreshInfiniteModeBlocks","resetInfiniteBlocks","infiniteScrollHandler","infinitePageQuery","infiniteShowHide","appendInfiniteContent","removeInfiniteRows","setInfiniteCache","infiniteEditHandler","initialCollapse","closeFilterDialog","groupCollapse","refreshHandlers","beforeRefreshOnDataChange","refreshInfiniteCurrentViewData","filterDialogClose","refreshCustomFilterOkBtn","refreshCustomFilterClearBtn","renderResponsiveCmenu","filterCmenuSelect","customFilterClose","setFullScreenDialog","refreshExpandandCollapse","rowModeChange","enterKeyHandler","setVirtualPageQuery","closeEdit","createVirtualValidationForm","captionActionComplete","refreshInfinitePersistSelection","refreshInfiniteEditrowindex","afterFilterColumnMenuClose","commandColumnDestroy","rowCell","gridHeader","gridContent","gridFooter","movableContent","movableHeader","frozenContent","frozenHeader","gridChkBox","editedRow","addedRow","leftRight","frozenRight","frozenLeft","dataColIndex","ariaColIndex","dataRowIndex","ariaRowIndex","colGroup","beforeOpen","downArrow","upArrow","shiftEnter","selectedHandler","minHeight","resizeWestWidth","Print","scrollModule","isAsyncPrint","defered","isContentReady","actionBeginFunction","isPrintGrid","hierarchyPrintMode","childGrid","removeColGroup","printGridObj","printModule","renderPrintGrid","gObj","printGrid","Grid","getPrintGridModel","isFrozenGrid","getFrozenColumns","isPrinting","injectedModues","setInjectedModules","printgrid","registeredTemplate","isVue","isVue3","selectedRows","getContentTable","getCssProperties","contentDiv","literals","headerDiv","groupSettings","waitingPop","printGridElement","printWind","groupCaption","colSpan","colGroups","contentColGroups","hideColGroup","printGridProp","elementClass","RESIZE_HANDLER","FOCUSED_HANDLER","DIALOG_RESIZABLE","RESTRICT_LEFT","RESIZE_WITHIN_VIEWPORT","dialogBorderResize","originalWidth","originalHeight","originalX","originalY","originalMouseX","originalMouseY","resizeStart","resizeEnd","setLeft","previousWidth","setBorderResizeElm","calculateValues","getDOMElement","domElement","resizers","onMouseDown","onTouchStart","borderResizers","getEventType","targetEle","onMouseUp","dialogResizeElement","resizeTowards","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","calculatedHeight","borderValue","topWithoutborder","targetTop","calculatedTop","boundaryRectValues","currentHeight","rectValues","documentWidth","calculatedWidth","left_1","removeResize","DialogUtility","ButtonProps","AnimationSettings","DLG_HEADER_CONTENT","DLG_HEADER","DLG_FOOTER_CONTENT","MODAL_DLG","DLG_CLOSE_ICON","DLG_TARGET","SCROLL_DISABLED","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","clonedEle","closeIconClickEventHandler","dlgOverlayClickEventHandler","overlayClickEventArgs","focusContent","checkPositionData","prevOnChange","updatePersistData","dragObj","isNumberValue","getEle","computedHeaderHeight","computedFooterHeight","footerEle","minimumHeight","headerHeight","footerHeight","onResizeStart","dialogObj","onResizing","onResizeComplete","isBlazorServerRender","resizeHandles","directionValue","isModal","resizeBegin","resizing","resizeComplete","resizeHandler","createResize","wireWindowResizeEvent","unWireWindowResizeEvent","buttonObj","btnObj","ftrTemplateContent","buttonIndex_1","isTagName","isContentEdit","closeOnEscape","primaryButtonEle","buttonModel","setMaxHeight","setzIndex","calculatezIndex","setTargetContent","setButton","allowDragging","setAllowDragging","setIsModal","dlgContainer","dlgOverlay","resetResizeIcon","unBindEvent","closeArgs","activeEle","storeActiveElement","positionChange","setEnableRTL","setOverlayZindex","dialogConHeight","resizeIcon","zIndexValue","handleContent","dragEventArgs","buttonContent","buttonType","btn","footerBtn","buttonClickHandler","isFlat","innerContentElement","setTemplate","templateValue","dialogItem","headerEle","createHeaderContent","showCloseIcon","closeIcon","closeIconBtnObj","oldCSSClass","getValidFocusNode","disableElement","getAutoFocusNode","validNode","elementMatch","msGetRegionContent","updateSanitizeContent","insertAdjacentHTML","updateIsModal","buttonCount","setTarget","setPopupZindex","currentzIndex","windowResizeHandler","classArray","getDimension","isFullScreen","fullScreen","beforeOpenArgs","openAnimation","dialogOpen","closedBy","beforeCloseArgs","getButtons","createDialog","dialogObject","formOptions","isDraggable","formButtonModel","buttonPropModel","buttonProps","alert","alertDialogObj","dialogElement","alertButtonModel","okButton","setAlertButtonModel","alertOptions","confirm","confirmDialogObj","okButtonModel","cancelButtonModel","setConfirmButtonModel","confirmOptions","CheckBoxFilterBase","isExecuteLocal","existingPredicate","foreignKeyQuery","filterState","renderEmpty","isCheckboxFilterTemplate","cBoxTrue","cBoxFalse","closeDialog","dlg","keyupHandler","searchHandler","searchBoxKeyUp","foreignKeyFilter","fColl","mPredicate","fPredicate","filterCollection","columnData","ejpredicate","fpred","foreignFilter","isRemote","initalPredicate","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","loadingIndicator","indicatorType","showMaskRow","sIcon","localeObj","actualPredicate","filteredColumns","filterSettings","allowCaseSensitive","isFiltered","getAndSetChkElem","sBox","hideSearchbox","inputargs","spinner","cBox","showDialog","columnName","columnType","btnClick","dialogCreated","renderResponsiveFilter","isResponsiveFilter","getAllData","getFilterMenuPostion","openDialog","isBlanks","filterTemplateCol","filterItemTemplate","destroyTemplate","clearReactVueTemplates","clearFilter","fltrBtnHandler","searchInput","optr","ddlValue","isMenuNotEqual","fObj","caseSen","isNotEqual","itemsCnt","coll","generateNullValuePredicates","existingPredicate_1","initiateFilter","isClearFilter","firstVal","foreignQuery","predicte","padZero","addDistinct","filterModel","filterChoiceCount","filterargs","filterObj","getDatePredicate","emptyValPredicte","generatePredicate","filterEvent","processSearch","getPredicateFromCols","isGrid","getForeignKeyColumns","foreignColumn","getColumnByField","getColumnByForeignKeyValue","customQuery","queryGenerate","processDataOperation","filteredColumn","defObj","eventPromise","dataSuccess","allPromise","runArray","colData","fullData","args1","filteredData","getDistinct","processDataSource","searchSettings","sSettings","updateResult","createFilterItems","updateAllCBoxes","toogleCheckbox","updateIndeterminatenBtn","prevElem","cBoxes_1","removeAddCboxClasses","setChecked","createCheckbox","dummyData","extendObjWithFn","isReactCompiler","isReactChild","parentDetails","parentInstObj","renderTemplates","appendChildren","indeterminate","cBoxes","nullCounter","selectAllValue","checkBox","createCboxWithWrap","isColFiltered","predicateCheckBox","predicateElement","isRndere","args_1","getCheckedState","checkState","checkboxFilter","isForeignKey","currentFilterValue","enableCaseSensitivity","foreignDataObj","updateDateFilter","getCaseValue","valueAccessor","getUpdateUsingRaf","updateFunction","iterateArrayOrObject","iterateExtend","baseExtend","validSelector","baseTemplateComplier","setStyleAndAttributes","customAttributes","copyAttr","exclude","setColumnIndex","columnModel","ind","prepareColumns","autoWidth","setCssInGridPopUp","popUp","popUpSpan","targetPosition","isBottomTail","getPopupLeftPosition","isID","getActualPropFromColl","calculateAggregate","customAggregate","Global","CellType","RenderType","ToolbarItem","ResponsiveDialogAction","ResponsiveToolbarAction","getScrollBarWidth","divNode","isComplexField","getComplexFieldID","getParsedFieldID","setComplexFieldID","isEditable","isOldRow","isIdentity","isPrimaryKey","isActionPrevent","editSettings","showConfirmDialog","clName","serviceLocator","fmtr","getService","addRemoveActiveClasses","elementVisible","dlgWidth","leftPos","getZIndexCalcualtion","refreshForeignData","lValue","fField","fdata","filterObject","datePredicate","prevDate","nextDate","prevObj","nextObj","predicateSt","predicateEnd","dateOnlyString","isGroupAdaptive","enableVirtualization","isVirtualAdaptive","enableLazyLoading","newCase","getCustomDateFormat","colType","printGridModel","getColumns","printMode","expandedRows","rows_1","getRowsObject","isDetailRow","allowPaging","getExpandedState","getPrototypesOfObj","cpy","cln","checkDepth","indices","getTransformValues","replacedTv","applyBiggerTheme","rootElement","alignFrozenEditForm","mTD","fTD","fHeight","adaptr","getStateEventArgument","ispercentageWidth","getVisibleColumns","percentageCol","undefinedWidthCol","showGroupedColumn","resetRowIndex","rowElms","startRowIndex","isDataRow","isAltRow","enableAltRow","renderModule","emptyRow","compareChanges","dataToBeUpdated","setRowElements","contentModule","rowElements","getFrozenMode","freezeRowElements","frozenRightRowElements","splitFrozenRowObjectCells","getFrozenLeftCount","movable","getMovableColumnsCount","getFrozenRightColumnsCount","frozenMode","isRowDragable","rightIndex","mvblIndex","mvblEndIdx","gridActionHandler","force","rowObj","getGridRowObjects","getMovableRowsObject","getFrozenRightRowsObject","sliceElements","getCellsByTableName","getMovableDataRows","getFrozenRightDataRows","getDataRows","getCellByColAndRowIndex","setValidationRuels","mRules","frRules","validationRules","numberFormat","mtch_1","addBiggerDialog","enableAdaptiveUI","dialogs","performComplexDataOperation","mapObject","returnObj","duplicateMap","addRemoveEventListener","isOn","evt_1","createEditElement","complexFieldName","getColumnModelByFieldName","registerEventHandlers","evts","eventHandlers","removeEventHandlers","getRowIndexFromElement","findCellIndex","checkActiveMatrix","checkCellIndex","activeMatrix","cellIndex","currentCellIndexPass","dataState","isPending","foreignKeyDataState","addRows","reorderRows","removeRows","crudActions","refreshFilteredCols","toIndex","fromIndex","isQueryInvokedFromData","skipPage","isAutoCompleteCall","columnQueryMode","selectQueryFields","searchQuery","aggregateQuery","sortQuery","virtualGroupPageQuery","pageQuery","enableInfiniteScrolling","infiniteScrollModule","pagerModule","pagerObj","isAllPage","isManualRefresh","isGrpFmt","formatGroupColumn","sortSettings","sortGrp","fcolumn","getSearchColumnFieldNames","needForeignKeySearch","fGeneratePredicate","predList","skipFoerign","foreignColEmpty","actualFilter","foreignCols","defaultFltrCols","columns_1","getColumnByUid","grabColumnByFieldFromAllCols","excelPredicate","foreignCols_1","column_1","grabColumnByUidFromAllCols","getPrimaryKeyFieldNames","crud","deferred_1","previousData","deff","endEdit","getState","getForeignKeyDataState","setForeignKeyDataState","dataArgs","isDataChanged","editArgs_1","cancelEdit","colFieldNames","columns_2","filteredCols","enableColumnVirtualization","refreshFilteredColsUid","setRowValue","setRowData","setCellValue","pKeyField","makechanges","getDataModule","Cell","isSpanned","isRowSpanned","CellMergeRender","cellArgs","spannedCell","cellRenderer","getCellRenderer","cellType","cellSpan","rowSpan","rowsObject","tempFreezeRows","targetCell_1","colSpanLen","colSpanRange","rowSpanRange","spanText","backupMergeCells","fName","setMergeCells","generteKey","fname","splitKey","getMergeCells","updateVirtualCells","mCells","getIndexFromAllColumns","vColumnIndices","getColumnIndexesInView","RowRenderer","isSpan","rowTemplate","refreshRow","isChanged","refreshMergeCells","tempCells","cells_1","isEdit","rowArgs","chekBoxEnable","selIndex","getSelectedRowIndexes","isCheckBoxSelection","checkAllRows","buildAttributeFromRow","cellRendererFact","isColumnSelected","DetailExpand","Filter","CommandColumn","requireTemplateRef","thisRef_1","ariaAttr","requestTypeAction","prevRowCells","prevRowCell","cellMerge","eventArg_1","isSelectable","cellTemplate","thisRef_2","selectionSettings","persistSelection","primaryKey_1","pKey_1","SelectedRecords","partialSelectedRecords","disableSelectedRecords","isPartialSelection","chkBox","cellIdx","isDetail","detailTemplate","lazyLoadCssClass","rowRenderingMode","allowTextWrap","textWrapSettings","wrapMode","frozenColumns","summarycell","isCaptionRow","isAggregateRow","parentUid","RowModelGenerator","generateRows","getInfiniteIndex","enableImmutableMode","generateRow","ensureColumns","generateCell","RowDragIcon","tIndex","parentGid","refreshForeignKeyRow","generateCells","foreignKeyColumns","dummies","rowId","oIndex","isDataCell","refreshRows","SummaryModelGenerator","groupFooterTemplate","groupCaptionTemplate","columnSelector","getIndentCount","buildSummaryData","getGeneratedRow","summaryRow","indents","getIndentByLevel","isDetailGridAlone","indentLength","allowRowDragAndDrop","getGeneratedCell","getCellType","DetailFooterIntent","Indent","sColumn","scolumn","dummy","summaryRows","disp","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","getCaptionRowCells","visibles","groupedLen","generateIndentCell","Expand","captionCells","cIndex_1","wFlag","tmpFlag","GroupCaption","GroupCaptionEmpty","parentID","childID","childGid","gSummary","cRow","childRow","ContentRender","freezeRows","movableRows","currentInfo","prevCurrentView","isLoaded","viewColIndexes","infiniteCache","visibleRows","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","rafCallback","mHdr","getMovableVirtualHeader","fHdr","getFrozenVirtualHeader","ariaService","setBusy","getPanel","setRowsInLazyGroup","prevPage","infiniteScrollSettings","enableCache","maxBlock","maxBlocks","rowIdx","renderFrozenRightContent","preventAdjustColumns","focusModule","setFirstFocusableTabIndex","case","getContent","setPadding","removePadding","enableDeepCompare","generator","getModelGenerator","setVisible","enableAfterRender","refreshContentRows","droppableDestroy","byKey","keyArgs","pressedKey","renderPanel","busy","setPanel","renderTable","virtualTable","virtualTrack","createContentTable","setTable","multiselectable","initializeContentDrop","frozenRows","getHeaderContent","cellspacing","setColGroup","getHeaderTable","getColGroup","currentMovableRows","frag","initialPageRecords","refFrag","refHdrfrag","hdrfrag","hdrTbody","trElement","frzCols","tbdy","modelData","fCont","mCont","cont","emptyVcRows","virtualInfo","sentinelInfo","renderMovableContent","checkCache","setGroupCache","setTbody","getTbody","isFrozenLeft","templatetoclear","rootNodes","blockLoad","vcRows","offsets_1","vGroupOffsets","bSize","isEndBlock","blockIndexes","contentPanel","rowObject","isVFFrozenOnly","bIndex","mhdrData","vgenerator","virtualFrozenHdrRefresh","lazyLoadRender","refRowsObj","setInfiniteVisibleRows","getBlockSize","rowTemplateID","getRowTemplate","colcount","isTR","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","splitRows","removeMaskRow","getFrozenHeader","parentTable","setIsFrozen","isVFTable","frCont","appendContent","renderNextFrozentPart","vRows","headerCellHeight","boxSizing","maintainRows","frozenCols","getGroupCache","initialGroupRows","getCurrentBlockInfiniteRecords","isFreeze","getReorderedVFRows","getReorderedFrozenRows","getReorderedRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","panel","contentTable","infiniteRows","getMovableRows","getRowElements","getMovableRowElements","testRow","fRows","mRows","rowLen","cellLen","rightRows","rightLen","needFullRefresh","infiniteData","infiniteRowVisibility","contentrows","clen","getNormalizedColumnIndex","colIdx","getColumnIndexByUid","displayVal","getFrozenLeftColumnsCount","infiniteFreezeData","mTable","infiniteMovableData","setDisplayNone","isModeChg","invokedFromMedia","hideAtMedia","updateMediaColumns","trs","setDisplayValue","isXaxis","getHeaderColGroup","droppable","canSkip","getRowByIndex","getInfiniteRowIndex","firstRowIndex","getVirtualRowIndex","getMovableRowByIndex","setRowObjects","immutableModeRendering","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","currentLen","oldIndex","refreshImmutableContent","objectEqualityChecker","primaryKey","getBatchChanges","newRowPosition","isDirty","updateCellIndex","rowEle","HeaderRender","frzIdx","notfrzIdx","isFirstCol","visualElement","headercelldiv","getStackedHeaderColumnByHeaderText","lockColumn","colIndex","getColumnIndexByField","widthService","colPosRefresh","renderCustomToolbar","updateCustomResponsiveToolbar","toggleStackClass","createHeaderTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","headerTable","tHead","createTable","tableEle","tblName","findHeaderRow","bodyCell","rowBody","updateColGroup","colHeader","rowRenderer","Header","colDepth","measureColumnDepth","getHeaderCells","colFreezeMode","getStackedLockColsCount","HeaderIndent","DetailHeader","RowDragHIcon","lockcolPositionCount","lockColsRendered","appendCells","isFirstObj","isLastCol","isMovable","isStackLastCol","lastCol","isLockColumn","isFrozenLockColumn","scrollbar","getCellCnt","stackedLockColsCount","isStackedLockColumn","isFrozenStack","ensureStackedFrozen","StackedHeader","getColSpan","isFirstCol_1","isLaststackedCol","inViewIndexes","isTrue","lockColsCount","getFrozenColSpan","normalizedfrzCols","refreshUI","freezeReorder","getVirtualFreezeHeader","setWidthToColumns","updateDefaultCursor","gCells","showDropArea","toolbar","toolbarItems","toolbarLeft","toolbarItem","showResponsiveCustomSort","showResponsiveCustomFilter","resToolbar","CellRenderer","locator","localizer","rowChkBox","getGui","evaluate","fData","literals_1","invokeFormatter","checkFor","refreshCell","refreshTD","parentRow","newTD","cloneAttributes","innerHtml","displayAsCheckBox","localeStr","fromFormatter","appendHtml","checkWrap","rowID","buildAttributeFromCell","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","matchFilteredColumns","StackedHeaderCellRenderer","toolTip","IndentCellRenderer","GroupCaptionCellRenderer","cellUid","fKeyValue","gTemplateValue","domSetter","captionTemplate","tempID","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","Render","emptyGrid","counter","headerRenderer","getRenderer","contentRenderer","isLayoutRendered","setHeight","allowSelection","searchString","pageSizes","checkAll","dataLength","totalRecordsCount","getCurrentViewRecords","prevPageMoving","resetTemplates","gridColumns","detailTemplateID","toolbarTemplate","refreshComplete","maskRow","enableVirtualMaskRow","isCaptionCollapse","isFActon","isNeedForeignAction","getFData","deffered_1","disablePageWiseAggregates","validateGroupRecords","dataManagerFailure","sendBulkRequest","dmSuccess","dmFailure","renderEmptyRow","spanCount","colspan","dynamicColumnChange","updateColumnType","cFormat","equalTo","isColTypeDef","actionArgs","isInfiniteDelete","isInfiniteEnd","totalDataRecordsCount","updatesOnInitialRender","setRowCount","dataRowCount","buildColumns","isAutoGen","iterateComplexColumns","complexCols","instantiateRenderer","addRenderer","cellrender","addCellRenderer","group0","groupN","addWhere","curFilter","rPredicate","updateGroupInfo","untouched","uGroup","itemGroup","uGroupItem","CellRendererFactory","cellRenderMap","ResponsiveDialogRenderer","sortedCols","sortPredicate","isCustomDialog","evtHandlers","closeCustomDialog","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","filterModule","saveBtn","backBtn","customExcelFilterParent","isFilter","filterClearBtn","getHeaderTitle","renderResponsiveContent","customColumnDiv","sortBtnParent","isSort","cDiv","getSortedFieldsAndDirections","buttonInnerText","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","allowMultiSorting","isSortApplied","resetSortButtons","directionTxt","setSortedCols","getCurrentSortedFields","isRowResponsive","showResponsiveDialog","colDiv","isDialogClose","clearCustomFilter","removeCustomDlgFilterEle","renderCustomFilterDialog","filteredCol","renderResponsiveDialog","setFilterModel","setTopToChildDialog","dialogEle","outerDiv","customFilterDlg","getDialogOptions","adaptiveDlgTarget","beforeDialogClose","renderResponsiveHeader","sortField","closeResponsiveDialog","closeCustomFilter","keyHandler","sortColumn","clearSorting","primaryKeyValue","isAdd","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","id_1","clearBtn","clearFiltering","filterClear","applyCustomFilter","destroyCustomFilterDialog","customEle","ServiceLocator","register","registerAdaptiveService","isAdaptiveUI","responsiveDialogRenderer","RendererFactory","rendererMap","rName","ColumnWidthService","totalColumnsWidth","setColumnWidth","getTableWidth","setMinwidthBycalculation","tWidth","tmWidth","collection_1","isWidthUndefined","setUndefinedColumnWidth","cWidth","tgridWidth","setWidthToTable","headerCol","fWidth","contentCol","freezeLeft","freezeRight","movableCount","isColFrozen","frHdr","getFrozenRightHeader","getColumnLevelFrozenColgroup","destElement","getColumnByIndex","editTableCol","refreshFrozenScrollbar","frzMode","frozenScrollbar","movableScrollbar","frozencontent","frozenWidth","movableWidth","frozenRightScrollbar","frozenRightWidth","placeHolder","getMovableVirtualContent","getSiblingsHeight","getHeightFromDirection","isWidUndefCount","calcMovableOrFreezeColWidth","tableType","setWidthToFrozenRightTable","freezeWidth","isAutoResize","headerTbl","cntTbl","setWidthToFrozenLeftTable","setWidthToMovableTable","isColUndefined","isWidthAuto","resizeModule","resizeProcess","setWidthToFrozenEditTable","setWidthToMovableEditTable","resizeSettings","FocusStrategy","oneTime","forget","skipFocus","focusByClick","firstHeaderCellClick","prevIndexes","refMatrix","refreshMatrix","actions","isVirtualScroll","rowModelGen","focusCheck","setActive","enableHeaderFocus","editModule","validator","passiveFocus","firstHeaderCell","lastRowCell","elementToFocus","skipAction","isGantt","setLastContentCellTabIndex","groupModule","focusableGroupedItems","getFocusableGroupedItems","toolbarElement","toolbarModule","focusableToolbarItems","getFocusableToolbarItems","firstHeaderCellIndex","isFrozenRight","beforeArgs","byClick","clearOutline","onKeyPress","pagerElement","focusablePagerElements","getFocusablePagerElements","allowToPaging","checkPagerHasFocus","lastHeaderCellIndex","isValidBatchEditCell","findBatchEditCell","getDropDownPage","changePagerFocus","parentCell","setPagerFocus","checkFirstPagerFocus","lastRow","lastColumn","skipOn","lastCell","setLastContentCellActive","focusOutFromChildGrid","focusFirstHeaderCell","activeKey","bValue","prevActiveName","getActiveName","prevBatchValue","swapInfo","jump","toHeader","toFrozen","toFrozenRight","getNextCurrent","setActiveByKey","lastIdxCell","setFrozenBatchEditCell","focusOutFromHeader","nextHeaderCellIndex","firstContentCellIndex","previousCellIndex","addBatchRow","clearIndicator","setPagerContainerFocus","cellColIndex","cellCol","currentCellIndex","limitRow","tempCellIndex","cellIndexObtain","prevTempCellIndex","currentActiveName","nextRow","nextCell","nextSection","prevNextCell","activeName","rowDec","rowInc","notPrev","notNext","setActiveByName","frozenLeftRightNext","frozenLeftNotNext","frozenLeftNext","frozenRightPrev","frozenRightNotPrev","frozenRightContent","activeTable","lastContentCellIndex","parentGrid","parentRows","parentRowIndex","nextFocusCell","rowCells","allowAdding","filterCell","focusVirtualElement","virtualData","isCancel","isKeyFocus","selectedRowIndex","getFocusedElement","fContent","frContent","fHeader","frHeader","setFocusedElement","addFocus","getFocusInfo","addOutline","focusHeader","resetFocus","isJump","getInfo","focusedColumnUid","FixedContentFocus","FixedRightContentFocus","ContentFocus","FixedHeaderFocus","FixedRightHeaderFocus","HeaderFocus","cFocus","updateRow","isRowTemplate","newMovableRows","newFrozenRows","newfrRows","handlerInstance","focusElement","cellPosition","gridPosition","passiveHandler","filterfocus","restoreFocusWithAction","internalCellFocus","groupSortFocus","groupTextFocus","groupCancelFocus","getPrevIndexes","forgetPrevious","getFocusable","allow","emptyTable","inValid","vector","incrementNumber","columnsCount","rowColumns","currentColumnCount","keyActions","indexesByKey","getCurrentFromAction","editNextRow","allowNextRowEdit","isLastCellPrimaryKey","visibleIndex","isPresent","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","nextRowFocusValidate","previousRowFocusValidate","firstIndex","frozenSwap","frSwap","enterFrozen","headerSwap","isHeaderFocus","optionals","defaultLen","rIndex","cIndex","isData","isCellWidth","getGridSeletion","allowColumnSelection","isLastCell","fMatrix","current1","getHeaderType","checkFilterColumn","fSwap","current2","hMatrix","frSwap_1","current3","SearchBox","searchFocus","searchBlur","toFrozenSwap","headerMat","PageSettings","ColumnChooserSettings","__assign","Selection","selectedRowIndexes","selectedRowCellIndexes","selectedRecords","selectedColumnsIndexes","checkBoxState","isMultiShiftRequest","isMultiCtrlRequest","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","unSelectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","deSelectedData","isHdrSelectAllClicked","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","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","clearSelection","mouseDownHandler","isEditing","formObj","isPersistSelection","getSelectedMovableRow","getSelectedFrozenRightRow","getFrozenRightContent","getFrozenRightRowByIndex","getCurrentBatchRecordChanges","currentRecords","selectRow","enableSimpleMultiRowSelection","addRowsToSelection","selectedRow","getRowObjectFromUID","selectedMovableRow","selectedFrozenRightRow","isAvailable","frozenData","getRowObjectByIndex","getSelectedRecords","clearRowSelection","isRowType","isRowSelected","activeTarget","can","rowSelectingCallBack","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","actualTarget","isHeaderCheckboxClicked","addMovableArgs","isRemoved","removed","checkboxMode","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","selectMovableRow","selectRowIndex","isHeaderCheckBoxClicked","rowIndexes","updateRowProps","targetObj","mRow","frRow","mObj","previousMovRow","selectRowsByRange","selectRows","getCollectionFromIndexes","selectedDataUpdate","selectableRowIndex","currentRow","isSingleSel","prevRow","selectRowFn","rightEle","selectableRowIndex_1","checkboxOnly","checkboxColumn","rowIndexes_1","isUnSelected","enableToggle","rowDeselect","addRemoveClassesForRow","clearRowCallBack","updatePersistCollection","updateCheckBoxes","getPkValue","pkField","chkState","ensureCheckboxFieldSelection","updatePersistDelete","checkedTarget","setCheckAllState","contextMenuModule","mouseButton","checkSelectAllClicked","clearCellSelection","clearColumnSelection","prevCIdxs","prevECIdxs","row_1","mRow_1","fRightRow_1","rowIndex_1","foreignKeyData_1","frRows","getFrozenRightRows","isRowClicked","getCheckAllStatus","updatePersistSelectedData","movableRow","rowDeselectCallBack","frozenRightRow","isSingleDeSel","rowDeselectObj","rowInString","rowidxex","dataTxt","getSelectedMovableCell","getMovableCellFromIndex","getColIndex","selectCell","isCellType","selectedCell","getCellFromIndex","isCellSelected","successCallBack","previousRowCell","getCellIndex","cellSelectingArgs","currentCell","clearCell","updateCellSelection","selectedRowCellIndex","updateCellProps","rIdx","selectCellsByRange","cellIndexes","stIndex","edIndex","cellSelectionMode","getLastColIndex","cellSelectedArgs","selectCells","rowCellIndexes","cellSelectArgs","addRowCellIndex","addCellsToSelection","hideAutoFill","cellIndexes_1","prvRowCellIndex","selectedCellIdx","cellDeselect","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","cLen","bdrElement","showHideBorders","addMovableRows","gBRect","isCellDrag","startAFCell","startCell","endAFCell","selectLikeExcel","startDIndex","isAutoFillSel","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","createBorders","positionBorders","isLastRow","isFirstRow","isFirstCell","setBorders","bdrStr","stOff","endOff","parentOff","topOffSet","leftOffset","rightOffset","selectDirection","updateStartEndCells","getMovableContent","mcBdrElement","frcBdrElement","fhBdrElement","headerModule","getMovableHeader","mhBdrElement","frhBdrElement","applyBorders","applyBothFrozenBorders","drawAFBorders","bdrAFBottom","createAFBorders","positionAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","parentRect","sTop","sLeft","totalHeight","totalWidth","scrolloffSet","bdrAFRight","bdrAFTop","leftRemove","topRemove","hideAFBorders","createBeforeAutoFill","updateCell","getAutoFillCells","startCellIdx","isApply","startrowIdx","endrowIdx","endCellIdx","colLen","endCell","startCellIndex","trIdx","mUPTarget","closeRowCell","updateAutoFillPosition","updateStartCellsIndex","autofill","enableAutoFill","rindex","isFrozenCol","isFrozenRow","enableDrag","isUpdate","postion","clearSelAfterRefresh","pkValue","onCellFocused","refreshHeader","actionCompleteFunction","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","keyUpHandler","allowKeyboard","getCheckAllBox","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","isLeftRightFrozen","gobj","chkField","refreshPersistSelection","setRowSelection","selectedStateKeys","unSelectedRowStateKeys","rowObj_1","selectedData_1","getAvailableSelectedData","filteredSearchedSelectedData","getMovableContentTbody","getFrozenRightContentTbody","editChkBox","onDataBound","getSelectedRows","totalRecords","checkSelectAllAction","cRenderer","editForm","checkSelectAll","stateStr","updateSelectedRowIndexes","triggerChkChangeEvent","checkSelect","rowCellSelectionHandler","moveIntoUncheckCollection","rowObj_2","updateSelectedRowIndex","selectedVal","isAllSelected","isSelectAllRowCount","someDataSelected","isInteraction","checkToSelectAll","checkedLen","targetHeadCell","targetRowCell","popUpClickHandler","chkSelect","hoverFrozenRows","headerSelectionHandler","headerAction","thLen","selectedIndexes","getSelectedRowCellIndexes","getKeyColIndex","targetLabel","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","ctrlPlusA","applySpaceSelection","stackedHeader","innerColumn","getstackedColumns","applyUpDown","selectColumn","selectColumnsByRange","innerColumnIndexes","detailIndentCell","dragdropIndentCell","selectedCol","getColumnHeaderByUid","isColSelected","isMultiColumns","clearColDependency","headerCell","previousColumnIndex","updateColSelection","selectedArgs","updateColProps","selectColumns","columnIndexes","getselectedCols","selectingArgs","selectColumnWithExisting","newCol","clearIndex","deselectedArgs","getFrozenRightColumnHeaderByIndex","getMovableColumnHeaderByIndex","columnDeselect","selectedHeader","getSelectedColumnCells","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteFunc","actionCompleteHandler","resizeEndFn","checkAllBox","isInfinitecroll","isSelectedRowIndexUpdating","refreshSearch","onSearchComplete","cancelBeginEvent","ShowHide","colName","isShowHide","batchChanges","resetColumnState","changedCol","showBy","getToggleFields","hideBy","getKeyBy","batchActionPrevent","changedStateColumns","showHideArgs","currentViewCols","col1","col2","oneTimeReady","uiupdate","tlbrElement","tlbrLeftElement","tlbrCenterElement","tlbrRightElement","tlbrItems","tlbrLeftWidth","tlbrCenterWidth","tlbrRightWidth","tlbrItemsWidth","tlbrWidth","refreshOverflow","mHdrHeight","getRowHeight","ensureOverflow","getThreshold","hDiv","footerDiv","getFooterContent","setScrollLeft","mScrollBar","setPageXY","onTouchScroll","onCustomScrollbarScroll","onFrozenContentScroll","contentScrollHandler","headerScrollHandler","onContentScroll","isPreventScrollEvent","scrollTarget","isDown","scrollDown","isFooter","pageXY","getPointXY","getScrollbleParent","addStickyListener","eventElement","makeStickyHeader","enableStickyHeader","sHeight","setLastRowCell","frTable","contentRect","toolbarEle","groupHeaderEle","parentTop","colMenuEle","elemTop","setSticky","ccDlg","topStyle","AggregateColumn","getTemplate","setPropertiesSilent","AggregateRow","Clipboard","copyContent","isMacLike","clipBoardTextArea","x_1","y_1","paste","isAvail","dataRows","fTr","mTr","setCopyData","withHeader","headerTextArray","getCopyData","leftCols","rightCols","movableCols","checkBoxSelection","colIndexes","getColumnHeaderByIndex","isCell","queryCommandSupported","execCommand","rowCellIndxes","SortDescriptor","SortSettings","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","GroupSettings","EditSettings","LoadingIndicator","keyA","frozenRightCount","frozenLeftCount","visibleFrozenLeft","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","isFreezeRefresh","tableIndex","componentRefresh","rowUid","isAutoFitColumns","islazyloadRequest","pageTemplateChange","mediaBindInstance","commandDelIndex","asyncTimeOut","isExportGrid","enableLogger","Grid_1","mergePersistGridData","keyEntity","scrollPosition","currentObject","pagerTemplate","setFrozenCount","enableInfiniteAggrgate","allowExcelExport","allowPdfExport","isCommandColumn","allowDeleting","extendRequiredModules","contextMenuItems","showColumnChooser","isForeignKeyEnabled","initProperties","initializeServices","mediaCol","filterOperators","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notEqual","notNull","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Edit","Cancel","Update","Delete","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","Item","EditOperationAlert","DeleteOperationAlert","SaveButton","OKButton","CancelButton","EditFormTitle","AddFormTitle","BatchSaveConfirm","BatchSaveLostChanges","ConfirmDelete","CancelEdit","ChooseColumns","SearchColumns","Matchs","FilterButton","ClearButton","StartsWith","NotStartsWith","Like","EndsWith","NotEndsWith","Contains","NotContains","IsNull","NotNull","IsEmpty","IsNotEmpty","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","ChooseDate","EnterValue","Copy","Group","Ungroup","GroupButton","UnGroupAria","GroupSeperator","UnGroupIcon","GroupedSortIcon","GroupedDrag","CheckBoxLabel","autoFitAll","AutoFitAll","AutoFit","Export","FirstPage","LastPage","PreviousPage","NextPage","SortAscending","SortDescending","EditRecord","DeleteRecord","FilterMenu","SelectAll","AddCurrentSelection","Blanks","FilterTrue","FilterFalse","NoResult","ClearFilter","Clear","NumberFilter","TextFilter","DateFilter","DateTimeFilter","MatchCase","Between","CustomFilter","CustomFilterPlaceHolder","CustomFilterDatePlaceHolder","AND","OR","ShowRowsWhere","FilterMenuDialogARIA","ExcelFilterDialogARIA","DialogEditARIA","ColumnChooserDialogARIA","ColumnMenuDialogARIA","CustomFilterDialogARIA","SortAtoZ","SortZtoA","SortByOldest","SortByNewest","SortSmallestToLargest","SortLargestToSmallest","Sort","FilterDescription","SortDescription","ColumnMenuDescription","GroupDescription","ColumnHeader","TemplateCell","CommandColumnAria","DialogEdit","ClipBoard","AscendingText","DescendingText","NoneText","Expanded","Collapsed","rightArrow","leftArrow","shiftDown","shiftUp","shiftRight","shiftLeft","ctrlHome","ctrlEnd","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","ctrlDownArrow","ctrlUpArrow","ctrlPlusP","f2","ctrlEnter","ctrlPlusC","ctrlShiftPlusH","ctrlSpace","ctrlLeftArrow","ctrlRightArrow","searchModule","getMediaColumns","checkLockColumns","processModel","gridRender","updateStackedFilter","refreshMaskRow","axisDirection","dialogHolder","maskRowCount","maskTemplate","getShimmerTemplate","maskSpan","maskTableHeight","contentHeight","contentRowCount","headerMaskTable","createEmptyMaskTable","contentMaskTable","maskRowContentScroll","createMaskTable","getContentMaskColumns","movableHeaderMaskTable","getMovableContentMaskColumns","rightHeaderMaskTable","getRightContentMaskColumns","movableContentMaskTable","rightContentMaskTable","gridFooterContent","footerContentMaskTable","footerContent","movableFooterContentMaskTable","rightFooterContentMaskTable","translateMaskRow","getFrozenLeftColumns","getFrozenRightColumns","getMovableColumns","maskElement","gridContentScrollHeight","maskTable","maskColgroup","createMaskRow","maskTHead","maskTBody","rowCountElement","altRow","altNumber","addEditRow","addEditRowIndex","applyMaskRow","addEditMaskRow","maskTFoot","maskTableHolderHeight","maskTableHolder","minScrollTop","maskCells","maskCell","displayAsCheckBoxCell","refColgroup","refColumns","localTD","addShimmerEffect","maskTables","refreshMaskRowColgroupWidth","gcol","getShowHideService","pushMediaColumn","mediaQueryUpdate","mediaColumn","showHider","refreshMediaCol","enableHover","removeMediaListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","clipboardModule","enableBoxSelection","checkCursor","requireRefresh","requireGridRefresh","freezeRefresh","childGridParent","parentInstance","isEllipsisTooltip","updateColumnObject","properties_1","rowTemplateFn","detailTemplateFn","childGridObject","currentParent","currentParentInstance","currentChildObject","restoreAdjustColumns","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","getContextMenu","columnMenuModule","getColumnMenu","showFilterBarOperator","updateResizeLines","updateGridLines","columnMenuItems","applyTextWrap","removeTextWrap","pending_1","deepWatch","gResult","enableVerticalRendering","fn_1","refreshFilter","setTablesCount","getTablesCount","headerCells","stdHdrCell","updateColumnModel","isRecursion","updateColumnLevelFrozen","updateFrozenColumns","updateLockableColumns","directFrozenCount","totalFrozenCount","frozenName","frozenCount","isRefresh","inview","vLen","ensureFrozenCols","individualColumn","stackedColumn","getLocaleConstants","setColumnIndexesInView","getCurrentVisibleColumns","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","getPager","gridPager","setGridPager","getFrozenRowByIndex","getFrozenDataRows","getRowInfo","rowData","getFrozenRightRowElements","getAllDataRows","includeAdd","getFrozenLeftContentTbody","mrows","includAdd","dRows","getAllMovableDataRows","getAllFrozenDataRows","getAllFrozenRightDataRows","pkName","fieldIdx","frIdx","Idx","sRow","columnUid","isChildGrid","refreshReactTemplateTD","childIndent","isChildRow","rowsObj","refreshGroupCaptionFooterTemplate","dataUid","headerCellRenderer","rowObjects","selectRowEle","currentTbl","currentTblName","setFrozenRowData","lTr","rTr","fRowTr","getFrozenRightCellFromIndex","getFrozenLeftColumnHeaderByIndex","getColumnHeaderByField","getStackedColumns","getUidByColumnField","rowDropSettings","targetID","getColumnFieldNames","columnNames","getDetailTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedColumnsUid","showColumns","hideColumns","getFrozenCount","splitFrozenCount","getVisibleFrozenLeftCount","getVisibleFrozenRightCount","getVisibleMovableCount","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","indentWidth","perPixel","applyWidth","newWidth","resetIndentWidth","reorderColumns","fromFName","toFName","reorderModule","reorderColumnByIndex","reorderColumnByTargetIndex","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","headerRows","disValue","autoFitColumns","tableWidth","percentageWidth","isPercentageWidthGrid","widthUnit","defaultIndentWidth","indentWidthUnitFormat","headerIndentCol","contentIndentCol","tableWidthUnitFormat","indentWidthUnitFormat_1","createColumnchooser","columnChooserModule","renderColumnChooser","valueFormatterService","gCols","sCols","sLen","parentKeyFieldValue","initForeignColumn","rendererFactory","createGridPopUpElement","getTooltipStatus","headerDivTag","htable","ctable","prevElement","innerElement","myTableDiv","mySubDiv","myTable","myTr","mytd","onKeyPressed","mouseClickHandler","focusOutHandler","dblClickHandler","tapEvent","dataBoundFunction","checkEdit","dataRow","ariaOwns","keyPress","editFormValidate","mergeColumns","storedColumn","storedColumns","localCol","tCol","presskey","collapse","refreshColumns","fCnt","frCnt","mTbl","frTbl","colGrp","excelExport","excelExportProperties","isMultipleExport","isBlob","excelExportModule","csvExport","pdfExport","pdfExportProperties","pdfDoc","pdfExportModule","groupColumn","groupExpandAll","expandAll","groupCollapseAll","collapseAll","clearGrouping","ungroupColumn","openColumnChooser","detailCollapseAll","detailRowModule","detailExpandAll","isContextMenuOpen","ensureModuleInjected","propertyNames","loggerModule","getPreviousRowData","hideScroll","scrollBar","mvblScrollBar","mvblChild","getRowIndexByPrimaryKey","pKvalue","getFilteredRecords","getUserAgent","getRowUid","getFrozenVirtualContent","getRowElementByUID","frozenRigtRows","cntRows","rows_2","getHiddenColumns","calculatePageSizeByParentHeight","pagesize","getNoncontentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","exportGrid","serverPdfExport","serverCsvExport","setHeaderText","gridInput","include","updateRowValue","setForeignKeyData","colpending","resetFilterDlgPosition","filterDlg","gClient","fClient","processRowChanges","batchAsyncUpdate","processBulkRowChanges","loopstring","setNewData","oldValues","bulkRefresh","deleteRowElement","out_i_1","this_3","_loop_4","isRowExist","this_4","renderRowElement","addRowObject","moveTbody","mEle","renderMovable","updateVisibleExpandCollapseRows","isInteger","getMovableHeaderTbody","getFrozenHeaderTbody","getFrozenRightHeaderTbody","showCustomFilter","showCustomSort","showAdaptiveFilterDialog","showAdaptiveSortDialog","isColVirtualization","gridCols_1","GridComponent","ErrorOption","ColumnDirective","ColumnsDirective","contentRefresh","isModelChanged","aria","sortedColumn","getSortedColsIndexByField","sCol","getSortColumnFromField","lastSortedCol","backupSettings","removeSortIcons","updateSortedCols","lastSortedCols","lastCols","restoreSettings","refreshSortSettings","addSortIcons","sortColumns","refreshSortIcons","colObj","initiateSort","showPopUp","colUid","enableSortMultiTouch","allowUnsort","filterElement","updateAriaAttr","InlineEditRender","addNew","mTbody","getMovableTbody","frTbody","getFrozenRightTbody","isVirtualFrozen","isScroll","frTbody_1","getEditElement","checkLastRow","renderMovableform","frEle","renderFrozenRightForm","frozenRightForm","renderRightFrozen","movableForm","updateFreezeEdit","getFreezeRow","getFreezeRightRow","isCustomFormValidation","tdElement","refreshFreezeEdit","fCls","mTd","frTd","refreshEditForm","updateFrozenCont","updateFrozenRightCont","gLen","td_1","editTemplateID","BatchEditRender","columnObject","newTd","DialogEditRender","setLocaleObj","createDialogHeader","responsiveDlgRenderer","getDialogEditTemplateElement","dialog","dialogClose","dialogEditTemplates","dialogTemp","tempDiv","checkColumnIsGrouped","dataCell","EditRender","getEditElements","convertWidget","fForm","frForm","cols_1","mTdElement","fTdElement","cellValue","tArgs","isInput","CHECK","FRAME","INDETERMINATE","LABEL","RIPPLE","RIPPLECHECK","RIPPLEINDETERMINATE","containerAttr","CheckBox","isMouseClick","clickTriggered","validCheck","changeState","isInitialize","getWrapper","changeEventArgs","updateVueArrayModel","focusHandler","initialCheckedValue","setDisabled","initWrapper","setHiddenInput","labelMouseDownHandler","labelMouseUpHandler","rippleElem","labelWrap","formElem","EditCellBase","removeEventHandler","BooleanEditCell","activeClasses","selectChkBox","editRow","cbChange","checkBoxChange","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","decimalSeparator","intRegExp","isCalled","angularTagName","formEle","localeText","incrementTitle","decrementTitle","isValidState","inputStyle","inputName","cultureInfo","initCultureInfo","initCultureFunc","prevValue","updateHTMLAttrToElement","checkAttributes","inputEleValue","validateStep","updatePlaceholder","createWrapper","showSpinButton","spinBtnCreation","setElementWidth","changeValue","decimals","roundNumber","hiddenInput","elementPrevValue","setNumber","minValue","maxValue","stepValue","getNumericValidClassList","updateHTMLAttrToWrapper","numericClassName","numericStyle","spinDown","spinUp","wireSpinBtnEvents","formattedValue","operation","isInteract","performAction","raiseChangeEvent","checkErrorClass","setElementValue","resetFormHandler","setSpinButton","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveOnSpinner","unwireSpinBtnEvents","beforeUpdate","preventHandler","iOS","currentPos","prevPos","valArray","ignoreKeyCode","prevVal","cursorPosChanged","validateDecimalOnType","parseValue","parsedValue","localChange","updatedValue","correctRounding","floatExp","floatValue","floatStep","valueCount","stepCount","roundValue","precision","divide","updateCurrency","propVal","numberOfDecimals","getNumberOfDecimals","modifyText","validateState","elementValue","serverDecimalSeparator","EXPREGEXP","currentChar","isAlterNumPadDecimalChar","fractionRule","mouseWheel","rawEvent","focusEventArgs","formatValue_1","blurEventArgs","focusEvent","getElementData","mouseUpClick","touchEvent","floatLabelTypeUpdate","decrement","updateSpinButton","updateClearButton","propValue","NumericEditCell","keyEventHandler","TEXTBOX_FOCUS","TextBox","isHiddenInput","isForm","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","isBlank","multiline","textarea","apiAttributes","attrs_1","autoCompleteTxt","getInputValidClassList","setInitialValue","updatedClassValues","inputClassName","keydownHandler","resetForm","animationHandler","resetValue","interaction","resetInputHandler","DefaultEditCell","NormalEdit","currentVirtualData","allowEditOnDblClick","editComplete","editRowIndex","getEditArgs","editedData","primaryKeys","primaryKeyValues","rObj","inlineEditHandler","prevData","argsCreator","begineditargs","editargs","applyFormValidation","edFail","validationArgs","editIdx","addIdx","addedRowIndex","isDlg","dlgWrapper","dlgForm","getCurrentEditedData","mhdrFrm","mCntFrm","mvblEle","frHdrFrm","frCntFrm","eleLength","endEditArgs","resetMovableContentValidation","destroyElements","destroyWidgets","editHandler","edSucc","editSuccess","editFailure","updateCurrentViewData","requestSuccess","stopEditStatus","dragRow","dragRowUid","dragRowObject_1","dropRowObject","aggregateModule","groupedRowReorder","getGroupAggregateTemplates","closeForm","cloneRow","originalRow","cloneFrozen","needRefresh","closeEditArgs","inlineAddHandler","addArgs","dataLen","tmpRecord","contained","addElements","editElements","InlineEdit","BatchEdit","cellDetails","originalCell","cloneCell","editNext","preventSaveCell","validationColObj","prevEditedBatchCell","onBeforeCellFocused","batchCancelFunction","setCellIdx","isAddRow","validateFormObj","frzRightCols","prevEditedBatchCellMatrix","crtRowIndex","editCellFromIndex","isAdded","allRows","isInsert","removeBatchElementChanges","refreshRowIdx","isInstertedRemoved","removeHideAndSelection","tdElements","bulkDelete","bulkAddRow","batchSave","removeSelectedData","beforeBatchSaveArgs","removeRowObjectFromUID","newTableName","rowClone","deleteRowUid","beforeBatchDeleteArgs","uniqueid","out_j_1","getGridRowElements","dataObjects","getIndexFromData","visibleColumns","defaultData","getDefaultData","beforeBatchAddArgs","movableCnt","leftCnt","rightCnt","tbody$$1","totCount","tableTanName","selectedRowAdd","selectedRowAddCells","frTr","i_2","removeFrozenTbody","renderFrozenAddRow","btmIdx","getBottomIndex","findNextEditableCell","tableName$$1","isValOnly","validation","checkNPCell","dValues","editCellExtend","mRowData","getDataByIndex","getCellIdx","cellEditArgs","isColored","newReactTd_1","newReactTd","setChanges","currentRowObj","movableRowObject","frRowObject","rowcell","insertedRows","isSingleInsert","fLeftInsertedRow","fRightInsertedRow","mInsertedRow","fLeftCount","editRowIdx","fRightCount","mColumnCount","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","inputElements","createHTML5Rules","FormValidator_1","addRules","removeRules","validateRules","rules_1","clearForm","getInputElement","validClass","elements_2","inputParent","grandParent","getErrorElement","hideMessage","defRules","acceptedTypes","allRule","defRules_1","rule","defRule","annotationRule","ruleCon","ruleName","rulesList","ruleFirstName","ruleSecondName","minvalue","maxvalue","customMessage","annotationMessage","getErrorMessage","isCheckable","submitHandler","hiddenType","validateHiddenType","vhPos","hPos","rules_2","errorMessage","errorRule","removeErrorRules","showMessage","createErrorElement","optionalValidationStatus","refer","currentRule","checkValidator","ruleValue","errorOption","Message","errorContainer","customPlacement","checkRequired","inputType","uNum","POPUPWRAPPER","NONEDIT","DatePicker","isDateIconClicked","isAltKeyPressed","checkPreviousValue","maskedDateValue","isIconClicked","isDynamicValueChanged","datepickerOptions","setAllowEdit","enableMask","updateInputValue","previousElementValue","inputValueCopy","l10nLocale","INPUTWRAPPER","isCalendar","minMaxUpdates","tempFormat","checkStringValue","returnDate","formatDateTime","valueDate","basicISOString","bindInputEvent","dateIconHandler","keyboardModules","inputKeyActionHandle","popupUpdate","preventEventBubbling","interopAdaptor","invokeMethodAsync","calendarKeyActionHandle","strictModeUpdate","calendarKeyboardModules","clickedView","defaultAction","targetdate","toLocaleUpperCase","iconRight","CalendarSwipeHandler","TouchStartHandler","preventArgs","setAriaAttributes","touchStart","setAriaDisabled","yearHeading","h2","monthSpan","modelCloseHandler","modelTodayButton","selectCalendar","prevent_1","outOfRange","mobilePopupWrapper","prevent_2","closeEventCallback","prevent","inputElementCopy","ngTag","nameAttribute","dynamic","valueCopy","previousValCopy","renderDayCell","isDisabledDate","dayOfTheWeek","POPUPDIMENSION","DAY","NAVIGATION","FOCUS","EDITABLE","createdEl","timeCollections","TimeMaskPlaceholder","TimePicker","disableItemCollection","timeOptions","openPopupEventArgs","createInputElement","setTimeAllowEdit","validateInterval","validateDisable","checkErrorState","clientTimeZoneDiff","clearIconState","setMinMax","initMin","initMax","popupCreation","valueIsDisable","resetState","checkTimeFormat","checkInValue","isNavigate","isTextSelected","valueWithMinutes","updatedCssClassesValue","isNullOrEmpty","getCldrDateTimeFormat","cldrFormat","isInvalid","valueExp","valueExpression","setCurrentDate","getCultureTimeObject","enableElement","rippleFn","propertyList","generateList","listWrapper","addSelection","getPopupHeight","containerStyle","setPopupWidth","timePopupCloseHandler","createDateObj","updatedClassesValue","timeStyle","cssClassNew","cssClassOld","removeErrorClass","disableTimeIcon","selectInputText","setCursorToEnd","getMeridianText","meridian","getCursorSelection","getActiveElement","setScrollTo","findScrollTop","initialTime","scrollTime","cldrTimeFormat","cldrDateFormat","getCultureDateObject","dateToNumeric","getExactDateTime","compareFormatChange","updatePlaceHolder","popupHandler","curPos","cursorDetails","focusSelection","isSeparator","objToString","createMask","previousState","documentClickHandler","mobileTimePopupWrap","disposeServerPopup","checkValueChange","valueProcess","maxVal","dateVal","strictOperation","inputEventHandler","clearHandler","inputEvent","timeValue","raiseClearedEvent","getTextFormat","strArray","newval","findNextElement","textVal","timeVal","selectNextItem","validLiElement","backward","elementIndex","isCheck","getHoverItem","setActiveClass","timeParse","listBaseOptions","getProperty","popupAlignment","timePopupElement","formatValues","DATETIMEPOPUPWRAPPER","ICONANIMATION","DateTimePicker","scrollInvoked","dateTimeOptions","blurHandler","isTimePopupOpen","popupObject","dateTimeWrapper","keyboardHandler","unBindInputEvents","timeIcon","timekeyConfigure","cldrDateTimeFormat","bindInputEvents","validateMinMaxRange","isDateObject","disablePopupButton","checkValidState","isDisable","renderTimeIcon","timeHandler","dateHandler","inputKeyAction","getCldrFormat","isDatePopupOpen","listCreation","listDetails","wireTimeListEvents","addTimeSelection","setTimeScrollPosition","openPopup","timeModal","timeKeyActionHandle","unWireTimeListEvents","dateTimeCloseHandler","timeContent","setDimension","setTimeHover","removeTimeHover","nextElement","getFullDateTime","combineDateTime","setTimeActiveClass","setTimeActiveDescendant","removeTimeSelection","getTimeHoverItem","calculateStartEnd","tempStartValue","tempMin","tempEndValue","tempMax","dateTimeCloseEventCallback","maskedDateModule","getTimeActiveElement","status_1","findNextTimeElement","dateTimeVal","listCount","timeElementValue","setTimeValue","timeKeyHandler","nextItemValue","DatePickerEditCell","dateanddatetimerender","datePickerEditCell","datePickerClose","TemplateEditCell","isValidationApplied","updateEditObj","createAlertDlg","createConfirmDlg","updateColTypeObj","editCellType","alertDObj","refreshToolbar","showDeleteConfirmDialog","endEditing","form1","form2","mFormObj","form3","frFormObj","getCurrentEditCellData","getValueFromType","destroyToolTip","dlgWidget","dlgOk","dlgCancel","alertClick","btnOptions","executeAction","destroyEditComponents","eventDetails","inputs","col_1","isRestrict","isDestroyVirtualForm","formObjects","virtualFormObj","curretRowFocus","focusableEditCells","commandColCell","movableEditRow","rightFrEditRow","movableHeditedRow","rightHEditRow","preventObj","newRule","mForm","createFormObj","validationComplete","valErrorPlacement","getElemTable","isFHdr","resetElemPosition","tdRight","elemRight","customForm","gcontent","validationForBottomRowPos","isFHdrLastRow","isBatchModeLastRow","isSpace","viewPortRowCount","fHeraderRows","inputClient","gHeight","rowsHeight","AddEditors","editors","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","uniqueId","touchHandler","scrollEle","createOverlay","createNavIcon","setScrollState","scrollStep","innerEle_1","scrollItems","nav","overlay","navEles","rightOverlayEle","clsRight","navItem","leftEle","eventBinding","rightAttributes","clsLeft","leftAttributes","navEle","navLeftItem","keyTimer","keyTimeout","eleScrolling","onKeyUp","tabHoldHandler","repeatScroll","clickEventHandler","trgt","scrollDis","isContinuous","rootEle","frameScrollRequest","swipeEle","scrollUpdating","scrollVal","scrollValue","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","disEle","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","scrollCnt","buildTag","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","overflowMode","destroyScroll","docEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","keyHandling","clst","navChk","scrollChk","popAnimate","eleFocus","popupCheck","extendedPopup","focusFirstVisibleEle","focusLastVisibleEle","popFrstEle","activeEleRemove","tbarScrollChk","eleContains","sib","tbrItems","isPopupElement","popupNav","popupClickHandler","clickedArgs","getElementOffsetY","renderLayout","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","showAlwaysInPopup","changeOrientation","initScroll","innerItems","itemWidthCal","getScrollCntEle","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleItem","multiVar","extendVar","eleInlineItem","innerNav","createPopupIcon","innerNavDom","checkPriority","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodePri","tbResize","tbarElement","sepItem","extendEle","popupInit","eleStyles","borderRightWidth","tbarPopupHandler","toolEle","popupElePos","popIcon","overflowHeight","tbEleData","inEle","pre","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","items_1","algIndex","removeItems","removeItemByIndex","eleIdx","indexAgn","clearToolbarTemplate","btnItem","templateRender","templateProp","isComponent","itemType","regEx","buttonRendering","dom","iconPos","textStr","btnTxt","prefixIcon","suffixIcon","tempDom","itemClick","showTextOn","sTxt","getDataTabindex","multirowele","updateHideEleTabIndex","eleIndex","templateEle","registeredTemplates","closestItem","tEle","changedProb","popupPriCheck","booleanCheck","itemCol","hideItem","predefinedItems","isSearched","gridID","isAdaptive","excludingItems","preItems_1","itemStr","localeName","ColumnChooser","responsiveFilter","responsiveSort","responsiveBack","createToolbar","addReactToolbarPortals","bindSearchEvents","searchElement","refreshToolbarItems","updateSearchBox","toolbarCreated","isNormal","tool","clicked","toolbarClickHandler","viewStr","renderResponsiveSearch","refreshResponsiveToolbarItems","isSearch","searchBoxObj","disableItems","getItemObject","toolbarItems_1","itemObject","itemName","gID","newArgs","toolbarargs","tarElement","onFocusIn","setFocusToolbarItem","getFocusToolbarElements","getFocusToolbarItems","keyPressedHandler","targetParent","reRenderToolbar","removeResponsiveSearch","rowSelectedFunction","rowDeSelectedFunction","_isNativeReflectConstruct","_possibleConstructorReturn","_React$Component","defaultNode","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appear","isMounting","appearStatus","unmountOnExit","mountOnEnter","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","nodeRef","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","_this3","onExit","onExiting","onExited","nextState","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","TransitionGroupContext","baseClassActive","Fade","_props$baseClass","_props$baseClassActiv","_props$innerRef","otherProps","transitionProps","pickKeys","pick","FadePropTypes","backdrop","backdropClassName","backdropTransition","centered","contentClassName","fade","fullscreen","keyboard","labelledBy","modalClassName","modalTransition","onClosed","onOpened","returnFocusAfterClose","scrollable","trapFocus","unmountOnClose","wrapClassName","propsToOmit","Modal","_element","_originalBodyPadding","getFocusableChildren","handleBackdropClick","handleBackdropMouseDown","handleEscape","handleStaticBackdropAnimation","handleTab","manageFocusAfterClose","clearBackdropAnimationTimeout","showStaticBackdropAnimation","_isMounted","_mouseDownElement","_dialog","modalIndex","openCount","focusableChildren","totalFocusable","currentFocus","getFocusedChild","focusedIndex","_backdropAnimationTimeout","isAppearing","_triggeringElement","_mountContainer","allElements","getTarget","getOriginalBodyPadding","originalBodyOverflow","modalOpenClassName","modalOpenClassNameRegex","dialogBaseClass","isModalHidden","_this$props2","modalAttributes","hasTransition","Backdrop","renderModalDialog","closeAriaLabel","wrapTag","ModalHeader","closeButton","_props$wrapTag","WrapTag","_props$closeAriaLabel","ModalBody","ModalFooter","StockUpdates","setUpdateData","editId","setEditId","dateUpdated","setDateUpdated","alertClass","setAlertClass","editModal","setEditModal","stockStatus","Exists","timeDifference","AdminDashboard","ManageDateRange","reportStartDate","reportEndDate","renderDashboard","RevenueSaleData","RevenueSourceData","SocialMediaData","SearchData","SalePerformanceData","fProductId","ddProducts","ProductDropdownList","filtering","item3","item4","item5","item6","AdminLanding","editData","CommandColumnRenderer","buttonElement","unbounDiv","childRefs","destroyButtons","isVirtualEdit","renderButton","commandType","initiateRender","commandClickHandler","commandColumn","commandCols","typeInString","commandclickargs","commandCol","TextBoxComponent","fieldRequired","AdminOrders","editItem","Title","ProductList","CustomerCart","CustomerOrders","SiteSection","reducePrice","originalPrice","saveItem","valid","deleteItem","deleteData","onGridCommand","handleCouponChange","addProductModal","gridCommands","gridToolbar","ProductQuantity","BrandList","CategoryList","SubCategoryList","fProductBrandId","fSubcategoryId","filteredProducts","toggleAddProduct","handleFilterSelectChange","selectedValue","selectedOptions","handleFilterUnSelectChange","sendEmail","CartId","Sku","orderData","addToCart","currentPrice","sPrice","dateSPriceEnds","existingItem","newItem","removeFromCart","database","renderDataTable","commandClick","renderProductsTable","_data$cartItems","pic","parsedImage","onFilteringUser","UserList","FullName","onFilteringProduct","_data2","_data3","_data4","categoryId","loadCnt","_data5","fullName","toDateString","firstName","lastName","showError","showSuccess","dataId","CheckBoxComponent","DatePickerComponent","ToolbarType","DialogType","tableclass","contentChanged","iframeMouseDown","toolbarClick","refreshBegin","toolbarUpdated","bindOnEnd","renderColorPicker","htmlToolbarClick","destroyColorPicker","keyUp","mouseUp","toolbarRenderComplete","enableFullScreen","disableFullScreen","dropDownSelect","beforeDropDownItemRender","execCommandCallBack","updateToolbarItem","sourceCode","updateSource","beforeDropDownOpen","selectionSave","selectionRestore","expandPopupClick","mouseDown","sourceCodeMouseDown","editAreaClick","contentscroll","colorPickerChanged","tableColorPickerChanged","focusChange","getSelectedHtml","renderInlineToolbar","rtlMode","readOnlyMode","moduleDestroy","enterHandler","xhtmlValidation","resizeInitialized","updateTbItemsStatus","bindCssClass","emojiPicker","maximizeMinimizeClick","blockEmptyNodes","inlineEmptyNodes","CLS_RTE","CLS_DISABLED","CLS_SCRIPT_SHEET","CLS_STYLE_SHEET","CLS_TOOLBAR","CLS_TB_FIXED","CLS_TB_FLOAT","CLS_TB_ABS_FLOAT","CLS_INLINE","CLS_RTE_EXPAND_TB","CLS_FULL_SCREEN","CLS_QUICK_TB","CLS_POP","CLS_QUICK_DROPDOWN","CLS_INLINE_POP","CLS_INLINE_DROPDOWN","CLS_DROPDOWN_POPUP","CLS_DROPDOWN_ICONS","CLS_DROPDOWN_ITEMS","CLS_DROPDOWN_BTN","CLS_RTE_CONTENT","CLS_TB_ITEM","CLS_TB_WRAP","CLS_SHOW","CLS_HIDE","CLS_VISIBLE","CLS_FOCUS","CLS_RM_WHITE_SPACE","CLS_IMGBREAK","CLS_CLICKELEM","CLS_VID_CLICK_ELEM","CLS_AUDIOWRAP","CLS_VIDEOWRAP","CLS_IMGINLINE","CLS_COUNT","CLS_WARNING","CLS_ERROR","CLS_ICONS","CLS_ACTIVE","CLS_EXPAND_OPEN","CLS_RTE_ELEMENTS","CLS_TB_BTN","CLS_TB_IOS_FIX","CLS_LIST_PRIMARY_CONTENT","CLS_COLOR_CONTENT","CLS_RTE_READONLY","CLS_RTE_HIDDEN","CLS_RTE_IMAGE","CLS_RTE_FIXED_TB_EXPAND","CLS_RTE_TB_ENABLED","editorMode","getEditPanel","editorManager","nodeSelection","setCursorPoint","getDocument","KEY_DOWN","ACTION","FORMAT_TYPE","KEY_DOWN_HANDLER","LIST_TYPE","KEY_UP_HANDLER","KEY_UP","MODEL_CHANGED_PLUGIN","MODEL_CHANGED","MS_WORD_CLEANUP_PLUGIN","ON_BEGIN","SPACE_ACTION","FORMAT_PAINTER_ACTIONS","EMOJI_PICKER_ACTIONS","isMetaKey","ViewSource","onInitialEnd","updateSourceCode","observer","CONSTANT","getSourceCode","previewKeyDown","previewElement","wireBaseKeyDown","unWireBaseKeyDown","toolbarSettings","baseToolbar","toolbarObj","targetItem","tbItems","updateItem","getBaseToolbarObject","updateValueData","iframeSettings","rteContent","getTextAreaValue","disableToolbarItem","enableToolbarItem","setContentHeight","invokeChangeEvent","editHTML","enableUndo","addAudioVideoWrapper","getViewPanel","executeGroup","subCommand","ExecCommandCallBack","commandCallBack","formatPainterCopy","AjaxSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","columnArray","DetailsViewSettings","NavigationPaneSettings","ToolbarSettings","UploadSettings","templateItems","tools","alignmentLocale","alignmentItems","imageAlignItems","videoAlignItems","displayLocale","audioLayoutOptionLocale","videoLayoutOptionLocale","imageDisplayItems","audioLayoutOptionItems","videoLayoutOptionItems","tableCellItems","tableRowLocale","tableRowsItems","tableColumnLocale","tableColumnsItems","tableVerticalLocale","TableCellVerticalAlignItems","tableStyleLocale","TableStyleItems","formatItems","fontColor","numberFormatList","bulletFormatList","localeItems","windowKeys","defaultEmojiIcons","ImageSettings","AudioSettings","VideoSettings","FileManagerSettings","getImageUrl","uploadUrl","FileToolbarSettings","autoUpload","minFileSize","maxFileSize","allowedExtensions","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","scrollableParent","evenArgs","beginEventArgs","enableFloating","inlineMode","getToolbarElement","toggleParentOverflow","removeFixedTBarClass","hideFullScreen","addFixedTBarClass","EnterKeyAction","getRangeNode","getRange","startNode","startContainer","endNode","endContainer","isTableEnter","formatTags","curElement","blockElement","domNode","isBlockNode","shiftKey_1","actionBeginArgs","startOffset","endOffset","deleteContents","focusElem","currentFocusElem","currentLastElem","shiftEnterKey","newElem","createInsertElement","nearBlockNode","blockParentNode","isMediaNode","isFocusedFirst","splitFirstText","removeBRElement","isNearBlockLengthZero","nodeCutter","SplitNode","insertElem","finalFocusElem","audioVideoElem","isBRInserted","lastNode","brElm","audioModule","hideAudioQuickToolbar","videoModule","hideVideoQuickToolbar","startParentElem","isHeadingTag","insertElm","previousNode","currentParentLastChild","isLastNodeLength","isImageElement","focusBRElem","imageElement","lineBreakBRElem","insertBRElement","outerBRElem","insertFocusContent","isEmptyBrInserted","isFocusTextNode","insertNode","brElm2","undoRedoItems","inlineNode","getDropDownValue","returnType","isIDevice","getFormattedFontSize","i10n","itemLocale","setToolbarStatus","isPopToolbar","updateDropDownFontFormatLocale","dropDown","dropDownModule","tbElements","formatDropDown","formatContent","alignDropDown","fontNameDropDown","fontNameItems","fontNameContent","fontSizeDropDown","fontSizeItems","fontSizeContent","getCollection","getTBarItemsIndex","itemsIndex","updateUndoRedoStatus","undoRedoStatus","trgItems","getTextNodesUnder","docElement","toObjectLowerCase","convertedValue","getEditValue","rteObj","enableHtmlEncode","updateTextNode","tempNode","resultElm","isPreviousInlineElem","previousParent","emptyBlockElem","emptyInlineElem","imageElm","getDefaultValue","isEditableValueEmpty","getLocaleFontFormat","DialogRenderer","beforeClose","RichTextEditor","quickToolbarSettings","showCharCount","fileManagerSettings","updateEnable","isFocusOut","isRTE","defaultResetValue","isResizeInitialized","onFocusHandler","onResizeHandler","clickPoints","setContainer","originalElement","rteOuterWrapper","getID","currentClassList","showEmojiPicker","executeCommand","commandName","htmlPurifier","undo","getUndoRedoStack","currentInsertContentLength","tempElem","formatPainterSettings","formatPainterAction","htmlEditorModule","tableSettings","imageValue","insertImageSettings","wrapTemp","audioValue","insertVideoSettings","linkValue","sourceCodeModule","RTERender","enableXhtml","getXhtml","audioElm","audioWrapElem","audioInnerWrapElem","videoElm","videoWrapElem","cleanList","currentStartContainer","currentEndContainer","currentStartOffset","isSameContainer","closestLI","isDetached","currentLast","setSelectionText","restrict","pointer","removeNodeArray","notFormatPainterCopy","FormatPainterEscapeAction","formatPainterModule","previousAction","placeHolderWrapper","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","allClassName","removeHtmlAttributes","undoRedoManager","wrapperElm","selectedHtml","getRangeAt","cloneContents","showInlineToolbar","currentRange","targetElm","showInlineQTBar","hideInlineToolbar","hideInlineQTBar","nVal","updatePanelValue","countModule","refreshToolbarOverflow","frameSetting","removeSheets","setIframeSettings","renderCount","wireContextEvent","unWireContextEvent","srcList","getTextArea","updateReadOnly","editPanel","unbindEvents","printArgs","printingArgs","fullScreenModule","muteToolbarUpdate","enableTBarItems","removeToolbarItem","removeTBarItems","enterKeyModule","styleSrc","scriptSrc","InjectSheet","scriptSheet","scriptEle","createScriptElement","styleEle","createStyleElement","isPropertyChange","compiledTemplate","displayTempElem","appendElem","updateResizeFlag","getInsertImgMaxWidth","imageModule","editEle","editEleMaxWidth","imgPadding","getInsertVidMaxWidth","vidPadding","rteHeightPercent","heightPercent","cntEle","rteHeight","tbHeight","getToolbarHeight","rzHandle","rzHeight","expandPopHeight","getExpandTBarPopHeight","tbWrapHeight","getHtml","showSourceCode","getCharCount","htmlText","InsertLink","InsertImage","InsertAudio","InsertVideo","InsertTable","getBaseToolbar","getInlineBaseToolbar","preventDefaultResize","preventImgResize","defaultResize","cloneValue","saveInterval","autoSaveOnIdle","updateValueOnIdle","getUpdatedValue","tableModule","removeResizeElement","isValueChangeBlurhandler","updateIntervalValue","idleInterval","markdown","getUndoStatus","redo","rteElement","trg","documentNode","wireScrollElementsEvents","scrollParentElements","contextHandler","EJ2Touch","unWireScrollElementsEvents","closestElem","onSelection","setAutoHeight","iframeElement_1","arrayKey","editorKeyDown","onIframeMouseDown","RichTextEditorComponent","upDownKeyHandler","defaultIdx","liIdx","selectedLi","DropDownButton","isPopupCreated","canOpen","openPopUp","createPopupOnClick","createItems","isUniqueId","getULElement","getTargetElement","appendItems","hasIcon","tempItem","createAnchor","getPopUpElement","blankIcon","blankIconList","iconLi","cssProp","setBlankIconStyle","appendArrowSpan","setActiveElem","isColorPicker","activeElem","popupUnWireEvents","keyBoardHandler","dropDownBtn","delegateMousedownHandler","mousedownHandler","popupWireEvents","closeActionEvents","focusoutHandler","getLI","liTarget","selectEventArgs","popupElem","splitButton","ul_1","wrapperWidth","popupLeft","openArgs","ul_2","arrowSpan","TAGNAME","SplitButton","createPrimaryButton","createSecondaryButton","secondaryBtnObj","btnModel","primaryBtnObj","btnElem","dropDownBtnModel","callBackPromise","primaryBtnClickHandler","btnKeyBoardHandler","altdownarrow","TicksData","ColorRangeData","LimitData","TooltipData","Slider","horDir","verDir","rangeBar","transitionOnMaterialTooltip","customAriaText","isDragComplete","initialTooltip","isElementFocused","tickElementCollection","tooltipFormatInfo","ticksFormatInfo","formChecker","formResetValue","internationalization","formatInfo","makeRoundNumber","elementVal","fractionalToInteger","noOfDecimals","tens","setZindex","sliderContainer","showOn","sliderTrack","getThemeInitialization","setHandler","createRangeBar","limits","createLimitBar","setOrientClass","showButtons","setButtons","rangeValueUpdate","checkHandleValue","previousChanged","setLimitBar","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","closeTooltip","handleFocusOut","focusSliderElement","sliderBarClick","sliderBarMove","sliderBarUp","preDir","setBarColor","tooltipValue","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","isAndroid","smallStep","showSmallTicks","largeStep","islargeTick","tickWidth","largestep","createTick","formatTicksValue","decimalPoints","ticksAlignment","ticksWrapper","tickElements","scaleAlignment","spanElement","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","remain","addition","positionToValue","handlepos","handleVal","focusedElement","behindElement","eventX","eventY","checkRepeatedValue","handleValueAdjust","handleValue","assignValue","handleNumber","minDiff","dragRangeBarMove","xPostion","yPostion","rangeBarDragged","secondPartRemain","firstPartRemain","valueAndPostion","dragRangeBarUp","wireButtonEvt","sliderFocusOut","rangeBarMousedown","elementClick","onresize","changeSliderType","updateConfig","changeRtl","limitsPropertyChange","setMinMaxValue","setTooltip","trackClassName","colorRange","startingPosition","endPosition","trackContainer","APPLY","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","ColorPicker","Apply","ModeSwitcher","createWidget","createSplitBtn","enableOpacity","noColor","slicedValue","initialInputValue","tileRipple","ctrlBtnRipple","createPalette","firstPaletteFocus","createPicker","getDragHandler","isRgb","createCtrlBtn","toggleDisabled","refreshPopupPos","splitBtn","onOpen","rgba","convertToRgbString","hexToRgb","getPopupEle","popupInst","getPopupInst","bindCallBackEvent","observeOpenArgs","observedCloseArgs","onPopupClose","destroyOtherComp","presetColors","paletteGroup","appendElement","appendPalette","modeSwitcher","setNoColor","hsv","rgbToHsv","refEle","tile","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","cValue","updateOpacityInput","updatePreview","opacityTextBoxInst","previewContainer","isPicker","createNumericInput","numericInput","appendValueSwitchBtn","hexInput","appendOpacityValue","valueSwitchBtn","formatSwitchHandler","btnWrapper","controlBtnWrapper","appendModeSwitchBtn","getTooltipInst","setTooltipOffset","convertToHsvString","updateHsv","isKey","removeTileSelection","convertRgbToNumberArray","pickerKeyDown","ctrlBtn","ctrlBtnKeyDown","handlerDown","addCtrlSwitchEvent","previewHandler","paletteClickHandler","paletteKeyDown","ctrlSwitchBtn","triggerChangeEvent","handlerDragPosition","observedcloseArgs","setHsv","handlerMove","handlerEnd","switchToPalette","ctrlBtnClick","noColorTile","switchToPicker","grpEle","tiles","prevSelectedEle","tilePosition","keySelectionChanges","newEle","emptyCount","inputValueChange","numericElemColl","tooltipInst","bigInt","changeModeSwitcherProp","ctrlSwitchWrapper","changeShowBtnProps","ctrlBtnWrapper","changeValueProp","setInputEleProps","changeDisabledProp","changeCssClassProps","changeRtlProps","changePaletteProps","changeOpacityProps","count_1","ToolbarRenderer","destroyTooltip","popupOverlay","onPopupOverlay","removePopupContainer","toolbarBeforeCreate","toolbarClicked","dropDownSelected","popupModal","popupContainer","renderToolbar","rteToolbarObj","beforeCreate","renderDropDownButton","beforeItemRender","renderListDropDown","inlineEle","currentDropdown","setIsModel","paletteSelection","dropDownArgs","colorbox","borderBottomColor","renderColorPickerDropDown","colorPicker","initialBackgroundColor","colorpickerValue","closestElement","setColorPickerContentWidth","pickerRefresh","dropElement","onmousedown","onkeydown","colorPickerContent","beforeTileRender","colorPickerArgs","beforeModeSwitch","toolbarPanel","BaseToolbar","renderFactory","itemConfigs","setRtl","getTemplateObject","callback_1","currentContentElem","tbItems_1","shortCutKey","getToolbarOptions","toolbarRenderer","DropDownButtons","initializeInstance","beforeRender","dropdownContent","renderDropDowns","containerType","tbElement","formatOLItem","numberFormatListDropDown","formatULItem","bulletFormatListDropDown","formatItem","fontItem","getEditNode","fontsize","renderAlignmentDropDown","renderDisplayDropDown","rowDropDown","columnDropDown","cellDropDown","verticalAlignDropDown","tableStylesDropDown","getUpdateItems","dropDownItems","fontItems","tableRowsDropDown","tableColumnsDropDown","tableCellVerticalAlignDropDown","displayDropDown","imageAlignDropDown","removeDropDownClasses","destroyDropDowns","updateCss","dropDownObj","ToolbarAction","renderSelection","tableQTBar","listItem","listStyle","listImage","isToolbar","isTransformChild","editableElement","toolbarBindEvent","keyBoardModule","toolBarKeyDown","createToolbarElement","tbWrapper","getToolbarMode","tbMode","Scrollable","checkToolbarResponsive","tBarMode","MultiRow","checkIsTransformChild","transformElements","toggleFloatClass","isFloat","floatOffset","floatingToolbarOffset","scrollParentRelativeTop","trgHeight","bodyStyle","scrollParentYOffset","scrollParentRect","scrollParentTop","divEle","iframeEle","showFixedTBar","hideFixedTBar","addTBarItem","prefixId","updateToolbarStatus","hideScreen","popHeight","expandPopup","isToolbarDestroyed","destroyToolbar","toolbarActionModule","getDOMVisibility","focusChangeHandler","dropDownBeforeOpenHandler","tbFocusHandler","activeElm","isToolbaractive","tbKeydownHandler","extendedTbar","onRefresh","Formatter","saveSelection","isKeyboardVideoInsert","getAncestorNode","commonAncestorContainer","action_1","itemCollection","isTableModule","ensureInsideTableList","enterAction","selectType","callbackArgs","isNotify","undoRedoStack","inlineQTBar","quickTBarObj","IMAGE","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","NodeSelection","startNodeName","endNodeName","saveInstance","cloneRange","documentFromRange","getNodeArray","isChildNode","nodeCollection","getNode","getNodeCollection","getParentNodeCollection","getParentNodes","getSelectionNodeCollection","getSelectionNodes","getSelectionNodeCollectionBr","getSelectionNodesBr","getInsertNodeCollection","getInsertNodes","isStart","setRangePoint","constant","setSelectionContents","selectNode","setSelectionNode","selectNodeContents","getSelectedNodes","insertParentNode","newNode","surroundContents","htmlKeyConfig","selfClosingTags","setEditFrameFocus","iframe","markerClassName","DOMNode","currentDocument","isLink","rawAttributes","rawAttr","orderRawAttr","attrKey","attrValue","clearAttributes","openTagString","closeTagString","createTagString","isList","parseHTMLFragment","DocumentFragment","createContextualFragment","unWrap","unWrapNode","getSelectedNode","TEXT_NODE","nodeFinds","existNodes","isEditorArea","getRangePoint","getPreviousNode","saveMarker","startTextNode","endTextNode","setMarker","startChildNodes","finalNode","getLastTextNode","existNode","textNodes","ensureSelfClosingTag","isTable","parNode","tdNode","createTempNode","getImageTagInSelection","blockNodes","collectionNodes","ignoreTableTag","listNodes","Lists","applyListsHandler","spaceKeyAction","testList","olListRegex","elementStart","testCurrentList","olListStartRegex","currentContent","spaceList","preElement","preElemULStart","nextElemULStart","startElementOLTest","preElementOLTest","nextElementOLTest","enterList","hasMediaElem","videoElemList","embedVideoElem","startNodeParent","GetSpliceNode","backspaceList","parentList","removeList","firstListBackSpace","commonLIParent","currentLIElem","currentElem","commonAncestor","startEle","isNested","ignoreDefault","currentAction","getAction","revertList","revertClean","nestedList","cleanNode","prevSibling","noPreviousElement","firstNode","firstNodeOL","siblingListOL","siblingListLI","siblingListLIFirst","nestedElement","nestedElementLI","firstNodeLI","lastSelectionNode","listsNodes","setSelectionBRConfig","allSelectedNode","selectedNodes","currentFormatNodes","previousCurrentNode","preNode","postNode","applyLists","startElem","endElem","isRevert","removeEmptyListElements","checkLists","newTag","replaceHTML","collectionString","listElem","listStyleType","nodesTemp","liParents","contentNodes","findUnSelected","rightIndent","indentElements","childElements","childLI","viewNode","childNode","nodeInnerHtml","emptyUl","emptyLi","InsertMethods","WrapBefore","AppendBefore","Wrap","NodeCutter","isCollapsed","setStartBefore","setEndAfter","extractContents","spliceEmptyNode","isRteElm","GetCursorStart","GetCursorRange","cursorRange","TrimLineBreak","GetCursorNode","Formats","applyFormats","endCon","pTag","brNode","startCon","preElem","endPreElem","deleteContent","removeCodeContent","lastEmpty","lastBeforeBr","startParent","paraFocus","isNotEndCursor","referNode","insertMarker","brTag","previousSib","setCursorPosition","markerElem","mrkParentElem","focusSelectionParent","tempSpanPElem","tempSpan","isSelectAll","formatsNodes","exeValue","cleanFormats","replaceNode","replaceTag","preFormatMerge","preNodes","ignoreAttr","InsertHtml","Insert","editNode","findFirstTextNode","isCursor","closestParentNode","closestEle","pasteInsertHTML","sibNode","lasNode","removeEmptyElements","imageFocus","paraElem","isSingleNode","currentBlockNode","getImmediateBlockNode","containsBlockNode","removingComments","allChildNodes","parentElem","insertTempNode","isFirstTextNode","paraElm","contentsDeleted","firstParaElm","nearestAnchor","immediateBlockNode","placeCursorEnd","cursorPos","blockNode","liNode","splitedElm","tableElm","tdElm","borderLeft","borderRight","findDetachEmptyElem","emptyElements","lineWithDiv","detachableElement","LinkCommand","linkCommand","createLink","openLink","removeLink","closestAnchor","selectParent","domSelection","createAchorNode","createLinkNode","linkText","txtArray","inlineNodes","removeNodes","anchorNodes","finalinlineNodes","j_1","j_2","linkNode","containsNode","Alignments","alignments","applyAlignment","getTableNode","isTableAlign","alignmentNodes","imageTags","elementNode","imgObj","imageCommand","Indents","indentValue","applyIndents","indentsNodes","parentNodes","marginLeftOrRight","indentsValue","CLASS_IMAGE_RIGHT","CLASS_IMAGE_LEFT","CLASS_IMAGE_CENTER","CLASS_IMAGE_BREAK","CLASS_CAPTION","CLASS_CAPTION_INLINE","CLASS_AUDIO_INLINE","CLASS_CLICK_ELEM","CLASS_VIDEO_CLICK_ELEM","CLASS_AUDIO","CLASS_VIDEO","CLASS_AUDIO_WRAP","CLASS_EMBED_VIDEO_WRAP","CLASS_AUDIO_FOCUS","CLASS_VIDEO_FOCUS","CLASS_VIDEO_INLINE","ImageCommand","createImage","insertImageLink","openImageLink","editImageLink","removeImageLink","removeImage","insertAltTextImage","imageDimension","imageCaption","imageJustifyLeft","imageJustifyCenter","imageJustifyRight","imageInline","imageBreak","isReplaced","imgElement","imgEle","selectedNode","imgElm_1","altText","calculateStyleValue","capImgWrap","textEle","newTextEle","insertElement","AudioCommand","audioCommand","createAudio","audioEle","audElement","sourceElement","clickElement","audioElm_1","VideoCommand","videoCommand","videoWrapNode","videoClickElem","createVideo","videoDimension","vidElement","isEmbedUrl","videoEle","videoElm_1","editAreaVideoClick","TableCommand","insertRow","insertColumn","deleteColumn","removeTable","tableHeader","tableVerticalAlign","HorizontalSplit","VerticalSplit","tableMove","tblBody","tdWid","removeEmptyNode","emptyLiChild","getSelectedCellMinMaxIndex","curTable","minI","maxI","minJ","maxJ","selectedCellIndex","getCorrespondingIndex","minMaxIndex","FindIndex","startRow","endRow","startColumn","endColumn","isBelow","allCells","getCorrespondingColumns","newRow","isHeaderSelect","curCell","curRow","currentWidth","currentTabElm","thTdElm","oldWidth","colTemplate","tBodyHeadEle","deleteIndex","selectedMinMaxIndex","minCol","maxCol","colSpanVal","rowHeadEle","sContainer","startChildLength","rowSpanVal","getMergedRow","focusTrEle","mergedRow","selectedTable","headerExit","colSpanCount","createTHead","deleteTHead","tableCell","verticalAlign","mergeCellContent","minMaxIndexes","getSelectedMinMaxIndexes","firstCell","rowSelectedCells","updateRowSpanStyle","updateColSpanStyle","colValue","colMin","eleArray","updateCellAttribute","rowValue","rowMin","correspondingCells","minRow","maxRow","currentRowCol","targetRowCol","newCell","activeCellIndex","activeCellRowSpan","avgCount","avgRowIndex","newTrEle","correspondingColumns","activeCellcolSpan","colEle","colspan_1","nextCol","highlightCells","minRowIndex","maxRowIndex","minColIndex","maxColIndex","minMaxValues","MinMax","activeCellTag","targetCellTag","activeRowIndex","activeColumnIndex","targetRowIndex","targetColumnIndex","activeCellList","activeIndexes","targetIndexes","IsFormatted","getFormattedNode","getFormatParent","isFormattedNode","isUnderline","isStrikethrough","isSuperscript","isSubscript","isFontColor","isFontName","isFontSize","isBackgroundColor","inlineTags","textDecoration","textDecorationLine","backColor","SelectionCommands","applyFormat","painterValues","isFormatted","preventRestore","isFontStyle","currentFormatNode","currentSelector","cursorNode","insertCursorNode","isSubSup","formatNode","insertFormat","removeFormat","applySelection","cursorNodes","cursorFormat","getCursorFormat","emptySpaceNode","brElem","getInsertNode","bgStyle","splitNode","startText","nodeText","isFullNodeSelected","wholeText","nodeTraverse","styleElement","GetFormatNode","nodeArray","priorityNode","getPriorityFormatNode","applyStyles","formatNodeStyles","formatNodeTagName","nodeTraverseCondition","currentNodeElem","curParentElem","liChildContent","isNestedList","nestedListCount","isNestedListItem","num_1","num_2","num_3","insertFormatPainterElem","isSameTextContent","getChildNode","fontColorNode","backgroundColorNode","fontNameNode","fontSizeNode","updateStyles","formatPainterCleanup","clonedElement","elemList","INVALID_TAGS","childELemList","blockChildNodes","currentChild","SelectionBasedExec","InsertHtmlExec","applyHtml","pastedElements","allPastedElements","imgElements","allImgElm","imgElem","ClearFormat","defaultTag","lastText","exactNodes","cloneSelectNodes","clearInlines","reSelection","cloneParentNodes","clearBlocks","selectionNodes","endIndexNode","spliceParent","removeParent","parentIndex","NONVALID_TAGS","NONVALID_PARENT_TAGS","IGNORE_PARENT_TAGS","currentInlineNode","removeInlineParent","ClearFormatExec","applyClear","UndoRedoManager","undoRedoSteps","undoRedoTimer","onAction","getTextContentFromFragment","currentContainer","changEle","removedContent","addedContent","MsWordPaste","olData","ulData","ignorableNodes","borderStyle","upperRomanNumber","lowerRomanNumber","lowerGreekNumber","removableElements","listContents","wordCleanup","wordPasteStyleConfig","allowedStylePropertiesArray","tempHTMLContent","rtfData","pattern4","imageConversion","addListClass","listConverter","styleCorrection","removeUnwantedElements","removeEmptyAnchorTag","breakLineAddition","removeClassName","addTableBorderClass","liChildren","replacableElem","closestListElem","findClosestListElem","allNodes","allTableElm","hasTableBorder","checkVShape","imgSrc","base64Src","imgName","linkRegex","hexValue","hexConversion","convertToBase64","byteArr","conHexStringToBytes","conBytesToBase64","base64Str","byteArrLen","array3","array3length","array4","imgType","picHead","fullImg","elmWithClass","findDetachElem","brElement","regExpStartElem","regExpEndElem","hasParentWithClass","currentParentElem","styleClassObject_1","findStyleObject","removeUnwantedStyle","filterStyles","resultElem","fromClass","styleProperty","valueSplit","changedValue","olULElems","classStyle","inlineStyle","elmWithStyles","elemStyleProperty","styleValue","styleValues","styleClassObject","tempStyle","classNameCollection","stylesCollection","prevflagState","tempCleaner","stNode","currentListStyle","getListContent","startAttr","styleMarginLeft","getlistStyleType","currentClassName","listType","nestedLevel","listStyleTypeName","makeConversion","elemColl","temp1","listContent","currentListClass","prevList","pLevel","isNormalList","pElement","initialNode","getNamedItem","currentStyle","pushContent","listIgnoreTag","listOrder","removableElement","InsertTextExec","insertText","FormatPainterActions","setDeniedFormats","actionHandler","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","allStyles","getPropertyPriority","rangeParent","rangeParentELem","nearBlockParentName","getNearestBlockParentElement","isBlockElement","isInValid","validateELementTag","clonedElem","newBlockElem","inlineElement","childElem","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","colon","prevChar","isPrevSpace","isBlockFormat","range1","blockNewLine","range2","node2","EditorManager","listObj","formatObj","alignmentObj","indentsObj","linkObj","audioObj","videoObj","selectionObj","inserthtmlObj","insertTextObj","clearObj","tableObj","msWordPaste","formatPainterEditor","emojiPickerObj","editorKeyUp","onWordPaste","onBegin","HTMLFormatter","updateFormatter","editElement","statusCollection","subscript","superscript","strikethrough","orderedlist","unorderedlist","backgroundcolor","fontname","createlink","insertcode","ToolbarStatus","targetNode","formatCollection","nodesLength","isNodeChanged","isOrderedList","isUnorderedList","isAlignment","isFormats","isNumberFormatList","isBulletFormatList","HtmlToolbarStatus","toolbarStatus","prevToolbarStatus","onRefreshHandler","tbStatusString","textString","IframeContentRender","iFrameContent","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","childEle","HtmlEditor","rangeCollection","isImageDelete","nodeSelectionObj","colorPickerModule","onToolbarClick","onSelectionSave","onSelectionRestore","isTableClassAdded","contenteditable","isRootParent","previousLength_1","previousRange","previousLength","currentLength","currentChildNode","backSpaceCleanup","deleteCleanup","enableTabKey","textCont","spaceLink","currentRange_1","editorValue","orderedList_1","unOrderedList","isUnOrderedList","rangeElement","oldRangeElement","deleteRangeElement","deleteOldRangeElement","ulListStartRegex","isLiElement","isPreviousNotContentEditable","checkNode","getRootBlockNode","getRangeLiNode","getRangeElement","getCaretIndex","preCaretRange","rangeBlockNode","rangeLiNode","httpRegex","wwwRegex","enterSplitText","contentInnerElem","contentWithSpace","spaceBetweenContent","spaceSplit","divElement","splitTextContent","resultSplitContent","selectNodeEle","splitText","urlText","urlTextRange","selectParentEle","linkDialog","imageDialog","clickTimeout","formatterClass","toolbarUpdate","BaseQuickToolbar","isDOMElement","popupRenderer","dropDownButtons","appendPopupContent","popupType","popupId","stringItems","imgWrapper","isAligned","targetOffsetTop","parentOffsetTop","parentData","editTop","tBarElementHeight","editHeight","popWidth","viewPort","contentTop","windowY","bodyRightSpace","beforeQuickToolbarArgs","editPanelTop","editPanelHeight","bodyRight","toolbarAvail","expTBHeight","tBarHeight","showPopupData","viewSourcePanel","tooltipTargetEle","dataContent","removeEleFromDOM","addQTBarItem","removeQTBarItem","PopupRenderer","quickToolbarOpen","popupPanel","QuickToolbar","formattedItems","getQTBarOptions","popType","renderType","createQTBar","qTBar","initializeQuickToolbars","selectionChangeHandler","keyUpQT","renderQuickToolbars","linkQTBar","imageQTBar","audioQTBar","videoQTBar","textQTBar","LinkToolbar","TextToolbar","ImageToolbar","audio","AudioToolbar","video","VideoToolbar","TableToolbar","renderInlineQuickToolbar","InlineToolbar","deBounce","deBouncer","parentLeft","isIFrame","inlineQTBarMouseDownHandler","onSelectionChange","wireInlineQTBarEvents","unWireInlineQTBarEvents","baseQTObj","baseQuickToolbarObj","appendCount","charCountBackground","htmlLength","AuditLog","SKU","Success","ActionDate","actionDate","AddedBy","addedBy","dateAdded","fullToolbarSettings","simpleToolbarSettings","rteToolbar","bsSize","plaintext","addon","_this$props$type","checkInput","selectInput","rangeInput","formControlClass","BannerLocations","BannerId","bannerId","SectionId","sectionId","Sortable","getHelper","getSortableElement","isValidTarget","onDrag","inst_1","newInst","getSortableInstance","placeHolderElement","oldIdx","getPlaceHolder","newIdx","isPlaceHolderPresent","refreshDisabled","updateItemClass","previousIndex","removePlaceHolder","onDragStart","cancelDrag","onDragStop","prevIdx","curIdx","handled","dropInst","curIdx_1","curIdx_2","scopeName","beforeDropArgs","Sortable_1","initializeDraggable","dragWrapper","dragPlaceholder","grabbedElement","increased","disabledIdx","placeHolderPresent","cltY","targetElements","insertElement_1","ListBox","isDataSourceUpdate","keyDownStatus","ListBox_1","initLoad","isCustomFiltering","initialSelectedOptions","hiddenSelect","updateSelectionSettings","showCheckbox","showSelectAll","l10nSelect","selectAllText","unSelectAllText","checkBoxSelectionModule","checkAllParent","initDraggable","allowDragAndDrop","triggerDragStart","triggerDrag","beforeDrop","beforeDragEnd","dragEnd","initToolbar","prevScope","toolElem","createButtons","updateToolBarState","tBListBox","moveFrom","moveAllTo","moveAllFrom","refreshClearIcon","KeyUp","listBoxClasses","searchEle","noRecElem","filterWireEvents","mainList","initToolbarAndStyles","setCheckboxPosition","setFiltering","filterElem","txtLength","badge","getDragArgs","dragSelected","allowDragAll","boundRect","getDataByValues","customDraggedItem","liColl","droppedData","dropValue","getArgs","sourceArgs","destArgs","dragArgs","sourceArgs1","targetListObj","toSortIdx_1","toIdx_1","getCurIdx","jsonIdx","sIdx","jsonIdx_1","sIdx_1","li_1","fLiColl_1","currIdx_1","fListData_1","fSortData_1","srcIdx","jsonSrcIdx","sortIdx","destIdx","liCollElem_1","removeSelected","sourceElem","updateListItems","sortable","dragArgs1","liCollElem","destElem","listCurrentOptions","triggerBeforeItemRender","isValue","selectItems","getSelectedItems","updateSelectedOptions","selElems","selectAllItems","dupData","itemIdx","removeIdxes","removeLiIdxes","updateLiCollection","getElemByValue","moveUpDown","moveTop","moveBottom","tlistbox","getScopedListBox","moveData","moveAllData","getDataList","getSortedList","checkMaxSelection","liEle","dataValue1","dataValue2","updateMainList","ulList","mainCount","ulEleCount","listindex","valueindex","wireToolbarEvent","getToolElem","clearFilterIconElem","selectHandler","searchCount","liItems","currSelIdx","prevSelIdx","liDataValue_1","selectedLis","getDataByElements","getDataByElems","toolbarAction","moveItemTo","moveItemFrom","moveAllItemTo","moveAllItemFrom","isUp","tempItems","jsonToIdx","changeData","fListBox","tListBox","dataIdx","tListData","tSortData","fliCollections","dataLiIdx","tliCollections","rLiCollection_1","n1","n2","toColl","tJsonData","selectNextList","childCnt","validIdx","getValidIndex","fromIdx","toIdx","cbox","getGrabbedItems","grabbItems","isDragEnd","fliIdx","fli","cli","selectedidx","sidx","eidx","eventArgsData_1","remoteFilterAction","dataUpdater","targetInputElement","remoteCustomValue","cul","updateSelectTag","dvalue_1","isText","liselect","getSelectTag","checkDisabledState","listObj_1","wrap_1","listWrap","checkboxPosition","liCollLen","l10nShow","l10nSel","ListBoxComponent","BannerThumbnails","handleBannerUpload","newImageUrl","BannerUrls","onUpdateBannerUrls","openImageUploader","uploadInputRef","deleteImage","updatedImageUrls","bannerUrls","isSingleBanner","siteSection","Filename","StartDate","EndDate","ActionType","actionType","ActionData","DisplayOrder","displayOrder","ModifiedBy","modifiedBy","dateModified","CategoryLink","categoryLink","handleUpdatedBannerUrls","onItemDrop","capitalizeKeys","orderModal","LinkTypes","toggleOrderModal","banner","slug","saveOrder","capitalizedOrderData","BannerSections","Slug","ContactMessages","ReasonId","reasonId","Firstname","firstname","Surname","surname","AdminName","adminName","Email","Mobile","mobile","IPAddress","iPAddress","DateSent","dateSent","DateAttended","dateAttended","AttendedBy","attendedBy","ContactReasons","Destination","CCAddress","ccAddress","Card","CardBody","FAQs","ParentId","parentId","ParentList","FilterHeadingId","FilteredData","HeadingFilterData","GetHeading","OrderDashboard","updateDateRange","setDefaultDate","workDate","dateRange","newDate","handleStatusChange","selectedStatus","Amount","DateComplete","DateStarted","DateSubmitted","DeliveryAddressId","DeliveryFee","DeliveryMessage","DeliveryMeta","Instructions","NumItems","OrderId","PaymentMessage","PaymentMeta","PromoCode","StatusMessage","Statuses","StockCheck","UseCredit","Vat","updateStaus","exportSurveyReport","overview","padStart","Intl","ExcelJS","xlsx","writeBuffer","toggleSelectAll","toggleItem","handlePageClick","getUserName","handleSearchInputChange","viewOrder","currentOrder","grandTotal","selectedAddress","adminNotes","notes","Description","MaxUses","NumUses","AdminNote","orderBy","notesModal","viewNotesModal","transactionHistory","reportRange","ReportData","toggleNotesEdit","toggleNotesView","_this$state$adminNote","_this$state$adminNote2","totalItems","storeLoader","channelLoader","saveNote","UserName","userData","MetaKeywords","metaKeywords","MetaDescription","metaDescription","AdminTitle","NewBannerData","updatedUrls","FreezeRowModelGenerator","rowModelGenerator","notifyArgs","virtualRows","isFrozenRowsRender","infiniteCurrentViewData","infiniteFrozenCache","isDownScroll","isUpScroll","enableContinuousScroll","isInitialCollapse","prevScrollTop","isInitialMovableRender","virtualInfiniteData","emptyRowData","isNormaledit","isLastPage","isInitialRender","isFocusScroll","isGroupCollapse","onDataReady","infiniteCellFocus","appendInfiniteRows","removeInfiniteCacheRows","setCache","ensureIntialCollapse","editActionBegin","getVirtualInfiniteData","resetInfiniteEdit","infiniteEditSuccess","refreshInfiniteCache","infiniteAddActionBegin","selectNewRow","setGroupCollapsePageQuery","deleteComplate","groupCaptionAction","makeGroupCollapseRequest","parentCapUid","rowObjs","childCount","getGroupKeysAndFields","filterCols","generateExpandPredicates","getPredicates","additionalCnt","initialBlocks","isCollapse","contetRect","tableReact","getCaptionChildCount","captionRows","maxPage","scrollArg","make","childCheck","isCache","isMiddlePage","isDelete","setInitialCache","indexCount","resetCurrentViewData","lastViewData","refreshScrollOffset","addRowIndex","firstBlock","createEmptyRowdata","ensureRowAvailability","createRow","isFrozenRows","rowElems","swapCurrentViewData","resetInfiniteCurrentViewData","resetContentModuleCache","getEditedRowObject","refreshInfiniteCacheRowVisibleLength","cPageRowArray","vRowLen","hRowLen","editedrow","updateCurrentViewRecords","dataIndex","getEditedDataIndex","previousVirtualData","getVirtualInfiniteEditedData","restoreInfiniteEdit","restoreInfiniteAdd","intialPageQuery","editPageQuery","scrollToLastFocusedCell","lastFocusInfo","focusRows","setLastCellFocusInfo","totalRowsCount","visibleRowCount","rowRect","addForm","gridForm","hiddenColumn","frozenEdit","frLCont","frozenFrag","movableFrag","removeCaptionRows","addRowCount","removeTopRows","removeBottomRows","calculateScrollTop","captionRowHeight","captionCount","currentViewRowCount","groupedData","maxIndx","frozeCols","lastRowIndex","isDataModified","createFrozenCache","isCurrentViewData","setInitialGroupCache","pageData","ImageThumbnails","handleImageUpload","imageUrls","onUpdateImageUrls","handleDragStart","draggingIndex","handleDragOver","draggedImage","handleDragEnd","onDragOver","onDragEnd","isSingleImage","ProductBrands","ShowOnHome","showOnHome","IsRestricted","isRestricted","PrimaryBrandColour","primaryBrandColour","SecondaryBrandColor","secondaryBrandColor","AccentBrandColour","accentBrandColour","TextColour","textColour","BrandImages","brandImages","BrandBannerImages","brandBannerImages","handleUpdatedImageUrls","ProductCategories","orderModalToggle","CategoryImages","categoryImages","CategoryBanners","categoryBanners","ShowOnMenu","showOnMenu","orderedData","SubCategoryIds","NumericTextBoxComponent","ProductRange","RangeImages","rangeImages","FilterCellRenderer","fltrData","filterBarTemplate","clearIconElem","operatorIconRender","templateWrite","operators","fbicon","dropOptr","internalEvent","customOperators","spanElmt","FlMenuOptrUI","customFltrOperators","customFilterOperators","destroyDropDownList","renderOperatorUI","dlgConetntEle","optrData","customOptr","dropDatasource","dropSelectedVal","optrDiv","optrInput","valInput","renderResponsiveDropDownList","selValue","selectedField","optrLen","getFlOperator","SPINNER_CLASS","ComboBox","targetFocus","customValue","allowCustom","valueMuteChange","setHoverList","inlineSearch","fixedHead","setAutoFill","isHover","currentFillValue","isAndroidAutoFill","setAutoFillSelection","prevEnd","curEnd","prevStart","curStart","isKeyNavigate","previousValue_1","updateCustomValueCallback","comboProps","isEscape","searchItem","highlightSearch","ignoreRegex","findTextNode","revertHighlightSearch","AutoComplete","_this_1","searchList","mapping","suggestionCount","queryElements","filterAction","postBackAction","fieldsSettings","itemCreated_1","showPopupButton","checkFields_1_1","_this_2","atcProps","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","flIcon","renderCheckBoxMenu","CheckBoxFilter","isresetFocus","checkBoxBase","actionPrevent","ATTRIBUTES","RadioButton","RadioButton_1","radioGrp","getRadioGroup","angularValue","radioWrap","getLabel","getSelectedValue","updateHtmlAttribute","labelMouseLeaveHandler","formControlName","textLabel","rippleLabel","addScrolling","scrollType","containerOffset","contentOffset","createScrollbar","scrollObj","skipEle","menu","ESCAPE","FOCUSED","SEPARATOR","UPARROW","DOWNARROW","LEFTARROW","RIGHTARROW","CARET","ITEM","HIDE","ICONS","MenuItem","MenuAnimationSettings","MenuBase","navIdx","isTapHold","showSubMenuOn","isMenu","ejInst","enableScrolling","hamburgerMode","createHeaderContainer","defaultOption","showItemOnClick","removeChildElement","targetElems","menuHeaderClickHandler","cmenuHandler","delegateMoverHandler","moverHandler","delegateMouseDownHandler","delegateClickHandler","downarrow","uparrow","leftarrow","rightarrow","closeMenu","actionName","actionNeeded","removeLIStateByClass","rightEnterKeyHandler","leftEscKeyHandler","getUlByNavIdx","getLIByClass","getIdx","navIdxLen","popups_1","keyType","openMenu","isCMenu","ulIndex","isIterated","isMenuVisible","item_1","sli","wrapper_1","popups","getPopups","liElem_1","parentItem","trgtliId","closedLi","trgtLi","unWireKeyboardEvent","toggleAnimation","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","spanElem","tempTitle","spanTitle","spanIcon","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","menuType","observedOpenArgs","checkScrollOffset","collide","offWidth","iconCssProps","offsetEle","offsetRight","px","toggleVisiblity","newTop","xCollision","hasField","liTrgt","hdrWrapper","isDifferentElem","cliWrapper","isInstLI","cliWrapperId","setLISelected","showSubMenu","culIdx","classname","getItemIndex","setItems","newItems","skipHdr","updateItemsByNavIdx","ul_3","getChangedItemIndex","ul1","popStr","uls","targetSelctor","isMenuOpen","pUlHeight","nIndex","isCallBack","skipItem","showItems","showHideItems","hideItems","ishide","validUl","iitems","insertItems","ContextMenu","ExcelFilterBase","getCMenuDS","dateonly","unwireExEvents","menuObj","destroyCMenu","removeDialog","createMenu","isCheckIcon","eleOptions","hdrele","colIsSort","isAsc","isDesc","ascName","descName","createMenuElem","ensureTextFilter","iconName","isSubMenu","wireExEvents","hoverHandler","clickExHandler","menuItem","isCMenuOpen","cmenu","submenu","selectedMenu","menuOptions","onClose","preventClose","contextRect","getContextBounds","getCMenuYPosition","isFilterBack","contextWidth","targetBorder","filterLength","renderDialogue","overlayClick","templateField_1","createdDialog","rowResponsiveDlg","removeObjects","renderCustomFilter","dlgFields","fieldSet","checkBoxValue","fOperator","sValue","sOperator","firstOperator","firstValue","secondOperator","secondValue","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","datePicker","dateTimePicker","completeAction","distinctStringValues","numericTextBox","acActionComplete","columnvalue","ExcelFilter","excelFilterBase","filterByMethod","cellText","nextFlMenuOpen","fltrDlgDetails","skipNumberInput","skipStringInput","getLocalizedCustomOperators","fltrElem","rowdrag","updateFilterMsg","dropdownlist","filterBarElement","filterObjIndex","getFilteredColsIndexByField","prevFilterObject","arrayVal","currentFilterObject","currentFilteringColumn","keyUpHandlerImmediate","refreshFilterValue","refreshFilterValueFn","docClickHandler","columnMenuFilter","filterIconClickHandler","targetText","getOperatorName","checkForSkipInput","filterStatusMsg","applyColumnFormat","predObj","fColumn","checkAlreadyColFiltered","getFlvalue","setFormatForFlColumn","skipUid","updateFilterIcon","refreshFilterSettings","updateFilter","getFilterBarElement","fltrIconElement","filteredcols","fltrElement","filterDialogOpen","filterHandler","localizedStrings","fCell","filteredColsUid","currentPred","currentFilterColumn","closeHeaderEle","dropDownListInput","processFilter","openMenuByField","updateCrossIcon","getFormatFlValue","showFilterBarStatus","isSkip","startTimer","onTimerTick","immediateModeDelay","templateRead","validateFilterValue","skipInput","getOperator","singleOp","multipleOp","numOptr","stringOperator","numberOperator","dateOperator","datetimeOperator","dateonlyOperator","booleanOperator","filterOperatorElement","inputId","datepickerEle","hasDialog","hasDialogClosed","filterIconElement","refreshFilterIcon","addFilteredClass","renderCheckboxOnFilterMenu","FLOATLINE","FLOATTEXT","LABELTOP","LABELBOTTOM","createFloatLabel","overAllWrapper","searchWrapper","encodePlaceholder","updateFloatLabelState","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","scrollFocusStatus","enableGroupCheckBox","enableSelectionOrder","hideSelectedItem","closePopupOnSelect","updateHTMLAttribute","refreshPlaceHolder","updateReadonly","overAllClear","componentWrapper","updateOldPropCssClass","onPopupShown","focusAtFirstListItem","showDropDownIcon","updateAriaActiveDescendant","isFirstClick","loadTemplate","mainListItems","findGroupStart","deselectHeader","refreshListItems","valueEle","addListFocus","focusAtLastListItem","updateListARIA","disableStatus","ensureAriaDisabled","removelastSelection","chipCollectionWrapper","removeValue","removeChipSelection","updateDelimeter","delimiterChar","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","getForQuery","presentItemValue","addNonPresentItems","updateActionList","mainData","mainListCollection","checkForCustomValue","tempQuery","unwireListEvents","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","changeOnBlur","updateValueState","hideGroupItem","element1","groupItemLength","searchActiveCount","openClick","openOnClick","expandTextbox","showOverAllClear","backCommand","dataChecks","customData","wrapperClick","isDocClickFromCheck","addTagOnBlur","listLiElement","updateListSelection","updateDelimView","removeChipFocus","refreshInputHight","floatLabelBlur","downIconWidth","dropIcon","setPlaceholderSize","initStatus","updateTempValue","getPagingCount","focusInHandler","showDelimWrapper","viewWrapper","floatLabelFocus","delimiterWrapper","hideDelimWrapper","mobFilter","calcPopupWidth","checkTextLength","popupKeyActions","updateAriaAttribute","homeNavigation","isHome","arrowUp","arrowDown","selectByKey","spaceKeySelection","checkBackCommand","moveByList","focuseElem","focusFirstListItem","moveBy","removeSelectedChip","selectListByKey","hideOverAllClear","selectAllItem","selectAllParent","selectAllCheckBox","selectedElem","addChipSelection","moveByTop","updateCheck","chipClick","onChipRemove","customVal","setFloatLabelType","isClearAll","mainElement","removeVal","invokeCheckboxSelection","updateChipStatus","val_1","removeIndex","hideElement","removeChip","targetEle_1","clearAllCallback","element2","addValue","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","chipClose","multiCompiler","multiselectTemplate","chip","chipContent","mouseIn","mouseOut","fieldProperty","overAllHeight","selectAllHeight","checkboxFilterInput","onListMouseDown","delim","hiddenElementContent","valueItem","listValue","updateWrapperText","addValidInputClass","textArr","indexItem","noDataEle","isDynamicGroupItemUpdate","isReactTemplateUpdate","isAngularTemplateUpdate","temp_1","mainlist","addListHover","delimChar","groupValues","findGroupAttrtibutes","updateCheckBox","unChecked","groupHeader","checkBoxElement","wrapperType","wrapperData","wrapperleng","overAllContainer","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","raminElement","remainCompildTemp","remainSize","checkClearIconWidth","getOverflowVal","updateRemainTemplate","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","selectionLimit","textboxValueUpdate","beforeSelectArgs","preventSelectEvent","updatedataValueItems","updateHiddenElement","hiddenValue","wrapperText","isRemoveAll","onLoadSelect","updateVal","dropDownIcon","reInitializePoup","msProps","mainLiLength","liLength","SEARCHBOX_WRAPPER","DELIMITER_VIEW","spellcheck","checkInitialValue","optionsElement","valueCol","textCol","optionsLen","checkAutoFocus","placeholderElement","MultiSelectComponent","CHECKBOXFRAME","CHECKBOXWRAP","CheckBoxSelection","activeLi","listSelection","setSelectAll","setDeviceSearchBox","getFocus","setReorder","getActiveList","checboxCreate","setPopupFullScreen","checkboxEle","selectAllSpan","checkWrapper","checkboxWrapper","validateCheckNode","isPrevent","unSelect","activeLiCount","ulEle_1","forceUpdateValue","initSelect2","updSelect2","destroySelect2","updateSelect2Value","prepareOptions","attachEventHandlers","detachEventHandlers","prepareValue","fuzzyValuesEqual","dropdownParent","makeOption","itemParams","onUnselect","PreviewCards","isQuickViewOpen","quickViewProduct","calculateSavingsPercentage","discountedPrice","prevPrice","currPrice","$cptable","XLSX","current_codepage","current_ansi","VALID_ANSI","CS2CP","set_ansi","cp","set_cp","reset_cp","char_codes","utf16leread","utf16beread","debom","_getchar","_getansi","DENSE","Base64_map","Base64_encode","e2","e3","e4","Base64_decode","has_buf","Buffer_from","nbfs","buf","buf_utf16le","new_raw_buf","new_unsafe_buf","s2a","a2s","ab2a","bconcat","bufs","maxlen","chr0","_strrev","pad0","pad_","rpad_","p2_32","pad0r","pad0r1","pad0r2","SSF_isgeneral","table_fmt","SSF_default_map","SSF_default_str","SSF_frac","mixed","sgn","P_2","P_1","Q_2","Q_1","SSF_parse_date_code","dout","SSF_fix_hijri","SSFbasedate","SSFdnthresh","SSFbase1904","datenum_local","epoch","SSF_strip_decimal","SSF_general_num","LOG10E","SSF_small_exp","SSF_large_exp","SSF_normalize_exp","SSF_general","SSF_format","SSF_write_date","fmt","ss0","outl","commaify","pct1","write_num_exp","fakee","$$","$2","$3","frac1","dec1","closeparen","phone","hashq","rnd","_frac","write_num_flt","ffmt","write_num","write_num_cm","sfmt","write_num_pct","aval","den","myn","myd","write_num_f1","carry","lres","rres","flr","write_num_exp2","write_num_int","write_num_cm2","write_num_pct2","write_num_f2","SSF_abstime","fmt_is_date","cfregex2","chkcond","thresh","choose_fmt","in_str","SSF_split_fmt","lat","m1","m2","dateNF","flen","lst","ssm","nstr","myv","ostr","vv","decpt","lasti","retval","eval_fmt","SSF_load","make_ssf","SSFImplicit","dateNFregex","bad_formats","SSF__load","_fs","CRC32","T0","signed_crc_table","TT","slice_by_16_tables","T1","T2","T3","T4","T5","T6","T7","T8","T9","bstr","dirname","write_dos_date","hms","write_shift","ymd","parse_extra_field","prep_blob","read_shift","tgt","mtime","atime","ctime","sz1","sz2","usz","csz","get_fs","parse_zip","mboundary","FileIndex","FullPaths","init_cfb","start_di","fcnt","parse_mime","parse_mad","mver","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","ssz","fat_addrs","mv","chk","HEADER_SIGNATURE","check_get_mver","check_shifts","dir_cnt","sectors","nsectors","sectorify","sleuth_fat","sector_list","chkd","buf_chain","addr","__readInt32LE","__toBuffer","make_sector_list","ENDOFCHAIN","Paths","mini","minifat_store","sector","namelen","__utf16le","clsid","read_date","get_sector_list","get_mfat_entry","read_directory","FI","FP","dad","build_full_paths","MSSZ","new_buf","__readUInt32LE","cfb","CLSID","nm","rebuild_cfb","seed_cfb","_file","fullPaths","HEADER_CLSID","namecmp","elt","_opts","fp","cstr","dispcnt","csl","qp","get_content_type","write_quoted_printable","write_base64_76","write_mad","cdirs","start_cd","crcs","sz_cd","namebuf","outbuf","_deflateRawSync","write_zip","mini_size","fat_size","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","DIFSECT","FATSECT","_nm","_zlib","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","rev","read_bits_2","read_bits_3","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","zero_fill_array","build_tree","clens","MAX","ccode","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","DST_LN_RE","LEN_LN_RE","boff","write_stored","addrs","mlen","len_eb","dst_eb","write_huff_fixed","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","read_bits_4","next_code","hcodes","h1","_inflate","woff","OL","max_len_1","max_len_2","dst","warn_or_throw","wrn","efsz","fcsz","EF","parse_local_file","meth","parse_dos_date","_csz","_usz","InflRaw","InflateRaw","_processChunk","_finishFlushFlag","bytesRead","_inflateRawSync","cfb_add","ContentTypeMap","ctype","encoded","cte","parse_quoted_printable","fpath","cfb_gc","UCFullPaths","UCPaths","UCPath","readFileSync","read_file","writeFileSync","writeFile","cfb_new","cfb_del","cfb_mov","old_name","new_name","ReadShift","CheckField","use_zlib","zlib","_inflateRaw","ks","o2","evert","basedate","datenum","refdate","dnthresh","refoffset","numdate","parse_isodur","sec","good_pd_date_1","good_pd_date","good_pd","fixdate","cc2str","debomit","utf8write","fuzzynum","FDRE1","lower_months","fuzzydate","lower","fuzzytime1","split_regex","safe_split_regex","getdatastr","asNodeBuffer","asBinary","getdatabin","safegetzipfile","getzipfile","getzipdata","safe","getzipstr","getzipbin","zipentries","zip_add_file","widx","ridx","zip_read","resolve_path","XML_HEADER","attregexg","tagregex1","tagregex","nsregex","nsregex2","parsexmltag","skip_root","skip_LC","strip_ns","rencoding","unescapexml","encregex","coderegex","raw_unescapexml","decregex","htmlcharegex","escapehtml","xlml_fixstr","entregex","entrepl","parsexmlbool","utf8reada","utf8readb","utf8readc","utf8corpus","utf8read","matchtag","mtcache","htmldecode","entities","vtregex","vt_cache","vtvregex","vtmregex","parseVector","WTF","wtregex","wxt_helper","writextag","xlml_normalize","xlmlregex","XMLNS","CORE_PROPS","CUST_PROPS","EXT_PROPS","CT","RELS","TCMNT","XMLNS_main","___toBuffer","___utf16le","__readUInt16LE","___hexlify","__hexlify","___utf8","__readUInt8","__utf8","___lpstr","__lpstr","___cpstr","__cpstr","___lpwstr","__lpwstr","___lpp4","__lpp4","___8lpp4","__8lpp4","___double","read_double_le","__double","is_buf","cpdoit","__readInt16LE","__readInt32BE","oI","oR","oo","__writeUInt32LE","__writeInt32LE","__writeUInt16LE","WriteShift","cpp","bs","av","write_double_le","hexstr","fld","parsenoop","recordhopper","tmpbyte","cntbyte","RT","XLSBRecordEnum","buf_array","blksz","newblk","curbuf","endbuf","_bufs","shift_cell_xls","cRel","rRel","biff","shift_range_xls","encode_cell_xls","encode_cell","fix_row","encode_range_xls","encode_row","encode_col","decode_row","rowstr","decode_col","colstr","decode_cell","decode_range","encode_range","formula_quote_sheet_name","sname","safe_decode_range","safe_format_cell","XF","format_cell","BErr","sheet_to_workbook","SheetNames","Sheets","sheet_add_aoa","_ws","dense","_C","_origin","_range","__R","__Rstr","__C","nullError","sheetStubs","cellDates","cell_ref","aoa_to_sheet","parse_XLWideString","cchCharacters","parse_StrRun","ich","ifnt","parse_RichStr","rgsStrRun","dwSizeStrRun","parse_BrtCommentText","parse_XLSBCell","iStyleRef","parse_XLSBShortCell","parse_XLSBCodeName","parse_XLNullableWideString","parse_XLNameWideString","parse_RelID","parse_RkNumber","fX100","fInt","RK","parse_RfX","parse_UncheckedRfX","parse_Xnum","parse_ClipboardFormatOrString","VT_I2","VT_I4","VT_VARIANT","VT_STRING","VT_USTR","VT_CUSTOM","DocSummaryPIDDSI","SummaryPIDSI","CountryEnum","XLSFillPattern","rgbify","XLSIcv","RBErr","XLSLblBuiltIn","ct2type","WB","SHEET","HLINK","VML","XPATH","XMISS","XLINK","CXML","CXMLP","CMNT","SST","STY","THEME","CHART","CHARTEX","DS","MS","IMG","DRAW","XLMETA","PEOPLE","CONN","VBA","get_rels_path","parse_rels","currentFilePath","canonictarget","CT_ODS","CORE_PROPS_REGEX","parse_core_props","load_props_pairs","HP","TOP","hp","Worksheets","NamedRanges","DefinedNames","Chartsheets","ChartNames","custregex","evert_XLMLDPM","XLMLDocPropsMap","Subject","Author","Keywords","LastAuthor","RevNumber","Application","LastPrinted","CreatedDate","ModifiedDate","AppVersion","ContentStatus","Identifier","Language","xlml_set_prop","Props","parse_FILETIME","dwLowDateTime","dwHighDateTime","parse_lpstr","pad","parse_lpwstr","parse_VtStringBase","stringType","parse_VtString","parse_VtHeadingPair","headingString","parse_TypedPropertyValue","parse_dictionary","CodePage","parse_BLOB","parse_ClipboardData","parse_VtUnalignedString","cElements","parse_VtVecHeadingPairValue","parse_VtVecLpwstrValue","parse_VtVecUnalignedLpstrValue","parse_PropertySet","PIDSI","start_addr","NumProps","DictObj","PropID","PropH","piddsi","oldpos","parsebool","parse_PropertySetStream","NumSets","FMTID0","FMTID1","Offset0","Offset1","SystemIdentifier","PSet1","PSet0","FMTID","parsenoop2","parseuint16","parseuint16a","parslurp","parse_ShortXLUnicodeString","cch","parse_XLUnicodeRichExtendedString","cbExtRst","fExtSt","fRichSt","cRun","parse_XLUnicodeStringNoCch","parse_XLUnicodeString","parse_XLUnicodeString2","parse_HyperlinkMoniker","parse_URLMoniker","cAnti","preamble","ansiPath","parse_FileMoniker","parse_HyperlinkString","parse_LongRGBA","parse_LongRGB","parse_XLSCell","ixfe","parse_XTI","parse_RkRec","parse_Ref8U","rwFirst","rwLast","parse_RefU","parse_Ref","parse_FtCmo","parse_FtSkip","FtTab","fSharedNote","parse_BOF","BIFFVer","parse_DefaultRowHeight","miyRw","Unsynced","DyZero","ExAsc","ExDsc","parse_BIFF2Format","parse_Dimensions","parse_BoolErr","parse_Bes","parse_XLHeaderFooter","parse_ExternName","fBuiltIn","fWantAdvise","fWantPict","fOle","fOleLink","fIcon","sbcch","udfName","parse_AddinUdf","parse_Lbl","chKey","cce","itab","npflen","rgce","rgcb","parse_Rgce","parse_RgbExtra","parse_NameParsedFormula","parse_ExternSheet","parse_BIFF5ExternSheet","parse_Array","parse_ArrayParsedFormula","parse_BIFF5OT","cchName","parse_ColInfo","colFirst","colLast","coldx","parse_Blank","parse_Scl","parse_String","DBF_SUPPORTED_VERSIONS","DBF","dbf_codepage_map","dbf_reverse_map","dbf_to_sheet","vfp","l7","nrow","fpos","rlen","current_cp","codepage","hend","sheetRows","dbf_to_aoa","wch","_RLEN","to_workbook","bookType","to_sheet","from_sheet","old_cp","aoa","sheet_to_json","hcnt","coltypes","colwidths","coldecimals","guess","_guess","rout","SYLK","sylk_escapes","AA","BA","DA","HA","JA","AE","BE","CE","HE","AI","BI","CI","HI","AO","BO","CO","DO","HO","AU","BU","CU","HU","Ao","Bo","Co","Ho","Au","Bu","Cu","Hu","KC","DN","Dn","Hy","sylk_char_regex","sylk_char_fn","decode_sylk_char","newcc","sylk_to_aoa_str","next_cell_format","sht","rowinfo","colinfo","cw","Mval","WBProps","Names","rstr","d1904","nn","Sheet","rc_to_a1","C_seen_K","C_seen_X","C_seen_S","C_seen_E","cell_t","shrbase","shift_formula_str","F_seen","hpt","hpx","pt2px","process_col","write_ws_cell_sylk","a1_to_rc","aoasht","sylk_to_aoa","outwb","RS","rec","wpx","width2px","px2char","px2pt","write_ws_rows_sylk","DIF","dif_to_aoa_str","dif_to_sheet","dif_to_aoa","make_value","make_value_str","ETH","eth_to_sheet","eth_to_aoa","sheet_to_eth_data","PRN","set_text_arr","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","FS","sepcc","startcc","_re","dateNF_regex","finish_cell","datestr","timestr","dateNF_fix","cellNF","prn_to_sheet_str","prn_to_aoa_str","prn_to_sheet","firstbyte","WK_","lotushopper","Enum","WK1Enum","lotus_to_workbook_buf","next_n","snames","realnames","sdata","refguess","book_append_sheet","CC","qpw_to_workbook_buf","vers","qpro","works","works2","tmpcell","WK3Enum","osheets","rnames","parse_cell","write_LABEL","write_INTEGER","write_NUMBER","wk1_parse_rc","FuncTab","BinOpTab","parse_cell_3","write_LABEL_16","wsidx","parse_NUMBER_17","v1","v2","write_NUMBER_17","log2","parse_NUMBER_27","parse_SHEETNAMECS","write_XFORMAT_SHEETNAME","argc","argL","argR","wk1_fmla_to_csf","sheet_to_wk1","write_biff_rec","write_BOF_WK1","write_RANGE","max_R","book_to_wk3","wscnt","write_BOF_WK3","parse_rs","tregex","rpregex","parse_r","rpr","pass","uval","valign","parse_rpr","rregex","rend","rs","rs_to_html","nlregex","r_to_html","terms","intro","outro","parse_rpr2","sitregex","sirregex","sirphregex","parse_si","cellHTML","sstr0","sstr1","sstr2","_JS2ANSI","parse_CRYPTOVersion","Major","Minor","parse_DataSpaceMapEntry","comps","parse_Primary","hdr","parse_TransformInfoHeader","ename","cmode","parse_EncryptionHeader","Flags","AlgID","AlgIDHash","KeySize","ProviderType","CSPName","parse_EncryptionVerifier","Salt","Verifier","VerifierHash","parse_EncInfoStd","parse_EncInfoExt","parse_EncInfoAgl","KeyData","encryptedHmacKey","encryptedHmacValue","encs","crypto_CreatePasswordVerifier_Method1","Password","PasswordArray","PasswordDecoded","crypto_CreateXorArray_Method1","PadArray","InitialCode","XorMatrix","XorRor","Byte","Temp","PasswordLastChar","PadIndex","XorKey","CurrentElement","Char","CreateXorKey_Method1","Index","ObfuscationArray","crypto_MakeXorDecryptor","XorArrayIndex","XorArray","crypto_DecryptData_Method1","parse_FilePassHeader","Info","EncryptionVersionInfo","EncryptedVerifier","EncryptedVerifierHash","parse_RC4Header","EncryptionHeader","EncryptionVerifier","parse_RC4CryptoHeader","rtf_to_sheet_str","rowtf","rtfre","last_index","rtf_to_workbook","rtf_to_sheet","rgb2Hex","rgb_tint","hsl","H6","L2","rgb2HSL","hex2RGB","h6","hsl2RGB","DEF_MDW","MAX_MDW","MIN_MDW","MDW","char2width","chr","cycle_width","collw","find_mdw_colw","_MDW","customWidth","PPI","XLMLPatternTypeMap","cellXF_uint","cellXF_bool","parse_sty_xml","numFmtRegex","cellXfRegex","fillsRegex","fontsRegex","bordersRegex","NumberFmt","parse_numFmts","Fonts","icv","themeElements","clrScheme","parse_fonts","Fills","parse_fills","Borders","parse_borders","CellXf","parse_cellXfs","parse_BrtFill","parse_BrtBorder","XLSXThemeClrScheme","parse_clrScheme","lastClr","parse_fontScheme","parse_fmtScheme","clrsregex","fntsregex","fmtsregex","themeltregex","parse_theme_xml","write_theme","parse_themeElements","Themes","themeXLSX","parse_FullColorExt","xclrType","nTintShade","xclrValue","parse_IcvXF","parse_ColorTheme","parse_ExtProp","extType","parse_XFExtGradient","sheet_insert_comments","threaded","people","parse_BrtCommentAuthor","CT_VBA","rcregex","rcbase","rcfunc","fstr","crefregex","$0","$4","$5","shift_formula_xlsx","_xlfn","parseread1","parse_ColRelU","parse_RgceArea","parse_RgceArea_BIFF2","parse_RgceLoc","parse_RgceLoc_BIFF2","parse_RgceElfLoc","fQuoted","parse_PtgAttrBaxcel","bitSemi","parse_PtgAttrSpaceType","parse_SerAr","parse_PtgExtraMem","parse_PtgExtraArray","parse_PtgElfLoc","parse_PtgElfNoop","parse_PtgElfLel","PtgListRT","PtgTypes","iftab","FtabArgc","Ftab","cparams","parsetab","Cetab","nameindex","parse_RgceLocRel_BIFF2","parse_RgceLocRel","parse_RgceAreaRel","ixti","parse_PtgNameX_BIFF5","PtgDupes","Ptg18","coltype","Ptg19","bitIf","bitGoto","ptgs","stringify_array","PtgBinOp","PtgAdd","PtgConcat","PtgDiv","PtgEq","PtgGe","PtgGt","PtgLe","PtgLt","PtgMul","PtgNe","PtgPower","PtgSub","make_3d_range","get_ixti_raw","supbooks","XTI","SID","get_ixti","ixtiraw","stringify_formula","nameidx","last_sp","sp","fflen","lbl","xlfn","externbook","bookidx","ixtidata","lp","rp","sharedf","parsedf","fnd","arrayf","_left","parse_SharedParsedFormula","parse_Formula","parse_FormulaValue","cbf","parse_XLSCellParsedFormula","parse_XLSBParsedFormula","parse_XLSBArrayParsedFormula","parse_XLSBCellParsedFormula","parse_XLSBNameParsedFormula","parse_XLSBSharedParsedFormula","ods_to_csf_formula","ods_to_csf_3D","_ssfopts","default_margins","safe_format","fmtid","fillid","raw_rgb","mergecregex","sheetdataregex","hlinkregex","dimregex","colregex","afregex","marginregex","sheetprregex","sheetprregex2","svsregex","parse_ws_xml","data1","data2","mtch","parse_ws_xml_sheetpr","parse_ws_xml_sheetpr2","nodim","parse_ws_xml_dim","svs","Views","sviewregex","parse_ws_xml_sheetviews","seencol","coli","colm","colM","parse_ws_xml_cols","parse_ws_xml_data","afilter","parse_ws_xml_autofilter","_merge","hlink","Rel","parse_ws_xml_hlinks","parse_ws_xml_margins","tmpref","codeName","CodeName","cellregex","rowregex","isregex","refregex","match_v","match_f","sstr","ftag","cref","tagr","tagc","do_format","rowobj","rowrite","marr","marrlen","xlen","rstarti","outa","rslice","cellFormula","___f","cm","xlmeta","parse_BrtWsDim","parse_BrtShortReal","parse_BrtMergeCell","BrtMarginKeys","parse_chart","csheet","parse_Cache","WBPropsDef","WBViewDef","SheetDef","CalcPrDef","push_defaults_array","push_defaults","parse_wb_defaults","CalcPr","WBView","badchars","check_ws_name","wbnsregex","parse_BrtFRTArchID$","ArchID","parse_wb","Ptg","parse_wb_bin","dname","dnstart","Hidden","Comment","parse_wb_xml","parse_ws","vm","RR","aii","relId","rfx","above","parse_ws_bin","parse_cs","parse_cs_bin","parse_cs_xml","parse_sty","parse_sty_bin","parse_sst","Unique","parse_sst_bin","sst","parse_sst_xml","parse_cmnt","authors","iauthor","parse_comments_bin","commentList","authtag","cmnttag","textMatch","parse_comments_xml","parse_cc","parse_cc_bin","parse_cc_xml","parse_xlink","parse_xlink_bin","parse_xlmeta","metatype","parse_xlmeta_bin","lastmeta","parse_xlmeta_xml","XLMLFormatMap","attregexg2","attregex2","xlml_parsexmltag","xlml_parsexmltagobj","xlml_set_custprop","Custprops","oval","safe_format_xlml","xlml_format","process_style_xlml","stag","Interior","Pattern","parse_xlml_data","csty","sid","StyleID","interiors","Parent","ArrayRange","xlml_clean_comment","parse_xlml_xml","Rn","opening","ishtml","_o","html_to_sheet","html_to_workbook","sheetnames","cursheet","sheetname","dtag","didx","fidx","pidx","cstys","wsprops","raw_Rn3","HRef","HRefScreenTip","MergeAcross","MergeDown","cma","cmd","AutoFitHeight","ssfidx","_col","Span","_NamedRange","_DefinedName","RefersTo","AutoFilter","Range","parse_fods","pagemargins","bookSheets","bookProps","SSF","parse_xlml","fix_read_opts","parse_compobj","AnsiUserType","AnsiClipboardFormat","parse_ClipboardFormatOrAnsiString","Reserved1","UnicodeClipboardFormat","parse_ClipboardFormatOrUnicodeString","Reserved2","CONTINUE_RT","slurp","RecordType","insitu","nextrt","XLSRecordEnum","safe_format_xf","make_cell","parse_workbook","lastcell","cmnt","rngC","rngR","temp_val","Directory","last_formula","cur_sheet","Preamble","last_cell","XFs","get_rgb","addcell","file_depth","xfd","icvFore","icvBack","process_cell_style","afi","rrtabid","lastuser","winlocked","wtf","last_lbl","last_RT","BIFF2Fmt","BIFF2FmtTable","FilterDatabases","seen_codepage","Date1904","WriteProtect","cpval","CalcRefMode","FullCalc","fDialog","fBelow","fRight","ExternCount","tmpri","biffguess","fakebs8","hs","rknum","rkrec","_fr","_fc","_fe","_arraystart","isst","_ixfe","b4idx","b2idx","cmo","lastobj","TxO","ImData","noteobj","xfe","Strings","Encryption","Metadata","PSCLSID","SI","DSI","UDI","parse_xlscfb","CompObj","WorkbookP","bookVBA","vbaraw","newcfb","newpath","make_vba_xls","DocSummary","TitlesOfParts","parse_xls_props","bookFiles","grbit","fBold","fItalic","fUnderline","fStrikeout","fOutline","fShadow","fCondense","fExtend","parse_FontFlags","bCharSet","xColorType","nTS","bR","bG","bB","parse_BrtColor","ixfeParent","ifmt","strName","autoCompressPictures","backupFile","checkCompatibility","hidePivotFieldList","promptedSolutions","publishItems","refreshAllConnections","saveExternalLinkValues","showBorderUnselectedTables","showInkAnnotation","showObjects","showPivotChartFilter","updateLinks","iTabID","strRelID","fAlwaysCalc","idObj","stAuthor","parse_NoteSh","verificationBytes","verifier","parse_XORObfuscation","dyHeight","Pos","Dim","CurTab","FirstTab","Selected","TabRatio","fts","parse_BIFF5Obj","parse_FtArray","ccv","rw","rkrecs","lastcol","ixfes","fStyle","alc","fWrap","alcV","fJustLast","trot","cIndent","fShrinkToFit","iReadOrder","fAtrNum","fAtrFnt","fAtrAlc","fAtrBdr","fAtrPat","fAtrProt","dgLeft","dgRight","dgTop","dgBottom","icvLeft","icvRight","grbitDiag","icvTop","icvBottom","icvDiag","dgDiag","fsxButton","parse_CellStyleXF","cmcs","ucnt","extsst","dsst","ctab","virtPath","rgst","accel","parse_ControlInfo","cchText","sVer","targetFrameName","moniker","oleMoniker","fileTime","Loc","parse_Hyperlink","xnum","cUse","wzTooltip","cxfs","crc","cexts","cchComment","themeXML","parse_frtHeader","lcb","mtch2","midx","rowspan","make_html_row","editable","HTML_BEGIN","HTML_END","make_html_preamble","sheet_to_html","sheet_add_dom","or_R","or_C","is_dom_element_hidden","elts","Aelts","Aelti","parse_dom_table","get_computed_style","get_get_computed_style_function","parse_text_p","fixed","parse_ods_styles","_nfm","number_format_map","NFtag","NF","tNF","etpos","tidx","parse_content_xml","nfidx","sheetag","rowtag","ctag","textp","textpidx","textR","row_ol","mrange","rowpeat","colpeat","atag","_Ref","creatoridx","isstub","intable","baddate","rptR","rpt","xlmlidx","styletag","nrange","ptp","parse_ods","FEtag","parse_manifest","u8_to_dataview","u8str","u8","u8concat","u8a","popcnt","parse_varint49","ptr","varint","varint_to_i32","i32","parse_shallow","mappa","parse_iwa_file","messages","parse_snappy_chunk","u8i","decompress_iwa_file","numbers_lut_new","rsst","ofmt","nfmt","numbers_format_cell","ver","dur","dstyle","dmin","autodur","dstr","zstr","parse_new_storage","lut","dv","getUint32","doff","zidx","d128","ieee","mantissa","readDecimal128LE","getFloat64","parse_cell_storage","parse_old_storage","parse_TSP_Reference","parse_TST_TableDataList","rtp","rtpref","mtype","tswpsa","parse_TST_Tile","_k","_m","used_storage_u8","used_storage","wide_offsets","used_storage_offsets","getUint16","parse_TST_TileRowInfo","nrows","parse_TST_TableInfoArchive","tableref","dws","ref2","mtype2","_tile","parse_TST_TableModelArchive","parse_TN_DocumentArchive","root2","parse_TN_SheetArchive","parse_numbers_iwa","packets","packet","docroot","iwam","fix_opts_func","safe_parse_sheet","relsPath","sheetRels","stype","dfile","drelsp","parse_drawing","chartp","crelsp","parse_ds","tcomments","personId","parse_tcmnt_xml","strip_front_slash","_zip","index_zip","Bun","readSync","binname","workbooks","charts","macros","threadedcomments","coreprops","extprops","custprops","calcchains","vba","TODO","ctext","calcchain","parse_ct","xlsb","propdata","parse_ext_props","toks","parse_cust_props","bookDeps","wbsheets","wbext","wbrelsi","wbrelsfile","wbrels","displayname","parse_people_xml","safe_parse_wbrels","nmode","wsloop","snjseen","snj","Deps","bin","parse_xlsxcfb","parse_DataSpaceVersionInfo","dsm","parse_DataSpaceMap","seds","parse_DataSpaceDefinition","einfo","parse_EncryptionInfo","decrypt_agile","decrypt_std76","read_plaintext","read_utf16","utf16lereadu","read_prn","Deno","File","Folder","infile","read_binary","bstrify","vu","read_cfb","OLD_WTF","read_wb_ID","read_zip","read_plaintext_raw","make_json_row","defval","__rowNum__","rawNumbers","outi","header_cnt","skipHidden","blankrows","qreg","make_csv_row","datarow","forceQuotes","sheet_to_csv","endregex","sheet_to_txt","sheet_add_json","js","skipHeader","ROW","JS","ws_get_cell_stub","RC","book_new","roll","cell_set_hyperlink","split_cell","json_to_sheet","table_to_sheet","table_to_book","sheet_to_formulae","cmds","sheet_to_row_object_array","sheet_get_cell","book_set_sheet_visibility","vis","wb_sheet_idx","cell_set_number_format","cell_set_internal_link","cell_add_comment","sheet_set_array_formula","rngstr","wsr","SHEET_VISIBLE","SHEET_HIDDEN","SHEET_VERY_HIDDEN","ProductBrandId","ProductRangeId","productRangeId","SelectedCategories","GTIN","gtin","ProductTypeId","productTypeId","ShortDescription","shortDescription","Weight","weight","Length","SPrice","DateSPriceStarts","dateSPriceStarts","DateSPriceEnds","Upsells","upsells","CrossSells","crossSells","Stock","Quantity","Price","Images","Published","published","Featured","featured","About","about","AdditionalInfo","additionalInfo","RelatedProducts","relatedProducts","MetaData","ExternalURL","externalURL","DisplayType","displayType","OutOfStock","outOfStock","Ongoing","ongoing","StockCount","stockCount","LowStockAmount","lowStockAmount","Badge","fProductTypeId","fCategoryId","previewItem","brandId","PreviewProduct","PrevId","previewModal","RenderBrands","RenderCategories","selectedCategoryIds","categoryTitles","filterProductsByCategories","productCategories","subCategoryIds","_productCategories$i$","_selectedCategories","uploadModal","fProductName","SelectedSubCategories","excelData","previewToggle","uploadToggle","handleSelectChange","handleUnSelectChange","uploadExcelData","dataToUpload","_dataToUpload$i","_dataToUpload$i2","_dataToUpload$i3","_dataToUpload$i4","_dataToUpload$i5","selectedCategory","Subcategories","saveBulkData","selectedValues","_item$title","_item$sku","mapedData","uploadExcel","readAsBinaryString","newSub","newBrands","listsWorksheet","BrandName","SubcategoryName","handleExportClick","exportProducts","ProductSubCategories","CategoryId","ProductType","TypeImages","typeImages","PromoCodes","Code","maxUses","numUses","TypeData","buttonText","Promotions","PromoCodeId","promoCodeId","PromoImg","promoImg","PromoStartDate","promoStartDate","PromoEndDate","promoEndDate","PromoCodeList","_this$state$PromoCode","PromotionsCard","UserData","importUsersModal","importModal","UserType","userType","FirstName","LastName","EmailAddress","EmailConfirmed","emailConfirmed","CurrentPassword","currentPassword","LastPassword","lastPassword","Communication","communication","Credit","credit","DateVerified","dateVerified","LastLogin","lastLogin","FailedLogins","failedLogins","LockedOut","lockedOut","LockOutDate","lockOutDate","ResetPassword","resetPassword","LastIP","lastIP","LoginCookie","loginCookie","fUserType","userTypes","saveBulk","BrandPage","goToBrand","Categories","goToCategory","categoriesWithSubcategories","ProductCard","toggleQuickView","handleShare","share","productLink","savingsAmount","QuickViewModal","CategoryPage","setLoading","isDivVisible","setIsDivVisible","maxPrice","setMaxPrice","showOutOfStock","setShowOutOfStock","selectedOption","setSelectedOption","productsPerPage","setCurrentPage","FilterCatName","lastWord","indexOfLastProduct","indexOfFirstProduct","FilterSubcategories","selectedCategoriesArr","aPrice","ProductBrandIDs","FilteredBrands","currentProducts","startPage","visiblePageCount","handleResize","_subcategories$find","toggleDiv","handleDeselectAll","handleBrandChange","objectFit","toggleStock","prevShowOutOfStock","CartItem","getImage","_item$product","CheckoutPage","setCouponCode","saveCart","GetCartData","SetCartData","calculateTotal","coupon","Spinner","_props$type","_props$children","ThrobbleHelper","throbbleMessage","showThrobble","toggleThrobble","loadMethod","ReCAPTCHA","handleExpired","handleErrored","handleRecaptchaRef","getCaptchaFunction","grecaptcha","enterprise","getResponse","_widgetId","getWidgetId","_executeRequested","executeAsync","executionResolve","executionReject","resetter","forceReset","onExpired","onErrored","explicitRender","sitekey","stoken","isolated","captcha","SCRIPT_MAP","idCount","getOptions","recaptchaOptions","getScriptURL","dynamicOptions","hostname","useRecaptchaNet","globalName","wrappedComponentName","AsyncScriptLoader","__scriptURL","asyncScriptLoaderGetScriptLoaderID","__scriptLoaderID","setupScriptURL","asyncScriptLoaderHandleLoad","asyncScriptOnLoad","asyncScriptLoaderTriggerOnScriptLoaded","mapEntry","obsKey","observers","scriptURL","scriptId","errored","callObserverFuncAndRemoveObserver","observersMap","removeOnUnmount","allScripts","forwardedRef","ForwardedComponent","hoistStatics","GreptchaHelper","CaptchaToken","recaptchaRef","ResetCaptcha","handleRecaptchaChange","HandleChangeMethod","ContactUs","ReasonList","Lastname","submitting","renderContactPage","submitContact","saveContact","reasonsResponse","reasons","handleCaptchaChange","CustomerDeliveryAddresses","seLoading","handleDelete","DeliveryDetails","setFormData","realValue","maxLength100","maxlength","maxLength250","abbreviation","toggleAnswer","updatedFAQItems","faqItems","RenderFAQHeadings","RenderFAQs","HeadingId","HeadingQuestion","setEmail","setMessage","CarouselContext","CarouselItem","CustomEvent","isIn","_this$props$slide","slide","_this$props$tag","directionClassName","orderClassName","itemClasses","ride","mouseEnter","enableTouch","Carousel","handleKeyPress","hoverStart","hoverEnd","handleTouchStart","handleTouchEnd","touchStartX","touchStartY","indicatorClicked","currentY","_setInterval","cycleInterval","_clearInterval","carouselItems","_this$props3","outerClasses","innerClasses","getContextValue","_carouselItems","_controlLeft","_controlRight","wrappedIndicators","onClickHandler","controlLeft","controlRight","onTouchEnd","CarouselIndicators","indicatorClasses","CarouselControl","directionText","anchorClasses","iconClasses","screenReaderClasses","Hero","setActiveIndex","animating","setAnimating","slides","newIndex","ShopFor","Home","randomNewProducts","randomDealProducts","randomTopProducts","randomBestProducts","handleNavigation","newProducts","dateA","deals","noPriceDeals","topRated","avgRating","Login","Checked","btoa","loadCart","OrderCompletion","isButtonDisabled","setIsButtonDisabled","setAddressId","setCompany","setInstructions","setProvince","setAddress","setPostalCode","setApartment","setCountry","setCity","setSuburb","setMobileNumber","renderAddress","handleAddressChange","validateForm","saveId","setIsOpen","selectedProduct","paymentMethodTitle","priceCharged","OrderHistory","OrderHistoryItem","PayFastCancelled","paymentStatus","setPaymentStatus","floating","FormGroup","switchProp","formCheck","PersonalInformation","passwordFieldRequired","errorId","Checked2","ProductBrandPage","isHovered","setIsHovered","selectedBrand","beforePseudoStyle","borderRadius","setSelectedCategories","collapsedCategories","setCollapsedCategories","toggleCategory","handleCategoryChange","ProductSearch","setKeyword","inputRef","regPattern","filterByKeyword","lowerCaseKeyword","card","justified","navbar","pills","tabs","Nav","_props$vertical","getVerticalClass","NavItem","NavLink","TabContext","TabContent","activeTabId","tabId","TabPane","getClasses","CardTitle","CardText","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","META","NOSCRIPT","SCRIPT","STYLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","contextmenu","itemprop","HELMET_PROPS","HTML_TAG_MAP","HELMET_ATTRIBUTE","createClass","objectWithoutProperties","encodeSpecialCharacters","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","objectAssign","rafPolyfill","clock","cafPolyfill","webkitRequestAnimationFrame","mozRequestAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","_helmetCallback","commitTagChanges","baseTag","bodyAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","indexToSave","headElement","tagNodes","indexToDelete","styleSheet","existingTag","generateElementAttributesAsString","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","generateTitleAsReactComponent","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","generateTagsAsReactComponent","attributeHtml","tagContent","generateTagsAsString","_ref$title","noscript","HelmetExport","HelmetWrapper","classCallCheck","possibleConstructorReturn","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_babelHelpers$extends2","_babelHelpers$extends3","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_child$props","initAttributes","convertReactPropstoHtmlAttributes","defaultTitle","titleTemplate","mappedState","Helmet","withSideEffect","renderStatic","ProductView","setQuantity","setActiveTab","setRelatedProducts","newReview","setNewReview","rating","currentImage","setCurrentImage","SetCategoryList","setProductData","handleTabClick","behavior","scrollToSection","relatedProductList","productImage","productPrice","prevProductPrice","currentBrand","GetCategorySlug","cat","changeImage","newImage","CategoryIDs","_CategoryIDs","RenderCategoryLink","TagLink","tagArr","RenderTagLink","classnames","star","currentRating","Rating","addReview","review","stars","starIndex","promo","promoCodeItem","FormText","Register","setPassword","confirmPassword","setConfirmPassword","passwordError","setPasswordError","confirmPasswordError","setConfirmPasswordError","setError","errorState","isMatch","TagProducts","FilterTagName","TestPayments","submitCart","WishList","WishListItem","RazerBanners","setEditData","setFilename","setEndDate","setActionType","setActionData","setDisplayOrder","setAddedBy","setDateAdded","setModifiedBy","setDateModified","setOrderModal","toggleOrder","BestSellers","site","setSite","setProductId","AppRoutes","ProductPage","IsTagFilter","PromotionPage","PayFastComplete","ForgotPassword","AdminRoutes","AdminFAQs","fluid","Container","containerClass","CaretDownIcon","_ref$color","_excluded$N","fillRule","clipRule","$c512c27ab02ef895$export$50c7b4e9d9f19c1","createContextScopeDeps","defaultContexts","createScope","scopeContexts","defaultContext","$3bkAK$createContext","$3bkAK$useMemo","rootComponentName","BaseContext","$3bkAK$createElement","consumerName","$3bkAK$useContext","$c512c27ab02ef895$var$composeContextScopes","baseScope","createScope1","scopeHooks","useScope","overrideScopes","nextScopes1","nextScopes","$e42e1063c40fb3ef$export$b9ecd428b558ff10","originalEventHandler","ourEventHandler","checkForDefaultPrevented","$6ed0406888f73fc4$export$43e446d32b3d21af","$6ed0406888f73fc4$var$setRef","$6ed0406888f73fc4$export$c7b2cbe3552a0d05","$3vqmr$useCallback","$5e63c961fc1ce211$export$8c6ed5c666ac1360","$9IrjX$forwardRef","slotProps","childrenArray","$9IrjX$Children","slottable","$5e63c961fc1ce211$var$isSlottable","newChildren","$9IrjX$isValidElement","$9IrjX$createElement","$5e63c961fc1ce211$var$SlotClone","$9IrjX$babelruntimehelpersesmextends","$9IrjX$cloneElement","$5e63c961fc1ce211$var$mergeProps","$9IrjX$composeRefs","$5e63c961fc1ce211$export$d9f1ccf0bdb05d45","$9IrjX$Fragment","slotPropValue","childPropValue","$8927f6f2acc4f386$export$250ffa63cdc0d034","$4q5Fq$forwardRef","asChild","primitiveProps","Comp","$4q5Fq$Slot","$4q5Fq$useEffect","$4q5Fq$createElement","$4q5Fq$babelruntimehelpersesmextends","$8927f6f2acc4f386$export$6d1a0317bde7de7f","$4q5Fq$flushSync","$b1b2314f5f9a1d84$export$25bec8c6f54ee79a","callbackRef","$lwiWj$useRef","$lwiWj$useEffect","$lwiWj$useMemo","_callbackRef$current","$71cd76cc60e0454e$export$6f32135080cb4c3","defaultProp","uncontrolledProp","setUncontrolledProp","uncontrolledState","$bnPw9$useState","prevValueRef","$bnPw9$useRef","$bnPw9$useCallbackRef","$bnPw9$useEffect","$71cd76cc60e0454e$var$useUncontrolledState","isControlled","$bnPw9$useCallback","nextValue","$f631663db3294ace$var$DirectionContext","$7Gjcd$createContext","$9f79659886946c16$export$e5c5a5f917a5871c","$dxlwH$useLayoutEffect","$921a889cee6df7e8$export$99c2b779aa4e8b8b","presence","node1","setNode","$iqq3r$useState","stylesRef","$iqq3r$useRef","prevPresentRef","prevAnimationNameRef","initialState","machine","$iqq3r$useReducer","$fe963b355347cc68$export$3e6543de14f8614f","mounted","UNMOUNT","ANIMATION_OUT","unmountSuspended","MOUNT","ANIMATION_END","unmounted","$iqq3r$useEffect","currentAnimationName","$921a889cee6df7e8$var$getAnimationName","$iqq3r$useLayoutEffect","wasPresent","prevAnimationName","handleAnimationEnd","isCurrentAnimation","$iqq3r$flushSync","handleAnimationStart","$iqq3r$useCallback","$921a889cee6df7e8$var$usePresence","$iqq3r$Children","$iqq3r$useComposedRefs","$iqq3r$cloneElement","$1746a345f3d73bb7$var$useReactId","$2AODx$react","$1746a345f3d73bb7$var$count","$1746a345f3d73bb7$export$f680877a34711e37","deterministicId","$2AODx$useLayoutEffect","reactId","$e02a7d9cb1dc128c$export$c74125a8e3af6bb2","PROVIDER_NAME","createCollectionContext","createCollectionScope","$6vYhU$createContextScope","CollectionProviderImpl","useCollectionContext","collectionRef","itemMap","CollectionProvider","$6vYhU$react","COLLECTION_SLOT_NAME","CollectionSlot","composedRefs","$6vYhU$useComposedRefs","$6vYhU$Slot","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlot","Slot","ItemSlot","collectionNode","orderedNodes","$5cb92bef7577960e$var$CONTEXT_UPDATE","$5cb92bef7577960e$var$POINTER_DOWN_OUTSIDE","$5cb92bef7577960e$var$FOCUS_OUTSIDE","$5cb92bef7577960e$var$originalBodyPointerEvents","$5cb92bef7577960e$var$DismissableLayerContext","$kqwpH$createContext","layersWithOutsidePointerEventsDisabled","$5cb92bef7577960e$export$177fb62ff3ec1f22","$kqwpH$forwardRef","_node$ownerDocument","disableOutsidePointerEvents","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","$kqwpH$useContext","$kqwpH$useState","$kqwpH$useComposedRefs","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","handlePointerDownOutside","$kqwpH$useCallbackRef","isPointerInsideReactTreeRef","$kqwpH$useRef","handleClickRef","$kqwpH$useEffect","handlePointerDown","eventDetail","handleAndDispatchPointerDownOutsideEvent","$5cb92bef7577960e$var$handleAndDispatchCustomEvent","discrete","onPointerDownCapture","$5cb92bef7577960e$var$usePointerDownOutside","isPointerDownOnBranch","focusOutside","handleFocusOutside","isFocusInsideReactTreeRef","onFocusCapture","onBlurCapture","$5cb92bef7577960e$var$useFocusOutside","onEscapeKeyDownProp","$hPSQ5$useCallbackRef","$hPSQ5$useEffect","handleKeyDown","$kqwpH$useEscapeKeydown","$5cb92bef7577960e$var$dispatchUpdate","handleUpdate","$kqwpH$createElement","$kqwpH$Primitive","$kqwpH$babelruntimehelpersesmextends","$kqwpH$composeEventHandlers","$kqwpH$dispatchDiscreteCustomEvent","$010c2913dbd2fe3d$export$5cae361ad82dce8b","$8LvvK$useRef","$8LvvK$useMemo","$ea1ef594cf570d83$export$439d29a4e110a164","$kVwnw$forwardRef","$kVwnw$createElement","$kVwnw$Primitive","$kVwnw$babelruntimehelpersesmextends","$ea1ef594cf570d83$export$be92b6f5f03c0fe9","$322c88a641701f3b$var$NAVIGATION_MENU_NAME","$322c88a641701f3b$var$Collection","$322c88a641701f3b$var$useCollection","$322c88a641701f3b$var$createCollectionScope","$yHMN2$createCollection","$322c88a641701f3b$var$FocusGroupCollection","$322c88a641701f3b$var$useFocusGroupCollection","$322c88a641701f3b$var$createFocusGroupCollectionScope","$322c88a641701f3b$var$createNavigationMenuContext","$322c88a641701f3b$export$fb8ea5af8c9fcdf0","$yHMN2$createContextScope","$322c88a641701f3b$var$NavigationMenuProviderImpl","$322c88a641701f3b$var$useNavigationMenuContext","$322c88a641701f3b$var$ViewportContentProvider","$322c88a641701f3b$var$useViewportContentContext","$322c88a641701f3b$export$5b2278cf1e8bcae2","$yHMN2$forwardRef","__scopeNavigationMenu","valueProp","onValueChange","delayDuration","skipDelayDuration","NavigationMenuProps","navigationMenu","setNavigationMenu","$yHMN2$useState","composedRef","$yHMN2$useComposedRefs","localDir","globalDir","$7Gjcd$useContext","$yHMN2$useDirection","openTimerRef","$yHMN2$useRef","closeTimerRef","skipDelayTimerRef","isOpenDelayed","setIsOpenDelayed","$yHMN2$useControllableState","hasSkipDelayDuration","startCloseTimer","$yHMN2$useCallback","handleOpen","handleDelayedOpen","$yHMN2$useEffect","$yHMN2$createElement","$322c88a641701f3b$var$NavigationMenuProvider","isRootMenu","rootNavigationMenu","onTriggerEnter","onTriggerLeave","onContentEnter","onContentLeave","onItemSelect","onItemDismiss","$yHMN2$Primitive","$yHMN2$babelruntimehelpersesmextends","setViewport","viewportContent","setViewportContent","indicatorTrack","setIndicatorTrack","$yHMN2$usePrevious","baseId","$yHMN2$useId","onViewportChange","onIndicatorTrackChange","$yHMN2$useCallbackRef","onViewportContentChange","contentValue","contentData","prevContent","onViewportContentRemove","$322c88a641701f3b$var$LIST_NAME","$322c88a641701f3b$export$c361068a95fd2286","listProps","$322c88a641701f3b$var$FocusGroup","$322c88a641701f3b$var$ITEM_NAME","$322c88a641701f3b$var$NavigationMenuItemContextProvider","$322c88a641701f3b$var$useNavigationMenuItemContext","$322c88a641701f3b$export$ffdbb83a2de845c2","itemProps","autoValue","contentRef","triggerRef","focusProxyRef","restoreContentTabOrderRef","wasEscapeCloseRef","handleContentEntry","candidates","$322c88a641701f3b$var$getTabbableCandidates","$322c88a641701f3b$var$focusFirst","handleContentExit","candidate","prevTabIndex","$322c88a641701f3b$var$removeFromTabOrder","onEntryKeyDown","onFocusProxyEnter","onRootContentClose","onContentFocusOutside","$322c88a641701f3b$var$TRIGGER_NAME","$322c88a641701f3b$export$37fe8002734d8f2","triggerProps","itemContext","triggerId","$322c88a641701f3b$var$makeTriggerId","$322c88a641701f3b$var$makeContentId","hasPointerMoveOpenedRef","wasClickCloseRef","$yHMN2$Fragment","$322c88a641701f3b$var$FocusGroupItem","$322c88a641701f3b$var$getOpenState","onPointerEnter","$yHMN2$composeEventHandlers","onPointerMove","$322c88a641701f3b$var$whenMouse","onPointerLeave","entryKey","$yHMN2$Root","prevFocusedElement","wasTriggerFocused","wasFocusFromContent","$322c88a641701f3b$var$INDICATOR_NAME","$322c88a641701f3b$export$8ddb526647c0d8fb","forceMount","indicatorProps","$yHMN2$reactdom","$yHMN2$Presence","$322c88a641701f3b$var$NavigationMenuIndicatorImpl","activeTrigger","setActiveTrigger","_items$find","triggerNode","handlePositionChange","$322c88a641701f3b$var$useResizeObserver","$322c88a641701f3b$var$CONTENT_NAME","$322c88a641701f3b$export$38e00e996c2f93f7","contentProps","commonProps","$322c88a641701f3b$var$ViewportContentMounter","$322c88a641701f3b$var$NavigationMenuContentImpl","$yHMN2$useLayoutEffect","$322c88a641701f3b$var$ROOT_CONTENT_DISMISS","prevMotionAttributeRef","handleClose","_triggerRef$current","motionAttribute","$yHMN2$useMemo","prevIndex","wasSelected","$yHMN2$DismissableLayer","_ref$current","rootContentDismissEvent","_context$rootNavigati","_context$viewport","_item$ref$current","isRootViewport","_focusProxyRef$curren","$322c88a641701f3b$var$VIEWPORT_NAME","$322c88a641701f3b$export$ee880b97cc6d44a5","viewportProps","$322c88a641701f3b$var$NavigationMenuViewportImpl","props1","viewportImplProps","viewportContentContext","viewportWidth","viewportHeight","activeContentValue","handleSizeChange","$yHMN2$composeRefs","groupProps","$322c88a641701f3b$var$ARROW_KEYS","candidateNodes","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","FILTER_SKIP","FILTER_ACCEPT","nextNode","previouslyFocusedElement","onResize","rAF","resizeObserver","ResizeObserver","unobserve","$322c88a641701f3b$export$be92b6f5f03c0fe9","$322c88a641701f3b$export$54c2e3dc7acea9f5","$322c88a641701f3b$export$6d08773d2e66f8f2","$322c88a641701f3b$export$41fb9f06171c75f4","$322c88a641701f3b$export$adb584737d712b70","$322c88a641701f3b$export$7c6e2c02157bb7d2","$322c88a641701f3b$export$d5c6c08dc2d3ca7","Cart","NavMenu","menuToggleHandler","menuOpen","handleScroll","SubcategoryList","isLoggedIn","dropdownOpen","handleLogout","renderedCategories","matchingSubcategories","NavigationMenu","navigationContent","Footer","subSubscribeEmail","handleSubscribe","toggleNavbar","IsValid","ScrollToTopButton","setIsVisible","scrollToTop","BrandNavMenu","BrandFooter","BrandLayout","ProductBrandCard","accentColour","mainColour","cardColour","BrandSpecificPage","brandSlug","first20Items","dynamicGridStyleNew","gridTemplateColumns","dynamicGridStyle","initSlider","imageListNew","imageList","slideButtonsNew","slideButtons","maxScrollLeft","scrollAmount","scrollBy","Layout","isAdmin","RazerCategoryPage","scategory","_filteredProducts","RazerProductView","fetchData","razerProducts","App","ProtectedRoute","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","baseUrl","AppContext","serviceWorker","registration","unregister","reportWebVitals"],"sourceRoot":""}